This week was spent polishing the game feel, UI, and the audio as well as continuing to add new content. Here’s what we’ve implemented over the past days.
3D to 2D
While we started on the UI, we quickly found out that creating icons for each individual item inside the game the user can interact with would take way too long to do. The 3D was there, but the 2D wasn’t. By having another camera that renders only the 3D item to a Texture2D, we can take the image runtime or bake it before and use it to display the model in the 2D UI.
3D Model & 2D Texture via RenderTexture Bake
3D Model on the left, 2D Sprite on the right
Screen UI, Inventory, and Interaction
With the icons finished for all the objects, we went and revamped the UI to take up a lot less room, redoing a lot of sprites.
The UI and code was finished up for the inventory, description, and the applications of stamina was applied further along with the SFX for each action.
Stamina & Moving
Inventory in action (added an optimized blur for when paused)
The exit from the dungeon, though it was difficult to get to, didn’t have much of a climax. Hence, we decided to work on implementing bosses and enemies with a specific pattern that requires the user to think quick. Our first boss fight is finished, and with the use of Cinemachine’s Base Rig, we managed to get off some stunning shots by configuring the parameters to generate a dynamic cutscene that the camera frames in game. A video showcasing the beginning of the fight will be available soon!
In the trailer and gameplay video that’ll be coming up soon, the work in the audio design will be notable for sure. Sounds to nearly every aspect of the player’s actions, different physically reactive sounds, and environmental ambience placed spatially with reverb zones should make for a more immersive experience.
By using multiple tween sequences onto each individual component, the animations for the objects that the player can wield are quite easy to tweak and balance. The speed of the sword swing, the recoil of a mace as it hits a wall, the arrow being released from the bow - all these parts are generated inside the engine rather than being rendered and exported from an outside program. This, with a combination of inverse kinematics, allows the physics engine take over parts of the animation. An application of this in the game is an enemy with a shield, where attacking the enemy’s shield with the sword will just cause the sword to recoil at the point of contact.
The featured picture of this devblog is a preview of an area that comes before the boss!