Undertale Battle Engine (2024)

GitHub | Download

Platforms: Windows
Project Length: ~1 month
Skill Focus: Systems Design | Reactive UX Design
Engine and Tools: Java Swing

Compilation of gameplay from Undertale Battle Engine

About

Undertale Battle Engine is a game engine used to play custom-made Undertale battles; a mix between JRPG turn-based combat and casual danmaku gameplay. The goal of each battle is to defeat a given enemy, either by skillfully dodging their attacks and slaying them, or by finding creative ways to defuse the situation and spare them. Players are encouraged to create and share their own custom battles using the tools present in Undertale Battle Engine.

Features

  • Customizable turn-based action gameplay.
  • Immersive dialogue system.
  • Intuitive menus.
  • Accessible battle creation.
  • Ability to import and export custom-made encounters.

Development History

As is a theme among my projects, Undertale Battle Engine was conceptualized after playing another game (in this case the fangame Undertale Yellow) and thinking, “I could probably make something like that.” After my work on Sha's Tetris and Torch, I had been interested in expanding the complexity of my games. Specifically, I hoped to explore the creation and implementation of state machines. And so it was decided: I would be making an Undertale battle engine with the purposes of learning state machines and game systems architecture.

Work first began with a simple state machine-driven action menu. Once that was completed, I fell deep into the pit of text handling in order to create an animated text display for battle narration and dialogue.

With basic UI done, work moved to designing and implementing the various customizable attack patterns used in the danmaku section of encounters.

Finally, I developed the format by which battles would be made and shared in and created a few of my own as examples.

Postmortem

Walking away from Undertale Battle Engine, I felt supremely satisfied. With a tight development period of only a month, I was forced to deeply consider how and where I would spend project resources. As such, many quality of life features had to be cut, namely settings, an in-game battle editor, and the ability to natively import/export battles. Despite this, I see Undertale Battle Engine as a stark success. While it may lack as a complete product, that was never really the intent behind its creation.

Throughout my work on Undertale Battle Engine, I experimented with state machines, systems architecting, modular design principles, designing with scalability in mind, reactive user experience, and so much more. Vitally, it also acted as an opportunity to develop feature sets that would inform my future development work such as dialogue boxes and text handling.

Undertale Battle Engine proved to be a perfect introduction to a wide variety of game development principles, along with a testing ground for new and exciting features.