There was a good deal of discussion and refinement of our central concept, storyline, and setting - we knew we wanted it to be on a train that was also a dragon, but how exactly? We discussed various options (including a pivot to a guts and organs type interior) but ultimately settled on the dragon's inhabitance of the train being more supernatural, possessing a train and turning it into its body. To convey this, we plan on modeling an old-style train with various draconic details and, of course, a big dragon head on the front of the engine.
Implemented the basics of three of the core menus: the main menu, credits menu, and pause menu. Each button also has an animation that plays automatically when hovered, implemented via a custom button type.
No art pass has been done yet, so at the moment it is all programmer design.
Currently working on the options menu. At the moment it is properly opened from both the main menu and pause menu, but does not have any functionality. The intention is to implement the very basic options, especially those that some of us have been using console commands to set, before quickly moving on.
Created a greybox environment of the train, with proportions that provide enough area for gameplay but remain relatively close to real-world train sizes.
In addition, we experimented with different camera angles in the environment, ultimately switching from a more top-down view to one lower down and with a bit of an angle, which allows the player to see more of the train ahead, gives a closer view of the character and environment assets, and improves the sense of scale for out eventual gnome wizard protagonist.
Began the blockout for our player charachter gnome, following the concept art created. The goal was to mix both medieval-fantasy and victorian aesthetics to reflect the unique situation our main charachter has found himself in. It was also determined that sculpting should lean slightly realistic to go for a Darkest Dungeon vibe.
Many concept art iterations were created until the dragon train was settled on. Our inital designs were more Beauty and the Beast-esque, but we eventually reached the Victorian steampunk and fantasy blend everyone liked. Enemies and mechanics were also designed and voted on.
Started and finished the implementation of the ability system and the three basic abilities.
While the ability system, associated pooling system, and ability base class were all written in C++, the ability implementations were written in blueprints.
While writing the ability system, I used a type of test-driven development. Each black dot in the scene represents a test of the core functionality of the ability system. The functionality to note being:
Start, the function to start an ability
Finish, the function to finish an ability
Cancellation, the function to prematurely cancel an ability
Ability creation, an event called once on creation and not again on subsequent pool reuses
Duration, which acts as a lifespan for the ability, automatically killing it after a certain time alive
Cooldown, a delay before being able to cast the ability again- ignores duration
Pooling, the ability to work within a pooling system, properly clearing after each use
Additionally, the ability upgrade functionality was implemented, albeit only triggerable via a console command.
From there, the basic implementations of the three abilities were made, one for each spell slot (Primary [LMB], Secondary [RMB], Utility [Space]).
CD: 0.35s
Duration: 1.0s
A projectile is spawned at a constant distance from the player in the direction of the mouse. Functionality is also implemented for enemies to use the ability, where it instead starts around the enemy and fires towards the player.
A simple projectile that deals damage on hit to enemies, and breaks on walls
CD: 4.0s
Duration: 3.0s
Spike meshes animate up from the ground in rings, damaging anything they hit while moving up.
While moving, will be destroyed by anything friendly (ie the player, if cast by the player).
While not moving, will be breakable by enemies, but not by friendlies, where any abilities just end on hit.
CD: 5.0s
Duration: 3.0s
A simple 3-segment wall, animated coming up from the ground, spawned at a constant distance away from the player in the direction of their mouse.
The individual segments can be broken by enemies, but not by anything friendly.
On a side note, all abilities check line of sight to target, and don't spawn anything outside of it.
(note that the below images are not actually possible during regular gameplay, as the duration and cooldown have been modified for demonstration purposes)
A few other systems were imported from various other projects, including a menu stack system used for the UI, a stat component, and a few collections of utilities, including the above mentioned hovering button type.
Additionally, teams were implemented via IGenericTeamAgentInterface and DeveloperSettings, and used throughout ability development.