Untitled RPG Project

Show off your games, demos and other (playable) creations.
User avatar
Hugues Ross
Party member
Posts: 112
Joined: Fri Oct 22, 2021 9:18 pm
Location: Quebec
Contact:

Untitled RPG Project

Post by Hugues Ross »

This project is slowly starting to come together, so I figured I'd make a post for it. I've had an idea for a JRPG for a long time, and I finally decided to start this year! To showcase the last few months of programming work, I've put together a little demo video out of placeholders:



I also wrote a blog post about this demo, though I don't discuss much aside from some of the smoke & mirrors involved currently ;)

Over time, I'm probably going to share screenshots / videos / demos directly in the thread, and use the blog for deeper dives into the design and writing process.

...I'll also see about cleaning up this post later, once there's more to the thread. But for now that's it, I'm just excited at the progress I've made.
User avatar
Gunroar:Cannon()
Party member
Posts: 1142
Joined: Thu Dec 10, 2020 1:57 am

Re: Untitled RPG Project

Post by Gunroar:Cannon() »

Noice. I'll be checking for the narrative of the game.
Last edited by Gunroar:Cannon() on Thu Mar 31, 2022 12:42 pm, edited 1 time in total.
The risk I took was calculated,
but man, am I bad at math.

-How to be saved and born again :huh:
pauljessup
Party member
Posts: 356
Joined: Wed Jul 03, 2013 4:06 am

Re: Untitled RPG Project

Post by pauljessup »

Excellent work! I know how hard it can be to make that style of RPG...I mean, technically speaking you're not just making one game, you're making three or four. The battles are a different game, item management are, exploration is, etc. Very cool.
User avatar
Gunroar:Cannon()
Party member
Posts: 1142
Joined: Thu Dec 10, 2020 1:57 am

Re: Untitled RPG Project

Post by Gunroar:Cannon() »

pauljessup wrote: Thu Mar 31, 2022 12:41 pmI mean, technically speaking you're not just making one game, you're making three or four. The battles are a different game, item management are, exploration is, etc.
Hah, this is so true. I tried making an rpg a short while ago. The battle scene was completely different from the adventuring scene that they might as well be different.
The risk I took was calculated,
but man, am I bad at math.

-How to be saved and born again :huh:
User avatar
milon
Party member
Posts: 472
Joined: Thu Jan 18, 2018 9:14 pm

Re: Untitled RPG Project

Post by milon »

Wow! You've got a surprising amount of mechanics going on for an early demo! Nice work!
Any code samples/ideas by me should be considered Public Domain (no attribution needed) license unless otherwise stated.
sweetcandysp
Prole
Posts: 1
Joined: Mon Apr 04, 2022 2:51 am
Contact:

Re: Untitled RPG Project

Post by sweetcandysp »

Thank you for your sharing, It is exactly what I was looking for
User avatar
Hugues Ross
Party member
Posts: 112
Joined: Fri Oct 22, 2021 9:18 pm
Location: Quebec
Contact:

Re: Untitled RPG Project

Post by Hugues Ross »

It has been about a month, so I figured it's about time for a small update. This past month has been pretty slow, mostly focused on filling in gaps in the worldbuilding and mechanics (ie. gear, status effects, encounter maps, etc). With that said, one new thing I can show off is the initial work on map skills.

What are map skills?
Map skills are tools you use to interact with the world. Each character that joins the party brings their own unique skill, opening new paths for exploration and puzzle-solving as the story progresses. While I've only just started on these, I have a very early video showing 3 map skills in an initial functioning state:


The three skills currently implemented are:
  • Elemental, a context-sensitive interaction for casting elemental magic on certain parts of the environment.
  • Chain, allowing the player to grab movable objects and shift them as they move. This not only allows objects to be pulled, but also enables limited movement of objects across gaps.
  • Throw, for picking up, placing, and throwing lightweight objects.
Plans
Since this update's a little short, I figure I should give some indication of my long-term plans for the game. Currently, my target is a small vertical slice public demo. My hope for the demo is to ship a single dungeon from the game at close to final quality, in order to get a grip on the pipeline and validate the game's mechanics. My hope is to release this by the end of the year, though we'll see how it goes as things progress. Beyond that, I've currently broken the game up into 6 chapters and I'm hoping to release&update the game chapter-by-chapter. But of course, that's a ways off. This is a marathon, not a sprint.
User avatar
freeve4h
Citizen
Posts: 56
Joined: Sat Apr 30, 2022 9:48 pm
Contact:

Re: Untitled RPG Project

Post by freeve4h »

looks great
User avatar
Hugues Ross
Party member
Posts: 112
Joined: Fri Oct 22, 2021 9:18 pm
Location: Quebec
Contact:

Re: Untitled RPG Project

Post by Hugues Ross »

May's just about over, so it's time for another update. Like April, this was another month of laying foundations. But unlike April, I have a little bit more to show this time.

Game Flow
One slightly boring but very important addition is all of the scaffolding needed for the main menu. This includes letting the game track and adjust its state, which means that getting a 'game over' can actually take the user back to the menu to try again (or load a save, once I have those)... before then, losing would simply close the game!

Sprites and better Movement
A more interesting addition is sprite animations. I added a basic animation system that makes it very simple to animate existing elements in the game. It's not applied everywhere yet (there's no combat animations yet, for instance), but walking around is a lot nicer now that you can actually see characters walk. Even with placeholder sprites, it definitely adds something:


Another detail you may or may not have noticed, movement is a lot smoother than it was in my first demo. I reworked movement and collision a bit to allow some degree of sliding off solid surfaces instead of just stopping, and makes the controls feel a lot better!

Cutscene Scripting
One last important addition to the code is a system for cutscenes! This is definitely needed for an RPG like this, and the new system is pretty nice. By giving it a relatively simple script like this:

Code: Select all

context:show_dialogue("course/entry.lua")
local player = context:get_player()
context:fade_out(0.2):await(false)
context:move_to(player, 1, 0, true)
context:change_map("course.lua", 10, 29)

local npc = context:get_actor("dude")
context:fade_in(0.2):await(false)
context:move_to(player, 0, -1, true)
context:show_dialogue("course/welcome_sign.lua")
context:move_to(npc, 1, 0, true)
context:wait(0.20)
context:turn_towards(npc, 180)
...we get a cutscene:


That's all for this month! Things are really starting to come together on the tech side, I don't think it'll be too much longer before I can start on real game content instead of test data and placeholders.
User avatar
Hugues Ross
Party member
Posts: 112
Joined: Fri Oct 22, 2021 9:18 pm
Location: Quebec
Contact:

Re: Untitled RPG Project

Post by Hugues Ross »

It's been about a month, so I think it's time for another update! Unfortunately I didn't get as much done as I wanted this month, because I developed carpal tunnel syndrome early on and went on hiatus for few weeks in order to recover. I'm starting to feel better so development has resumed at a very slow pace, but obviously I didn't finish everything I was planning on. For now I'm just taking my time, better to work slowly for a while than to jump back in and have to stop entirely.

However, before all that happened I did get some things done. let's take a look!

A Big AI Revamp
In the original demo video at this start of this thread, the enemies don't have AI so much as a list of moves that they randomly select from. That may be enough for a very simple encounters, but for boss fights and more complex enemies there needs to be something more complex. So, I added 3 new features to accommodate that:

Behavior Trees
The first thing I added was a simple behavior tree system. It supports a small set of useful patterns, like conditional branches and performing actions in sequence over the course of multiple turns. I don't want to load this post with too many details, so instead here are a few examples showcasing the kind of flexibility I have:

Attack pattern: Alternate between attacking and using a random special attack

Code: Select all

ai.sequence {
    "fight.lua",
    ai.shuffle {
        "special_attack_1.lua",
        "special_attack_2.lua",
    },
}
Attack pattern: Perform special attacks in order, randomly interspersing the pattern with regular attacks

Code: Select all

ai.shuffle {
    "fight.lua",
    ai.sequence {
        "special_attack_1.lua",
        "special_attack_2.lua",
    },
}
Attack pattern: Randomly select a regular or special attack. When health gets low, change to a different special attack

Code: Select all

ai.shuffle {
    "fight.lua",
    ai.condition (low_hp,
        "special_attack_1.lua",
        "special_attack_2.lua",
    ),
}
This is a good start, but what if we want monsters to use attacks in response to what the player's doing?

Reactions
Reactions are special behavior trees that sit separate from the monster's main AI. These allow the monster to immediately respond when a hit with an attack or when the monster dies. It's not uncommon to have counters and revenge moves in turn-based games, so I felt it would be useful to make the system available to any actor in a fight. In theory this can also work for party members, though right now it's only being used for monsters.

Unlike regular moves, reactions are called immediately after the attack resolves and any attack that comes from them takes priority over anything that was already queued. They also only trigger if the original attack that caused them wasn't a reaction... mostly to avoid the possibility of two actors reacting to each other forever.

Anyway, these are nice but you don't usually want them all the time... Usually you want counters to come with characters changing their stance or form to indicate that attacking is a bad idea. This could be accomplished using status effects, but I elected not to do that because it could be a mess to manage. I also could've used the old-school RPG trick of replacing a character with a different one and copying over certain stats, but historically that trick has caused a lot of bugs in various games. So insteaaaad...

States
...I added states. States are very simple, they're basically a set of overrides for character properties like their appearance, stats, AI, etc. When a state change is triggered, the actor refreshes its properties and takes any values in the state over those in the base stat-block. That way, the monster stays the same and only replaces the values that need to change. It also means that if I add new features to monsters, states can automatically take advantage of them.

With all that in place, I'm able to produce some fairly complex interactions and strategies for the AI. Nothing on the level of what you'd need to mimic a human opponent, but enough to present interesting and unique challenges to the player. And that's exactly what I want!


The New FX System
One more thing that I started prior to my health issues was an FX system for the game. I want to accomplish more than what simple pre-rendered effects can give me, so I set up a more concrete system with various forms of animation, tweens, and particle effects. In the long term I also want the ability to assign customs shaders to parts of effects and fullscreen post-processing as well, but I'm not there yet!

Right now I'm only using the initial version of the system for attacks attack animations in combat, but eventually I'll be using it on the map in cutscenes and pretty much anywhere I need it. I also want to add a way to integrate existing values and objects in a scene into FX to allow for things like a projectile that moves from one object to another, or a particle effect that accompanies a certain sprite animation. I also really need to make some kind of editor for these, as the animation data can get _really_ complex and verbose. But again, health issues... we'll get there eventually.


Putting it Together
To demonstrate of what I discussed above, here's a little video:


This is the same mimic fight from the first post, but with AI adjustments and combat effects. It plays out a little bit like a typical 1st boss of a Final Fantasy game--it sometimes closes its box, and counters with a powerful attack if disturbed. You can also see a status effect in this video, poison. I don't remember if I mentioned adding support for those in the past, but they exist.
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest