27 ms·
Isn't it what makes game programming interesting, though? I work at a FAANG company and do game and engine development as side projects and would like to do tha
by turing_complete 6y ago
Isn't it what makes game programming interesting, though? I work at a FAANG company and do game and engine development as side projects and would like to do that full-time at some point. In game programming you actually solve difficult and interesting problems and really care about the performance your code. For the majority of other software engineering positions, managing dependencies seems to be the hardest challenge.
- awild 6y agoWith the size of game development teams it really depends on what you're working on (And I'd speculate, that less people work on engines than on game systems). Only the really big studios roll their own engines. Looking at something like Watchdogs, there are also people involved in writing Quest and Dialogue systems etc. for the game designers and these things are quite mundane.
- ajuc 6y ago> Quest and Dialogue systems etc. for the game designers and these things are quite mundane. Depends what you want from them. I've written a small quest and dialog system for my indie game (never finished, as most of my side projects :( ), and it was quite involved. I used a graph programming library ( https://github.com/ajuc/pefjs https://github.com/ajuc/pefjs ) to create graphs of nodes where each edge is a blocking condition (is the $MONSTER alive? is player near $NPC?) and each node is next step in a quest (with some actions if needed). Then there was a in-memory database allowing to record arbitrary metadata that quests might require. Stuff like "have the player killed that monster", "does the player have the quest item equipped", "have the player talked with one of these 4 people about X", "has any NPC seen the player near the $PLACE during $EVENT". I briefly considered adding gossips - if $NPC1 seen player commit murder and $NPC2 meets $NPC1 - then $NPC2 remembers that too, and remember who told them. But then I calculated how much memory that would need and it's staggering. And players won't notice anyway most likely. But it would be so cool. Once you start recording data about data (does $NPC2 know about the fact that $NPC1 seen player commit murder?) it's hard to know where to stop. Anyway, even without these - there's lots of that stuff and it needs indexing and filtering. I considered using some in-memory SQL database or datalog, but eventually just rolled my own with basic hashmap indexing. Then there was dialog system and I wanted more variety than the same responses every time, so I created sets of possible greetings and goodbyes, confirmations, negations, reaction to repeatedly asking the same question, etc. Then the system chooses randomly from the list (each "kind" of NPC has separate list - one for working class characters, one for strangers, one for scholarly types, and special lists for important NPCs). You can also parametrize dialogs with data from quest database - so you can for example ask the player about his new $COLOR $BRAND vehicle when he comes to see the NPC the first time after the purchase. There's lots of interesting stuff to do there, even if it's not visual.
- awild 6y agoI'm not saying these are cool and impressive engineering projects. I've studied games engineering and also worked on small scale games, but there is an enormous difference between optimized graphics/game engine code and what you and I did.
- ajuc 6y agoWell it's a hobby project not an AAA game. I did 3d graphics too even some shaders for commercial projects (not games - enhanced vision devices for partially blind people). I did some basic (archais by now) 3d rendering techniques (BSP trees, portals, quadtrees) in my hobby games. I don't think one is inherently harder or more cool than the other. You can look at Dwarf Fortress for gameplay/quest/dialogs and Cyberpunk 2077 for graphic, and it would be as cool and hard as each other IMHO.
- awild 6y agoIf you want to record a ton of boolean values you should look into sparse bitsets like roaring bitmaps. You can encode a ton of information that way and serdes is trivial.
- ajuc 6y agoMy best idea was to assign "importance" to each event, and only record when each NPCs met and for how long. Then when I check if NPC x knows about EVENT y I check who he met between time of the event and now and look at importance (witnessed murder would be high) and if there's a path for the information to pass - then he knows. But it's too much work to do in every "tick" of the quest process. It should only be checked when something changed (someone who knows meets someone else). It became too complicated system for just a few usages and some background gossip. But I think for a big RPG it could be great. Would allow more reactive world and more interesting quest design. I think the main reason AAA games don't do this is voice overs. If we had good emotional speech synthesis a lot of new possibilities would open. So indies have an advantage here because text-only is still accepted.
- keyle 6y agoI've shipped two commercial games on Steam and PS4. My advice, don't quit your job just yet. It's extremely, extremely hard to make a living off game making. At the rate the industry is going, I give you a whopping 1 in 1000 chances of matching your current wage making games.
- drchopchop 6y agoAlso, even if you get a job at a AAA game company, you're looking at a 50-75% pay cut from what you'd be making in FAANG. Even salaried game developers are very underpaid, because there are so many people who are willing to take the jobs for the fun/love factor (which eventually goes away). The only people making real money are: a) corporate execs, b) people who get lucky with a big indie hit on Steam/etc, c) people lucky enough to work at a company with profit sharing (very rare)
- deleted 6y ago[deleted]
- grecy 6y ago> I give you a whopping 1 in 1000 chances of matching your current wage making games. The comment your replied to make it clear they find game programming interesting and they have a passion for it. What on earth does making the same wage have to do with it? If we can make a liveable wage doing what we enjoy, there are scores of people that couldn't care less about a massive wage.
- coldtea 6y ago>What on earth does making the same wage have to do with it? The fact that, on Earth, passion only gets you so far. And it can easily wane off, given bad circumstances. And of course, on Earth at least, (a) "passion to create AAA games" is not the same as (b) "passion to be an employee on a AAA game company, with impossible schedules, idiotic management, unpaid overtime, and lower salary that I could get elsewhere". In the end, whatever their passion, the AAA game developer is just a cog in a team (the head / driver of the team would be 1 in 20 or 1 in 50 devs).
- yters 6y agoTotally this. Games programming seems the only field where all my years of comp sci and eng training actually matter.
- tobmlt 6y agoI work on commercial physics solvers (mostly fluids) and engineering design optimization code. Game programming seems like the only other thing I’d ever want to do, programming wise. Maybe optimization but really even machine learning is pretty ho hum in comparison. All that data wrangling... I guess “we” pay for the fun with lower salaries and/or poorer work life balance. At least sometimes, eh hem.
- mywittyname 6y agoThe best job I ever had was working on computer-aided engineering software. It was a difficult job that you did with a ton of really bright people, it paid quite well, and it was very low stress. The only gotcha is you can't really transfer those skills into other jobs, and the market for computational physics is rather sparse.
- tobmlt 6y agoYeah, you hit the nail on the head there. the sparsity makes me nervous. Combine that with the fact that I recently changed jobs from a very low stress position where I was basically calling the technical shots for myself to one where I am micromanaged to the half day time step... (I did this to myself in order to broaden and deepen my computational resume.) I sleep a lot less this year than last.
- turing_complete 6y agoMy first job after university actually was a ML/data science job at a smaller company. The interesting / challenging part was actually understanding the problem domain and how we could actually leverage data, the technical and algorithmical challenges were, for the most part, pretty easy. It was mostly data wrangling and importing some classifier or regressor from scikit-learn. Of course, there are also super interesting and technically challenging jobs in ML out there.
- tobmlt 6y agoYeah, maybe something with differential geometry and ML would be fun. I’ve also built a system for composing relations and generating gradients from a computational graph...(for CAD design generation) Maybe I should look at working on a framework project. Whatever the theano folks are doing nowadays - or the like.
- coldtea 6y ago>Isn't it what makes game programming interesting, though? Game programming maybe. For game playing, I'd prefer games focused on interesting gameplay and world-building, rather than the 1000th derivative game in a 3D-graphics race...
- pjmlp 6y agoData visualization for enterprise backends holding TB of data is also a difficult and interesting problem. Just like having a database holding DNA data that a robot in a chemical lab needs to get hold of in less than X ms for the planning software not to go astray when locating where to get the plate from. It is a matter to look for challenges. Thanks to demoscene and early industry contacts I have seen the other side of the garden, and decided it wasn't that green after all.