Making a simple JRPG (Part 1)

After a few years of yak shaving

    ...and constantly restarting and shuffling projects around, I finally sat down and told myself to make a game, start to finish.
Thanks to the wisdom of a coworker with far more experience in the video game industry, I finally stopped trying to start the perfect game project... or my dream game or anything that would keep me stuck in a never ending loop. It's funny how each time I restarted a project because I didn't like the state of a tool, engine, the art style or the 3D library, I would gradually go to lower and lower levels, eventually getting the idea of implementing my own engine from scratch. In itself it's not a bad project, however, as I wasn't making any game, in fact I was making less progress each time I restarted.
At some point, after successfully rendering a single RGB triangle on screen I realized I wasn't near completing any game project at all.
 I also came across this book (How to make a video game all by yourself) which is, in my opinion, a must read for any aspiring solo game developer. It really helped me set myself up for completing projects instead of remaining in project setup limbo. I highly recommend this book.
For this first project, I tried to keep the scope incredibly narrow. Making sure I could actually complete it on a realistic timeframe. Obviously... (or maybe not obviously) I don't believe I'm gonna stick to that scope for very long, game projects have a tendency to extend beyond their original scopes all the time. Although compared to the scope I would often set for a given project, this one is very limited so I do have a chance to complete it… I hope!

I'm making a JRPG!

It's not a character but it's a start
It's not a character but it's a start


Turn-based combat, simple 4 people party, tiled environment (although in 3D) and all the standard bells and whistles of  your typical NES rpgs ala dragon fantasy and final quests!
I chose this genre because it is relatively simple to implement, still it does require a lot of work though. Everything requires a lot of work in game development.. even on Pico8. Can’t escape it!
I've settled on Godot as the engine for a variety of reasons, the main one being that I just can't stand Unity's UX friction anymore. I feel like I spend most of my time fixing config issues, getting boilerplate working and reverting packages because they don't work... rant over!
However, I also admire the simplicity of Godot's design, workflows and how easy it is to extend and modify. This engine has very little friction once you start to understand how scenes and scripts work.
As for Unreal... It’s a bit too much for what I’m trying to do, although it would've been a valid option.
I've also settled for the alpha version 4.0, partly because I can since I'm the sole developer and partly because I wish to test how feasible it is to produce a full game using this engine version, which I hope to use in the future!
The first task I set out to do is implementing a grid-movement system.

Trying to come up with a somewhat working movement code
Trying to come up with a somewhat working movement code

I've implemented a few character controllers here and there over the years but always direct control, never on a grid. I thought it would be quite easy and simple to implement. I was mistaken! It gave (And still does give) me quite a headache.
The first issue I've encountered with my grid based movement code is a weird issue where the character would wait for considerable time before another input was allowed, a consequence of the interpolation method I've written. As i was debugging my code, I've realized that the way I was handling the inputs and movement of the character had less to do with a state machine and looked more like a command buffer and decided to properly implement that pattern in order to reuse that code for NPCs

I didn't set on a definitive art style but I started block out the general idea. I do know, however, that the style should be relatively simple to make, using vertex color, simple textures and a bit of shader work to get something satisfying.
Blocking out the tiles and getting a sense of scale
Blocking out the tiles and getting a sense of scale
The idea is to be able to generate a lot of asset quickly. 

Overall I'm more confident for this project than I have been for most of those I started before. Mostly because I made my peace with the tools I'm using. I also stay alert to avoid going into any yak shaving... (I had a short episode with trying to find a good task management tool and trying to implement my own versions before settling on Trello)
I know I can make it but we'll see... at least I will have documented everything this time.

Comments