Untitled RPG Project
Re: Untitled RPG Project
I enjoy reading these updates, and it jolted me back into journaling my hobby projects too, thanks! I will be following this thread. I also find your use of behavior trees in the last update, fascinating. It's always nice to see alternative ways of doing things
- Hugues Ross
- Party member
- Posts: 112
- Joined: Fri Oct 22, 2021 9:18 pm
- Location: Quebec
- Contact:
Re: Untitled RPG Project
I'm back, and this time I have some good news! I've decided that the base engine is in a "good enough" state to start work on real game content, so I've begun the development of my vertical slice demo. As a reminder, my goal for this demo is to produce 1 dungeon from the game at a close-to-final level of quality.
I'm still early in the production process, so I think I'll hold off another month before giving a deeper explanation. But I can show one of the dungeon's core mechanics: Water levels. Take a look!
By moving water between different basins, you'll be able to open and close off various paths. I think it's a pretty neat mechanic, though I'll have to be careful about giving the player a better sense of depth. This will probably come down to a combination of level design and giving floating objects a drop shadow to indicate their real position.
To make up for the lack of detailed dungeon talk today, here's one last treat. The first piece of concept art for this dungeon:
That little critter is one of several enemies you'll find in here. Keeping with the theme of water, most of the monsters in this dungeon are forms of marine life. We'll be seeing more of them as the demo's development progresses.
I'm still early in the production process, so I think I'll hold off another month before giving a deeper explanation. But I can show one of the dungeon's core mechanics: Water levels. Take a look!
By moving water between different basins, you'll be able to open and close off various paths. I think it's a pretty neat mechanic, though I'll have to be careful about giving the player a better sense of depth. This will probably come down to a combination of level design and giving floating objects a drop shadow to indicate their real position.
To make up for the lack of detailed dungeon talk today, here's one last treat. The first piece of concept art for this dungeon:
That little critter is one of several enemies you'll find in here. Keeping with the theme of water, most of the monsters in this dungeon are forms of marine life. We'll be seeing more of them as the demo's development progresses.
- Hugues Ross
- Party member
- Posts: 112
- Joined: Fri Oct 22, 2021 9:18 pm
- Location: Quebec
- Contact:
Re: Untitled RPG Project
I meant to respond to this earlier but forgot... Thank you for the kind words, and I'm glad you're enjoying this thread. When you're hard at work on something, seeing people responding to what you've made is really rewarding!kbmonkey wrote: ↑Mon Aug 01, 2022 3:50 am I enjoy reading these updates, and it jolted me back into journaling my hobby projects too, thanks! I will be following this thread. I also find your use of behavior trees in the last update, fascinating. It's always nice to see alternative ways of doing things
- Hugues Ross
- Party member
- Posts: 112
- Joined: Fri Oct 22, 2021 9:18 pm
- Location: Quebec
- Contact:
Re: Untitled RPG Project
Just ran into this interesting behavior, and found it too silly to pass up. Sometimes, you've just got to record a bug for posterity.
Re: Untitled RPG Project
Ah, yes, the legendary passage of speed.
Tools: Hot Particles, LuaPreprocess, InputField, (more) Games: Momento Temporis
"If each mistake being made is a new one, then progress is being made."
"If each mistake being made is a new one, then progress is being made."
- Hugues Ross
- Party member
- Posts: 112
- Joined: Fri Oct 22, 2021 9:18 pm
- Location: Quebec
- Contact:
Re: Untitled RPG Project
Four months have passed since I last wrote about my work on this game. If you happen to read my blog regularly, you already know why. Development was on a health-based semi hiatus for that period, but I haven’t been doing nothing either. As the situation gradually improves, and development on the game progresses, it feels appropriate to finally discuss it again. Let’s see what I’ve done over the past few months!
Demo Progress
In my current state, art and level design are the most challenging things to do. Regardless, I was able to make a first pass on the vertical slice dungeon’s first floor: Before we continue I should note that this is basically a graybox design–it does not represent the final level’s aesthetics, only the general layout and mechanics. With that said, the mechanical aspect is complete! It’s possible to play it through from beginning to end, solving the dungeon’s introductory puzzles and finding loot (some of which is hidden for more observant players to find). There are still at least two more floors to assemble, possibly a third if the result feels too fast-paced.
Unfortunately, that’s most of the demo progress–as I mentioned above, most content creation was very difficult due my health so the rest of my work was more technical.
Controls
One of the things that was plaguing me from the start of the level design work was the lack of a run button. This was happening while I had my own health issues to consider, and it got me thinking about how best to reduce the need for holding keys down… naturally, this lead to a design similar to how games like Wild Arms and Mother 3 did it:
Push a button to start running, make directional inputs just to turn, and BONK comically into walls if you don’t turn away in time!
I think it’s a very good way to handle running for a few reasons:
Encounters
Once the base level design was in place, I threw a little bit of love at random encounters. I already had a system for this in place, but I knew it needed more time in the oven. I don’t think old school random encounters are a particularly good mechanic for modern RPGs, but I have to rely on them for ‘budgetary’ reasons: The better alternatives are much more time and resource-heavy.
That doesn’t mean we have to handle them poorly, however. I’d already decided to keep encounters out of puzzle-dedicated areas, and took this a step further by adding some feedback on when encounters are present. To that end, there’s now a small ring at player’s feet indicating how close the next encounter is: I have another motive for this as well. You won’t see it anytime soon, but I plan to mess with this indicator as a way of building tension (or for bolder players, indicating “come get this!”) in areas where particularly dangerous monsters can appear. The graphic itself is a placeholder though, while I like the ring design conceptually it will need much more polish to meet my standards.
How Do You Save Your Game?
Finally, now that the game has multiple maps it’s important to start thinking about how to track the long-term state of things:
This also got me thinking about how saving works in RPGs. A lot of old games limited saving to specific areas for technical reasons, which often resulted in lost progress that modern players won’t tolerate. Most RPGs these days just let you save anywhere, but to be perfectly honest I have a big gripe with this: When watching people play RPGs, and when doing it myself, “Save Anywhere” frequently becomes “Save Everywhere”. It’s just one of those things people do, if you give them a button that lets them preserve their progress many will push it constantly, to the detriment of the game’s flow.
I decided to try and consider the real benefits of “Save Anywhere”, and I came up with three main benefits:
I’m considering some kind of ‘save and quit’ or ‘suspend’-ish feature, where the game simply picks up from wherever you left, but I’m not sure how well players will take to this. I’m still thinking about it, and it will probably come down to later playtesting. In the end I may just give up and add a regular save button, but we’ll see.
So there we are! It’s not much progress for 4 months, but it is progress and that’s what matters right now. I also did a lot of thinking work, figuring out how to flesh out certain elements of the plot and setting, but it’s simply too early to talk about most of that. I don’t really want to delve into plot and setting detail publicly until I have more visuals to accompany that, and my health forbids it… For now I’m looking forward to an eventual recovery and some flashier stuff to show off, hopefully next year. We’ll see.
Demo Progress
In my current state, art and level design are the most challenging things to do. Regardless, I was able to make a first pass on the vertical slice dungeon’s first floor: Before we continue I should note that this is basically a graybox design–it does not represent the final level’s aesthetics, only the general layout and mechanics. With that said, the mechanical aspect is complete! It’s possible to play it through from beginning to end, solving the dungeon’s introductory puzzles and finding loot (some of which is hidden for more observant players to find). There are still at least two more floors to assemble, possibly a third if the result feels too fast-paced.
Unfortunately, that’s most of the demo progress–as I mentioned above, most content creation was very difficult due my health so the rest of my work was more technical.
Controls
One of the things that was plaguing me from the start of the level design work was the lack of a run button. This was happening while I had my own health issues to consider, and it got me thinking about how best to reduce the need for holding keys down… naturally, this lead to a design similar to how games like Wild Arms and Mother 3 did it:
Push a button to start running, make directional inputs just to turn, and BONK comically into walls if you don’t turn away in time!
I think it’s a very good way to handle running for a few reasons:
- When it’s just “hold a button to move faster” you often wind up with an option to always have it on… which everyone picks, effectively just upping the base movement speed
- Not only do you not have to hold the run button, you also don’t have to hold any movement inputs–on a straightaway it’s just fire and forget, which should help folks who have trouble holding movement inputs for long periods of time
- By slowing the player down when they collide with things, this adds a skill curve to “going fast”. As players practice they can fly through tighter and tighter spaces without stopping, which in turn creates a rewarding sense of pride
Encounters
Once the base level design was in place, I threw a little bit of love at random encounters. I already had a system for this in place, but I knew it needed more time in the oven. I don’t think old school random encounters are a particularly good mechanic for modern RPGs, but I have to rely on them for ‘budgetary’ reasons: The better alternatives are much more time and resource-heavy.
That doesn’t mean we have to handle them poorly, however. I’d already decided to keep encounters out of puzzle-dedicated areas, and took this a step further by adding some feedback on when encounters are present. To that end, there’s now a small ring at player’s feet indicating how close the next encounter is: I have another motive for this as well. You won’t see it anytime soon, but I plan to mess with this indicator as a way of building tension (or for bolder players, indicating “come get this!”) in areas where particularly dangerous monsters can appear. The graphic itself is a placeholder though, while I like the ring design conceptually it will need much more polish to meet my standards.
How Do You Save Your Game?
Finally, now that the game has multiple maps it’s important to start thinking about how to track the long-term state of things:
- Is this chest open?
- Which puzzles in this map have been solved? If they have multiple solved states, how do we know which they’re in?
- Where is the player in the plot right now?
This also got me thinking about how saving works in RPGs. A lot of old games limited saving to specific areas for technical reasons, which often resulted in lost progress that modern players won’t tolerate. Most RPGs these days just let you save anywhere, but to be perfectly honest I have a big gripe with this: When watching people play RPGs, and when doing it myself, “Save Anywhere” frequently becomes “Save Everywhere”. It’s just one of those things people do, if you give them a button that lets them preserve their progress many will push it constantly, to the detriment of the game’s flow.
I decided to try and consider the real benefits of “Save Anywhere”, and I came up with three main benefits:
- You lose little to no progress on failure
- It’s harder to accidentally lock yourself out of content when hitting a “point of no return”
- You can leave whenever you want and pick up where you left off
I’m considering some kind of ‘save and quit’ or ‘suspend’-ish feature, where the game simply picks up from wherever you left, but I’m not sure how well players will take to this. I’m still thinking about it, and it will probably come down to later playtesting. In the end I may just give up and add a regular save button, but we’ll see.
So there we are! It’s not much progress for 4 months, but it is progress and that’s what matters right now. I also did a lot of thinking work, figuring out how to flesh out certain elements of the plot and setting, but it’s simply too early to talk about most of that. I don’t really want to delve into plot and setting detail publicly until I have more visuals to accompany that, and my health forbids it… For now I’m looking forward to an eventual recovery and some flashier stuff to show off, hopefully next year. We’ll see.
Re: Untitled RPG Project
I really hope you are able to continue work on this and that your health has improved. It looks fantastic so far! I especially like the idea of "Map Skills" as it makes the world more interesting and immersive. I grew up playing early "top down" console RPGs, so random combat is fine, (although I really like how Chrono Trigger had scripted "ambush" style encounters, because the player could avoid them if they just wanted to get on with the narrative, or 7th Saga, where you had a sort of "radar" crystal ball). As for saving...I'd suggest "autosave" as the player exits the game, and classic "save points" in "safe areas". Looking forward to future progress for this project, hang in there.
- Hugues Ross
- Party member
- Posts: 112
- Joined: Fri Oct 22, 2021 9:18 pm
- Location: Quebec
- Contact:
Re: Untitled RPG Project
Thank you for the kinda words and feedback! recovery is slow but steady, and I fully intend to keep powering through on this (albeit at a very relaxed pace until I'm better).
For more context on those map skills (hopefully I'm not repeating myself, I don't recall if I mentioned this here or not), they are intended as a simpler/more streamlined approach to Golden Sun's mechanic of casting spells out-of-combat to solve puzzles. I always loved the exploration and puzzle-solving aspects of those games, but didn't think that exact mechanic would fit as-is due to certain narrative and design aspects of the game... so instead I'm tying it to the characters themselves, and the kinds of abilities/knowledge/etc they might bring with them on the adventure.
That same mechanical 'theme' is also present in how the game's job system functions, but we'll get there later. Gotta keep some surprises for later after all!
For more context on those map skills (hopefully I'm not repeating myself, I don't recall if I mentioned this here or not), they are intended as a simpler/more streamlined approach to Golden Sun's mechanic of casting spells out-of-combat to solve puzzles. I always loved the exploration and puzzle-solving aspects of those games, but didn't think that exact mechanic would fit as-is due to certain narrative and design aspects of the game... so instead I'm tying it to the characters themselves, and the kinds of abilities/knowledge/etc they might bring with them on the adventure.
That same mechanical 'theme' is also present in how the game's job system functions, but we'll get there later. Gotta keep some surprises for later after all!
- Hugues Ross
- Party member
- Posts: 112
- Joined: Fri Oct 22, 2021 9:18 pm
- Location: Quebec
- Contact:
Re: Untitled RPG Project
We are now 13 months into the project, and 11 since my first post! I wish I could’ve gotten more done by now, but given that I’ve spent 9 months out of that actively fighting a fresh disability I’ll take what I can get. On that front, I made a ton of progress in January and things were looking extremely positive before I fucked up and picked up something too heavy then got super sick for a week then got a sinus infection that made it almost impossible to use dictation then–look, we’re gonna get back there eventually but last month was a little rough. Let’s instead look at January’s bounty, and hope March is similarly rich!
The Shortest Failed Game Jam Attempt
I saw this game jam cross my plate, and despite my good sense I decided to just go for it, just to battle-test my game’s engine code and see what I could accomplish even if I didn’t finish. But then someone asked to join me, and I’m bad at saying no, and after a single day of work I realized I was 100% not going to be able to finish in my current state, rather than the 80-90% I had been expecting. At that moment, I felt like I really couldn’t drag along someone else into a project that was guaranteed to fail. I had warned them in advance about my health, but even so… it felt wrong. I folded immediately so they’d have a chance to join another team.
Regardless, on that first day I accomplished something important: saving and loading. It works, though the autosave I want for this project hasn’t been done yet. Better yet, now that I have the data collection and restoring part in place it should be pretty easy to just slap on a “Retry Battle” button on the game over screen. I’ll get to that eventually!
Welcome To Numbers Hell
After that slightly embarrassing game jam attempt, I started working on a really critical part of the game: The numbers and algorithms. Like, all of them.
As you can imagine, that process isn’t anywhere near done yet. But it was progressing pretty well before the incident with the help of stats! As a professional tools programmer, I’m a big nerd for pipelines so when the time to start designing and looking at formulas came around I jumped at the idea of doing some statistical BS to them for a clearer look.
This is where it gets pretty interesting, because to do that I need data… more data than I can produce by playing the game. To get that data, I’ve refactored the combat systems to completely disconnect the simulation parts from the actual game parts, the stuff like graphics and sound effects and menus. Since Love2D uses Lua, and Lua is a scripting language, once you disconnected some code from it you can just run that code as a command-line script. I can now run as many auto-fights as I want with whatever parameters I want, and feed all that data into a csv file. Then, I feed that into a python script that can plot out millions of data points representing whatever I was trying to look at in the first place. I’ve been using it to visualize the actual damage resulting from my combat formulas over the course of the entire game’s progression, so I can get the right relationships between different stats and weapons down:
An old plot showing a glaring problem with my first draft's end-game damage spread. You don't want to learn this many years into a project!
Unfortunately, I’m not actually that good at math and have no background in statistics. I don’t know what I’m doing! Thankfully, I kind of randomly bumped into someone online who does know what they’re doing and seems eager to help me turn the dials on this bad boy. With any luck, they’ll help cover for my glaring inadequacies and we’ll get some nice crunchy numbers out of this. Once the whole process is done, I should theoretically be able to set up gear, monsters, etc. from any part of the game for live testing and rest assured that they’ll produce reasonable numbers. This will help a lot as I slowly begin to design real combat encounters, including those for my ongoing demo. But for now, I’ve still got to rest a little bit before I continue.
Anyway, that’s all for now. Pretty light update, but the ongoing combat work is going to seriously accelerate some parts of the development process once it’s done. I’m annoyed at my current speed, but optimistic about the future.
The Shortest Failed Game Jam Attempt
I saw this game jam cross my plate, and despite my good sense I decided to just go for it, just to battle-test my game’s engine code and see what I could accomplish even if I didn’t finish. But then someone asked to join me, and I’m bad at saying no, and after a single day of work I realized I was 100% not going to be able to finish in my current state, rather than the 80-90% I had been expecting. At that moment, I felt like I really couldn’t drag along someone else into a project that was guaranteed to fail. I had warned them in advance about my health, but even so… it felt wrong. I folded immediately so they’d have a chance to join another team.
Regardless, on that first day I accomplished something important: saving and loading. It works, though the autosave I want for this project hasn’t been done yet. Better yet, now that I have the data collection and restoring part in place it should be pretty easy to just slap on a “Retry Battle” button on the game over screen. I’ll get to that eventually!
Welcome To Numbers Hell
After that slightly embarrassing game jam attempt, I started working on a really critical part of the game: The numbers and algorithms. Like, all of them.
As you can imagine, that process isn’t anywhere near done yet. But it was progressing pretty well before the incident with the help of stats! As a professional tools programmer, I’m a big nerd for pipelines so when the time to start designing and looking at formulas came around I jumped at the idea of doing some statistical BS to them for a clearer look.
This is where it gets pretty interesting, because to do that I need data… more data than I can produce by playing the game. To get that data, I’ve refactored the combat systems to completely disconnect the simulation parts from the actual game parts, the stuff like graphics and sound effects and menus. Since Love2D uses Lua, and Lua is a scripting language, once you disconnected some code from it you can just run that code as a command-line script. I can now run as many auto-fights as I want with whatever parameters I want, and feed all that data into a csv file. Then, I feed that into a python script that can plot out millions of data points representing whatever I was trying to look at in the first place. I’ve been using it to visualize the actual damage resulting from my combat formulas over the course of the entire game’s progression, so I can get the right relationships between different stats and weapons down:
An old plot showing a glaring problem with my first draft's end-game damage spread. You don't want to learn this many years into a project!
Unfortunately, I’m not actually that good at math and have no background in statistics. I don’t know what I’m doing! Thankfully, I kind of randomly bumped into someone online who does know what they’re doing and seems eager to help me turn the dials on this bad boy. With any luck, they’ll help cover for my glaring inadequacies and we’ll get some nice crunchy numbers out of this. Once the whole process is done, I should theoretically be able to set up gear, monsters, etc. from any part of the game for live testing and rest assured that they’ll produce reasonable numbers. This will help a lot as I slowly begin to design real combat encounters, including those for my ongoing demo. But for now, I’ve still got to rest a little bit before I continue.
Anyway, that’s all for now. Pretty light update, but the ongoing combat work is going to seriously accelerate some parts of the development process once it’s done. I’m annoyed at my current speed, but optimistic about the future.
Re: Untitled RPG Project
Sorry to hear about your troubles. That sucks. I think it's great you are pushing ahead with your passion project either way! You inspired me to research more about RPG games.
I have played some (ultima 1, ultima 8, diablo 1) but I'm no RPG expert. I am reading a book called Dungeons & Desktops, about the history of RPG games. It's fascinating! The scope of it all is mind boggling. The topic of random encounters is discussed, and how initially it was a factor of limited processing power at the time, has become a staple within some genres to this day.
I'm also playing Cyber Knights (Android), a cyberpunk like RPG, it has random encounters like in the days of old. All told this is the first time I experienced random encounters in RPG games. So for me this concept is new and it feels exciting, absurd as it sounds.
I also am dabbling in a mini RPG game in JavaScript. By no means the scope or complexity you have here, just the simplest form of this genre to occupy my idle hands and learn 2d web canvas.
Looking forward to see how your project evolves!
I have played some (ultima 1, ultima 8, diablo 1) but I'm no RPG expert. I am reading a book called Dungeons & Desktops, about the history of RPG games. It's fascinating! The scope of it all is mind boggling. The topic of random encounters is discussed, and how initially it was a factor of limited processing power at the time, has become a staple within some genres to this day.
I'm also playing Cyber Knights (Android), a cyberpunk like RPG, it has random encounters like in the days of old. All told this is the first time I experienced random encounters in RPG games. So for me this concept is new and it feels exciting, absurd as it sounds.
I also am dabbling in a mini RPG game in JavaScript. By no means the scope or complexity you have here, just the simplest form of this genre to occupy my idle hands and learn 2d web canvas.
Looking forward to see how your project evolves!
Who is online
Users browsing this forum: Amazon [Bot] and 9 guests