https://new.pythonforengineers.com/blog/the-harsh-truth/ Python for Engineers * Home * About/Contact * Books * Blog Subscribe The Harsh Truth of Video Games Programming * Shantnu Tiwari Shantnu Tiwari Feb 16, 2022 * 5 min read The Harsh Truth of Video Games Programming I've been interested in games programming since I started learning programming as a teenager more than 25 years ago (gasp!) I started with Qbasic and Gorillas.bas, but never understood the code. [qb] Of course, I didn't get anywhere at the time, beyond very basic games. I wrote a simple Shoot the UFO type game in BASIC (later ported to C). All it had was a UFO moving left and right across the screen, and you could shoot a bullet at it. The biggest problem in the game: The UFO would stop moving as the bullet was fired, as I didn't know the concept of background processing. Which meant the game was stupidly easy to win. And for the next 15-20 years, I didn't make much progress beyond that. Sure, I learnt background processing, but the games didn't get any more complex. Game coding was hard. Enter Unity / Unreal / Godot Last 5-10 years, we've had a bunch of tools to make games programming easy. Unreal and Unity are industry standards, Godot is racing to catch up with them. It suddenly became easier to make games, as these tools did a lot of the heavy lifting for you. Level design, physics, collision detection, player animation - a lot of the things we did with code can now be done by the tools. Not only that, these gaming platforms come with a lot of prebuilt examples you can just copy and use. Even Godot comes with an awesome 3d shooter demo: [qb--2-] Unity is the top player here- you can buy full skeletons for whatever game you want to make- all the code done for you, just tweak for your own use case. So making games is now easy right? The sad truth - most developers will never finish their game I myself have abandoned 2 dozen games, in platforms ranging from PhaserJs to Unity to Godot. Browsing online forums, it looks like I'm not alone. Most people never finish games. I've seen beautiful demos, that developers spent multi-years working on and then just abandoned. I asked one guy when he sent me the files to his last game (on Google drive, no less): "This is awesome! Why don't you release it? At least put it on Github?" His answer: He had abandoned the games months ago. Just didn't care anymore. I struggled with Unity for a long time before discovering Godot. Godot is awesome, it is very easy to get started with (at least for 2d games). Here's what I found in my own journey: No matter how easy the tools make complex things the simple truth is: Games programming is still a lot of work Even designing and completing a whole level is tons of work. Even worse, it looks like never ending work. It took me just a month to get a simple mechanism in my game working- the player throws a grenade and the enemy can kick it back. [pb] Granted, it took a month because: a) I'm still learning Godot b) I have limited time to work on this in the evenings. c) I found a lot of gotchas in how Godot works- things you only learn by doing Now, some of this stuff might become easier over time. But still- this is just one enemy. Ideally, you need multiple enemies with their own quirks/attacks, coins, environmental hazards (like spikes), parallax (moving backgrounds) etc And my biggest fear- designing a whole level just seems like a nightmare; maybe because I've never done it before, maybe cause my design skills suck. When I looked at how much work there is just to create one simple level, I can understand how people can spend months/years on a simple game, just to abandon it. The skills are not transferable So I spent a lot of time learning the quirks and gotchas of Godot (and before that, Unity). Here is the problem though: these skills aren't transferable. And worse, they have little to no market value. What do I mean by this? I also spent some time learning about AWS(and still learning and crying. Is it normal to cry when learning 'bout Aws?). It's a huge ugly monster with dozens of keywords (buzzwords?). You spend 6 months passing an AWS exam, and all you have learnt is how AWS works. Except- some of these skills transfer. IAM might be an AWS specific tool, but similar tools exist for Azure, GCP and every other platform, and the concepts will transfer. I had already managed Linux servers, so working with EC2 servers wasn't that big a learning curve. So even though AWS has a steep learning curve, those skills can be used elsewhere. Not so with game engines You learn the quirks of how Godot handles a physics object colliding with a player object, it doesn't help you at all in Unity. And vice versa. Plus, the gaming industry is very exploitative and low paying, so it's not like you are learning any "in demand" skills. Your boring programmer maintaining a 10 year old Java app written with vanilla Js earns more than most game programmers. And it isn't any better for indie devs- most indie games (I don't have any statistics on hand, just my feeling based on talking to other devs) rarely make enough money to even justify the cost of their game assets, let alone their own coding time. Gaming, like Hollywood, is a hit-driven industry, where a few big players take in 90-95% of the profits, while most others barely survive. Games Programming is more than just code monkeying To be a games programmer you have to know about art, music, AI, level design, dialogue, story, just to mention a few. Sure you can outsource or buy art (and there are dozens of free resources). And it's not like most games have much of a "story". Sample video game story: Evil gubbamint has taken over, rather than fighting elections, take this machine gun and kill everyone (which might be how things work in America, from what we hear). But you as the developer still need to know the basics of these. Even if you end up buying art/music, you need to understand how it works in your genre of gaming. Especially for an indie dev- you are more than just a code monkey. You will have to know a bit of everything. And even in traditional gaming, most developers seem to know more than their narrow field of coding (just my impression from interviews etc). A tldr of why games programming is so hard * Completing a full game can take years * It's hard work- and I mean this literally. Hours and hours of coding * There is no treasure at the end of this rainbow: You can spend years with nothing to show for it * It's easy to lose heart and just quit. Or move to a different game, different engine, try another library etc And that is the harsh truth of game programming: Recent technologies have made the process much easier and smoother, but it's still a lot of work, and it's very easy to become disillusioned and give up. If anyone has a good solution, I'd be happy to hear your thoughts. Sign up to know when the next post is out, and get exclusive content Enter your email Subscribe Godot Tips 'n Tricks 'n Gotchas In this post I want to document all the useful tips and gotchas I found when using Godot. It's a living document, so will be updated regularly as I learn more Area vs StaticBody vs RigidBody vs Kinematic Body Vehicle Body Animated Sprite vs Animation Player vs Animation Tree Animation * Shantnu Tiwari Shantnu Tiwari Feb 8, 2022 * 5 min read How to Create an NFT Using Windows Notepad (and make millions!) How to Create an NFT Using Windows Notepad (and make millions!) In this post, I will show you how to create a 100% UNIQUE and NON-FUNGIBLE NFT using nothing but Windows Notepad (and not even Notepad++)! I have downloaded a monkey image from Wikipedia (because NFT is not Real NFT() until it comes with a monkey image): We will now * Shantnu Tiwari Shantnu Tiwari Jan 24, 2022 * 1 min read Cool Python libraries I want to try in 2022 Cool Python libraries I want to try in 2022 This isn't a post about my favourite Python libraries (iPython and Jupyter, pipx). Instead, I want to talk about cool Python libraries I've been hearing about, and want to try out In no particular order: The BeeWare Tools: https://docs.beeware.org/en/latest/ I have been aware of BeeWare * Shantnu Tiwari Shantnu Tiwari Jan 18, 2022 * 4 min read Python for Engineers (c) 2022 Powered by Ghost