CppCast - Game Dev and Low Latency

Episode Date: August 19, 2015

Rob and Jason are joined by Nicolas Guillemot to discuss the ongoing work of the GameDev and Low Latency C++ Study Group. Nicolas Guillemot started studying C++ and OpenGL to make games, and f...ell in love with them. He enjoys participating in game jams, and has had the opportunity to work in some game development studios: Inlight Entertainment, and Electronic Arts. He is currently taking a break from finishing a bachelor's in software engineering to work at Intel, doing mostly graphics-related work to help game developers take advantage of Intel GPU features. News Biicode (just the company) post-mortem Visual Studio Projects that Just Keep Rebuilding Boost 1.59 Nicolas Guillemot @nlguillemot Nicolas Guillemot's GitHub Links SG14 - Game Dev and Low Latency Google Group WG21-SG14 GitHub CppCon 2015 - The Birth of SG14 On Games(SG14) and TM(SG5) from The View at the May 2015 C++ Standard meeting in Lenexa

Transcript
Discussion (0)
Starting point is 00:00:00 This episode of CppCast is sponsored by JetBrains, maker of excellent C++ developer tools including CLion, ReSharper for C++, and AppCode. Start your free evaluation today at jetbrains.com slash cppcast dash cpp. And by CppCon, the annual week-long face-to-face gathering for the entire C++ community. The 2015 program is now online. Get your tickets today. Episode 23 of CppCast with guest Nicholas Guillemot recorded August 19th, 2015. In this episode, we discuss why your visual studio project won't stop building. Then we'll interview Nicholas Gielmo from Intel. Nicholas has been involved with the SG14 Game Dev and Low Latency Group,
Starting point is 00:01:03 and he'll tell us what features they're hoping to get added to by C++ developers. I'm your host, Rob Irving, joined by my co-host, Jason Turner. Jason, how are you doing tonight? Pretty well, Rob. How about you? Doing pretty good. Pretty good. A lot of exciting guests that we should be having soon. We're starting to schedule guests from CBPCon 2015, so there should be a couple good ones coming up over the next few episodes.
Starting point is 00:01:51 It looks like we got a pretty good response to that, yes. I don't think we need to announce anyone just yet, but we'll have some big names too, actually. Hopefully. Yeah, hopefully. So at the top of every episode, I like to read a piece of feedback. This week, I got a tweet from
Starting point is 00:02:11 Ciro, and he wrote in, great CPP cast with Steve Klabnick on Rustlang. Didn't know about the podcast, and they're talking about lots of cool stuff there. So the Rust episode with Steve Klabnick got a ton of listens, Jason.
Starting point is 00:02:28 Like, easily double our average number of downloads. That was pretty impressive. I had no idea Steve Klabnick had that large of a following. But that's pretty cool, and hopefully some of those people stick around and listen to some more episodes. Yeah, that'd be great.
Starting point is 00:02:45 Yeah. So we'd love to hear your thoughts about the show. Thanks for tweeting at us, Ciro. You can always email us at feedback at cppcast.com, follow us on Twitter at twitter.com slash cppcast, or review us on iTunes. We really appreciate the iTunes reviews as they help us get more listeners. So joining us on the show today is Nicholas Gilmaux. Nicholas started studying C++ and OpenGL to make games and fell in love with them. He enjoys participating in game jams,
Starting point is 00:03:14 and he's had the opportunity to work in some game development studios, such as Enlight Entertainment and Electronic Arts. He's currently taking a break from finishing his bachelor's in software engineering to work at Intel, doing mostly graphics-related work to help game developers take advantage of Intel GPU features. Nick, welcome to the show. Hey, how's it going? Doing great. That's a pretty impressive bio. You're taking a break from your bachelor's to work with Intel. That's awesome.
Starting point is 00:03:40 Yeah, it's been pretty good. Really great job, really great people. It's been a good time. And can we ask, what products did you work on at Electronic Arts or in Light? At in Light, I was working on some games for LeapFrog handhelds. Oh, that's cool. Kind of kids games. Yeah, Sun has that. It's like that fun of you're working on a handheld console, so it's really limited. So it was kind of just all that so it's like you know that fun of like you're working on a handheld console so it's really limited so it was it was kind of just all that hardcore c++ stuff
Starting point is 00:04:09 stuff like not be able to use floating point because there's no actual floating point in the device so those kinds of problems um and then when i was at electronic arts i was working on the on the ufc team so that's what fighting championship video game on the audio team for that game. That's not one I've played personally. No, me neither, but I'm sure it does pretty well. I'm sure it was fun to work on. What platforms was that on?
Starting point is 00:04:35 If I remember correctly, it's PS4 and Xbox One. Okay. I was just wondering if it was one of the Kinect games. Yeah. I haven't kept track of it. Okay. I haven't kept track of it. Okay. I think there's some derivatives. I know there's a handheld version of the game
Starting point is 00:04:51 that came out a while ago. It's pretty cool. I have some friends who worked on that one. It's pretty fun. Cool. So before we start talking about the Study Group 14, we have a couple news articles to go through. The first one is a little sad.
Starting point is 00:05:09 ByCode posted, or Bcode rather, posted this article on their site that the company is shutting down. But the product is going to live on, according to this article. Yeah, so as I said, it's sad. I think we're all hoping this would take off and become the one C++ dependency manager, but as they wrote in this article, they just were not getting enough registered users and not enough paying customers,
Starting point is 00:05:38 so there's just not enough income coming in to pay the bills. So they put it all out to the open source community and they're hoping the product continues. Yeah. Jason, do you have any thoughts on this? I know you've actually used Bytecode with Kaiscript. Yes, I did support Kaiscript with them. And I've met one of the guys from the company
Starting point is 00:06:03 and they seem like a great group. It's unfortunate that things have not succeeded, but I'll be very curious to see what happens with the open source world. Yeah, definitely. Nick, did you have any thoughts on this? I've only recently learned about B code through Twitter, so seeing the postmortem is like one of the first actual experiences.
Starting point is 00:06:27 But it looks pretty solid, actually, like going through the website. I mean, it's solving definitely an important problem with C++. And it's a problem that, you know, despite the company going down, like still exists. So looking forward to seeing what happens in that space, too. Yeah, I mean, hopefully, if people are enjoying it, it continues to be used, and maybe they'll be able to recover and come back. Yeah, it definitely seems like they're going to try to keep working on it,
Starting point is 00:06:54 just they won't be fully employed by the company anymore. Yeah. So the next article I have is about Visual Studio projects that just keep rebuilding. And I actually ran into this today. This is just kind of a how-to article where if you're ever working Visual Studio and you hit build, and then you don't make any changes to a certain project,
Starting point is 00:07:21 but you notice that every time you hit build, this one project continues building, and it takes up time, and it's annoying. And most of the times, like nine times out of ten, it seems to be because someone went and deleted a header file from the source code without removing the reference to that header file from the project. So all you have to do is delete the project, or delete the header file from the project, and then you're good to go. But it can be pretty aggravating. And there is just a setting you can turn on to do diagnostic build output from MSBuild, and that'll tell you which header file is missing.
Starting point is 00:07:59 And then you can go and fix everything up right away. All right, Rob, I'm curious. What was the problem in your case today? Oh, someone went and deleted two header files without removing them from the VCX project. Well, there you go then. And a lot of times I've just noticed that if it's a smaller project
Starting point is 00:08:20 and you're looking at the list of header files, all the header files will have a little plus sign next to it and you can expand it and see what classes are in that header, what classes are declared. And if a header file is missing, you won't have the little plus sign. That's kind of a giveaway that this is the one that you can go and delete and fix your problem. But if you have a really big project with tons of header files,
Starting point is 00:08:42 then you might not want to do that. So you can turn on this diagnostic setting and find out which file it is right away which is pretty handy see i almost exclusively use visual studio through cmake so i've never rarely run into problems like this seems it's more usually a cmake configuration problem than a visual studio problem yeah and he goes into a couple other reasons why this might happen but like i said i think even he says like you know 90 of the time it's going to be that missing header file but uh if you run into that and this is definitely a good reference to uh to help yourself get out of that annoying problem where it just keeps building and building and building. And then the last article I have is that
Starting point is 00:09:25 Boost 1.59 was just released. And with it come two new libraries, Boost Convert and Boost Coroutine 2. Jason, do you have a chance to look into these libraries in any detail? Yeah, I was browsing them and I immediately got how is Convert different lexical cast? And that's pretty much the first thing that they address
Starting point is 00:09:48 in the documentation for convert. That it doesn't have the same requirements on types as lexical cast does. Right. And it says he actually discussed it with the author of lexical cast and they kind of originally, it looks like they were maybe going to add functionality to LexicalCast, but they decided to just make a new library.
Starting point is 00:10:10 So, there you go. If you ever found LexicalCast was lacking, then maybe BoostConvert would work for you. Nick, did you have a chance to look at anything with the Boost update? I was checking out the patches. Seems like good stuff. I don't really have anything to comment on.
Starting point is 00:10:32 Okay. One other thing I noticed was they say they now support Visual Studio 2014, or 2015, rather. And I noticed when using older versions of Boost that it would tell you you're using an unrecognized compiler, so hopefully that'll go away now if you're using 2015. So, Nick, let's start talking about the study group 14. For those who haven't heard of this particular ISO C++ group,
Starting point is 00:11:02 can you tell us what are the goals of the group and how it got started? All right, so I'll start with how it got started. So it was CppCon 2014. There was an interesting panel called Grill the Committee. Basically, a bunch of C++ committee members sat down on chairs on stage, and the audience was just taking turns asking the questions. So it was a pretty good panel like lots of you know good authors good implementers good you know standard writers and so when I went to the microphone I asked about whether any committee
Starting point is 00:11:37 members were part of the game development community because it seemed like there was a bunch of people there from a bunch of different industries, but I didn't recognize anybody that seemed from a game company. So the answer really did drill the committee, and they just didn't have any response to it. But Michael Wong from IBM, he took interest, and he opened a discussion at the end of the panel between some game developers in the room. And so this led to us deciding to do a little impromptu like meeting of game developers who were at cpp con we got a bunch of people there to talk about how we can take action on getting more involvement between game developers and you know standards committee
Starting point is 00:12:16 because the tricky thing is just how like game developers you know they're busy shipping games you know they don't have time to go out to meetings in whatever city. So it's kind of a challenge communication problem here. So based on this, we started a Google group on the topic of improving C++ for game development and low latency. So in this Google group, we've written a paper. It's like an actual uh iso c++ kind of paper on their website uh that was um it was presented to the iso c++ committee at their meeting in linexa i think that was in may if i recall correctly that's right it was received
Starting point is 00:12:59 very well by the committee members so like lots of lots of enthusiasm. On that same meeting, we were declared to be officially study group 14, which is a study group where the purpose is to think about how C++ could be improved for game developers and low latency
Starting point is 00:13:19 applications. When you say low latency applications, what other industries are really focusing on low latency? So some examples of these applications are, for example, a flight system
Starting point is 00:13:38 or, sorry, a flight simulation system. So kind of these other applications that aren't necessarily games but also rely on, you know, real time graphics and high performance, you know, computation.
Starting point is 00:13:50 We're also looking at stuff like people in the, in the embedded world to also really use C++ because they gives them the performance and ways that we can improve life for them. Also, we've been thinking about trying to get people from the finance industry involved since the training systems also tend to have requirements of low latency. So it started out mainly being about game developers, but it turns out that the concerns of game developers are shared by a lot of people who care about performance. So hopefully this gives it some wider appeal and more relevance.
Starting point is 00:14:21 So what were some of the items in this paper that was reviewed at Lenexa? Right, so it was kind of like a more like a brainstorm where we there was like a list of different things we like ideas we've had. And a lot of it was inspired by the EASTL paper. So like a while back, somebody, I think it was Paul Pedriana, if I remember correctly, wrote a paper for the C++ Committee about the EASDL, which is the version of the STL, the Standard Library for Electronic Arts, that's used internally but is also available publicly as parts of it are open source. So in that article, they wrote about the motivations for the modifications to the standard library and the different containers they've had to add and some concerns they've had over certain features. And a lot of it has been resolved with C++11.
Starting point is 00:15:14 So that was one of the interesting things while writing our paper is that we could look at the problems and see how some of them were actually solved. But there's still a lot of them that haven't been addressed. And so we were kind of looking at that mostly and updating that view of the world to 2015. And from there, see what we can do to improve those points. So do you have any good examples of what ea stl fixed that you guys took specific notice of yeah so um some things i can remember is uh some associative containers that uh differ from the standard ones it's kind of like a popular you know complaints about the standard containers right now like like standard map, is that
Starting point is 00:16:06 there's too many nodes flying everywhere, too much dynamic allocation and stuff. Trying to find the exact name, but some interesting containers that allow you to have more kind of associative containers that store the data and you know uh blocks of
Starting point is 00:16:27 memory instead of a bunch of separate nodes everywhere or containers that actually allow you to um access more of the implementation details to do more clever optimizations or maybe like a popular one is like the fixed versions of the containers so for example there's like fixed vector fixed string so it's just like a version of a vector or a version of string that instead of having a completely variable size, you set it the size up front and then it stays like that. So is that, like, a template parameter you're saying or a runtime parameter for the size?
Starting point is 00:17:02 I don't remember. Okay, that's fine. I think it's a runtime parameter, but it might be a template parameter. I was just wondering how it varied from standard to right. It should be a runtime parameter. That would make more sense to me. Yeah. But I'm not sure.
Starting point is 00:17:16 So the point of that would be that you just do one allocation up front instead of lots of small allocations during its usage? Yeah. Well, it's just the fact that you can assume that the memory is just allocated once up front and can't be like moved around simplifies a lot of assumptions so if you look at the ASDL like I'm not an expert on it it's not really
Starting point is 00:17:36 like I'm Paul Pedriana if you wanted to go into details or something but the big idea is like you can see that they've added a whole bunch of different sorting algorithms and containers and all these things to just take advantage of the more assumptions you can put into your container,
Starting point is 00:17:54 the faster you can hopefully get it. There's also some of them that have been kind of continued by our group. Like, for example, there's RingBuffer. So kind of like a way to get a queue that you can put stuff on one end and from the other end. But anyway, that's just a fixed size.
Starting point is 00:18:11 And then that's a pretty common data structure used for, for example, streaming audio where you're streaming samples, writing samples on one end, reading them from the other, or networking, or like graphics also has some applications for that. So these are the kinds
Starting point is 00:18:25 of things we're looking at so is that containers uh you know i'm not very familiar with game development it's something i'd kind of like to learn more about or even really low latency programming um so like a ring buffer does that kind of assume that um if you get behind you just drop data uh is it like a fixed size ring buffer buffer? Is that what I'm trying to ask? Yeah, it's kind of tricky. There's some active discussion in the SG14 Google group right now about exactly how it should be designed. So there's people looking at that
Starting point is 00:18:56 and people asking themselves these questions right now. Should it be possible to resize or should it be fixed? Should it be dynamic allocated or static allocated? What's the strategy that happens when you over-roll? Do you get an error? Does it be fixed? Should it be, like, dynamic allocated or static allocated? Or what's the strategy that happens when you over-roll? Like, do you get an error? Does it overwrite? Does it, you know, does it push it forward? I don't know.
Starting point is 00:19:12 So these are all kind of open questions right now. Okay. C and C++ have a long history going back to the early days of programming itself. Still, it's hard to find a good development tool for these languages. Luckily, our good friends at JetBrains, after spending over a decade making all sorts of tools for a great many technologies, now provide C and C++ developers with three dedicated tools, CLion, ReSharper C++, and AppCode. All three take care of the routine and help developers focus on important tasks. They natively support Scene C++, including C++11, Lib C++, and Boost.
Starting point is 00:19:50 C++ templates and macros are resolved correctly and supported throughout each tool. Find your way through the code quickly with hierarchical views and instant navigation to a symbols declaration. Boost your productivity by generating the missing members with override implement actions. Rely on code refactorings and be sure that your changes are applied safely Boost your productivity by generating the missing members with override implement actions. Rely on code refactorings and be sure that your changes are applied safely throughout the whole code base. Write better, safer, and more efficient code with on-the-fly code analysis protecting you from errors and redundancies before you even compile. Choose one of these three tools depending on your needs.
Starting point is 00:20:20 For a cross-platform C++ IDE, choose CLion. If you work in Visual Studio, go through Sharper C++. Or if you develop for iOS and OSX, use AppCode. Visit jetbrains.com slash cppcast dash cpp to learn more and download your free evaluation. And if you're a student or an open source project, use all of them for free, courtesy of JetBrains. So in addition to the Google Study Group, there's also a GitHub repository where you guys are actually starting to write some code for some of these data structures and maybe new libraries, is that right? Right.
Starting point is 00:20:56 So the ring buffer, I think, is one of those in the GitHub repository. I saw there's also a fixed point library. Yeah. So that's been I think a more recent effort. Some people have been talking about making a standardized version of working with fixed point numbers. This is pretty interesting for game development
Starting point is 00:21:17 for a lot of reasons and for embedded programming for the same reason that I mentioned earlier when if you're on a console that doesn't have a floating point unit, like handhelds or maybe embedded systems, then you actually have no choice but to use fixed point numbers because if you use floating point numbers, your code may compile. But you look at the assembly, and a couple statements of floating point math turns into hundreds of assembly instructions to simulate IEEE floating point,
Starting point is 00:21:42 and it's pretty disgusting, extremely slow. So in those cases, you pretty much have no choice but to use fixed-point numbers, and it's nice to have that in the standard library so you don't have to implement it yourself. Also, I have some applications for, for example, graphics, where if you want to represent sub-pixel coordinates on the screen, you can't use floating point
Starting point is 00:22:02 because you don't want the precision to vary across the screen. You want the precision to be regular across the screen so okay lots of various applications like that but i think that the main use case my understanding is on platforms where you get a big performance advantage out of it i actually read the reddit discussion about the fixed point library and more people than i would have assumed were interested in it like people talking about financial applications also oh yeah i can see that i was the one thing that was kind of lost on me is how does one initialize a fixed point number with that library do you i mean are you familiar at all with the implementation of it like if i put 3.17 in it, I've already lost some precision, potentially, right? Yeah, those are all details I'm not entirely sure about.
Starting point is 00:22:50 I mean, the people we have right now in the group who have been talking about this, they seem like they really know what they're doing. I'm sure. From my understanding, the people we're talking about right now mostly are people who've used these extensively in their projects at work, and so they're trying to take their acquired knowledge and moving it forward.
Starting point is 00:23:06 I'm not an expert. Okay. That's definitely a good thing to ask yourself when you're using that interface. How can it possibly work? So it sounds like a lot of these are, you know, based on work that's happening at EA and other game development studios. And they're just trying to commonize it and hopefully get it into the standard. Is that right? Yeah, that
Starting point is 00:23:27 seems about right. I mean, there's always common arguments of even if people standardize containers that are useful for game developers, would big game studios actually use them or would they just still use their homegrown solution for various reasons? So, yeah, tough problems to solve.
Starting point is 00:23:47 But definitely that's kind of the idea. It's just to make it easier to do performance that's actually good using the standard library. One main example I can think of of people who would be using this is, for example, if you've got an indie studio or a middle-range studio that doesn't have the engineering effort to implement something like ea stl in that case it's nice to be able to rely on standard containers and right now if you're
Starting point is 00:24:13 doing that and you you try to use standard map or something and like you're leaving a lot of performance on the table so this is one of the cases where where it would be beneficial to have those containers in the standard library. Right. I see another thing you have in the GitHub is a set of algorithm extensions. Right. Is that the uninsurliced algorithms you're thinking about? I think so. Yeah.
Starting point is 00:24:39 So a big part of game development is memory management. I guess this mostly applies for like people working on high performance games like if you're working on a small game it's probably fine but like if you're working on a triple a game or on a console where like it's all about you know using the right parts of memory for the right things then you know it takes a lot of effort to make all the memory proper and then uh you know when you're working with raw memory that hasn't been initialized, like a lot of the standard algorithms don't work properly because
Starting point is 00:25:07 they assume that memory has actually been initialized when you're doing stuff on it. So the initialized algorithms are kind of like, there's actually already un-initialized algorithms in the standard library I guess kind of like lesser known, but they haven't been updated for some new
Starting point is 00:25:23 C++, C11 features, like I think move is not there, I might not be right, but they haven't been updated for some new C++ 11 features. I think move is not there. I might not be right, but I think initialized move does not exist. And so we're looking at trying to patch up those holes. Okay.
Starting point is 00:25:40 Interesting. So what are the next steps for the group? Are you guys meeting up again at CppCon 2015? Yes, we are. So there's the next steps for the group? Are you guys meeting up again at CppCon 2015? Yes, we are. So there's actually kind of a lot that's going to be happening in this space. First of all, we're going to be meeting, like you said,
Starting point is 00:25:55 at CppCon 2015. It's going to be kind of a partial one-day game developer track. So there's going to be some talks oriented towards game developers. And then there's gonna be some talks you know oriented towards game developers and then there's gonna be another day where it's just gonna be like an honest to goodness like standards meeting where we all get together in a room and you know have the papers and go through papers and proposals and see what should be good what's not good and take notes and
Starting point is 00:26:19 you know discuss problems do brainstorming all that good stuff and stuff. The cool thing is that this meeting, this SG14 meeting that's going to be an honest-to-goodness C++ meeting, you don't actually have to be registered for CppCon to go there. You can actually go independently to just that meeting without paying the money to go
Starting point is 00:26:40 to CppCon. It's only $25 to get into just that meeting. It's pretty reasonable considering you get refreshments and all that. And so if you or the listeners are in the area and feel like dropping in, then that opportunity is available to you even if you don't have time to attend all of CppCon. So if you are a registered member of CppCon, can you attend the meeting for free? Is it still $25? That's a detail that's been
Starting point is 00:27:07 discussed, and I don't remember the conclusion. Okay, so if you're in Seattle, and you're a C++ developer working in games, or financial applications, or anything else that's super concerned with low latency, that's something you should check out, even if
Starting point is 00:27:23 you weren't planning on going to CppCon. Yeah, or if you're interested in just seeing what it's like to be in an official ISO C++ meeting. There's going to be Michael Wong there who's going to be kind of orchestrating it, and he's got a lot of experience doing this, so it should be pretty legit. Awesome.
Starting point is 00:27:40 That sounds like that would be very interesting. I might have to see if I can attend that or part of it at the very least. mostly it's like a big sacrifice to have to abandon a whole day of awesome cvp con talks just to go to that meeting so yeah a trade-off do you know what day it's on by any chance um you know what i'd have to look up again okay it's there thursdays something like that yeah i have the suspicion it's wednesday which mean i won't be able to attend it because that's what i'm giving my talk it'd be hard to miss that one yeah you know yeah and also on friday there's going to be uh there's going to be a talk at cpcon by me michael long and swan middle ditch who've all
Starting point is 00:28:23 been involved in s14, and we're going to give probably like a summary of what we found or what's been going on with SG14, so if you missed the day-long thing, that might be a good thing to go to to recap. That could be very interesting as well, yes. And speaking
Starting point is 00:28:39 of CPCon talks, I should also mention that when I was talking about memory earlier, there's actually going to be a talk on that topic by Scott Wardle from EA. He's going to be talking about memory debugging techniques at EA, so that should be pretty interesting too.
Starting point is 00:28:56 I'm kind of curious, if you don't mind if we take just a little step back, is there any particular part of SG14 that interests you personally? What's your favorite aspect of what you guys are looking at hmm there's a lot of things like you know like i was saying you know in my introduction we were saying that you know i'm really addicted to c++ i love games i love opengl i love you know graphics so a lot of uh my passion in this is you know to make games and uh but i'm also you know obsessed with the language is you know to make games and uh but i'm also obsessed with the
Starting point is 00:29:26 language so you know just trying to get uh you know better support for the language because i've seen a lot of complaints in my time just lots of you know people working in game studios who hate the stl for whatever reason that might be historical and lots of people in the co plus community that i've spoken to like informally on ir, for example, who every time you mention the name game developers, they go, oh, those game developers. So, like, trying to figure out a way to take these two groups of people and get them talking
Starting point is 00:29:53 and figure out solutions. I mean, personally, I just love using C++ to make games, and so if it can be a better experience for me, then that's a personal win for me. Yeah, I can see that. I mean, So if it can be a better experience for me, then that's a personal win for me. Okay. Yeah, I can see that.
Starting point is 00:30:07 I mean, looking at the talks from CBPCon 2014 about game development, there does seem to be, within the game development community, they disable RGTI and disable exceptions, and then when pressed for, like, why, what kind of performance difference does this make, no one could give any exact answers.
Starting point is 00:30:27 So I agree. I would very much like to see these like two halves come together. Yeah, there's a lot of like, what is it, folk wisdom about those kinds of things, like exceptions in RTTI. There's definitely truth to it in some respects but yes we need to do more measurements especially on you know your hardware to see how things change across the years you know um yeah right i should mention also um one of the main you know main motivations for me to participate in this to try to really make a difference here is that it feels like the game
Starting point is 00:31:04 industry has made such a huge investment in c++ a massive massive investment where like you know practically every triple a developer out there has millions of lines of code of like you know some some code that's really it takes a long time to write like a lot of engineering effort a lot of money and so and it's not just the you you know, the games themselves, it's also like the operating systems or the compilers or lots of various tools for graphics work. So just seeing that there's all this work done in C++ really makes me feel like we have to take action and make sure that the language is going in the right direction to keep that code actually useful I think is a good thing to do. Were you following I think it was Jonathan Blow who was working on a new language alternative to C++
Starting point is 00:31:58 have you guys been following that at all in the SG14 group? Not in the SG14 group but I've been following a bit on the progress for that. It looks pretty interesting. Yeah, Jumbo's fun. Okay. Well, is there anything else you wanted to go over before we let you go? Kind of looking at my list of notes here let's see I don't know
Starting point is 00:32:28 I guess that pretty much covers it I know I'm really looking forward to all the game development talks in CppCon 2015 the ones from 2014 were really fun to watch even though I've never done any game development myself it's always fun like I love the Mike Acton talk from
Starting point is 00:32:43 CppCon 14 have you seen that one i'm not sure if i've seen that one i know i saw the talks from jeff pershing and nicholas flurry yeah yeah yeah data oriented development i watched that one yes yeah that one's like people need to watch that one it's good it makes you think yeah and it's weird because like the more you think about the topic and the more you work in that area the more you realize he's right so interesting like some serious wisdom there i'll have to look that one up maybe we can put in the show notes there's also one on developing games quickly or something like that. That's a intro to using SFML.
Starting point is 00:33:29 Vittoria Romeo. And we had him back on episode seven. We talked to him. Yeah. That was before I started co-hosting with you. Right. Right. Yeah.
Starting point is 00:33:39 That used the SFML. Well, because of that talk I've been doing is playing around with some game development using SFML. That one had a pretty big impact on me personally. I really enjoy it. Sometimes I'm making a game with SFML for fun, and I can't believe how productive I am with C++ with this library. Stuff just starts happening, and oh, you've got a game, there's sounds, there's graphics it's awesome
Starting point is 00:34:05 that is awesome so is there any projects that you've been working on that you would like to mention uh nothing nothing lately okay there was a time when i was doing more games with sfml that was maybe a year ago or two um actually i'm organizing a game jam just local to my city like this weekend okay oh yeah give it a shout out but uh what city are you in uh victoria okay so as it's not like the biggest city ever but yeah yeah it's gonna be cool so yeah is there a website for that uh sort of we're gonna do a game jam for the Ludum Dare. I'm not sure if that's how you pronounce it, but that's how you would read it. Just Ludum, L-U-D-U-M, Dare, D-A-R-E.
Starting point is 00:34:55 Okay. It's like a kind of game jam that happens every couple months. It's been going on for a long time. The idea is you get a theme, you have to make a game 48 hours by yourself, quote-unquote, from scratch. And at the end, you get to post it on the internet, and people from the community get to go around and vote on your game and decide whether it's cool or fun or funny or whatever. And then you get put in these ranking tables at the end and enjoy the glory of making a game that people like. So it's pretty cool, because not only do you get the opportunity to make a game, but also you get the opportunity to show it to the world and have people
Starting point is 00:35:25 review it. So pretty good opportunity for experimentation I think. I feel like there's a stigma that C++ is so slow to develop in that you couldn't really use it for something like a quick game jam from scratch.
Starting point is 00:35:42 Do people? Well, see that's the weird thing. It's like, speaking of SFML, it's one of the most, you know, one of the tools I've used the most for these kinds of game jams because it's just so productive. And, like, at one point, I had for fun with a couple of friends, we had a five-minute game jam where you had just five minutes to make a game. Five minutes? Wow.
Starting point is 00:36:01 That's, like, extreme. But, like, if you have SFML already set up already set up, in five minutes you can actually have something where your character is moving left and right and turning around or something. So it's pretty productive. Wow. I feel like I can hardly get set down at my keyboard within five minutes, let alone write a game.
Starting point is 00:36:20 So are other developers often using C++ with these game jams, or is there a lot of C Sharp or JavaScript going on? I think these days probably a lot of people use Unity or something. There was a time where people were using X and Y a lot. Okay. Yeah. It's a wide variety.
Starting point is 00:36:38 I mean, I'm sure a lot of people are using C++ still, because that's just a tool that a lot of people are already trained in, and there's lots of good tools for it. I think a lot of people these days just use an engine and it's fine. It's a different kind of learning objective. The way I see it is I participate a lot in my local game developer community,
Starting point is 00:36:58 and sometimes I want to be like, everyone, just use C++. It's the best language ever. But then other people just don't care, and the reason is because they just have different objectives right so that's kind of just something I've noticed over the years is that like well not everybody cares about getting the best performance
Starting point is 00:37:14 possible out of the machine some people just want to make games and practice on the game design aspect of it or the artwork aspect of it or you know the kind of the kind of story aspect of it so right it's kind of interesting to see that unfold like good good uh like good to go out and go to these game jams to see like the variety of people involved in in programming a game and you know it's kind of the truth too if
Starting point is 00:37:40 you go to an actual game studio like yay or something that like a large part of the team is you know artists or producers who you know they're not hardcore C++ programmers but they're probably you know in some sense almost more important just because they're the ones making all the content so like a lot of the drive of like a lot of the importance of programmers in these companies is is more like just enabling these artists to work faster. It's kind of just this whole spiel is just to say that it's kind of interesting when you look at how C++ fits in the greater picture
Starting point is 00:38:13 in kind of the game scene where people from a bunch of different roles are involved. Yeah, and you mentioned Unity a moment ago and developers there writing the game in C Sharp, but the whole Unity engine is written in C++. Right, exactly. Kind of showing these different roles where some people are deep into C++
Starting point is 00:38:35 and other people are making games for fun. Okay, well, where can people find you online if they want to see more of what you're doing um i think most of my online activity is on my twitter is it going to be linked like with this podcast or something yeah and you can read it out loud too right so my twitter is n l g u i l l e-T. So that's like, that's my name. Pretty complicated to spell if you don't know French. Yeah.
Starting point is 00:39:09 So I mostly... Sorry, finish? Oh, I was going to say like, yeah, it's mostly just like, I'll just rant about whatever I'm doing that particular day. Like, oh, this thing messed up on me, or here's this nice thing. I'm not like a huge content provider kind of person. And I guess one thing I should have asked earlier was
Starting point is 00:39:26 is the SG14 group like actively looking for more members to contribute like it sounds like it's still mostly game developers are you hoping to find some interest in people from the financial or embedded sector to join in right so one of the quotes that like one of the things that
Starting point is 00:39:42 said at one point was try not to design features for the C++ language that are for you and your friends. It's kind of an interesting appeal to think about getting more finance people involved, getting more embedded systems people involved to try to get a bigger picture of what are actually all the requirements of a high performance application
Starting point is 00:40:05 that still works for everybody and not just game developers. So it's definitely interesting. And also, just getting more people involved is definitely good. There's a lot of problems that we don't quite know the perfect solution to, but somebody out there who may not be working for
Starting point is 00:40:21 specifically games might have already encountered this problem and solved it in depth for their particular application so definitely uh we're definitely looking for you know more people who are interested in getting involved um i believe that if you just google sg14 it should be pretty easy to find yeah it's one of the first few results so just if you just google sg14 it's six result in my list so okay so if someone just kind of stumbles upon the google groups link are they able to join in or they need to get invited to start posting or um i think it's open okay if not you can definitely just email michael long and he can sort whatever needs to be sorted out.
Starting point is 00:41:07 Okay. Well, thanks so much for your time, Nicholas. Thanks. Thank you. Thanks so much for listening as we chat about C++. I'd love to hear what you think of the podcast. Please let me know if we're discussing the stuff you're interested in, or if you have a suggestion for a topic. I'd love to hear that also. You can email all your thoughts to feedback at cppcast.com. if we're discussing the stuff you're interested in, or if you have a suggestion for a topic, I'd love to hear that also.
Starting point is 00:41:28 You can email all your thoughts to feedback at cppcast.com. I'd also appreciate if you can follow CppCast on Twitter and like CppCast on Facebook. And of course, you can find all that info and the show notes on the podcast website at cppcast.com. Theme music for this episode is provided by podcastthemes.com.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.