HandmadeCon 2016 - HandmadeCon 2015 Q&A (Part 1)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
okay I think we are ready to go here this is sort of a a inclusion of handmade Con 2015 inside handmade con 2016 Messiah sort of mentioned on the schedule so those of you who are at handmade Con 2015 know that that these are the speakers - Mike Acton he couldn't make it but everyone else is here who was at the original conference and what I wanted to do was just kind of take the opportunity to do sort of questions and answers because that wasn't something that as you know as you saw even in this conference during 90 minutes we typically take the entire time to really get all of the stuff that we want to talk about just that I'm asking so what I wanted to do was have a session that was just kind of free forum where we could go through a lot of the questions that people had that they maybe would have asked if we do audience Q&A so as I said on the mailing basically I collated on the forums all the questions that people submitted and I'm just gonna kind of go through them and ask questions of various people on the panel who the questions were directed at some of we're directed everyone's in the director filming one but the idea here is just that it's you know much like the rest of the sessions anything goes so anyone who wants to talk about any topic is welcome to jump in at any time you don't have to keep it to just like oh this said that this question was directed at Tommy so only Tommy you can talk or anything like that just it's totally totally free for all so anyway for those of you who are not at handmade Conti 15 let me just do brief introductions we've got Ron Gilbert Pat Wyatt Tommy referenced and Jonathan Blow you know each of whom you probably saw their talks online so let's give them a warm welcome [Applause] so before I ask the first question I just wanted to go quickly through and just go like hey what's what's going on so let's touch the end run what do you been doing since handmade Con 2015 how's it go it's just working on my game so if then but we part and stressing about it panicking about it all those normal things you do when you're developing the game what's the panic level right now oh it's really high really high yeah no it's it's it's really high because you know we're gonna probably ship the game sometime in February okay and you know everything's going great with the game and we had we were getting ready to do all the voice recording there's like 15,000 lines of dialogue in the game and we were getting ready to do the voice coding and then all the actors went on strike right right and so we kind of had to scrap all of the casting that we had done and we've started over with the casting and we're gonna record it in Vancouver next week okay so it's yeah it's like super stressful right wait you don't think no it's no it's not limited okay so the strike is universal across well it's for interactive titles and it started out a little bit more limited but then a lot more actors kind of went into it and there was this thing that you could do if you if you wanted to record during the strike where you could basically agree to the new contract that the actors are and record outside of it but then a lot of the people that do the signatory type stuff we're very leery about signing the contract so it just it just made more sense to just get out of it and go to bank so basically the situation is right now if you're doing voice credit for a game and you do want to do it here it's somewhat in limbo like you don't even really know if you want well thank you for coming even at panic level 17 so Pat how about you so very shortly after Kahn last year I started to Amazon so I've been there about a year game studios and we're working towards the release of the first game first PC game which is called breakaway we just got a an internal test about a week ago actually I guess there was friends and family would be the best way to describe it folks and in December we'll be doing a full-on alpha test Oh time to sign up if you like play breakaway calm this is this is an open test you do not have to have any kind of special invitation to do so well what they're gonna do is you know like lots of people sign up and then they'll pick a subset of those people to play in the alpha test okay can people like come up up to you after sharing be like hey can you put me on the secret can you bias me into the sea sure I can try Tommy how about you just stuff all right yeah I wrote a scripting language fun anything else well what kind of scripting my ugh because Ron the whole thing mine was just like I needed something where people that were afraid of C++ could do stuff in my engine and I don't like using other stuff so I was like well I don't have anything else to do I'm just gonna write a how to come out very well oh yeah yeah no it's it was the the the reason it came out very well is I had a ton of fun doing it and I just enjoyed it and every time I would be like oh I want to add this thing I'd be like yeah I'm gonna had that thing be awesome so and then I did and then and now it's over now I'm sad because it's done start started another one I might problem solved templates [Laughter] compiler so is this something that you're ever going to release they're gonna be like dot TRS files like or something like this it's called Tom you script yeah are we so creative with the naming it's such a broad yes no I probably won't release it cuz it's it's just in my engine so okay so it's not necessarily a scripting language that might become something people would be interested in using outside no I don't think so like it's yeah it's haizen the stuff in my engine specifically so I mean you could because it's all separate from the engine but you know why I just use blue but you I don't want to support it but you didn't [Laughter] John how about you what level of involvement counts eyes worth mentioning I feel like this is a speaker discretion level of involvement so you can actually said this dynamically okay I'll just cover all the things all right so so we released a game this year in January so we've been doing ports of that to various platforms and then we just this week put live our ps4 Pro Plus HDR patch so we're going back and doing support for other things HDR was pretty fun I didn't do any of the programming specifically for HDR but it was more like you know high-level discussions and decision-making and stuff because some of it a lot of the things that you do in an engine you know for efficiency purposes because you didn't you know you could do them multiple ways one of the ways you do them is sort of like maybe after tone mapping or whatnot none of that stuff works if you need your output to be HDR and some of those things don't even make sense you know one of the cool tricks we did was the I forget what game it came from but you know there's a thing where you take a screenshot and then you put it in Photoshop and like you tweak all the hues and like any control you have in Photoshop like transforms the image but also a stamp in the corner that that's like every RGB color or none of them that you can interpolate right yeah make any sense an HDR at all right so you have to like completely like all the all the color correction in your the live color correction in your engine has to get rewritten and stuff and so I didn't do that but did did Annie do Andy are you in the audience did you do this yeah so Andy did that okay but no I don't know who did it so we we had discussions about that so that's been fun and then so more personally what we're doing or what I'm doing more these days is sort of starting stuff on the next game which is an interesting project because part of the well there's two next games what one of them is going to be in the engine and code base that we've already spent so much effort like the witness the witness on James yeah yeah but it'll hopefully be a project that's smaller and more tractable than that and stuff which is always what people say we're gonna try to really do it and then you know the other one so so I'm also building a programming language and as a test that that's a real thing we're also making a game in that okay so it's a little bit yeah you know it's maybe not the smartest decision to do multiple things yes just what is happening so okay so this is one of those cases where we do know ahead of time that this is a bad idea yeah we have decided to accept that feeling as a feeling and move ahead if people never did things that were bad ideas like like starting a rocket companies are pretty bad yeah but but that works out so yeah alright well let me let me move on to questions then and I I don't have any particular order for these because they're not super theme based like people had some pretty I guess the questions that were asked ranged all all over the map from things that are relatively specific code kinds of questions to things that were like just purely psychological like dealing with you know burnout or things like this so I'll just kind of jump around in it I'll start with so I'll also should say some people sent in here's my name like you know you can attribute the question other people didn't so I don't know if that was cuz they missed the part in the submission thing that said if you would like me to read your name when you do it please put the name in there and how to pronounce it so I can pronounce it or if they really didn't want me to say their name so I apologize anyone who wanted me to say their name and just didn't see that notice but here we go so we'll start off with one that's that's sort of I guess a non not really a code question it's from I think I'm gonna pronounce this right but Dean Siegel the handle is the eighth mage on the twitch chat and it's from Israel so the question is Tommy you tweeted about impostor syndrome specifically in relation to handmade con 2015 can you talk a little bit about it and if and how it influences your day-to-day work and feelings and this is interesting to me because people ask me about this on the stream too and my answer briefly there was just like we never had a name for this thing but I would be pretty shocked if programmers in general it didn't typically feel like they'd really just don't know what they're doing because it's such a vast topic so I am kind of interested to hear what you had to say on it as someone who's you know totally different perspectives perhaps on it yeah I did a GDC talk like the little soapbox and my whole thing was I have a whole bunch of friends that's not bracketing I have I have a bunch of friends people I work with and around and stuff and they all they all like make these amazing things and they think that they're garbage okay and I think that about stuff that I do too and for me what I talked about in relation to handmade con last year is I was up here with no you you you and Mike Acton and all these really really accomplished people and I just felt like I sort of belonged even though right before I came to hand make on him like oh yeah I try not to cuss on the mainstream because those videos I thought could maybe be used for something educational I didn't even want to try to keep especially this yeah there has been several squares we've already burned that bridge good it wasn't me I'm not you not you're just bringing it you're just bringing it home you're closer yeah okay hello so I was up here and I just I just felt like I belonged and the whole point of that talk was to just sort of tell everybody that those feelings are natural there are something that I feel like it's a mechanism to keep challenging and understanding what you're good at so for me I don't think I'm really good at well much of anything but I am though because you know I've made a video game sold well people like the controls I feel like I know what I'm doing with programming but it doesn't matter every time I do something like this this can't possibly be the right way to do this okay you know but you know it keeps working out and yeah I mean it inspired me to just sort of take other leaps like I just recently like made a comic book okay okay well the reason was I didn't have anything else to do you had nothing else to do yeah it's been a weird year okay so yeah the whole point was like everybody feels it's not something to be like ashamed of and you know if you if you realize that other people have it maybe people that you look up to because I know there are some people look up to me I don't know why but I do and if they know that hey I kind of feel this way too maybe they'll be like hey it's not it's not bad for me to feel this way so yeah because I feel like it's some level that's the sort of thing that can can you know be like a self-fulfilling prophecy if you're constantly thinking that I'm not good enough to do this thing then you probably won't be able to do that thing because that's what you're focused on rather than just going like look we all are really bad at this big like game development is just difficult and error-prone and it not a science and it's like there is no such thing as like oh I learned to play the piano and here's the notes and it came out great or something it's like nope it's like very fuzzy and weird so at some point you just have to maybe say like I just got to try you know try and and failure is part of this profession on a daily basis it is yes yes did anyone else have anything they wanted to add on that one at all or before I find that you know impostor syndrome at least for me personally is it's highly motivational because I often you know feel like well what I'm doing just isn't any good or other people are doing stuff that's a lot better and that that really motivates me I think I'm somebody and I did a whole talk on this I think I'm somebody I'm I'm very much motivated by fear it's like I get I I become afraid that something else is better than what I'm doing I've become afraid that my thing is crap and that really pushes me pushes me forward to kind of be better and do better stuff so at least for me I find it very motivational some people do not but then for me I do so in some sense if you know people who maybe struggle with this a little bit can change their thinking around you know maybe try to think of it a little bit as like look the the fear part of impostor syndrome is like I think it's like okay well let that fear mode but you'll run away from that thing by doing you know challenging yourself or doing work that allows you to sort of demonstrate to yourself that you can do it sort of as a more motivational tactic rather than a just a you know a cowering sort of sort of thing yeah that's the way I'm treating so let me let me move on to the next question here this one well actually this person submitted a couple different questions so I'm going to pronounce this incorrectly because they included a note and this is probably for the best that said I don't care how you pronounce the name and they're from Shenzhen China so like you know my ability to speak Chinese would be laughably bad so that's good pan Fang Zhang is the the person's name and their handle on the Twitter chat is ebola bond and his first question was from john he said the development period of the witness is much longer than braid like how did you come through the deed motivation and self-doubt part I guess he's assuming that there was one I mean although I guess you did in the attempting deep work talk probably talked about bit about that but yeah and then they kind of asked the broader question is there a general method for everybody so I think mostly just what they're trying to get out there is like psychologically how do you deal with this well braid was not a short development you know it was like three and a half years from beginning to end which is for most people would be a long project it maybe even not so much these days because everybody's projects have gotten longer and longer so three and a half years is less long today than it was in 2008 or whatever came out but it was still unusually long but but that was I mean you know if you if you're a runner and you run some short distances and then you can run some medium distances and you can run some marathons then you can run some ultra marathons or whatever right you just build it up you build up the muscle there's sort of two things there's at least two things that that are skills that you can deliberately well one of them is deliberate so the one that's very deliberate is just learning how to pay attention to your own mental state and regardless of what you have to do about your mental state because that's a hard question to answer like oh I feel really a certain way today what why is that and what do I do about that well the answer to why is that is actually usually too complicated to even understand it because people are complicated right but you develop the habit of at least looking at that and then taking care of yourself right okay similarly to the way you might like look at your posture as we were talking about everything and like move around a little bit you just like yeah you know I'm not having a good time right now and you just at least you notice it and then maybe you do change something a little bit and even if you don't know what to do about that the fact that you're paying attention to what is going on is I think at least two-thirds of the battle like a lot of people you know don't notice that something bad is happening until it's really late and like their life sucks and they just want to quit their job and divorce or whatever so but but I think there's a there's a lot to be said about yeah just constant attention just taking care of yourself right but but the other one yeah so like if you assume or at least sort of implicit in that was that like okay so normally when somebody eventually sort of gets to that point where it's gotten too bad right and that's it's too late or whatever what do you what do you suggest in terms of learning to sort of figure out how your mental state is developing much earlier on from that like are there specific do you think it's different for everybody so you're just gonna have to kind of work it out on your own or do you get some kind of thing it's like no no like hey spend five minutes the morning every day going like how am I feeling today about some various things just actually pause and think about it is there any kind of a like an actual thing there is it just like who knows see it's really hard because I think it's so when you say when I say notice how you're yes going on right now right away that is actually very difficult because yeah all tied up with with notions of identity and stuff so so you actually have known me for a long time right you you knew me like sometime in the late 90s when I was still doing my first yeah which I'm glad I did it because I became a much better programmer through that but man it was it was not a very fun experience or whatever right and and I definitely didn't have this kind of attention to my own you know mental state or whatever and I became really depressed by the end of that and I I burned myself out enough that I couldn't program effectively and I couldn't program it a hundred percent until like a few years ago yeah and and I was I was at like 20% for a couple years and then it came out 30% 40% it took a long time to get better right so it was like a physical injury okay but so when I go back to that time right one of the reasons why I didn't have a good eye on what was going on was because it was partially like my identity was like I had a little bit of a the the exact word is not hitting me right now but it's like when when you don't have that great of an opinion of yourself right so this team yeah self-esteem right and and then and then if you're not happy today you're like of course right I say so but that may not be true for somebody else somebody else has a very different relationship to how they feel about themselves so I don't know if there's a general statement that can be said about that but but just noticing and and the other reason I say just noticing is because conclusions that you come to I guess I said this but they're usually wrong so but then the second thing is just once you've had a successful project this is why I recommend people maybe do shorter things first because you do something successfully and you went through maybe a little bit of that period of like oh man I couldn't handle this right it felt so terrible but then you actually come to the end I see and your brain actually sees that there was an end right that you got a bit I mean hopefully your project didn't totally fail right one of the reasons I think why a state burned out after the first time was our project was not successful right we got a few players but it was successful in the sense that I learned but he was not financially successful nobody played it I got no external validation from the world right but with braids I did and then it was easier to get up and do a longer thing because of that point your brain knows it's like okay there there I'm gonna have to go through a bunch of stuff do this but I believe now that there is a light dinner somewhat you you Sam I believe right what are the properties of being and I don't know you're probably a little further than this right now but when you're in the middle of development and like that we talked about this last year so don't go too far into is the discussion of it last year but you're in the middle of development and the to-do list just gets longer and longer and longer right so the if you extrapolate that it goes to infinity right your game will never be finished right in reality that'll collapse down eventually but at some point it's like wandering through the desert and your brain doesn't believe it's ever going to end but if you have the past experience of like no this is just like last time and it did end you can at least remind yourself of that at a rational level and then maybe you can invoke some imagery to like help with this right so just any kind of standard mental things that you find work well just use those to try and get that association and be able to kind of pull yourself out of it a little better you know connect yourself back to the time when you're like I did feel this way in the past and it got better like I don't need to despair kind of thing but of course that advice is limited to the portion of people who have had a success yes first time through good yeah okay so I guess I'll open that up to anyone else too because I mean everyone here has had to go through long projects so does anyone have any kind of I think there's a the problem is that most games and game companies are started with a sense of optimism that is you just have this belief that like you're gonna get something done in a certain period of time and and as John mentioned the the task list grows longer and longer and it's the discovered work that you didn't think about until you got to that point in the project you realized oh we don't have a solution we haven't thought about that yet well that's more people and you know you've already got a budget and you see the money dwindling and the scope increasing and it's hard to figure out how to get through that and so even if you want to do things like oh maybe if I just took a little bit more time off or if I just gave really a week off well we had money to do that that'd be great but we can't so I do think I actually want to tell you one story where that did happen now I mean I was three years into Guild Wars and that happened where it was it just seemed like we would never be able to release the project and ultimately took us five years so I mean I think it's really common in game development and I think the thing you really have to do is figure out ways to get yourself out of the headspace of what you're working on and do something else so that you're not just keep you know grinding away against the problem your brain needs time to actually do other things and in fact I mentioned this during the last talk but if you spend too much time doing one thing and you don't get enough sleep then you're actually are preventing that your your brain from performing properly you won't generate the chemicals you need to remember things for example and so it's important to actually have some space away from what you're working on your mind can actually rest so you have a better chance to go back at those things I think need to triage I figure I like okay well we can't do everything and that's the way that you ship games is by triage so is is it generally the case that or I mean I shouldn't say Chandler case but does it sometimes serve as an indicator that like if I'm having sort of absolutely crushing feeling of like this is not gonna good like it's just epically messed up or whatever that that maybe is also a good indication go okay maybe step back take a little time but then maybe let's think about can we you know break this up can we do something like can we can we pull back a little bit I mean when you say triage is that do those things tend to go together meaning is the time for triage when you're when you're just like in that headspace and can't see a way out of it or not well I think you you probably have to because it's hard to just sort of step away and like well I'm just gonna not do this right you you're you know the people that you're working with they're depending on you to keep money flowing into the studio and so you can't stop for too long so you do have to be capable of doing this even when you're feeling badly about but I mean there's great examples of teams that have done this I mean Blizzard obviously has enormous amounts of money that they can spend right but they had a project where they spent many movie dollars like 40 or 60 million dollars or the estimates for Titan and and like they had nothing at the end and but they they step back and they thought about it and they said you know we really want to prove ourselves and they went back and they did overwatch and it really short period of time by thinking about what they had and what assets they're they're able to put together and so in some sense it's like hey maybe we can't actually succeed down this path but maybe we can pick a path that we could succeed down but isn't that far away from where we are right now kind of thing that's producing I think when you're doing triage to I don't think you want to do triage kind of at the height of your panic and paranoia you want to do it the next morning it's like get out of that out of that headspace where everything is doomed and is totally up because if you do that you'll just start hacking stuff out of your triage until you feel back but ok if you kind of wait till the next morning you mean metaphorically the next morning that is your you're in a better headspace so now go okay let's triage let's look realistically at how much time we have mom which money we have and the list of things to do all right so I think that's actually really good I believe that is well beyond what I was thinking there's your answer to that question because it's kind of a tough one I let me grab one here see so this one is for Pat and it's on like it actually uses two acronyms that I don't know so I'm not sure I wasn't sure about them but I'll give you the first part first of /li two parts and this is more of a code question the question is are there any differences between debugging an on net game like a non networked game and an MMORPG game meaning the approach to debugging that you take is it just the same kind of debugging that you would normally be doing just now there happens to be network involved or is it like the fundamental approach to debugging changes in some way and sort of the chaser on that was are there any like silver bullets for debugging in MMORPG like techniques you would employ for these that you know might you might not have think thought of are come across because they are really only applicable in this sort of scenario so I do think that there is a silver bullet which is rare and software and that is that if you can figure out how to make your game replayable from the same set of inputs then you can reproduce the same set of bugs and so the trick would be you know you're recording every input and the timestamps and it's actually pretty easy to do in single-player games because they're not jittering that much input and you've got you know giant disks that you can store everything on and so like just write everything and then you should be able to play that simulation back into your game in it if you did everything right then it should crash the same way right and that's something that you have to put the work in upfront to make sure that your engine is capable of doing that but then it's real easy to debug and that really naturally extends to multiplayer as well and in fact we built Guild Wars that way so it was game recording for crash discovery and it turns out it actually has some additional features which is you can do load testing just from lots of streams at the same time and then also it ended up being a user feature and that you can play recordings back for players you can stream it out to other people clients they can watch the game so I think it is it's super useful if you're if you're architect your engine like that is it possible to architect an engine that way with multi-threading these days though because at some level recording inputs only works if those are the only inputs or with multi-threading the scheduler or the OS scheduler is kind of a separate input which is kind of hard to record have you worked on any projects since that jump kind of happened or is that like kind of a thing that's like well yeah you could I mean run the game single threaded or something or I don't know well if you look at each of the the agents in your game as like an actor right actor model program and then each one of those things can be played back independently yeah and so you can just record their own input streams so they're isolated from other components now as soon as you start sharing memory then it becomes really problematic and often times you know what looks like an actor simulation is only a global variable bashing simulation like if you had at some point assuming that the thing is multi-threaded in you know sufficiently you're going to have shared resources that are contended in some way and the order in which people hit them is not going to be deterministic necessarily so I I'm only bringing this up now because this is something that I thought about a bunch like I've you know worked on code bases in the past where it did have input recording and code base I'm working out now I would love to have been pouring could not really figure out a way to do it at least not the way that I used to do it given the fact that all kinds of things are multi-threaded internally now it seemed like you would have to start recording the multi threads like when people were taking you know mutexes or something would have to be part of the recording or something like that I never really quite got to the point where something about that please do because it seems to me there's two different classes of bugs right there's one class of bug that's like some kind of thread related bug yeah in which case yeah that's that's always that kind of situation yeah if it's a kind of bug where it's like something about the actual logic independent of the implementation and the timing and stuff then the way that you tend to think about input recording is like it happens on frame boundaries or something and then if you're if you're threading causes results that are gonna differ inch differ beyond one frame anyway then maybe that's about like like if the coordinate of your object ends up slightly different if this job runs before this job then that's a little bit you at least want to know that right like I don't know if you do anything about it but and in some cases that might be intractable I guess for performance reasons like I don't want to get super picky about the order edge collision resolves but well I'm more thinking of it because this is not a thing we're not talking about something that we ship to end-users necessarily oh man you made for the point is this is not something that's used necessarily in the course of actually doing so in the game this is strictly for debugging and so one of the most common bugs you can have in a multi-threaded engine is a threading bug so it seemed like it was like well if I'm you know if my idea here is that this is for debugging the system saying that a whole class of bugs which are bugs were very likely to have in any kind you know in the kind of code that it cares about this seemed like a problem it doesn't mean you can't still use the system for once it is multi thread bug free now you can still play it back in the same way but I was just curious because you know it wouldn't surprise me if someone said oh no no just just do this they have changed all your mutexes into this thing which logs who took the mutex win or something and then we just replayed them in that order which you know theory might work but I don't know it's really if you think about processors getting more and more cores than what's right than is the kind of solution is going to be more and more difficult to debug and so what you really need is a system that looks at the work you have to do more like a job system yeah and so jobs you know it's like here's a set of inputs go off and do something and then there's a set of outputs and so that's eminently recordable is it though I mean because you don't know you mean recordable in the sense that just record which Cora's got which jobs and then just do that again when we come through so the basically the job system now will record that order and play it back so right now so there are certain types of bugs that you can't stop right like memory corruption bugs are just nasty because anywhere yeah so I've often found this is now going totally off with this person's question I've hijacked the thread so on that topic I would be interested to know your opinion on this so I find oftentimes that the job system model is less good than I like it to be for the reason that often times things you know the parts of the multi-threading that I care about in terms of performance stuff tend to want to do just very grief access to a shared structure rather than reserving that access for the entire length of their job and that's the kind of bug that I tend to be worried about in this scenario because you know it's typically like a little hand coded thing that maybe you made because this is a critical component or whatever would you say the same thing or are you more of the opinion that no generally there should just be job system and that sort of manages resource locking in you really shouldn't have much in the way of custom kinds of multi-threaded stuff happening yeah well I mean well you get into claim rendering and stuff it can be really complicated but in general I think that it's better to try and use job systems where you have larger blocks that you can separate off and okay so in a way I supposed to like here's a loop I'm gonna have ten threads all run in the same loop and do different parts of it at the same time and so do you usually see job systems as having sort of that locking happen sort of at the head end basically like okay this person needs to access the database or something like this so we will just not let any of the other threads access the database at that time or something so that we don't have to have some kind of a fine-grained locking mechanism in there just doing an example out you would prefer to generally say one thread gets one resource and then you just try to architect your resources so that's not too bad or yeah or you would use something like this is a much more complicated solution but something like post crests MVCC which is sure I can actually pull out what the acronym stands for but the idea multi-version concurrency control I think is you have lots of different versions of the thing and you when you lock it the version that you have stays constant for the duration and the job even though other people are getting later versions are the same data so then like your your job system has version 34 of the data and can use it and not worry about it changing out from underneath it during the course of the operation so that's assuming that you have a system where that particular piece of data doesn't have to be sort of meaning the access to it is mostly read-only I assume because rights will now possibly collide with each other or something like this or maybe you resolve those after the fact yeah you're just using a stale version that I feel like that's a very domain-specific right and there's some cases when you can't do that like hypothetical situation really say you were dumb enough to try and multi thread a compiler and you've got a job system right so you've got a basic job system that goes off and does things and one of the jobs is like walk the syntax tree and figure out the types of all the expressions in the syntax tree right well if you lock the syntax tree as a resource now you're not parallel anymore right even if you lock a subtree of the syntax tree you're gonna in that way that like locks pile up really fast yes that's just gonna happen right so what you really want to do is you know some kind of like lock free thing that uses a very small amount of data that may be like that data lives in the node and you do compare exchanges or whatever you do to like just atomically change that one value right and I don't not having completed that part of things yet because it's full I don't I don't see on the one hand I don't see another way to possibly do it I mean there are like you could okay the syntax tree is laid out somehow flat in memory and we've got a read-only copy and occasionally we like blitt parts of it to the new copy to try and update but that seems almost as complicated and it has performance penalties that you're making multiple copies of this thing that you'd rather only have one of but I don't I don't see another way to do it well in that particular circumstance it's definitely one of the things we're like in a game in general you've got lots of different work that you could be doing so then job systems to be things that can sort of be more effective because hey there's all this different stuff to do chances are they don't all need to do the same data whereas the compilers like look we're just doing the syntax pad that's all we can be doing right now so there's not like a lot of opportunity to say go do those other things you were going to do and let me just play with sentence you to bring it back more to mainstream games a little bit I feel like it's if you wanted to parallelize your AI without taking performance hits of duplicating your knowledge base all the time right like what how do you do that it's just gonna get hairy unless somebody comes up with something that I've never heard of right so maybe part of what you do as an engineer is like don't do that or you make your system fast in other ways or you buy I don't know yeah I mean I feel like if you can just have a job system and serialize at the job level to reproduce the work that sounds great yeah I mean if you can get to that point it does sound pretty good because then you know the other I suppose aspect of that is that if you do have a job system that you can record you can also look at your efficiency that way you can look at the job systems records and say how much how many longer jobs waiting how you know when did jobs go in and now it's a it could be a useful debugging tool for things that had nothing to do with catching you know breaking bugs it could be stuff for I just wanted to know how my scheduler was working maybe there's things I could do to make my schedule or better like where are the bubbles and so the recording of a job system could have another benefit I suppose in that way but all right that was a I I thought we were going to have like I was worried if we ran out of questions before the time that's not going to happen and there's zero chance of that so I'm gonna ask the part of the question now that had the acronyms I don't understand so you can either skip this one if nobody knows what they are or someone could tell me what they mean the question was for data analysis such as da you or ARP you daily active users and OH Everage revenue per user okay the single-player game okay do you have separate systems for game manager or operation department access did the data come does the data typically come directly from reading the database and they sort of had a little explanation here about why they're interested in this they're saying the former company they worked for accessing the database affects players who are online so they had to wait for them to go to sleep typically to do this sort of thing then read daily reports about the money that they spent and so on and so they were just saying like how does this sort of thing work and I guess implicit the question is a more well working system than the one that this company that has not named has yeah well so the first thing is that you want to have multiple databases you have a you know a transactional database what's called OLTP online transaction processing which is sort of like your bank of knowledge that players are using and then you have want to have a I think it's ap which is your analytics database and there they could be optimized to be different types of databases right like ones a traditional sequel database there is a column store database because you need to roll up columns and that is that you're replicating your data from your your you know store of true knowledge about what players have in their accounts to your other database you do it like every four eight hours once a day something like that so your analytics are gonna be out of date but it's not as essential right you don't need five minute interval on most of the data that you're looking at you know like getting a report in the morning what happened yesterday is is you know can be very useful and so yeah you should have basis for that problem and so when you have multiple databases for these things is there is the structure always the same for these or is like is there a I write through one database and then it writes out to another database kind of a pattern for it or is it always like the game writes to both databases or the server rather writes about databases or like what's the is there anything tricky about that or just like it doesn't matter that's not relevant yeah there's lots of different ways to do it one is just you're replicating to a slave database okay and then you know it's it's capable of answering different set of queries because they're all read queries okay like also the you know I say database right like there's only two of them but one thing is you're taking in all this data and you've got your master database and you've got all these events and then you've got like a slew of like third party tools you know like your own internal databases and external companies that analyze your data and so you want to think about it not as there's a central point of knowledge but rather there's a stream of events that goes wherever you need to go in order to be able to answer different types of questions whether it's the operations team looking at you know player behavior for security purposes to identify bot players or you know the the marketing team looking at analytics to discover whether the things the offers that they're making are working effectively did anyone I assume but I think the only single single player okay I think that was all from from that question set so let's go to question 4 this was Tommy and John and this was an anonymous submitted question so it was both braid and super meatboy were extremely successful games I'm wondering if there are parts of the game that you weren't quite happy with and that you would have liked to spend more time on or is everything exactly the way that you wanted it I asked this question not because I'm at all wondering what the answer is but more just because I feel like the fact that it was asked kind of means maybe we should talk a little bit here about the reality of what you achieve when you're programming a game yeah there was a lot of stuff that I don't I don't like playing because I just like they're like content wise there was there was a lot of stuff that we wanted to add that it just came down to it and it was like well we can either add all that stuff and not come out on xbox or we can cut it all and be done with it and have it come out on xbox and then you know go on with our lives so yeah there were there were several things I don't think I should name all of them because maybe they'll be in another one but probably not but you know yeah of course okay I I don't and maybe John had put everything in braids that he wanted yeah I have a different right so so the the triage discussion that was happy Riley's I've been fortunate enough to never be in that position like it was always a possibility to just keep working on the game so that's why the witness took a long time for example is because you know we could have said well we have to ship this you know in years where n is less than you know but but you know I always feel like well if you if you put some amount of time into something and you're really close to making something really great but it's gonna take more time if that's her goal of making something that's as good as you can make it then by shipping the thing that's not as good as you can make it and starting over you're just increasing your time to that goal okay right so if you don't have a financial forcing function like forcing you to ship and if you don't have a you know I'm gonna go insane if I ship is here or something right then like if your goal is to do good work you can do good work more good work in one game or you could split it among multiple games but it's still all good work right so neither braid nor the witness shipped with anything that I am you know it's sad about like the we kept working on the teeth there's always things that you didn't get to do right but you know if you start and the things are this big and you keep splitting the boulders or something and they get smaller and smaller the to-do list always gets longer but the items on the to-do list get smaller so the some of them in some calculus way eventually starts adding up to very small amounts right and you know you're summing a larger number of things like that where the number of things grows smaller than the size decreases anyway so there's stuff in both games that I didn't totally you know that are not ideally perfect but there there are both games are way better than I thought they were going to be when we started okay great so you can't beat that I mean I mean with the witness the biggest problems we had our stuff that was beyond our control anyway like shipping an ambitious 3d game on the PC right now is a nightmare we spent like two months just dealing with graphics driver things you know so then I don't even know what you do to prepare for I mean if we had a much larger budget we could have like giant testing a giant testing yeah but you know like the you know the Radeon 3770 has a problem but the 37 90 and 60 don't right so that was really our biggest problem with the witness and it wasn't a problem with the game right it was just the environment that we read but you know Tommy where is the crowd-sourced system configuration bug database that we were promised last year okay so I'm wrong about a misremembering this no no my parts done except for the Linux and the Mac version I just don't have a web guy that's it's pretty much but you've got all the spare time it is very hard to find and I'm very sorry I don't mean this in the way that it's gonna sound it's very hard to famous last words tough finding a good web guy is difficult alright and I know this because I used to be a web guy and I consider myself one of the good guys because I wasn't a web guy I was just a software guy okay it's very hard to find a software guy that does web stuff because they're just doing not it's very painful because the thing I wrote is simple but people just want to make it so complicated okay they put like 13,000 little systems is one thing so basically you're looking for somebody who can do the minimal amount of necessary web over 15 frameworks to serve five pages that's only three frameworks of page yeah okay but that is what you're actually waiting for is somebody who would would do a good minimal job of a layer that could put this thing on the web basically yeah I'm trying to push matthew wagner it's like a web to finish his game so we can do stuff okay I mean he's trying to fill a maybe once maybe once I have like a good dependable web person cuz I'm not doing that again okay I did I did my crappy PHP version of it okay it worked it looked like garbage okay I need I need something that's functional it doesn't look like garbage and then and then yeah then everybody can use it oh god okay so let's let's move on before anyone says another jQuery from the audience okay so we're mostly down now let me see you got it we'll ask I'll ask a couple of we're mostly going to be down to questions that were not directed at anyone they were just questions for everyone basically but I got a couple more here so Ron this question is from tomash I'm not gonna pronounce this one right either but even though they spelled it phonetically I'm gonna try Tomas ruse Hahn ski ruse on ski I think if I'm getting that correct but they didn't list a city that they lived in so I'm not sure where they're from the question was was using pixel art in thimble we'd park your very first choice or did you consider some kind of stylized 3d like in the cave and they said what are the pros and cons of each approach in the project like this presumably part pixel art was our first choice for that because we were the kind of the whole images of the Kickstarter it was real you're kind of going back to what was the charm of maniac mansion in Monkey Island and you know my kind of thesis on that is it really has to do with the pixel art and so you know we kind of wanted to go back and look at that and go right is-is-is pixel art a key component in that in that charm and and I do happen to think it is because I think pixel art the you know the objects in the game or the actors in the game they're more they're more icons then they are actual things right it's like this is not a toaster it's an icon of a toaster right this is not a secret agent this is an icon of a secret agent because the pixel art just removed so much fidelity and that and I guess it's like the difference is reading a book versus watching a movie right players can fill in you know so much more about things where if you're doing these really nice like high-end you know even to the very high end 2d stuff you filled in so many blanks for the player so that was kind of you know our original idea and so it really so that's very interesting so so essentially what what you're saying there is that like if you go high fidelity it's not simply the case that going high fidelity is you know more difficult to write ever because it means you have to spend more art resources or more time optimizing it engine or something like this it actually fundamentally means that people lose the ability to apply a certain amount of animation absolutely that's going to manage the imagination to what they're seeing so you're sort of saying like literally they cannot have the same experience that they would have had because in one case we're telling them exactly what the experience is and another one we're kind of saying here's a suggestion of what is in the experience and you're going to fill in what you sort of have in the background that's fascinating and and it doesn't mean that the pixel art is just you know crude and ugly and you know I stuff pixel art can still be incredibly beautiful and you know artistically drawn you know pixel art to me is not drawing high-res art and then going into Photoshop and then you know reducing the resolution right the pixel art is like hand placing every pixel you know where you want it to be for the scene so I think there is a real you know artistry to really really good pixel art and so there's a follow up to this question but I guess I'll I just want to sort of ask the part of the first one that it kind of I'm sure I'll say this they kind of alluded to which was they mentioned the cave and thimble Reed Park and then they sort of said are there pros and cons of each of the protis I'm stepping away from thimble we park which obviously just already like you said it's like no the goal of this was to have the screen so obviously we wouldn't consider doing some okay is there anything else in the pro's and con's other than the one we just sort of talked about which is that you lose that imagination part you know can you maybe say if there's anything else to mention there before we go yeah there are a lot of pros and cons I mean just memory it's like you know the entire background for you know a background in thimble weed Park is you know less than a lot of icons people's desktop so you you certainly you know doing doing you know really good pixel art you do save a lot you know intrusive memory I think the other thing that's kind of a little bit advantage and it gets back a little bit to the imagination thing is when you're kind of doing like characters the way we do into Bowie Park things don't have to work precisely and your mind kind of fills it in that's right a character kind of reach for a doorknob and they can really kind of not really touch the doorknob right right and because you're filling in so much of the same imagination you accept that we're if you're dealing with like really high end you know 2d art you start to notice that this person didn't touch the doorknob when right now for so there's a lot of a lot of things that we can do because it's pixel art like that you know a lot of shortcuts that we can get away with it speed up development so it kind of keeps you away from having to deal with a lot of these sort of corner cases sorts of stuff that would come up yeah it's it's kind of like it's almost like the uncanny valley in a way right that the nicer your art becomes the more people expect everything to actually work correctly I see where if it isn't then so you kinda need to be on either side of that value like either we go pixel art and then people just kind of understand that this is a representational thing that they're seeing and you know they will fill in the gaps or we had better get all the way to the hand actually turns on the door otherwise people are gonna kind of notice the janky mists of that yeah okay all right so same questioner also asked what was more important while designing the thimble we'd Park to innovate and push the genre forward or to preserve the warm fuzzy feeling of nostalgia how hard is it to resist the sweet taste of member Perry's they said I think you've kind of already answered this but I thought I'd just read it so you can answer it definitively that was a really really hard line right because you know we were trying to build a game that again captured the charm of those old games and I think a lot of what those games did is a part of that charm but on the other hand I think that you know if you look back at point-and-click adventures made around you know McGowen maniac mansion time there were a lot of flaws in them right I mean we are much better game designers than we were back then and and so there's just a lot of stuff into Bowie Park where it's like you know what we want we want to kind of capture that charm thing but on the other hand we just want to get rid of all the stupid stuff right right and so we have spent a lot of time you know learning over the years and learning from what other games have done games you know like Firewatch and all this other stuff and how they approach things you know you know what those same things can be applied to this point you click game so so it's like you know we kind of describe it as we don't want the buiid part to look like an old point and click game we wanted to look like you remember those old games looking you know so it's like we're going to kind of take that aesthetic but we're just we're just going to kind of move it forward in a lot of design ways you mean Plus that we use shaders and all this other stuff in the pixel art that it's just it's more of what you're imagining imagine that Monkey Island actually looked like when you played it as a kid so you're kind of you know the person's brain has sort of completely painted with a new brush what Monkey Island looked like back then and the sort of thinking oh I love the artwork for Macau and whereas if we showed it to now they might be like oh that's not what I remember so you're kind of going for the more like this looks like your brains image of Monkey Island even though this might not really be what monkey looks like and you know Marc Ferrari did all the art I think he put it best is like you know people want to go live in the Renaissance Faire they don't want to live in the Renaissance that's great all right well let's let's pick one of the other questions for everyone here this question comes from William Bundy Bundy from Redlands California I think is here he's in the booth there he is the question is how do you approach making and designing in-house tools do you devote time to designing workflows for them and what do you want from third-party tools other than fundamental things like stability speed and functionality those are kind two separate questions so we'll just start with the beginning one which is just like how do you approach in-house tools sounds like Tommy approaches them by if he had nothing else to do dot-dot-dot honestly yeah that's kind of he makes an in-house tool it really is so does anyone want to start on that one I don't know it's clear like how do you approach making them or how do you approach deciding whether you're going to make one I to be honest I'd like to hear the answer to that first one for sure I was sorry the second one like how do you know because you always there's always some jankier solution you can do that doesn't involve making a tool right like some weird I type self ode to win but is that Excel files for the win Excel a sell files for the way so there's always something you could do that doesn't involve making your own tool so the question is yeah I'd like I'd like to know how do you figure out when to make them win not that that'd be pretty well for my stuff I usually spend a lot of time looking around and see if I can find a tool that would do what I need okay and if I can't find that tool then you all kind of go in to doing them and obviously I mean even doing pixel art I really don't want to build a you know a graphical editor that can do pixel stuff I look at Photoshop and I go you know what this can do what we need okay so it's like I don't need to rebuild this whole for that but other things you know I really felt I need to build this tool for this right I can hand edit text files or I can find some off-the-shelf thing that we're gonna fight with the entire project and you just kind of said you know what this is worth my investment you know to spend your time and in thimble we park you know we had a tool that laid out all the rooms you know where you kind of put all the images in position and tagged all the hotspots and lay down all the lock boxes and you know I kind of decided early on you know it's gonna take me probably two months to build this tool that's probably worth it okay and I just decided upfront okay two months I'm gonna build this tool because it's such a workhorse on the project and there just is nothing else out there that is like this which I guess kind of tends to tends to be what you do see in a lot of game engines is that like are the map construction process or whatever you will where you're kind of pulling assets together and making and I think I think that's the only custom tool on the project everything else is off-the-shelf stuff and so is that something that you it sounds like that was entirely foresight I guess in the sense that you did not start doing this thing without the tool and then realize that this was a bottleneck in production or something like this and then go do it you were more just like and this may be because you've had so much experience with these kinds of games though but you were just like I just know this is gonna be a problem so I'm just gonna do it right up front yeah cuz we had a very similar tool in this come system that kind of did the exact same thing and I just knew how important it was and how much people use that thing that I just knew doing this I need a tool like this when you were doing it on scum how did that tool come about was it you know wet when did people figure out we should probably build one of these well that was very ganic because you know what we're doing the first version and maniac mention in the Commodore 64 I mean it literally was hand editing text files to get everything positioned and that just kind of grew slowly over time to get that tool okay I think when the equation comes down to how big your game is gonna be and so how many people you envision working on it and the fidelity of execution that you need okay right so if something like an you know animation right animation people really care about it's got to look good and so if your animators have to go and edit text files which is the way that some games actually worked in the old days then you know the iteration cycle is really slow for the artists and they're not going to get that fidelity and so and especially if you've got a whole bunch of animators they're gonna be working on the project and it would make sense to invest in the tools for that if that is like a key criteria for the success of your game because we rate everything you implement is something else you didn't implement somewhere else because you've only got so many hours where dollars until your company goes out of business so yeah thinking about what tools you can reuse and then if you're gonna do something that nobody has done before then you almost certainly have to build tools right if you if you're making outdoor game and you don't have an outdoor engine then you're gonna write an outdoor editor or you know you're gonna have a problem I would say one thing about tool welcome to is the most important thing like stability was mentioned but I would say it's not just stability because everything's gonna crash once a while it's can you recover after the crash okay saving every 30 seconds would be great or alternately it's like it writes out everything at the point that crashes and so that you might have some chance of recovery that's really important for internal tools because you just know hey these are things that are in flux so we're gonna have crashes we're not gonna have perfected it by the time it's in production certainly so prepare for crash like make crash preparation of a thing so John did you know is it's complicated right because you know you can easily spend a lot of effort making your own tool and then it still kind of sucks to use because it doesn't have all this iteration professional tool right you have to keep in mind though that when you license a professional tool it's not or a commercial tool it's not really gonna do exactly what you want and so you take a loss from putting up with it right and there's a cost there's an ongoing cost to like dealing with it the fact that you don't have control over this thing right there's a cost to the fact that that tool has an end of life that is not in your control so if you want your game to be released 20 years from now because that's just what you want to do right you don't want to make perishable goods then which I guess is a single player concern more because with multiplayer your player bases just go on adventures yes you know that has to be considered right is this tool gonna block me you know if it's something like an animation created tool probably not right but whatever of course if you're gonna build your own then it takes longer than you thought and it's gonna have little bugs that you're dealing with in the workflow and so that's friction right so I kind of just take a Jeff Roberts attitude which is just like if I want to do it that way then yeah yeah like I mean Jeff is like you know there's quality of life issues that sometimes supersede making the intellectually tactically best decision okay right like if it's kind of close either way and you would have more fun building your tools or you would feel like like you did something nicer or you just want to try something someone on the team who's interested in trying something then that's evidence to do it that way right because because people I mean take games take a long time and it's like people's lives right so the working part of their life and so you you just want to make that as good as possible and sometimes that means don't make people suffer through the terrible thing that you would build and instead spend some money but but sometimes it means let people do their thing right so it sort of it's very contextual I think maybe you know you just happen to be interested in this thing and you know that you're going to have fun doing it so the extra time is actually gets paid off in morale in some sense right it's like you are happier and you're more motor even if the game took longer to ship and cost more I mean that guy had a good time yeah so I mean and that's I mean that's that's not completely a joke right like when when you're in a in a position where it's like well I'm paying people right like you don't want that to be an extractive position where like I am using money as a manipulator to coerce people to produce the product that I want I mean that's a very antiseptic mechanical way to think about it right well I don't know him but sure but it's more like okay you you need to have a little bit of that because otherwise a game is never gonna be right used but at the same time it's like well these are this is how people are spending their working hours and you actually at some degree have to be grateful for that because they could just leave especially with a small company like mine there's not like an influx of people coming in the door people are not beating down the door to work for a company they've never heard of right they all want to go work on overwatch right so you know you have to be a little bit happy that people there's a give-and-take right like if someone wants to do this thing then and I don't think it's exactly the best if it's not going to ruin the game then we'll do it you know even if and that even comes down to smaller technical decisions like should part of the renderer be a certain way right I don't see how that's gonna really be faster but he thinks it will be and he's you know the reason he the reason he's in that programming position is because he's supposed to decisions right so you let people make decisions I guess that didn't really answer anything it sort of did though I mean it is that is a additional metric you can use if you're trying to make one of these decisions about like should we do this tool should we not do this tool one is anyone actually gonna enjoy making this tool does it what I mean I mean does anyone ever predict things with high accuracy about whether something is going to be right or not right it's I think in general we all even the best of us have a relatively poor track record yeah like if you were to actually go back and audit your decisions right and so just have that knowledge off priori like okay I think we should license this tool but I have about 30 percent confidence in that choice so really whatever right so but of course I'm the guy who takes it forever to ship games so so here's a question to follow that up because you happen to sort of be right there at the end of it what was the process for getting a new puzzle into the witness did the edge engine have a line puzzle editor because we're talking the process there was that I type lines into a CPP file and compile the game and we run the game not even with incremental rebuild because the does that even like I guess that works the playstation guys were over at one point and they said it works on the ps4 but I never even tried it there I don't work directly in the ps4 but it never worked on PC correctly enough it would like fail one time out of six which is often enough to just like throw it away no so and the reason that happened was just you know if you're making a game where you don't exactly know what it is in the beginning then you can't really know what the tools have to be right especially if it's a very core gameplay thing like oh there's these puzzles like I didn't know what the rules of the puzzles were gonna be I didn't know what kind of things could be in them right there's a lot of and there's a lot and and it's very easy if you want a prototype a new idea like maybe the length of what I'm tracing is like constrained in some weird way I can program that pretty fast programming a tool for that takes a lot longer yes right even if it's a crappy tool right right so by the time I knew what the game was like two-thirds of the puzzles were just already in C++ and like why at that point would you change it there were some issues like that like hey I mean I was very laissez-faire about the whole thing so like I'm gonna put symbols into puzzles so there's gonna be a thing where you just like allocate and array and then you like poke them I take the graph paper and like count the squares and put it in I'd say like you know three times I plus four or whatever to like put and sometimes the array wasn't big enough and you get some memory right errors but you do a little bit of like safeguarding to make sure that doesn't happen and it's fine so yeah I'm suspecting that was not the answer I mean that's and okay let's let's see here we've got about eight minutes left nine minutes left until we should take a break if I'm correct so let's see what would be a good thing to end on here how about what has been your happiest moment with programming I think my happiest moment in programming was I wrote this incredibly complex piece of code to do something and I just kind of remember being shocked at that it's like okay I'm done for the day I'm out of here cuz this worked the very first time what was the code you remember I don't I don't remember exactly exactly what the code was but it involved like a whole bunch of like math and like getting all everything all these I think it was it was the animation system oh that's right it was the animation system I was getting all of the you know the pieces of the animation are all running on these kind of you know threaded animation chains and and it's like I just I work on this thing for you know probably the entire afternoon I remember you know hitting compile and eating run and the guy walked across the screen [Laughter] well I blogged about one of them which was like in the first multiplayer game of Warcraft 1 working so I'll mention a different one instead I was actually doing the fog of war for StarCraft ok there another programmer had gone in dead fog of war and it was cell-based and so as a unit would move around the screen you see this map of cells around it which are 8x8 tiles and and they'd all sort of shiver around as the unit like moved pixel by pixel and it's trying to recalculate what the light map would look like and it was just it wasn't very scalable for the number of units we wanted to have and so did you written and so I just sort of step back and said you know what could I do differently and so I did Goro shading with filter algorithm to sort of soften all the edges and then I actually added line-of-sight as well so if you had a something it was blocking your view then the fog of war would be filled in so if you're here at the bottom of a cliff you can't see up here and so this area would still be fogged and ended being about the last assembly code I ever really wrote I mean maybe a couple of instructions after that but like that was the last serious block of assembly code cuz you know so you got to be better and like you know it took a while to get it nailed down but it worked and it's beautiful you know in line of sight works and it really makes the game work well it was a lot of fun to do so how long did that take three weeks my god I'd already done a lot of far the worst death so I really wanted the two previous work rafts like so right at the end of meatboy I was losing my mind because you know and throughout development we always had problems with the replay system it was it was like you know there would be like a block that broke and it was all input based in the beginning and you know it worked well but it always had these times where I would just totally mess up and it was two days either a day or two days before our Xbox gold submission and I'm like I have to and what I did is I had I was on like four hours of sleep and I get up out of my desk and I go and I sit with my back against the wall cause it sucks sitting on the floor with nothing and I didn't have a couch and I didn't want to sit in the computer chair so I sit on the floor back against the wall I just closed my eyes for like 30 minutes and I just thought about how I was gonna recode the entire replay system and after 30 minutes I was like okay and I did it and first time and that's the one so [Applause] that was some weird superhuman like well you're lifting the car off the baby yeah pretty much John I'm thinking of two and it's about a tie between them you've got you've got at least four minutes alright you could do both so the the they're both kind of recent one of them is probably from about two or three years ago and it's from a side-project game that I was working on during the witness and you know this game but most people do not so I won't go into that much detail about what it is but it was still in the relatively early stages where you're not trying that hard on the graphics or whatever so it's very easy to create results and I had a period of just like three to five weeks when I was working on the witness during the day I go to a cafe or go home after work and I was just then working on this all the way until it was time to go to sleep I'd eat whatever was fast I'd fall asleep I'd wake up I'd go right back to working on the side project and I'd go do the witness during the day and something about there's just this juxtapose do and you go and you can make something happen very quickly and it was coming out really great right there's this joy of like when when you're a program or designer and you have ideas and can make the ideas happen and they really work it's just really nice and so there was this this time of like where I was just completely content to do nothing else in life but like wake up and first thing in the morning I was doing this right and then I then I killed you witness stuff so I can't even explain why that was it's just you have to take my word for it if it's really nice and then the second one is more recent even is on the compiler that I was working on and maybe toward the end of 2014 beginning of 2015 when that first started coming online even in the first few months of development of that it's again from compilers are another area where it's easy to make a great deal of progress relatively quickly before you start getting bogged down later with implementation details and I have enough programming experience there's a way that you can capitalize on that effect right and structure your code to not bog you down for a while right and that's one thing that I feel like is my personal style is about thinking about that so like I got the compile time compilation working and I did this demo where I just you can run the same program at compile time in and release time or whatever and I was just super happy with that and it was not that complicated of a system and I knew like if I already can do this and it's not very complicated then then the rest of it is going to be tractable right and and I was again I was a case then when I just kept jamming on it and and new results came in and worked well and and progress was fast so because of that because of all of my experiences of when programming is the best is when progress doesn't take forever when it's not like pulling teeth to get anything done right but that's so much of like what current day programming is you know even down to compile times or whatever right so that's that's well well the other aspect of that psychology was like looking at all that looking at the misery of like programming in C++ everyday and being like oh my god I really do have a way out of this it was like I see a I see a light up there and I'm actually managing to get towards right and it like there was this release of all this dread that I'd had like because otherwise I was gonna I had already convinced myself that I was just gonna have to put up with that for the rest of my life right right and get what I was get done what I was doing despite that right right I was like oh games are hard enough but I've also got to do them while holding this like 50 pounds oh my god I don't have to do that so we'll see if that part actually comes true and I finished your thing but like the the feeling of that was amazing the hope is amazing when you can have it that's like one of those books you can alright well we're gonna take a break here thank you all for sharing we'll be back [Applause]
Info
Channel: Molly Rocket
Views: 10,678
Rating: 5 out of 5
Keywords: Handmade Hero, HandmadeCon 2016
Id: RpW3l6_Y0MY
Channel Id: undefined
Length: 81min 13sec (4873 seconds)
Published: Mon Sep 25 2017
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.