Lots of incredibly talented people worked on GTA Online, it's worth trying to think through why a team of smart developers might not have prioritized this, rather than assuming something negative about them.
326 karma · joined August 12, 2013
Lots of incredibly talented people worked on GTA Online, it's worth trying to think through why a team of smart developers might not have prioritized this, rather than assuming something negative about them.
In terms of tips and tricks, I often start looking at new code by trying to write out in plain english prose, a bit of a story of how the code works. Almost like I'm writing a blog post explaining how things work to someone else. Often this process uncovers rabbit holes that I need to go down to understand isolated bits of logic before I can return to building this big picture view, which is sort of the point.
FWIW, if you work on large enough projects, you probably aren't playing the game that much at all unless you're a gameplay programmer (and even then, you might only play the small fraction of the game that your feature touches). I do graphics/engine programming for games and the closest I get to playing the game is "load into level, teleport to position X, use a cheat code to give me item Y, use Y, see rendering bug"
I've joked on some projects that I'm excited for the game to ship so I can learn how to play.
I could be totally off my rocker, but I'm pretty sure I remember this from sometime around the early 2010's ?
To your comment, making games is great and fun and I think it's great you want to do it. Working in the games industry is different from making your own games though.
For one - you pretty much will never have creative input on the game you're making as a programmer (unless you're on a really small team).
Probably the biggest reason to avoid the games industry is salary. Game developers make less than their peers in other areas of software development. Lots of people blame this on there being a huge supply of fresh grads to hire cheaply, but that explanation feels like a myopic/simplified view from people on the outside looking in to me. My opinions aside, the fact is that if I left my job today and got a job programming something that wasn't games, I'd almost certainly make more money. I'm paid well enough to live a very comfortable life, but if your goal is just to maximize how much money you make, game dev is a bad choice.
Next thing to point to is crunch. Game development is notorious for "crunch" (aka - long periods of 70-80 hour weeks). Some studios do this more than others. It always sucks. It's also a fact of life in games. Even teams that "don't crunch" will usually wind up doing something like it at some point. I honestly have no idea if other programming fields do this too, it's just a common criticism that I've seen levelled at games industry jobs.
Being a game developer also means that you're not working with the kinds of tech stacks that the larger software industry as a whole is using, which feels like it would make switching fields more difficult (not that I've tried). For example: I haven't had to build a real database since college, have written maybe two unit tests in my life and don't think I've ever worked anywhere that's used the C++ standard library, despite working in C++ for most of my career.
It's also super unstable. It feels like most game studios will close (or transition to not making games) within ~10 years of starting up. Layoffs and studio closures are also a really common occurrence. Every time a meeting gets randomly added to my calendar at the last minute, my first thought is that a layoff is going to be announced (even though this has literally never happened at my current job). This is less of a concern at large studios (although definitely still a thing), it's a huge deal if your dream is to work at indie studios though.
There are lots of great things about working in games, but the above wall of text are some of the reasons why I'd hesitate to encourage folks who aren't already interested in the field to choose game development as a career.
If it's less than an hour before I'd normally get up, and I'm awake and feel like I want to get out of bed, I just get up early that day and am a little more tired when I go to bed that night.
Sometimes I'll wake up to use the bathroom, and lately I've been waking up for a few minutes at 3 am every morning, which is weird, but I always get back to sleep easily after the odd wakeup. Waking up is harder in the winter when sunrise is later and I need to get up in the dark, but it's not a major issue.
A poor night of sleep for me is either one where I wake up more than a couple times (usually because I overdid it at the gym and I'm crampy/sore, or because my apartment is unusually cold), or any time I get less than 6.5 hours of sleep.
I don't do anything special, just follow all the usual boring sleep advice: I don't lay on my bed unless I'm going to sleep (mostly), I go to bed and wake up at the same time most days, and have a set routine when I wake up. I exercise daily for 30-60 minutes, don't drink coffee after noon, and if I'm drinking alcohol, stop drinking a few hours before I'm going to sleep.
[Edit: I should add that when I was younger, I could drink coffee or alcohol at any time of night and still sleep well. That has changed as I've gotten older]
You can treat people kindly without having to agree with their opinions, or taking their PRs. If you are already going to reply or interact with them, it costs the same to be kind as it does to be a jerk.
You're dead on with the rest though. I'll add that UE4 is a large, hulking behemoth that generates a metric crap ton of intermediate files during builds and general development, which makes managing what to check in a bit of bear. Additionally, a lot of teams try to avoid having artists need to re-compile their editor when they pull changes from P4, so some amount of compiled binaries get checked in as well (usually from an automated build system like Jenkins or Team City that runs after every source file commit).
There are also some parts of the engine that need to exist in order for other parts to run properly, but that don't get compiled when you're making changes to the engine itself (like helper programs, or platform specific DLLs, which you need to specifically compile when you want them). Sometimes, these binaries are checked into p4 for one reason or another, which leads to fun things like needing to remember that if you're checking in the DotNet binaries folder, to explicitly NOT check in a couple iOS related DLLs, since the engine's build tool will try to recompile them every time you build a game for any platform, and will fail if those files aren't writeable. The engine is so massive at this point that there several other things like this that need to be kept in mind when setting up version control on a project.
[edit: I originally said there were "at least 20" things like this and realized I couldn't think of that many, so I've revised]
The engine is very capable (there's a reason that AAA studios without an in-house engine default to it), but it's also got 20 years of legacy systems in it and a lot of pain points to deal with for projects of any real size.
...even if the actual debugging would be much easier with a debug build.
As I touched on at the end of the article, I really don't have a clue what I'm doing in Vulkan, so any feedback from folks who know even a little bit of what they're doing is very, very welcome.
I'm just trying to slowly work through the complete ignorance stage of learning something new.
I'm especially interested to see what the performance cost of blending is on the GBA, given how expensive it is on present day phones.
Thanks for catching that! I'll remedy that line later this evening.
Although, evidently ARM chips have an optimized code path for 4 byte aligned data: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.... , I'm not sure if that would apply in this case or not?
I know about the sprite system in abstract, but I haven't tinkered with it yet (nor do I know enough to start tinkering with it yet). I'm still trying to decide whether I want to go down that route or build a ray casting engine / do some 3D stuff, since most of my other work is 3D related.
Regardless, this post was meant more to cater to the "I know nothing and want to feel like I'm making progress in 15 minutes" crowd.