Progress Report 7
Main Menu & Matchmaking
Added a main menu with controller functionality and a working multiplayer matchmaking system Right n ow you can only play as the one fighter, but I plan to add a character selection menu in the lobby before the game starts. |
---|
Adding Multiplayer
Problems:
Out of the box, the multiplayer barely functions. The two players can see each other, but each player overrides both players actions and movement To fix this, I will try to use some networking concept scripts I made for 🖐️Krants, a VR and PC multiplayer project |
|
---|---|
Fixed the movement using the script from 🖐️Krants I also tried to sync the health and object instantiation which only partially worked Health isn't properly synced as the client treats all players as if it was itself, ignoring ownership Instantiation works for the initial instantiated object, but when the large rock is destroyed, the smaller rocks are not synced between clients The sprite flashes also seem to cause invisibility to the affected player if they are not the viewing client |
Solutions:
Fixed the players turning invisible on hit by allowing each client to update the SpriteFlasher.cs script for all players |
|
---|---|
Fixed all the problems by removing multiplayer alltogether |
New Character: Blob
Noah, AKA Mr. Art man has completed the animations for the second and final character for this prototype, the 🪃Boomerang Blob Character!
I once again had to endure the painstaking process of removing the background from each frame, with the assistance of image AI, and then manually go through each frame to clean it up.
After that, I imported all the new frames into Unity, where I then created animation loops for all the states, being sure to clean up any timings, or switching frames around where I see fit.
In the end, there are 13 states for the blob guy.
I then created t he blob guy prefab, where I specified the new animations and began working on the abilities.
The blob guy is unique, in that he has 2 states he can be in: regular mode, and puddle mode
Certain actions require the player to be in the regular mode, others in puddle mode, and some don't care which mode the player is in.
If you want to learn more about the blob characters abilities, go to 🪃Boomerang Blob Character
A large problem I had to solve is how to have separate animations for walking, idling, and landing depending on the puddle state.
I believe the solution I implemented is quite elegant.
The same script that tracks if the player is in puddle state or not contains animation override states for walking, landing, and idling in the puddle state.
When the game starts, that script remembers the original walking, idling, and landing animations from the non-puddle state.
Then, if the player is in puddle state, the puddle state checker script simply changes the animations in the player controller to the puddle animations, and when the player goes back to the non-puddle state, it switches back to the original animations it remembered from earlier.
note the white circles are temporary, they are placeholders for the hurtboxes I'm still fine-tuning |
---|
The Final Stretch
Finished Blob Character
- All abilities are fully implemented and working
- Finalized all hurtbox locations and made them invisible
Round Manager
- Created a round manager that dictates how many rounds are to be played
- Also keeps track of which player has won how many times
- Resets the stage and randomizes the players positions to one of a set number of pre-determined locations
- Contains events for starting and finishing rounds, as well as ending the game as a whole
- Has a "Player X Wins!" screen at the end of the (by default) 3 rounds
Local Multiplayer Functionality & Polishing
Standardized & polished the menu GUI Fixed a bug where if the player used their mouse to navigate the GUI, the controllers would no longer be able to navigate. |
|
---|---|
Created a character selection screen and character selection manager. Both players are prompted to select a character, when they do, the character is saved as a static gameobject variable to be instantiated at the start of the fighting scene. Since my design philosophy when creating the round manager was to never destroy any character, I don't have to worry about referencing the static player gameobejcts again, unless the players quit and start a new match. |