Prime Maxima: Monk
Joined the project in: May 2019
Involvement time: 4 months
Prime Maxima: Monk is a work-in-progress open-world JRPG with mystery dungeon elements, developed by MythAtelier.
The game was developed in tandem with Prime Maxima: Warrior, which I also worked on as a part two consecutive 6-month contracts over the course of 2019. In September the project management shifted around and I wrapped up my work in Monk to focus solely on Warrior so it could release on-schedule.
My responsibilities included:
- Systems programming
- AI movement programming
- Overworld design
My main task as a programmer was to write a plugin for RPG Maker MV, the engine we were using, to make all overworld movement turn-based, in a style similar to a Mystery Dungeon game, complete with a stamina meter.
Each time a player or enemy moved in the overworld, it would take a certain number of turns based on what tile they moved onto. For instance, moving onto a snow tile might take 2 turns while moving onto a road tile might only take half a turn. Whenever the player moved, all enemies would also move as long as they had a free turn, and if a movement took 2 turns for the player the enemies would be given 2 free turns.
This hooked into another system I was tasked to create: a day/night cycle. Time would advance with each turn, and the player has a certain number of days to complete their main objective. Every couple of days a new event of some kind would trigger, such as spawning NPCs around the world map's towns to travel to a different town.
AI movement programming
There are two basic entities outside of the player, and they are enemies and NPCs. Complex, responsive pathfinding isn't supported by default for RPG Maker so I had to write my own plugin just for enemy behavior.
NPCs have very simple movement AI. A random NPC will spawn at a town, and they'll be given the coordinates to another town and travel there, despawning when they arrive.
Dynamically spawning entities is not exactly a built-in function for our RPG Maker MV, so I had to use a combination of other people's plugins and clever workarounds to give NPCs different starting parameters depending on where they spawned, which determined their specific behavior.
The design specs I was given involved the world being divided into 25 sections, each containing specific points of interest, and my responsibilities included making moving from one section to another feel fluid and organic.
The map is 100x100 tiles. It may not look visually polished in this image (water tiles are inconsistent, for example) but this was the draft I completed before being shifted back to working on PM:Warrior.
You can click the image to see the full-size version.