Update V3
Hello,
First, I would like to add some details on last week devlog that I forgot to mention. First, in order to implement the GameManager, I learned about and used the singleton design pattern. More over, I may not have been clear enough, I used color grading to decrease the saturation during bullet time in order to give a visual feedback of the bullet time being used. Now let's start this week devlog.
Here is the third and final update for my first unity project, The Binding of Monfiac. The goal of this week was to finish this game, and therefore I was focus on UIs, Menus and Game Design. There is some details that would need some changes, for example I designed the menus using unity play mode free aspect, and they don' t fit well with a full hd screen 1920x1080. However I'm satisfied with how my project ended up like, and thrilled by the amount of stuff I lerned during these three weeks. Here is the complete schedule:
Monday :
Morning: - I had a lesson on UI, and lerned about sliders, scroll views, toggles, ...
- I used a slider to represent the amount of bullet time you currently have, and a disc image to represent the cooldow - I also sliders to create the menu volume, and set up the main volume, the sound effects volume (SFX), and the background music volume (BGM);
- I obviously connected these sliders with their respective audio mixer groups, and took care of the conversion between decimal and logaritmic scale.
Afternoon : - I finnished the first version of the volume menu and made it a prefab;
- I used Kenney's assets to make this menu : https://www.kenney.nl/assets/ui-pack-rpg-expansion ;
- I added a volume button to the pause and main menus to access this volume menu;
- Instead of using the IPointerHandler interface to play a sound when the mouse gets over a button, I used the Event Trigger component which was already implementing the detetion of any event;
- I updated all the other menus to use the event trigger component;
Tuesday:
Morning: - I corercted a bug on the bullet time UI, the cooldown disc was way too far from the slider;
- I created the life bar under the player. This is dynamic, the amount of hearts will automatically match player's default life amount;
- I created a new prefab, made up of an image and a script, to make the hearts;
- The bullet time would now modify the audio pitch. The pitch modification is kept in the pause menu, that was not inteded, and would be an easy fix, but I decided to keep it, because it is funny;
- The main menus were updated to match the new visuals of the volume menu;
- My project files were becomming a mess. I cleaned it, put in order;
Afternoon: - I moved the bullet time UI under the player, instead of the corner of the screen. Indeed, the player should always keep an eye around his character, and can't afford to look far away from it to check his stamina;
- I modified the pause menu with the new visuals;
- You could now navigate in the pause, main and volume menus with the gamepad;
- I made a final correction to the BGM random. The last music of the music list could now be played first;
- When you were going back to the main menu from the pause, while bullet time was active, the audio pitch modification was not removed. I changed it;
Wednesday:
Morning: - Although the BGM manager (a gameObject instantiated in the main menu) was not destroyed from one scene to an other, it was not made under the singleton design pattern. You would therefore get a new one everytime you would access the main menu. I corrected it;
- I made a mistake there and deleted the Player Input Manager, but I successfully fixed that issue;
- I separated the GameManager into a GameManager that would be kept during the entire game, and multiple LevelMangers, one per level. The LevelManager is keeping track of the state of the current level (ennemy number, if the player is alive), manage the ennemy waves, and trigger the pause menu. The GameManager contains the scene names of all the level, knows which levels are unlocked, move between the level scenes, the win screen and the game over screen;
Afternoon: - I cleaned my GameManger and LevelManager scripts by removing useless lines, reorganising the code into different regions, renaming variables to better fit their goals, etc...
- I made the level selection submenu in the main menu.
- Level Buttons are made with a prefab;
- In the GameManager, I manipulate the PlayerPrefs to save which level is the last level unlocked by the player.
- The level Buttons appear differently if they are unlocked or not. If they aren't, they are uninteractable, and their name would not be written;
- The win screen would now have a next level button that will appear only if there is a next level.
Thursday:
Morning: - I made the level menu to be dynamic : it takes the levels list from the GameManager to create the level buttons by its own.
- I added a continue button, that will directly lunch the last level unlocked;
- I added a boolean to the Level Menu inspector to set the last level unlocked to a specified value if this bool is true;
- I set up default button in the win screen to be the next level button if there is one, or the play again button otherwise.
- You could now navigate in every menus;
- I created a spawn particle system played before an enemy spawn;
- I dezoomed the main camera;
- I changed the player movement speed, giving him different movement speeds depending on if he's shooting or not;
- I added two unity events OnStartShooting and OnStopShooting for this purpose;
- Changeed the detection of the player shooting from context.action.WasPressedThisFrame() to context.started;
Afternoon: - I was introduced to tthe tilemaps;
- I downloaded a custom tileset from kenney's page : https://www.kenney.nl/assets/roguelike-rpg-pack ;
- I made the first level, using multiple layers of tilemaps : walls, floor0, floor1, decor, foreground, fog.
- I changed the spawn particles color from orange to red, for it to be more distinguishable.
Friday:
Morning: - I changed all my mob, and my player hitboxes. Indeed, I used flipY to keep their feet towards the bottom of the screen, however, the collider wasn't flipped with it. To fix it, I made their hitbox vertically symmetrical.
- There was some tearing when my player was moving. I fixed it by creating a sprite atlas from the sprite of my tileset;
- My camera wasn't well synchronised with my player, and too rough during shooting. To correct it, i deleted my main camera anchor and moved its position script to the main camera;
- I created a level scene template to make the creation of level easier;
- I changed a bug in my life UI. I was triggering my UI events when my player was getting hit by bullets, but not by ennemies themselves. I corrected it;
- I made the first build of the v3.
Evening: - In the first build, the different buttons to get back to the main menu scene were using the scene object instead of the scene name. It was working in play mode, but not in the build. I changed this and built the v3_2.
Saturday:
Afternoon: - When the game was loaded, i wasn't setting all the levels until the last level to unlocked. Therefore, except the level0, there were all locked. I changed it and made the v3_3 build;
- For the build v3_3, I used the boolean in the inspector to set up the last level unlocked to 0 and to forgot to set the bool to false aftewards. This made the last level to set to 0 every time the game was launching. Player's progression wasn't saved. I desactivated this bool in the editor and made the 4th and final build.
Files
Get TheBindingOfMonfiac
TheBindingOfMonfiac
First unity project. A twin stick shooter game.
Status | Prototype |
Author | NoisetteTresChouette |
Genre | Shooter |
Tags | Prototype, Singleplayer |
Languages | English |
More posts
- Update V2Jun 23, 2023
- First UploadJun 16, 2023
Leave a comment
Log in with itch.io to leave a comment.