#[RPG Template, Hiatus] The Dungeon Next Door

34 messages · Page 1 of 1 (latest)

buoyant lintel
#

I've noticed quite a lot of people here wanting to make their own turn-based RPGs, but had trouble because of just how much stuff you need to make from scratch.
So hey, since I'm already making an RPG, might as well make a template to help others make their dream projects a whole lot quicker!

The actual game is barebones, just some kids exploring a dungeon full of ancient artifacts, but the project file contains the most essential components right out of the gate (battle system, equipment, random encounters, shops, etc) with a selection of different battle styles and mechanics.
Let's hope the code doesn't get too complicated...

#

Not much has been made at the moment, got a town, naming script and title screen done.
The battle system (one of them) isn't finished too
I'm going to focus on making the game with a single battle system in mind (Mystic Quest inspired) and then add the other systems.

Yes, there will be an ATB clone system - just not at the moment.

lofty jetty
#

Looking forward to this! I'm really surprised no one has done this yet, considering all the progress in other genres.

mint sky
#

Ilysm

buoyant lintel
#

The tileset with all of the items and moves
(since I'm including a SaGa style combat option, where everything is an item with durability)

#

The only thing capable of instakill is, of course, the Chainsaw
(instakills if EnemyDefense is lower than the Saw's WeaponPower of 20)

buoyant lintel
#

Enemy and item display script done
There's only gonna be 15 enemies

#

Honestly the hardest part of this project will be making the ATB combat
Because I have to figure out a way to have more than two combatants acting at the same time, including menus

The easier way to do ATB is implementing Wait mode (wait gauge stops time) but with some tweaks, a standard system anchored to Agility instead of Level makes this mode pointless

Active mode (time never stops) will probably be a threaded nightmare, but I'll see what I can do...

#

But hey, if Square got it running on a SNES then it's probably possible on a Game Boy

buoyant lintel
#

After thinking for a bit, implementing ATB might be easier than I thought
In Active Mode, while menus don't stop time, performing an action does
So maybe I can use an OnUpdate script for the menus and the rest is handled in the Scene loop, only needing two Threads running at the same time

Also if you're worried about this system making combat real slow (like me) the slowest the gauge will fill up is 4.7s (1 Agility) and the fastest is 0.8s (40 Agility), since the calculations are based on both the stat cap of 40 points and the gauge's length (48px):
$xyGAUGE = (48 - $xyAGI)
Wait 6 Frames

#

Handily, we've got 6 combatants, so having an Idle after every Turn Script gives us the six frames we need without feeling sluggish

lofty jetty
buoyant lintel
lofty jetty
#

I was just teasing. The entire chainsaw programming was borked in the original game and did the opposite check it was supposed to.

buoyant lintel
#

I know I really like that glitch
I never beat FFL legit because cutting God in half with a chainsaw is just too badass to not do
Doomguy would be proud

buoyant lintel
#

Well...
The only way I could get player input is through Thread events, and you can feel the lag going on here

But it is possible

#

Somehow starting a thread inside of a loop gives enough leeway for the scene code (that handles player movement) to run

#

A Non-Modal Dialogue menu does seem to work, but the text (yes, the cursor is part of the font) flickers due to the lag

You're not meant to see the enemy's gauges, which does add to the lag

#

I need a lot more things coded before working on the rest of the ATB combat, but yeah, I can make it

#

I'm happy with the gauge filling speed too, although I've just noticed how the calculations don't really change how fast it fills up, but instead who gets to be in the lead first
I don't think it works like that but it's not hard to modify

buoyant lintel
#

My original idea for the OST was arranging public domain songs because I wanted to make the soundtrack "generic" to not get attached

That idea didn't go anywhere but I still like using Greensleeves as an overworld theme (this is a BeepBox song, not hardware accurate)

buoyant lintel
buoyant lintel
#

Now that's more like it
The gauges do need to be reset to the combatant's Agility but the Display script has been changed accordingly

Now time to focus on other parts

buoyant lintel
#

I wonder how I can spice up the ATB system, maybe with a Counter system where you can interrupt the enemies' moves if you time your action to a short grace period (like 20~30 frames)

teal plank
#

I like this a lot. I’m curious to see how you implement the menu screen when the player presses start on the overworld. I’ve tried so many things and have to use the dialogue menu for it

buoyant lintel
#

It'll be a separate scene, it can hold a lot more data and is more customizable

buoyant lintel
#

This project ain't dead, just been busy (the usual suspects)
I've planned out all of the variables that will be used in the game, next step is to rename the default variables and code everything else

abstract carbon
#

Damn that's some impressive organization

buoyant lintel
#

For an RPG, it is absolutely necessary
Did this with Clean Shift too, setup takes a while but it helps out a lot in the long run

abstract carbon
#

I'd love a general breakdown of this chart/matrix if you ever get the time!

buoyant lintel
#

The sheet is divided into three sections based on the series of variables used: 400~499 (Enemy Data, bottom left), 300~399 (Player Data, top left) and 200~259 (Inventory Data, right)

The most important variables for a Player or an Enemy (HP, MP (Player only), Stats, Moves and Equipment) are arranged into a 20 variable space (ex.: P1 data is stored mainly from 300 to 319)

On the 60th variable of those groups more battle important data is held, this time in a 30 variable space (Buff and Debuff Modifiers, Targets, Buffered Moves and Combined Armor Power)

The last ten of the group store random stuff, like the Turn Counters, Time, Level and XP

The rightmost grid is where the Inventory lies, along with extra battle variables, Shop items and extra Quantity variables for the SaGa style battle option

#

The names are somewhat cryptic because I kept an 8 character limit to make them quick to type

So instead of writing Player1_Strength, I just write P1STR