Designer: I want to do that like that. Programmer: Don't do that, it wont work. *Designer does it anyway* QA to Programmer: This new thing doesn't work.
There is actually a solution to this. You set rules and the code ENFORCES them, not just warnes. I've been doing this on every project I've run formyears now and it works wonders.
You said *"There is no known way"* which might lead a person to believe someone will eventually discover one. When really it should be: *"It has been mathematically, rigorously proven there cannot exist such a way"*
Being interrupted each 15-20 minutes?! It takes me about that long to get back into that concetrated mind-map state after being interrupted; I literally wouldn't be able to work on anything hard! Otherwise I think it's the same challenges all programmers have, though sounds it's much more intense in gamedev. I had other programmers instead of artists, ignoring documentation, breaking my libraries in fun and unexpected ways. Patience is the key :)
Facts, working in the industry reminds me of working in a busy kitchen. It's pretty loud and hectic back there in the kitchen and the chef will even yell at you- but the chef isn’t angry at you, the chef is just passionate about what they love to do. I was 18 at the time and couldn't handle it, but I'm 25 years old and i can handle it now. I learned so much since then.
I remember running Fallout1 and 2 on a 486 computer once. It was one of the fastest computers of its type, still Fallout could run on it, but slow. No memory bugs and problems, but the loading screens and map travel took ages. Before there was a travel patch, the travel time was dependent on the processing power of your PC. I was happy though, because I like grinding exp and items, and I had a melee character who had about 12 random encounters before he got from Arroyo to Klamath in Fallout 2. The era of singleplayer games is still here, only the multiplayer people are more vocal. (It also needs certain types of personality to play multiplayer, not every time but in general, these people are louder on the internet than single player people.)
In all my years of working in IT (7 years) if i learned anything, its that users don't want to feel stupid, they just want to get their job done well (hopefully). So if you understand their frustration and try to guide them through what is happening instead of just handing them a solution (unless its a blatant issue), you'll find that they'll often fix the issue themselves or adapt because they want to feel smart and useful. A good explanation is worth 3 different solutions sometimes. Of course this isn't for everyone but its a good baseline in my experience. I'm not a developer (trying to be... hopefully one day) but i feel like this is in the same sorta area as what i deal with at work.
I really hate the underhanded gate kept answer, someone will give a solution that obviously described at such a high level of abstraction which gives off "if you can't understand this why are you here" vibes :(
Thank you for posting videos every day, you've become part of my morning routine. I hope this becomes a series, I really enjoy the specifics of how you're supposed to operate within a game development role. The accompanying stories are incredibly helpful for understanding your points and are just plain interesting to hear. I'm really happy you started uploading here, I wish others were so open about their development stories in this format. Thanks for sharing and posting Tim!
Mike Acton (previously Lead Engine Architect at) Insomniac Games said they tried all kinds of mechanisms and tests to get good employees. In the end, the only thing that actually tracked whether people would last, is if they had an insatiable desire to learn and absorb new information. The kind of person who is never stopping just because the job is done. For example, if a program stopped working, and the team fixed it __but didn't know how they fixed it__, the person would have to find out--they weren't content with the problem disappearing, lest it come back again.
Really enjoyed outer worlds. Stumbled over your channel here and am equally enamoured! Was too young for fallout and f2. Thx for all the videos. It‘s a joy to listen to you! ❤
There is no such thing as being too young for Fallout 1 & 2. And you should never overlook Arcanum either. Those are timeless classics. You're not too young anymore, so give 'em a spin ;D
Man between you and Mark Darrah on UA-cam this is a wonderful new genre of veteran game devs sharing their experiences. You love to see it. Can't wait for you to share some Outer Worlds 2 and Avowed dev stories someday. And maybe god forbid Bethesda let's you guys make another Fallout with more than 18 months.
I don't know whether Tim and Mark know each other (despite both being under the umbrella of Interplay in the past and Tim being American and Mark being Canadian) but I'd love a collaboration to happen at some point if they are indeed friends.
@@YaroslaffFedin John Romero, posted ~11 hours worth of him making maps for Sigil 2. No behind the scenes commentary or anything, and Doom mapping tutorials are a dime a dozen, but it is definitely cool to see him working on a new game that runs on an engine from 30 years ago.
I know Alex Seropian started a podcast called The 4th Curtain, although it is less about actual development skills and more so just a place where he interviews and chats with other folks in the industry.
The trauma in your face when you admitted you wrote code with a bug in it... I'm so sorry Tim... it shouldn't happen to anybody... I hope you are on the path to recovery...
I'm no programmer but I know exactly how you feel about being interrupted and losing all your work in your head or your work becoming flawed before you can write it all out
I've only been a programmer professionally for about 5 years but I am shocked at how much being the middle child prepared me for it. I accepted I'm going to take a somewhat unfair amount of blame when I was 5
Tim, i am Gleb and I like fallout wery much for all. But the most liked things is the consept line and the story. The second part of follaut was not so was not so absorbing and conceptual, much was built on the first part, the second gave the impression of an attraction of the first part. And I'm glad I put off doing two because there was a disc of the first. Thank you very much and a huge request, tell us how the heads appeared on the buildings in the first part, what formed the basis for their creation.
Статуи на зданиях типичны для стилистики ар-деко, это достаточно общее место, например: Chicago Board of Trade Building, Chrysler Building. Ар-деко же, в свою очередь, является индустриальным переосмыслением готических соборов Европы.
These videos are an immensely valuable and most importantly free insight into the game industry, I love to listen to them while working on my own game, I got Blender and Unity open as I'm typing this, and I don't have to tell you that my game is a post apocalyptic / retro futuristic, lol, you are very much appreciated, Tim!
The other problem is when someone took half a programming class and suggests what variable types to use instead of telling you what they want you to do in English. Or saying you can use an if statement.
The getting interrupted while working on a complex problem that requires my full concentration is something I've had happen to me so many times I can't count. I sorta wish the norm was closed uninterrupted work with times in between where people could ask me question. I think if non -programmers took up a little bit of programming they should start to pick up on what the most likely problem is when an error occurs. If the problem happened right after a change it's likely the change so they should investigate that first, but it seems like people just don't think about it in the moment.
Preallocating memory for the message window in worst-case scenario of an OOM error that took out the whole game - that made me almost wriggle with delight as I had thought of it a few seconds before you said it. 😂
This is why Tim is good leadership/manager material. lol Many programmers like me would've just added restriction that block artists from importing/packaging oversized assets AT ALL. If people want to ask me something but I'm busy coding, I'd just tell them to come back in an hour. Unless it's urgent enough to have manager show up, it's usually insignificant compare the actual coding issues I'm working on. Thus objectively-speaking it is simply a utilitarian decision to prioritize the bigger issue. :D A technically competent person with great patience/empathy and affable personality is a rare trifecta.
One way a programmer can be blamed, I know, for bugs is when they are implemented properly. For instance, a programmer adds a system that has a special requirement to work. Like "This will only detect objects with this Tag attached." and the tag is not attached. Of course, in my case I forgot to mention it in documentation at the time, just said it in passing to the level designers.
The state when you're coding so hard is like sleeping. So I'm using an argument that you don't wake up someone in the middle of the night to offer them a cup of tea and not expect them to be happy abou this.
Wow!! This is a real an eye opening. I have been wanting to make video games since I was 14 years old, I am now 39 years old. I am going to keep my patience and keep on learning C/C++ programming and mathematics until I get into game industry as game programmer. Thank you so much sir for pouring our your heart and give advice to inspire us!! Thank you so much!!
Afternoon Tim, I'm unsure whether you want to speak about it but I'd love a video on the 30/60fps issue that's currently going on and speak about CPU bottlenecks and the like. There's a lot of people out there who just don't understand it's not always a graphical issue that lowers framerates but can also be the CPU and other things. You mentioned it briefly in this video in relation to South Park, so I thought it might be worth expanding upon. Also you're correct about bugs and fps issues not always being a programmers issue. An online game I play had FPS drops and it was often related to graphical assets not being culled properly and lack of proper optimisation.
I sometimes get into that space of "I am one with the code and the code is with me", it is very frustrating when I get interrupted. But, most people who interrupt me are also engineers and usually have a technical question on what I'm working on so I can splip back into that head spaces without too much difficultly
It sometimes gets a bit too technical for me, but the overflow problems remind me of the infamous Bloodlines bug, when entities in the Downtown haven map will randomly be replaced by something else after long playing sessions. We never managed to fix that although we even recompiled the whole map and programmers call it a memory hole, whatever that is ;)! Also Bloodlines is known to crash if HD texture mods exceed a certain texture size limit, so this is a similar situation...
Right before you said what you think is the most important thing for a programmer, I paused the video and thought about it myself. I came up with the answer "self-reflection". Basically, when you've written some code, always come back and see whether it worked really well or didn't work well at all, always look back on the experience and notice what kind of code and code patterns led to good or bad experience. Interesting that later you gave an example of a scripter who wrote some inefficient code and didn't even notice the problems with it - I think that programmer would've really benefited from self-reflection
I think I read something somewhere saying that it can take 1 to 2 hours to really get into the zone being able to work uninterrupted is super duper important
This is interesting as a full stack web dev. I get the funniest bug requests even tho that's how the user wanted it at the time, and when given push back at time of the request, they say "Oh no we don't want it that way". Low and behold the fix for their "bug" is the original implementation suggestion. It seems like artists and designers fall into that similar feedback loop. "I know what I want and think I have a solution for it", when it should be left up to the programers to solve the how. Glad I am not the only one dealing with that feedback loop. patients is key. Letting people who deal with the code solve the problem and having people present the problem statement instead of solutions helps keep the code have a single responsibility too. Also working remote has helped my mental models tremendously :)
Great video thanks a lot! This script A calls B and B calls A problem can also be solved with tarjan's algorithm. It is a super cool algorithm that I found after running into the same issue! 😀 Keep up the good work I like your videos!!! 😀👍
Creating big novel things requires going though periods with bugs and unfinished parts. I respect people who can work through it and get to the other side. What think i'm interested is code quality control, i know that the industry was quite much younger those days and there were not too many best practices. These days certain game developers (e.g. creators of factorio) write a lot of unit/integrational tests and set up continious delivery mechanisms to avoid slowdowns, regressions and bugs. I'd like to hear some thoughts of Tim and others, if things have changed in their work, and which best practices did they implement with success and if something didnt work
As an IT tech, person with ADHD, and a husband, I totally empathize with your frustrations. 😅 I'll remember this so I can try and be a better coworker too.
I think this same insight applies to a lot of jobs where you have to do a ton of technical work. As a researcher, when I'm coding data in R I feel like any disruption will break my chain of concentration. When I'm performing non-intervention clinical work (scoring assessments, doing case formulation, etc.) or have my door open writing clinical case notes, it's absolutely fine to bother me (within reason, HIPAA is also a concern). Really appreciate the videos. This is a very different field than mine, but it's fascinating how much is similar in terms of workplace dynamics.
I want to one day work with Bethesda on the fallout series and I am so grateful for finding your channel. I had no idea you were making videos on these kinds of things until I believe it was a Juicehead video that let me know.
The solution to this is to have the code enforce the rules. Warnings are things that are optional. If something is problematic, unsupported or wrong its treated as an error and is enforced. Take the texture examples given where textures were larger than they are supposed to be. When the code goes to load a texture it checks this and if it is too large a different "error" texture is swapped in. The error texture could be something like bold white text saying "invaled texture" on a fuscia background. Then bad textures never get loaded and the problem is clearly visible. If they want their art to work, they have to fix the texture. Similar things can be done in other situations.
Love these talks, they are really valuable! I think people rarely have the ability to really understand or admit how different our thinking styles are. The hyper logic vs. chaotic creativity vs. "hey bro, biz school said it was ok to do this" thing. I can totally see a designer thinking that a no from a programmer could be a maybe = yes, because in their view computers mostly work anyway. It could be beneficial to spend some time getting to know what other people actually do in their roles one knows nothing about. Or at least have deeper post-mortems to make it more clear what happened in the project that failed. I also think it should be more talked about why programmers' mental work isn't protected better. I wonder what would happen if artists would have to deal with people just randomly coming in and taking away your ability to produce quality work for 30mins and just shrugging it off and then start rumors how difficult and annoying that artist is :D
Thank you so much for your thoughtful and inspiring videos Tim. As a programmer, I hope you publish more videos like this one, it would be even more awesome if you get the chance to interview other veteran game programmers :)
I'm a programmer (not in games) and I've made it such thst we can serialize the state to a json file we call the snapshot. Whenever anyone has an issue my answer is always the same: "Print a snapshot and open a ticket". I *trained* my coworkers to not interrupt me because they will know I will not move a finger without a snapshot and a ticket. And no, whatever it is, is not that urgent. This plus putting effort in writing clear detailed error messages has made my work a lot more enjoyable and productive.
well if something could be done wrongly it will be done, I try to restrict tools for designers as much as possible or put warnings all over the place, or automatic verify scripts
I remember jumping around in the terrain outside of Shattrath in WoW while uncovering the map, and mid-jump in one location I was abruptly disconnected. Tried two more times at the same spot, same result.
Great video Tim! Your work has been very inspirational for me and I love that you’ve been telling stories about developing those games as well as general development advice. These videos are awesome! I hope you also make one on (watching) video game artists as well!
That's probably why a lot of techical artists end up doing optimization. String overflow seems also happens to Unity as well if a game project is big enough.
I hate when that happens and then u go back to coding and can take a while to get back to it and then forget something you needed to change and or add but didn’t.
What are your thoughts on software development methodologies like Agile, Scrum, Kanban? How have you worked on Fallout and other games and how has this changed over your career?
I think an important note on the interviewees is, from my personal experience, I’m actually KINDER to people that are below status to me or a peer. I just hate authority and have a hard time hiding it with my social issues. I love teaching people and helping, I just don’t want to explain things to someone above me who should ostensibly know this already, if they're the one doing the tech interview. XP
Day 3 of asking how the power armor of fallout 4 compares to the original idea and vision of power armor from fallout also day 3 of saying please keep these videos coming they're great
Designer: The programmer will fix it, they know how it works. Programmer: I have no idea how it works. I made it and now it works, don't ask me why or how, just offer a prayer to the machine spirit and compile. As the joke went When I wrote this, only God and I knew how it works. Now only God knows.
With respect to programmers getting interrupted, because they are the default go-to, I was wondering if you’d ever had a team large enough to allow for one programmer per day to be the nominated “go-to” resource for that day? Almost like a help desk roster. Is this something anyone you know of does, or did?
I never did that. It's a good idea, but only if you have a generalized programming group. If you have a lot of specialists (like most modern game dev teams), asking the UX programmer to be the go-to resource might not get you answers to why the frame rate is slow during combat or why the game is crashing when a spell is cast?
Isn't part of the problem that game engines have become a larger percentage of the overall codebase and there are bugs that can be created by leveraging game engine features in a certain way before the programmer even starts getting to work?
Question: The string you had to allocate memory for, did the string have a max size? Like you couldn't print a string larger than the memory it was allocated for? It probably was but am just curious if you remember. Very interesting though.
Can you please explain the difference between a developer and a programmer. In my mind they are the same, maybe a game developer is just using tools and not writing code line by line ?
It's not the only time I've heard that programmers generally have poor soft skills. I personally have no problem with questions as long as I have enough time and resources to answer them. The frequency of the questions asked is also important. Also, I don't like disrespect. When that happens, I also start asking questions... Management called me "dangerous" and still wanted me to stay, even unofficially asking me to move up to a higher position lol.
Ironically this could be an example of an infinite loop. It's possible the scripter realized something was wrong but didn't know how to fix it. They didn't ask a programmer because they didn't want to feel dumb so they left it in hoping someone else would fix it. The programmer now gets annoyed because other developers are asking them to fix an issue that was down to user error. Some developers in general can be very sensitive to criticism of their work especially from those they see as unqualified to pass judgement. I've worked with a writer who threw a fit because their story was over scoped and I suggested changes to make it work better with the project size. They felt their vision was being challenged and didn't want to compromise.
Okay, I love you Tim, but you mangled the halting problem. The halting problem does not mean or imply that you can't write a program free of errors. The halting problem falls into the same category as the liar's paradox or Russell's paradox where self-reference causes the output to contradict its premises. It applies only when constructing an algorithm that applies over the range of all valid computer programs. It doesn't mean that you can't prove a particular computer program to be correct. Its trivial to prove that a simple Hello World program terminates and has no errors. The point of the Halting Problem is not to demonstrate that you can't write correct code, but that it is possible to write mathematically well-formed problems with no calculable solutions. Your language about "sufficiently complex" makes me think you're correctly drawing an analogy to Gödel's Paradox, which proves essentially the same thing. But "sufficiently complex" means, in this case, capable of deriving from it all of mainstream mathematics (I say mainstream mathematics, because when you get rid of the law of the excluded middle, things break slightly less frequently and catastrophically, but you can't prove as many theorems). My own take is that the games industry puts out unusually very buggy products, because performance matters so much more than correctness. You're not writing code for NASA, and its more important to get those FPS than write code that just needs to work often enough that people don't complain. And I'm reminded of a Rust project to create a graphics library that focused on code correctness that wound up concluding that graphics hardware itself is not actually mathematically sound and so the entire project was abandoned in favor of a more realistic approach. So I guess my point isn't that its not possible, its that it depends on how much training, resources, and adjusting how you develop to order to achieve a certain degree of buglessness. Formally verified software *is* a thing. But that doesn't mean anyone is going to pony up the tens of millions of dollars to commission a formally verified game engine that will obsolete two years into development.
"All problems are coder problems. If the problem is in the design or planning, the coders should have caught the issue and fixed it. If the problem happened elsewhere, it is because the programmers didn't proactively prevent it from happening." Right?
14:33-14:36 I would definitely not pass that kind of test. Low tolerance for interruptions. Problems like that should be resolved, not "tolerated", unless there's a reason for it - which there is here: others just don't know. Blind following of authorities is never good.
The programmer is the healer if the dev team. All of the blame and none of the credit.
Oh, I like that analogy!
"I need healing." - game designer
@@OmegaF77 "Stop standing in the fire." - programmer
Designer: I want to do that like that.
Programmer: Don't do that, it wont work.
*Designer does it anyway*
QA to Programmer: This new thing doesn't work.
You have made a video game before, haven't you?
@@CainOnGames Yes, I've been a game programmer for a while now hahaha
Sounds like what engineers deal with because of architects
As someone who does programming outside of games. This happens all the time.
There is actually a solution to this. You set rules and the code ENFORCES them, not just warnes. I've been doing this on every project I've run formyears now and it works wonders.
You said *"There is no known way"* which might lead a person to believe someone will eventually discover one.
When really it should be: *"It has been mathematically, rigorously proven there cannot exist such a way"*
"patience" called it out before you said it! Wish i'd recorded it - programmer since 35 years
Being interrupted each 15-20 minutes?! It takes me about that long to get back into that concetrated mind-map state after being interrupted; I literally wouldn't be able to work on anything hard!
Otherwise I think it's the same challenges all programmers have, though sounds it's much more intense in gamedev. I had other programmers instead of artists, ignoring documentation, breaking my libraries in fun and unexpected ways. Patience is the key :)
Facts, working in the industry reminds me of working in a busy kitchen. It's pretty loud and hectic back there in the kitchen and the chef will even yell at you- but the chef isn’t angry at you, the chef is just passionate about what they love to do.
I was 18 at the time and couldn't handle it, but I'm 25 years old and i can handle it now. I learned so much since then.
As a programmer in a large game studio this is spot-on
I remember running Fallout1 and 2 on a 486 computer once. It was one of the fastest computers of its type, still Fallout could run on it, but slow. No memory bugs and problems, but the loading screens and map travel took ages.
Before there was a travel patch, the travel time was dependent on the processing power of your PC. I was happy though, because I like grinding exp and items, and I had a melee character who had about 12 random encounters before he got from Arroyo to Klamath in Fallout 2.
The era of singleplayer games is still here, only the multiplayer people are more vocal. (It also needs certain types of personality to play multiplayer, not every time but in general, these people are louder on the internet than single player people.)
I was watching video while standing next to my stand desk. Fell dowjn to the ground when you mentioned you made bug in your code
In all my years of working in IT (7 years) if i learned anything, its that users don't want to feel stupid, they just want to get their job done well (hopefully). So if you understand their frustration and try to guide them through what is happening instead of just handing them a solution (unless its a blatant issue), you'll find that they'll often fix the issue themselves or adapt because they want to feel smart and useful. A good explanation is worth 3 different solutions sometimes. Of course this isn't for everyone but its a good baseline in my experience. I'm not a developer (trying to be... hopefully one day) but i feel like this is in the same sorta area as what i deal with at work.
I really hate the underhanded gate kept answer, someone will give a solution that obviously described at such a high level of abstraction which gives off "if you can't understand this why are you here" vibes :(
Thank you for posting videos every day, you've become part of my morning routine. I hope this becomes a series, I really enjoy the specifics of how you're supposed to operate within a game development role. The accompanying stories are incredibly helpful for understanding your points and are just plain interesting to hear. I'm really happy you started uploading here, I wish others were so open about their development stories in this format. Thanks for sharing and posting Tim!
Mike Acton (previously Lead Engine Architect at) Insomniac Games said they tried all kinds of mechanisms and tests to get good employees. In the end, the only thing that actually tracked whether people would last, is if they had an insatiable desire to learn and absorb new information.
The kind of person who is never stopping just because the job is done. For example, if a program stopped working, and the team fixed it __but didn't know how they fixed it__, the person would have to find out--they weren't content with the problem disappearing, lest it come back again.
I love that "Challenges Programmers Face" is basically underestimation about how good is other people at not following technical rules.
Really enjoyed outer worlds. Stumbled over your channel here and am equally enamoured!
Was too young for fallout and f2.
Thx for all the videos. It‘s a joy to listen to you! ❤
There is no such thing as being too young for Fallout 1 & 2. And you should never overlook Arcanum either. Those are timeless classics. You're not too young anymore, so give 'em a spin ;D
I'm genuinely amazed Coca Cola would even allow Nuka Cola merchandise to exist.
Man between you and Mark Darrah on UA-cam this is a wonderful new genre of veteran game devs sharing their experiences. You love to see it. Can't wait for you to share some Outer Worlds 2 and Avowed dev stories someday. And maybe god forbid Bethesda let's you guys make another Fallout with more than 18 months.
thanks for tip, subbed to Mark. Anybody knows any other veteran programmers with good channels?
I don't know whether Tim and Mark know each other (despite both being under the umbrella of Interplay in the past and Tim being American and Mark being Canadian) but I'd love a collaboration to happen at some point if they are indeed friends.
@@YaroslaffFedin John Romero, posted ~11 hours worth of him making maps for Sigil 2. No behind the scenes commentary or anything, and Doom mapping tutorials are a dime a dozen, but it is definitely cool to see him working on a new game that runs on an engine from 30 years ago.
@@YaroslaffFedin Sandy Petersen sometimes shares stories about designing some legendary games
I know Alex Seropian started a podcast called The 4th Curtain, although it is less about actual development skills and more so just a place where he interviews and chats with other folks in the industry.
The trauma in your face when you admitted you wrote code with a bug in it... I'm so sorry Tim... it shouldn't happen to anybody... I hope you are on the path to recovery...
I'm no programmer but I know exactly how you feel about being interrupted and losing all your work in your head or your work becoming flawed before you can write it all out
I've only been a programmer professionally for about 5 years but I am shocked at how much being the middle child prepared me for it. I accepted I'm going to take a somewhat unfair amount of blame when I was 5
Tim, i am Gleb and I like fallout wery much for all. But the most liked things is the consept line and the story. The second part of follaut was not so was not so absorbing and conceptual, much was built on the first part, the second gave the impression of an attraction of the first part. And I'm glad I put off doing two because there was a disc of the first. Thank you very much and a huge request, tell us how the heads appeared on the buildings in the first part, what formed the basis for their creation.
Статуи на зданиях типичны для стилистики ар-деко, это достаточно общее место, например: Chicago Board of Trade Building, Chrysler Building. Ар-деко же, в свою очередь, является индустриальным переосмыслением готических соборов Европы.
These videos are an immensely valuable and most importantly free insight into the game industry,
I love to listen to them while working on my own game, I got Blender and Unity open as I'm typing this,
and I don't have to tell you that my game is a post apocalyptic / retro futuristic, lol,
you are very much appreciated, Tim!
Make a video to show off what you are making.
The other problem is when someone took half a programming class and suggests what variable types to use instead of telling you what they want you to do in English.
Or saying you can use an if statement.
It's cool to hear you describe these problems and then notice that I've run into the same things making my own games.
The getting interrupted while working on a complex problem that requires my full concentration is something I've had happen to me so many times I can't count. I sorta wish the norm was closed uninterrupted work with times in between where people could ask me question. I think if non -programmers took up a little bit of programming they should start to pick up on what the most likely problem is when an error occurs. If the problem happened right after a change it's likely the change so they should investigate that first, but it seems like people just don't think about it in the moment.
Preallocating memory for the message window in worst-case scenario of an OOM error that took out the whole game - that made me almost wriggle with delight as I had thought of it a few seconds before you said it. 😂
When I had to write that code, I was wriggling with something, but it wasn't delight.
This is why Tim is good leadership/manager material. lol
Many programmers like me would've just added restriction that block artists from importing/packaging oversized assets AT ALL.
If people want to ask me something but I'm busy coding, I'd just tell them to come back in an hour. Unless it's urgent enough to have manager show up, it's usually insignificant compare the actual coding issues I'm working on. Thus objectively-speaking it is simply a utilitarian decision to prioritize the bigger issue. :D
A technically competent person with great patience/empathy and affable personality is a rare trifecta.
Patience is a virtue, or so I've heard.
Man... this video reminds me of my time in QA. Oh the stories I could tell...
One way a programmer can be blamed, I know, for bugs is when they are implemented properly.
For instance, a programmer adds a system that has a special requirement to work. Like "This will only detect objects with this Tag attached." and the tag is not attached.
Of course, in my case I forgot to mention it in documentation at the time, just said it in passing to the level designers.
Love you Tim!
Your experience as a director, designer, and programmer is rare gem in game dev. Thank you for sharing!
absolutely, the most important part of choosing coworkers is how well you work together.
The state when you're coding so hard is like sleeping. So I'm using an argument that you don't wake up someone in the middle of the night to offer them a cup of tea and not expect them to be happy abou this.
Wow!! This is a real an eye opening. I have been wanting to make video games since I was 14 years old, I am now 39 years old. I am going to keep my patience and keep on learning C/C++ programming and mathematics until I get into game industry as game programmer. Thank you so much sir for pouring our your heart and give advice to inspire us!! Thank you so much!!
the interruption take is so true!
Afternoon Tim,
I'm unsure whether you want to speak about it but I'd love a video on the 30/60fps issue that's currently going on and speak about CPU bottlenecks and the like. There's a lot of people out there who just don't understand it's not always a graphical issue that lowers framerates but can also be the CPU and other things.
You mentioned it briefly in this video in relation to South Park, so I thought it might be worth expanding upon.
Also you're correct about bugs and fps issues not always being a programmers issue. An online game I play had FPS drops and it was often related to graphical assets not being culled properly and lack of proper optimisation.
I wonder how many programmers got a call because a modeler/rigger/animator did something in the 3d software that caused it to stretch and contort.
As a fellow sysadmin I can relate A LOT to the constant interruptions of your colleagues while you're trying to do something complex and intricate
I sometimes get into that space of "I am one with the code and the code is with me", it is very frustrating when I get interrupted. But, most people who interrupt me are also engineers and usually have a technical question on what I'm working on so I can splip back into that head spaces without too much difficultly
It sometimes gets a bit too technical for me, but the overflow problems remind me of the infamous Bloodlines bug, when entities in the Downtown haven map will randomly be replaced by something else after long playing sessions. We never managed to fix that although we even recompiled the whole map and programmers call it a memory hole, whatever that is ;)! Also Bloodlines is known to crash if HD texture mods exceed a certain texture size limit, so this is a similar situation...
Haha, the "why there's some furniture in my fish tank" bug! BTW, thanks for the mod.
Right before you said what you think is the most important thing for a programmer, I paused the video and thought about it myself. I came up with the answer "self-reflection". Basically, when you've written some code, always come back and see whether it worked really well or didn't work well at all, always look back on the experience and notice what kind of code and code patterns led to good or bad experience. Interesting that later you gave an example of a scripter who wrote some inefficient code and didn't even notice the problems with it - I think that programmer would've really benefited from self-reflection
The part about interruption is so true. That whole imaginary architecture in your mind just gone when someone interrupts you when you are in the flow.
loving the constat uploads
I love the hiring tip about looking for patient programmers. I'm definitely filing that one away if ever I need to weigh in on a engineering hire.
I think I read something somewhere saying that it can take 1 to 2 hours to really get into the zone
being able to work uninterrupted is super duper important
This is interesting as a full stack web dev.
I get the funniest bug requests even tho that's how the user wanted it at the time, and when given push back at time of the request, they say "Oh no we don't want it that way". Low and behold the fix for their "bug" is the original implementation suggestion. It seems like artists and designers fall into that similar feedback loop. "I know what I want and think I have a solution for it", when it should be left up to the programers to solve the how. Glad I am not the only one dealing with that feedback loop.
patients is key. Letting people who deal with the code solve the problem and having people present the problem statement instead of solutions helps keep the code have a single responsibility too.
Also working remote has helped my mental models tremendously :)
Great video thanks a lot! This script A calls B and B calls A problem can also be solved with tarjan's algorithm. It is a super cool algorithm that I found after running into the same issue! 😀
Keep up the good work I like your videos!!! 😀👍
Creating big novel things requires going though periods with bugs and unfinished parts. I respect people who can work through it and get to the other side. What think i'm interested is code quality control, i know that the industry was quite much younger those days and there were not too many best practices. These days certain game developers (e.g. creators of factorio) write a lot of unit/integrational tests and set up continious delivery mechanisms to avoid slowdowns, regressions and bugs. I'd like to hear some thoughts of Tim and others, if things have changed in their work, and which best practices did they implement with success and if something didnt work
As an IT tech, person with ADHD, and a husband, I totally empathize with your frustrations. 😅 I'll remember this so I can try and be a better coworker too.
These videos are insightful, thanks very much Tim. loving the content dude!
I think this same insight applies to a lot of jobs where you have to do a ton of technical work. As a researcher, when I'm coding data in R I feel like any disruption will break my chain of concentration. When I'm performing non-intervention clinical work (scoring assessments, doing case formulation, etc.) or have my door open writing clinical case notes, it's absolutely fine to bother me (within reason, HIPAA is also a concern).
Really appreciate the videos. This is a very different field than mine, but it's fascinating how much is similar in terms of workplace dynamics.
that's really relatable, definitely have to work on my patience
I want to one day work with Bethesda on the fallout series and I am so grateful for finding your channel. I had no idea you were making videos on these kinds of things until I believe it was a Juicehead video that let me know.
You are awesome Tim Cain!
YES! OMG it's so true when concentrating on what algorithm and structure to use, outside interference is the last thing I want.
Hey, I just want to say as an aspiring indie game dev and a life long fan of video games, you are an inspiration to me.
I think people who can do stack tracing should rule over those who can't .
Man... this is soooo true. Sometimes it's even: "*your* game doesn't work".
Your videos are great inspiration fuel for me. Thank you for making them!
The solution to this is to have the code enforce the rules. Warnings are things that are optional. If something is problematic, unsupported or wrong its treated as an error and is enforced. Take the texture examples given where textures were larger than they are supposed to be. When the code goes to load a texture it checks this and if it is too large a different "error" texture is swapped in. The error texture could be something like bold white text saying "invaled texture" on a fuscia background. Then bad textures never get loaded and the problem is clearly visible. If they want their art to work, they have to fix the texture. Similar things can be done in other situations.
Thank you so much for sharing your wisdom and expertise! ✌
My favorite story is online games having lag because animation was badly planned for the server architecture.
Love these talks, they are really valuable! I think people rarely have the ability to really understand or admit how different our thinking styles are. The hyper logic vs. chaotic creativity vs. "hey bro, biz school said it was ok to do this" thing. I can totally see a designer thinking that a no from a programmer could be a maybe = yes, because in their view computers mostly work anyway. It could be beneficial to spend some time getting to know what other people actually do in their roles one knows nothing about. Or at least have deeper post-mortems to make it more clear what happened in the project that failed.
I also think it should be more talked about why programmers' mental work isn't protected better. I wonder what would happen if artists would have to deal with people just randomly coming in and taking away your ability to produce quality work for 30mins and just shrugging it off and then start rumors how difficult and annoying that artist is :D
Thank you so much for your thoughtful and inspiring videos Tim. As a programmer, I hope you publish more videos like this one, it would be even more awesome if you get the chance to interview other veteran game programmers :)
Gotta love the honesty
Thanks for sharing Tim!
So programmers need to have the patience of an Adeptus Custodes. Got it.
I'm a programmer (not in games) and I've made it such thst we can serialize the state to a json file we call the snapshot. Whenever anyone has an issue my answer is always the same: "Print a snapshot and open a ticket". I *trained* my coworkers to not interrupt me because they will know I will not move a finger without a snapshot and a ticket. And no, whatever it is, is not that urgent.
This plus putting effort in writing clear detailed error messages has made my work a lot more enjoyable and productive.
This is fascinating stuff.
well if something could be done wrongly it will be done, I try to restrict tools for designers as much as possible or put warnings all over the place, or automatic verify scripts
Patience is not only needed to deal with other people, but to accept that some of these bugs are actually of your own doing.
I remember jumping around in the terrain outside of Shattrath in WoW while uncovering the map, and mid-jump in one location I was abruptly disconnected. Tried two more times at the same spot, same result.
Great points, thanks.
Great video Tim! Your work has been very inspirational for me and I love that you’ve been telling stories about developing those games as well as general development advice. These videos are awesome!
I hope you also make one on (watching) video game artists as well!
You’re so inspiring to a young gay man who loves video games more than anything ❤ Thank you for the videos Mr. Cain!
That's probably why a lot of techical artists end up doing optimization. String overflow seems also happens to Unity as well if a game project is big enough.
I hate when that happens and then u go back to coding and can take a while to get back to it and then forget something you needed to change and or add but didn’t.
What are your thoughts on software development methodologies like Agile, Scrum, Kanban? How have you worked on Fallout and other games and how has this changed over your career?
I think an important note on the interviewees is, from my personal experience, I’m actually KINDER to people that are below status to me or a peer. I just hate authority and have a hard time hiding it with my social issues. I love teaching people and helping, I just don’t want to explain things to someone above me who should ostensibly know this already, if they're the one doing the tech interview. XP
Day 3 of asking how the power armor of fallout 4 compares to the original idea and vision of power armor from fallout also day 3 of saying please keep these videos coming they're great
Designer: The programmer will fix it, they know how it works.
Programmer: I have no idea how it works. I made it and now it works, don't ask me why or how, just offer a prayer to the machine spirit and compile.
As the joke went
When I wrote this, only God and I knew how it works.
Now only God knows.
With respect to programmers getting interrupted, because they are the default go-to, I was wondering if you’d ever had a team large enough to allow for one programmer per day to be the nominated “go-to” resource for that day? Almost like a help desk roster. Is this something anyone you know of does, or did?
I never did that. It's a good idea, but only if you have a generalized programming group. If you have a lot of specialists (like most modern game dev teams), asking the UX programmer to be the go-to resource might not get you answers to why the frame rate is slow during combat or why the game is crashing when a spell is cast?
Isn't part of the problem that game engines have become a larger percentage of the overall codebase and there are bugs that can be created by leveraging game engine features in a certain way before the programmer even starts getting to work?
Could you tell us about the questions you ask in interviews when applying for a job for various specialists?)
That's so true about interruptions while programming, I hate it. :/
Question:
The string you had to allocate memory for, did the string have a max size? Like you couldn't print a string larger than the memory it was allocated for? It probably was but am just curious if you remember. Very interesting though.
Hey Tim,
Scarlet Chorus or the Disfavored?
Can you please explain the difference between a developer and a programmer. In my mind they are the same, maybe a game developer is just using tools and not writing code line by line ?
It's not the only time I've heard that programmers generally have poor soft skills.
I personally have no problem with questions as long as I have enough time and resources to answer them.
The frequency of the questions asked is also important.
Also, I don't like disrespect.
When that happens, I also start asking questions...
Management called me "dangerous" and still wanted me to stay, even unofficially asking me to move up to a higher position lol.
I don't even program games and I'm still blamed for every bug in my software. 😂
Ironically this could be an example of an infinite loop. It's possible the scripter realized something was wrong but didn't know how to fix it. They didn't ask a programmer because they didn't want to feel dumb so they left it in hoping someone else would fix it. The programmer now gets annoyed because other developers are asking them to fix an issue that was down to user error. Some developers in general can be very sensitive to criticism of their work especially from those they see as unqualified to pass judgement. I've worked with a writer who threw a fit because their story was over scoped and I suggested changes to make it work better with the project size. They felt their vision was being challenged and didn't want to compromise.
My biggest struggle is the programming itself 😂
Hey Tim. It is me. Haha close enough with coca cola
What about the challenges Fallout 5 faces? 😂
Okay, I love you Tim, but you mangled the halting problem. The halting problem does not mean or imply that you can't write a program free of errors. The halting problem falls into the same category as the liar's paradox or Russell's paradox where self-reference causes the output to contradict its premises. It applies only when constructing an algorithm that applies over the range of all valid computer programs. It doesn't mean that you can't prove a particular computer program to be correct. Its trivial to prove that a simple Hello World program terminates and has no errors. The point of the Halting Problem is not to demonstrate that you can't write correct code, but that it is possible to write mathematically well-formed problems with no calculable solutions. Your language about "sufficiently complex" makes me think you're correctly drawing an analogy to Gödel's Paradox, which proves essentially the same thing. But "sufficiently complex" means, in this case, capable of deriving from it all of mainstream mathematics (I say mainstream mathematics, because when you get rid of the law of the excluded middle, things break slightly less frequently and catastrophically, but you can't prove as many theorems).
My own take is that the games industry puts out unusually very buggy products, because performance matters so much more than correctness. You're not writing code for NASA, and its more important to get those FPS than write code that just needs to work often enough that people don't complain. And I'm reminded of a Rust project to create a graphics library that focused on code correctness that wound up concluding that graphics hardware itself is not actually mathematically sound and so the entire project was abandoned in favor of a more realistic approach. So I guess my point isn't that its not possible, its that it depends on how much training, resources, and adjusting how you develop to order to achieve a certain degree of buglessness. Formally verified software *is* a thing. But that doesn't mean anyone is going to pony up the tens of millions of dollars to commission a formally verified game engine that will obsolete two years into development.
truuuuueeeeee
"All problems are coder problems. If the problem is in the design or planning, the coders should have caught the issue and fixed it. If the problem happened elsewhere, it is because the programmers didn't proactively prevent it from happening." Right?
14:33-14:36 I would definitely not pass that kind of test. Low tolerance for interruptions.
Problems like that should be resolved, not "tolerated", unless there's a reason for it - which there is here: others just don't know.
Blind following of authorities is never good.
Coke instead of Nuka is a choice
I was just about to comment on the absence of Nuka Cola lol