Party Game
The Party Game#
So, my most recent project is a party game which I wanted to do for two reasons. First to make a 3D game finally and be able to showcase my ability in working with projects within 3D which is a nice change of pace from my previous two games. Secondly, I wanted to make a multiplayer game which I had good timing with as the 1.0 release was only a couple of months prior to starting this.
THE BASICS#
The game itself will be alike Mario Party or Pummel Party which both utilize a game board where the players go around to collect X number of stars or keys which is how the player wins the game. Every time the player rolls the dice, they will move forward onto a node which could have various effects such as opening gateways, giving consumables, and of course, starting minigames.
While my game will keep a more traditional board with the players trying to get to the end of it to win the game rather than collecting keys or stars. But the interactions from landing on certain nodes will stay as well as the focus of the game being on the minigames. When winning these will then move the winners forward and the losers backwards on the board rather than giving a currency based on the players’ performance.
THE MINIGAMES#
All the minigames I will attempt to keep all within the same scene and eliminate any load screens and make all the minigames relate to places around the game board. This, of course, comes with some issues such as minigame scale as some can’t be too large without some magic as well as they need to fit into the scene.
The first minigame that I’m working on currently is a sledging minigame in which players will compete against each other to finish first (or at all) while collecting buffs and dodging hazards on the track on the route to the bottom. Scale immediately became a problem, if the track is too short it will then rely on doing laps which can be boring if the other gameplay elements don’t remedy that. But if the track is too long it could be difficult to fit within the scene around the board without it looking incredibly out of place. Though further details on this solution will have to be written in another post as I haven’t worked this problem out fully and implemented it.
Other minigames I have yet to decide on these as I’m taking a one-at-a-time approach to this, so I don’t get overwhelmed too quickly as well as implementation with the networking features is much easier when only implementing them one at a time. Though I am currently aiming for at least three minigames in total before I get some testers to play the game as having only one or two may become quickly stale for the players.
UNITY NETCODE#
Unity Netcode is brilliant for creating multiplayer games much faster while keeping all the customizability that comes with complete networking solutions. This is great as my knowledge of networking within games before this project is rather lacking as the only remotely similar experience (and I mean remote) is with websites and PHP.
The networking components are reasonably simple to understand and speed up development as just synchronizing player GameObjects is as simple as putting a Network Transform on it and it just simply works.
On the scripting side, the ‘NetworkBehaviour’ which you derive from for all classes that require network functions is very simple to use and works just like ‘MonoBehavior’ but with networking features added on top which allow for RPC functions to be made as well as accessing various network variables, datatypes, overridable functions, etc. One of my more liked features must be the tag system that is used for all RPCs which clearly shows what the function is called on as well as additional setup such as whether it requires ownership being inbuilt into the tag.
While there is a lot of good with Unity Netcode the documentation while good and quite informative has been rather difficult to navigate on occasion when attempting to find specific information quickly such as functions and variables. Which has caused some frustration for me initially when working with this package. Though the example projects they released alongside the documentation were immensely useful and allowed me to understand the code required to use this package as well as implement it within my own project.
Thanks for reading, cya in future posts!