This week I’ve advanced a lot too, although on less visible parts of the system. So this time there’s almost no screenshots, sorry!
What I’ve done this week
- Improved the spell combo system so nothing is broken anymore and the basic actions (destroy and move objects) work.
- Worked a bit more on the new spell selection menu, fixed a couple of bugs.
- Added the option to let the player turn around (change direction) by using the arrow keys, without actually moving to the next tile.
- IMPORTANT: Optimised the function that reloads obstacle positions to prevent framedrops. Previously, the entire array of map objects was reloaded every time that you changed rooms, and this caused a delay, since GDScript (which is not a language focused on performance but on usability) was carrying out thousands of operations in a second. Now only the current room is backed up and reloaded when you change rooms, so there’s no delay.
- Added a screen at the beginning of episodes, which displays the episode number and name automatically. This screen doesn’t appear when you enter different indoor maps during the same episode, only at the very start of the episode.
- Improved some aspects of the dialogue system, based on the SMRT addon by brunosxs. I will probably change that system more or drop it completely for a custom system in the future, particularly if it doesn’t adapt well to Godot 3, but for now it’s functional.
- Added a system to load map values from a json database: number of rooms, starting player position and random obstacles (id + amount). Will probably use the same method to store info on items and other data.
What I want to work on next
- Change the font, since I’ve just realised that it doesn’t have accented caps (Ó, Ò, Í, À, etc.), which are important in Catalan and Spanish, two of the game’s supported languages.
- Improve the titlescreen displayed at the beginning of each episode, so it also shows some basic info apart from the title: episode goal, description and available time to reach the goal.
- Implement the clock countdown system.
- Add a system that detects whether the player is standing in a “water tile” or not, and changes the player animation to swimming instead of walking (this is important, since at some point I’ll add the option to dive underwater and enter underwater maps).
Things I want to do but will leave for later
- Add a game over event when your health drops to 0 or the clock reaches the max available time.
- Implement a savefile system with encrypted files.
- Add a system to save several game stats to the savefile (time it took to finish every episode, items found, etc.). Also include a scene in-game to be able to check those stats, and another scene that runs when you finish every episode and displays that particular episode’s stats.
- Create an actual config menu (possibly with custom keybindings, although that may be beyond my ability for the moment).
- Implement the item system + random drops when you destroy obstacles and take the relevant data from a json database.
- Implement an indoor map system, so you can enter and exit indoor maps without the states and positions of objects being reset (tricky).
Known bugs to fix
- When using a stick controller and navigating the menus, the cursor moves way too fast.
IMPORTANT: About the game engine
Monster Embassy currently runs on Godot Engine 2.1.4 stable, the previous stable branch of the engine. Godot 3.0 stable has just come out this week and it overhauls and improves many aspects of the engine.
I was planning to wait until the Godot 2.1.5 maintenance version was out to port the game, since it will probably have a more accurate Godot 2 > Godot 3 exporter, but at the rate the codebase of Monster Embassy is growing, waiting even a few more weeks will mean a big headache later on.
So, starting from next week, I will focus my efforts on porting/remaking in Godot 3 everything I’ve already done in the 2.x version. Once that’s done, I’ll start working on the regular to-do list again.
See you next week!