How a Tiny Dev Can Make Enough Content for a JRPG

porchlight-editor-fish2-sm

JARPUG's not aiming to be huge. And I've obviously got an excellent composer making the music for the game. But the rest of this is still a lot for me to make. I'm programming, modeling, doing level design, sound design, writing scripts for this game, and... everything else. I've got years of experience in those things! And I've spent the previous years of JARPUG's development setting up systems to make this doable.

NPC Generation

I've made a character generator that can mix and match parts to create dogs, cats and humans.

jarpug-dog-gen

Yes, I put cat parts in the dog generator. I have sinned.

jarpug-dog-edited

A randomizer can be a great head start, but I get granular with the specifics to fix any randomized weirdness and make amusing, unique characters.

This tech saves the most time when I need to generate a crowd. Every game gets to that point where you need to fill a crystal pyramid with hundreds of random humans. You know how it is.

jarpug-pyramid

Tile-based Level Editor

Each level uses a 3D tile map as the base layer. I've created several different tilesets to help quickly create levels in various indoor and outdoor settings. Quickly blocking out areas results in mostly done level geometry when you've got tiles. And editing the level layout later remains nice and quick!

jarpug-filltest

PugEdit Story Event Script

Certain scripts in JARPUG support use in JARPUG's Story Event Script. This lets me create long chains of Story Event components that trigger each other, configured in simple readable text.

jarpug-storyscript

A simple parser tells me if my script's using variables that can't be found, has bad syntax, etc.

While these scripts support a lot of different possibilities, they can also just punt and trigger a more complex script in the actual Unity Editor at any time.

Judicious use of Unity Editor

I'm proud of my tools but I'm not going to hamstring myself with them! I'll admit I entertained thoughts of having a standalone editor that anyone could use, but that's frankly silly in a world where game development is so accessible already. I've developed these tools to the point that they're useful to me and I use them as efficiently as possible.

jarpug-puglvl-to-unity

I use my level editor to build the basic bones of the level and I build on top of that in Unity Editor. I use Story Event Scripts to trigger complex scripts and objects I've already configured in Unity Editor if I want a cutscene to have more juice than I can squeeze with event scripts alone.

Enemy Creation

This is honestly one of the slower parts of JARPUG's development because most enemies are pretty different looking and have bespoke animated models. But it's also an outlet for 3D character art that I really enjoy making!

fishmech-cropped

I'll admit this is overkill.

jarpug-battle-enemy

I've designed JARPUG's style to be relatively quick to produce. I'm not above making an enemy bigger or a different color with a few new attacks later, though! That's a JRPG staple.

Enemy logic is very reusable, with their skills, different movement settings, and different preconditions for which skills their AI picks being the chief differentiators. That comes with the genre.

Battle Skills

I can get real fancy with these if I want! But a standard skill can be as simple as a damage type, stat numbers, an area shape, an animation name, and an effects prefab.

jarpug-boo-skill

The standard enemy ghost's big "boo" attack is just a blend between an effects prefab and character animation.

SUPERHELL's Procedural Dungeons

jarpug-obstacle-superhell

JARPUG's got handmade dungeons, but SUPERHELL's dungeons are a procedural semi-roguelike that replaces the traditional JRPG grind. Adding a whole new semi-roguelike mode certainly wasn't a simple task!

But I've made it easily expandable. SUPERHELL is currently made up of a pile of handmade level bits that get shuffled together and procedurally connected via blobs of tile blocks. That was done via a very useful leveraging of the underlying tile-based level tech.

jarpug-SUPERHELL-fragments-wip

Each SUPERHELL dungeon will be built of mostly different handmade pieces, but they are also each based on a dungeon from the main game. That means tilesets, enemies, amped up versions of previous bosses, and level design ideas from previous dungeons will be remixed into a more intense and silly adventure that's there for players to check out as a sidequest, whenever they want it.

I don't have to program everything from scratch.

I'm already using a whole game engine made by giant company. While I program a lot of things myself because it's simpler than integrating third party solutions, I'm also using some very well done assets to help make cool things! Each of these took quite a bit of work to integrate with JARPUG's workflow, but I found them well made and worth the effort.

My favorites at the moment are:

Boing Kit, which helps add a lot of bounciness to the dogs, their clothes, and bits of the world.

pug-wobble-opt

MudBun, which I've used to create meshes for Pet Hell's dynamic terrain:

jarpug-rainbow-stairs-sm

While I prototyped these stairs using MudBun's incredible SDF support, the actual in-game implementation relies on shader magic and some stealthy collider masking to efficiently replicate the effect at runtime.

and Dreamteck Splines, which I'm using to make loopy tracks for our jarred friend to roll through:

jarpug-spline-opt

So there it is. JARPUG's a big pile of work that I've had a great time doing. I'll keep at it.