Looking for general advices on “godotic” way of gamedev

Godot Version

4.3

Question

Hi, I’m new to godot, so I’m looking for an advice.

I want to make a visual novel quest type of game. If you ever played old Nancy Drew games you know what I mean. Different NPC and relationships with them that impact available dialogs, location and npc schedules, time/date system, quest system, inventory, etc. I initially started working en Ren’Py since I know Python, but it is too restrictive on many things so I decided to go with godot. I have some desing/architecture questions and I’d like to get some help.

  1. What is best way to store game state and story progression? Are there some pre-made patterns for godot or good guides on some design solutions? All things that I came up with ending up being overcomplicated so probably I’m doing something wrong. E.g should player’s relationship level and story be stored in player class or some other utility entity? How choices with delayed impact that will determine ending should be stored? Global variables?

  2. For game like this, what is best approach for NPC/entities/Player design? Code each item separately and don’t be bothered about code duplication or use inheritance? Should NPC dialogue lines, answers and general interactions be handled by NPC itself or is it more convenient to have dialog processor that will change Player/NPC/game state based on input? E.g. I want to use a potion on an NPC, should I go with player.use_potion(potion, npc), or item_handler.use_potion(player, npc, potion) will be better in the long run?

  3. Locations system. Have singleton locations that are changed based on game state (time, story progression) or create different variations beforehand?

I will also appreciate general advices, links to literature/instructions/articles on the topic and godotic way of doing things.

Thanks.

1 Like

You can create your own Autoload Nodes (singleton system in Godot) to save/load/access game states and game progression.

There are 2 powerful dialogue addons for Godot: dialogic and godot_dialogue_manager.

godot_dialogue_manager is a lightweight Godot dialogue solution. It provides many dialogue utilities through code. You can easily make your own balloons and control the dialogue via code.

Dialogic is a general-purpose Godot visual novel solution. It includes many features (characters, portraits, etc) to create a VN game with minimal coding, similar to Ren’py and RPGMaker. However, the dialogic 1 is for Godot 3 and dialogic 2 is still in-development and marked as Alpha. But it’s already powerful enough to use.

In addition, both of them use several Autoload Nodes to control the dialogue process.

2 Likes

Hi, thanks for reply.

Should game state and progress be stored as set of booleans or are there better approaches?

Depends on your purpose.

You can use booleans for conditions like “is xxx event triggered?”, “has player got sth?”. Strings can be used for player’s name or other custom names, and enums for some long-term mission’s processing status.

1 Like

Dude I love you

You may be interested to know twine (interactive story tool) has a plug-in for godot.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.