I’ve decided to start a new section of my blog where I create working game samples and then blog about them. I have been working on a Tactics RPG game for awhile now and you can see the results so far in this sample video:
or download the and try out the project yourself.
In this project we will focus on the creation of an RPG game engine. I spent a lot of time looking at various games in the Final Fantasy series for inspiration and then decided to focus on Final Fantasy Tactics (Game Boy Advance). I came to this conclusion because much of the elements in a Tactics game (job-based stat growth, abilities, etc) could also be used in a non-tactics game, but the tactics game adds additional complexity due to the game board (path finding, etc) that wouldn’t have been addressed otherwise.
This series contains intermediate to advanced level material, therefore I will assume you are familiar with C# and Unity. If you are new to C# I would recommend following along with my own tutorial series here.
I will also make use of code and ideas written in previous posts. I recommend you read over the following:
- Dynamic Animation Part 1
- Dynamic Animation Part 2
- Bestiary Management and Scriptable Objects
- Social Scripting Part 2 (Events)
At the time of this writing I am using Unity 5.0.0f4 Personal edition (one of my goals is to keep everything completely compatible with the free version). You can download Unity here.
Download and try out the project using this link. Note that development on this project is currently on-going and is VERY likely to be cleaned up and or refactored if not just completely changed over time, particularly as I actually start writing about each part.
It would be beneficial to play the game before following along so you can get a better grasp of all the features we will be adding. Some of the features I have added so far include:
- Dynamic UI – menus which take advantage of Unity’s new UI tools. This includes UI which displays the selected unit and its stats, a command menu, a coversation panel, etc.
- Game State Machine – allows the ability to play a complete battle by entering commands to move units, select and confirm actions, etc. Moves can also be undone.
- 3D non-square battle maps. Battle maps can be randomly generated and or modified by hand. They can take any shape and the height of each tile can be modified as desired. This also affects game play such as by the jump-height restriction on a unit’s movement.
- Camera system – smoothly follows selected units and cursor movement.
- Flexible navigation system – Units can have different means of pathfinding and moving around the game board such as by walking, flying or teleporting.
- Job system – used for leveling up units with a good variety of stats. Theses stats have an affect on gameplay such as the speed at which units get turns, or the amount of damage they inflict or receive from various attacks.
- Ability system – used for attacking, etc.
- Animation system – UI animates into and out of the screen, units tween from tile to tile along their movement path, etc.