I don't really know where to begin with certain data types?

The game I’m creating is a 2D platformer RPG - taking heavy inspiration from games like the Mega Man Zero titles, Mega Man ZX titles, Wuppo, Hollow Knight, etc. with my intended focus being equally on story and solid mechanics.

Getting the platforming mechanics to behave the way I want them and with a somewhat scalable data structure has been as much as a challenge as I expected, but now that I am getting to the point where I need to think about how to handle things that aren’t necessarily relevant at all times during gameplay like dialogue, inventory, questlines, and how the story progression affects the world - the more I think about it the more daunting of a task it seems to be.

I’m completely self-taught and while there’s plenty of material about how to get the more action-oriented functions (like moving and combat) working in a game available on the internet, I’m finding it’s much harder to find reading material about how to properly handle things like dialogue across NPC’s and how to the store the story progression or track objectives, etc.

The most I could find is some people saying, “You should store the dialogue in an external file in JSON or XML and pull the data from there during gameplay,” or “Use a database,” But that seems like the obvious part of the approach and it’s hard to build a battle plan without at least having some examples of how it could be implemented or has been implemented in other games.

Does anyone know where I can find such resources, or have any knowledge in this area? Or any Defold specific tricks I should know regarding possible solutions?

1 Like

Hello Rocamocha,

I have a few resources that might be helpful to you. Firstly a video from youtuber Game Endeavor (https://www.youtube.com/watch?v=Qh3U2cbH8DM&t=2s) which talks about how he went about dialog, which I found very informative. Although he uses Godot, not Defold.

Next there is a few Defold resources:



Finally, I’m going to be looking to implement a dialog system in the coming weeks for some games I am working on. If the above assets aren’t sufficient for my needs I’ll probably make my own and upload it to the assets portal.

I hope some of this helps.

Cheers,
Spen

6 Likes

This is probably true. It’s quite easy to discuss and design individual game systems such as “How do I show popups with dialog options?” or “How do I create a cooldown system?” or “How do I track achievements?”.

What you are asking for is a more overarching full design for a complete game where you tie several of the individual systems together to form a full game system.

My recommendation would be to “divide and conquer”. Try to break it high level concepts into manageable smaller pieces/systems. What does it actually mean to have “dialogue across NPC’s and track story progression”?

In this particular case I’d probably also take a look at systems for interactive fiction. Interactive fiction and text adventure games have been around since Zork in end of the 70’s. There must be a ton of documentation on these kinds of systems.

5 Likes

First off, I wanna say that what I learned from studying the code for Platypus has helped me quite a lot throughout my project as I was familiarizing myself with Lua! It’s probably just a quirk of the way I learn, but looking at your code helped me way more than reading a bunch of docs and examples in a vacuum.

Yeah, I’m surprised there aren’t more gamedev-focused tutorial content or light reading material that goes over things like common design patterns or cool programmatic solutions. To even get started thinking more about this, I’ve had to do a lot of dry reading combined with a good bit of critical thinking about how generalizations about a particular method can be applied to my specific use-case.

This has been working well for me with the other aspects of the game so far - I’m very pleased with the systems I have going forward, in regards to how the moving parts I have currently talk to each other. I suppose that the less action-oriented elements being so seemingly different from behaviour than coding a collision system makes it seem more daunting than it is at first.

I’ve been digging deep and reading more about related topics, hopefully I’ll be able to come up with a good system for what I need to do!

1 Like