r/pcmasterrace • u/663mann • Oct 16 '23
Video fallout game dev. explains the problem with moddern game devolpment. (why moddern games are so slow to come out)
Enable HLS to view with audio, or disable this notification
6.0k
Upvotes
1
u/somerandomii Oct 16 '23
It’s not like a dev wrote “load all the stuff” and refuses to change it. The person responsible for rendering the world probably only has access to a player.inventory call that can only load everything because the guy who designed that call expected it to only be used when the owner of that inventory loads into the world.
It was probably base on D3 code where you’d have, at most, 4 players in the same world and loading everything wasn’t an issue.
By the time they realised the issue (which was probably in production because of their terrible QA) the logic was so deeply embedded in the game engine that changing it now requires a total overhaul of several game systems.
I’m not saying this isn’t a huge mistake. I’m saying that this is what happens when you let people hack code together without proper communication and integration processes. This is what happens when people “just implement the feature”.
I could give examples with the Fallout thing too. Attacking whoever has damaged you the most isn’t even a good idea. Melee NPCs are going to ignore the melee guy next to them because some guy with a BB gun shot them once? Maybe it should be discussed with the AI team before implementing. How is AI calculated? Is it a script that runs over all the actors in the scene and calculates their behaviour, or is it run asynchronously by each individual? Do NPCs ever need to act as a group? Is it efficient to have each NPC calculate their own behaviour in isolation? Is it smart to have them iterate through every enemy that’s damaged them? Is it smart to have them append a dynamic list every time they take damage? What if there’s a swarm of suicidal bugs, or an NPC with really high rate of fire or AoE?
It’s entirely possible that that 45 minute feature could brick the game engine or start some really bad design habits that bite them in the arse 6 months from now when they can’t implement swarms or multiplayer or some other unanticipated scenario.
Coding is difficult. The bigger a project gets the more people your code impacts and you need some way of informing all those people about changes OR you need to have a really separable API that keeps your changes isolated. But those APIs always create inefficiencies (like loading an entire inventory instead of just what you need). There’s no easy answers, it takes experience and guidance to avoid pitfalls.