Hello, Alycia here! Thanks for tuning into another development blog. Today I wanted to go over how we've been setting up design systems during our switch to Godot, and how that's going to improve life for our development team overall. It's been an exciting time over at the development team for a little while now, and when we mention systems, we mean making it easier to "plug and play" content, as opposed to writing content around the raw systems we had in place already. I'd love to go over what this all means, and what it looks like, so grab your favorite snack and tuck into what is hopefully a blog that is friendly to all eyes and ears, whether you're new to Godot or programming in general, or a veteran!
Coming from a RuneScape Private Server background, I became familiar with a concept called "definitions". So, moving forward when I refer to something as a definition, I'm speaking mostly about data. This is easy to break down when you consider things such as items, npcs, or dialogue. An item isn't just an item, it holds data such as its sprite, its price, or its name, or it's description. Same with NPCs, they also need a name, a sprite, and links to other various data such as what dialogue it should trigger. We call these "definitions", and they're important moving forward in regards to holding game data. It's important for the game to be aware of the data it holds in order to display what it needs to, to the end-user (that's you!)
I understand this may sound confusing at first, but it's truly very simple. Let's get into the nitty gritty of it, so I can explain what a definition is, and why it will be vital to building this game with ease. Let's take our item definitions as an example...
This is a wooden log item! Seems simple from the first glance, doesn't it? It's got it's sprite (the wooden log of course!), the name "wooden_log", very simple.. and wait, what else? If you take a look to the right of the screenshot, it has some more defining features, such as the description of the item, the price and the name. Of course, we're able to add more definitions to an item such as "ground_item_texture", which will be how it appears when it's dropped to the floor in the game. You might ask yourself "well, Aly, why does this matter? These seem simple enough, why not do them somewhere else in a notepad or?"...
Well, no! A lot of game design in regards to data, or definitions is predicated around data entry, which can be very boring. You can sit there for days on end, assigning variables to things in a notepad, or an intelligent code editor and it's just kind of.. well, lame! This is where we bring our Design team in, who have been begging me to let them help with adding to the game itself rather than writing all of our ideas into a document/notepad. When we initially switched to Godot, our biggest hope was that we could bring the Design team into helping shape the game that they're designing. Bringing definitions into the equation not only makes it easier for them, but also gives us a visual representation to how that will end up looking in the final product.
So, what is a definition? It's easy! It's a node or chunk of data that represents the definitions of that particular type. Such as an NPC, or Item! For a bonus image, check out how we're doing NPC definitions! Any clues to what "timeline" could mean?
What's really important to remember here is that when we initially wrote PokéForce, we built with concepts as opposed to writing systems. Of course, we thought about the future when writing our systems, but PokéForce was a relatively new experience for the majority of us in terms of developing an MMORPG. For irony, I was saying "I wish we had used Godot earlier", but that couldn't be further from the truth. In reality, our experience with LibGDX taught us how to develop systems from the ground up, which enabled us to re-visit them in Godot and make them better. Enabling the use of definitions such as these has only made the game better in terms of making it more seamless for content development, and enable faster development when it comes to launch or updates.
I'm really excited to move forward with enabling further definitions, such as tiles (interacting with a sign, or a mailbox), and making the game a simple plug and play experience. Godot has been very helpful in showing us the way in how to make these things visually appealing to a junior developer or a designer, and has opened the scope for who we could bring into the project to help out.
Thanks for tuning into this development blog! There shall be more as we push towards our summer demo, and I hope you're as excited as we are!
The PokéForce Staff Team
Alycia, Cpt. Lavender, Triston, Jack, Kesshoketsu, Kat, Emma, Maid Lulia, Lucy, Dizzi, Lean, Kaz, Muzi, Kildaru, Kitsune, Nathan, Bee, Rebecca, Tater, Jenonen, Lin, Fizz, Beemo, Luci
Definitions
Coming from a RuneScape Private Server background, I became familiar with a concept called "definitions". So, moving forward when I refer to something as a definition, I'm speaking mostly about data. This is easy to break down when you consider things such as items, npcs, or dialogue. An item isn't just an item, it holds data such as its sprite, its price, or its name, or it's description. Same with NPCs, they also need a name, a sprite, and links to other various data such as what dialogue it should trigger. We call these "definitions", and they're important moving forward in regards to holding game data. It's important for the game to be aware of the data it holds in order to display what it needs to, to the end-user (that's you!)
I understand this may sound confusing at first, but it's truly very simple. Let's get into the nitty gritty of it, so I can explain what a definition is, and why it will be vital to building this game with ease. Let's take our item definitions as an example...
This is a wooden log item! Seems simple from the first glance, doesn't it? It's got it's sprite (the wooden log of course!), the name "wooden_log", very simple.. and wait, what else? If you take a look to the right of the screenshot, it has some more defining features, such as the description of the item, the price and the name. Of course, we're able to add more definitions to an item such as "ground_item_texture", which will be how it appears when it's dropped to the floor in the game. You might ask yourself "well, Aly, why does this matter? These seem simple enough, why not do them somewhere else in a notepad or?"...
Well, no! A lot of game design in regards to data, or definitions is predicated around data entry, which can be very boring. You can sit there for days on end, assigning variables to things in a notepad, or an intelligent code editor and it's just kind of.. well, lame! This is where we bring our Design team in, who have been begging me to let them help with adding to the game itself rather than writing all of our ideas into a document/notepad. When we initially switched to Godot, our biggest hope was that we could bring the Design team into helping shape the game that they're designing. Bringing definitions into the equation not only makes it easier for them, but also gives us a visual representation to how that will end up looking in the final product.
So, what is a definition? It's easy! It's a node or chunk of data that represents the definitions of that particular type. Such as an NPC, or Item! For a bonus image, check out how we're doing NPC definitions! Any clues to what "timeline" could mean?
Systems as a core
What's really important to remember here is that when we initially wrote PokéForce, we built with concepts as opposed to writing systems. Of course, we thought about the future when writing our systems, but PokéForce was a relatively new experience for the majority of us in terms of developing an MMORPG. For irony, I was saying "I wish we had used Godot earlier", but that couldn't be further from the truth. In reality, our experience with LibGDX taught us how to develop systems from the ground up, which enabled us to re-visit them in Godot and make them better. Enabling the use of definitions such as these has only made the game better in terms of making it more seamless for content development, and enable faster development when it comes to launch or updates.
I'm really excited to move forward with enabling further definitions, such as tiles (interacting with a sign, or a mailbox), and making the game a simple plug and play experience. Godot has been very helpful in showing us the way in how to make these things visually appealing to a junior developer or a designer, and has opened the scope for who we could bring into the project to help out.
Thanks for tuning into this development blog! There shall be more as we push towards our summer demo, and I hope you're as excited as we are!
The PokéForce Staff Team
Alycia, Cpt. Lavender, Triston, Jack, Kesshoketsu, Kat, Emma, Maid Lulia, Lucy, Dizzi, Lean, Kaz, Muzi, Kildaru, Kitsune, Nathan, Bee, Rebecca, Tater, Jenonen, Lin, Fizz, Beemo, Luci