Published: August 28th 2021, 8:59:51 am
Before we started developing Tears of Magic, we had the concept of a game, the story, some lore and a couple of ideas. It would be a JRPG inspired in games from the 90's, like SNES, PSX and PS2 era, with the following main features:
- Main character can transform into dragons.
- Colorful graphics, with high definition pixel art sprites and textures.
- Modern controls and mechanics, with quality of life improvements to the classic JRPG model to make it more fluid and dynamic.
- Customizable character abilities and equipments.
- Lots of minigames.
The plot was already designed, as well as characters, regions and some concept art. We had some details to refine, but most of the world design was already done.
Then, we spent some time researching the best way to develop Tears of Magic and decided to implement it in Godot Engine, as a 2D top down view JRPG. A prototype of our Godot implementation is presented in the video below:
https://www.youtube.com/watch?v=5vRZrCf-dys
Some of the concepts implemented in that version were:
- No transition to battles.
- No transition to enter buildings.
- Transparency and outlines when hidden behind objects.
- Floating text when near some objects, like signs or bookshelves, to avoid the typical dialogue message descriptions.
- Shadow volume.
- Water reflection, refraction and movement.
- Mirror reflection.
However, we noticed some of the features we planned for our game would be better to implement in a 3D environment, so we decided to migrate to 2.5D (3D world with 2D sprites for characters and monsters). To achieve that, we decided to move from Godot to Unity, because it's a more mature engine.
None of the features we planned before will be removed in the new engine, but some of those features need to be implemented in a different way. For example, lighting is a fundamental aspect of a 3D environment, but the typical Blinn-Phong reflection model isn't well suited to pixel art. Instead, we needed a non-photorealistic rendering, like a cel shader (aka. toon shader).
Next devlog we will talk about the system architecture we chose to work in Unity and the principles behind it.