this post was submitted on 28 Jul 2024
25 points (100.0% liked)
Game Development
3477 readers
3 users here now
Welcome to the game development community! This is a place to talk about and post anything related to the field of game development.
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
From my limited experience, NPCs come in two varieties, persistent, and instanced. An instanced NPC is a bandit on the street who, if you kill, will drop loot, and then never affect the game ever again. They appear and disappear as easily as a glitchy texture. A persistent NPC, you will probably want to track more of, but even then, you don't have to track everything.
A shopkeeper, you may generate their shop inventory when the player loads the area, but then clear it when the player leaves the town, or a certain amount of in-game time has passed. Same with aggression responses, you could have a list of NPCs who are unhappy with the player, and after a while, they're removed from that list. No need to store the NPCs dynamic opinion on each NPC, just that they are unhappy and when from. When you load the area, you check that table, and the NPC reacts accordingly.
Maps, you'd want to do region by region too. Of course you'll need your data files, terrain, navigation maps or whatever you need, but for the most part, you can choose to only store changes. This means you don't store the whole region in a file, only which containers have been looted, what persistent NPCs have been altered (enraged, seduced, quest actions completed) and such like.
Player stats... yeah, surely you need to just store those in the save file and assign them to the player object. Level up, when you reach the level up conditions, you get to improve. How that works is entirely down to you, the dev. Don't be afraid to play around and see what works.
I'm sure there will be other people with far better advice, but this should help guide you in the right direction.