DevLog_05: Week 11
Modelling:
For this weeks modelling i quickly just put together some more scene assets to make the game feel a little more alive, things like lockers and pipes to give a bit of depth to the current bland walls we have and lean more into that underground lab we originally planned. Below are some images of the final model:
A picture of the Lockers in the viewport of blender
A picture of the 5 different pipe sets in the Blender viewport
Animation & Visual Effects
Some small changes to visual effects this week. We’ve altered the projectile fired by the slimes to be the right colour, glow a little, and have a trail going behind it. We also added an animation to the slime to make it a bit more convincing.
Pew pew.
We tidied up the animations. The heavy attack now looks more like it has a short build up then a fast swing down of the weapon. But the heavy attack was still missing something. So, we’ve added a basic particle effect on hitting the ground to give it more impact.
Sometimes you just want to show off the heavy attack, but someone else just HAS to be in the shot.
The upgrade room between levels needed a bit more pizazz.
Ominous. Inspired by the level introductions in Control.
UI
The main menu has been implemented. We decided to make the main menu part of the first scene in the game, this will allow the player to jump right into the action without unnecessary load times between main menu and game (although, load times are very short now anyway).
We’ve also made a slimy looking button to the menus and altered the colour pallet to match the game more. This small change has made a large difference in the appearance of the game.
Colour makes everything better.
The upgrades are now showing properly in the in-game UI. Each upgrade object has an attached name, description, and image, which can be pushed to the UI when they are collected.
Gotta get them all. But on reflection, this gif doesn't show the updated changes to description. You have to play the game to see that feature.
Sound Effects & Music
Some of the effects were feeling a bit empty without sound. This week we added sound to the throw attack, enemy spitting, heavy attack, and more! Some sound effects needed some minor editing to make them start at just the right moment.
Chop chop. Too much quiet space in this audio clip.
Futher on the Audio side, using https://onlinesequencer.net/ we created a new Title and Tutorial Music to set the mood for both. The Heavy attack sound effect was also made using this tool.
We then ventured to https://pixabay.com/ to find sound effects for a throw attack, slime hit, slime shoot/attack and a pick-up sound effects.
Level Design Clean-up
Now that the game is almost ready to be tested by our peers it was time to add some extra polish and go back to remove all the blocking that still remained in the levels, along with making sure almost everything was using a prefab with minimalistic meshes and colliders for a smidge of optimisation.
Prefab city (Room 1 aka Tutorial Room)
The biggest struggle this week was cleaning up the last room (the hopeful boss room). Also known as Room 4, this room was struggling to load even when given all prefabs. It was originally thought that too many prefabs may have been the issue with all the railing around the room, the issue was found to be the ProBuilder model used for the floor and roof. Over time it seemed that many areas of the ProBuilder mesh were painted with several textures with some weird functionality almost crashing Unity. The model was deleted and the scene once again worked.
"Boss" Room, Blue area is NavMesh usable by enemies.
Scene Transitions
After many long hours of trying to figure out how to best tackle the scene transition problem, it was decided that Async loading would be used and that the levels would load in small chunks to avoid enemies and levels spawning before being reachable by the player. The level loading method was solved as follows:
- Load Room 1 and an Upgrade Room
- Once in the Upgrade Room, Unload Room 1 and Load Room 2
- Once in Room 2, Unload Upgrade Room and Load a new Upgrade Room with new randomised upgrades.
The game continues in this fashion until the player dies.
Room 3 and Upgrade Room. Load state: When standing in upgrade room (left), when standing in Room 3 (right).
Scene transitions were solved with the use of several YouTube tutorials, and then after much trial and error were combined and bugs solved with the use of generational AI. Some of the inspirational videos for the additive scene transition and unloading method were:
Sasquatch B Studios - How to load scenes in the Background for games with HUGE worlds | Unity Tutorial
and the Unity tutorial for unloading and loading using triggers:
Unity - How to work with multiple scenes in Unity
The scenes were all organised in the hierarchy with a scene root game object, giving the location of two children containing an entrance and exit marker based on the root location of the level (the median transform of everything).
The final task was to make the scene transitions feel like the player accomplished something and so doors were added. Using a Youtube short by b3agz I was able to find an easy method to open and close a door by using a trigger to move the door game object to a new location.
Very Very Simple Door Opening Closing Script in Unity by b3agz
Door opening from trigger
Randomisation
In order to make our game re-playable we needed to implement randomisation between runs of the game. In order to achieve this desired randomisation we needed to first identify what would be randomised between runs. There were 3 identified aspects of the game that could be randomised: items, enemies, and levels. Of these 3 options, we chose only items and enemies for now as we had not made enough levels for us to randomise between them.
Enemies
To randomise the enemies, we decided to randomise both the type of enemy spawned and the location in which they spawned. To randomise the type of enemy spawned we once again employed the use of scriptable objects to store a list of possible enemies and their associated spawning weight. Scriptable objects were used to ensure that when we did eventually decide to implement randomisation between room we grab from a list of enemies based on progress and not level instance.
Because each level has its own shape and design the possible spawning locations of the enemies is on a per level basis and thus not stored as a scriptable object. In order to keep track of the possible spawning locations. they are recorded as an array of transforms.
With both enemies with their associated weight and possible spawning location stored in arrays all we need to do is randomise enemy type using their weights and randomly choose where they spawn. After the type and location are chosen we create an enemy at that location and repeat until we have spawned every enemy.
Upgrades
Like enemies the lists of possible random upgrades were stored in scriptable objects. However, on top of using scriptable objects to make the upgrade pool changeable based on player progression, we also used it to ensure consistency between the upgrade prefabs.
Now that we had a list of upgrades to choose from we needed to get put it in the scene, but we didn't have the model of the upgrade. Thus the model was added to the previous upgrades scriptable object.
With the model now retrievable we could now add the upgrades into the scene
General
The sudden implementation of many systems led to some bugs that needed to be patched. So a good 50% of this week has been about swatting bugs!
Cute lil guy. But you shouldn't be that small!
We created multiple enemy types with different stats and attacks. Previously we just had the ranged enemy, but now we have a whole gang of melee enemies as well. Yellow weak enemies come in swarms, green do default melee attack, red default range attack, but the blue guys are buffed and harder to kill.
The whole gang is here!
If you beat all the levels in the game currently, you can now teleport back to the start of the game and keep all your upgrades! So that allows the player to experiment with stacking upgrades. In future we will have to scale difficulty based on this.
Thank you for reading this weeks DevLog, we hope you enjoy our game's progress!
References
Software used in audio image is Audacity - https://www.audacityteam.org/
Fantasy Lab Escape
Status | In development |
Authors | Josh Daniels, Streatj, Hazza2705, Spaghetti_Sauce |
Genre | Action |
More posts
- DevLog_06: Testing Feedback23 hours ago
- DevLog_04: Week 1010 days ago
- DevLog_03: Week 917 days ago
- DevLog_02: Week 825 days ago
- DevLog_01: Week 739 days ago
Leave a comment
Log in with itch.io to leave a comment.