SpaceCraft Windows
Posted May 2022
SpaceCraft is a 3rd perspective multiplayer quest open world game. Where they key objectives are exploring new planets while doing quests.
My Contribution
In this project me and 3 other of my classmates worked on a 3D game, where the core mechanics we wanted to implement in the game were multiplayer, saving through the use of databases, as well as user authentication, all whiting a 3D open-world game. Some features were taken out as they were simply too much for the user experience, systems that were taken out were databases and user authentication.
Systems Explored
In this section I go over some of the systems I explored during the making of this game, I select the topics I found to be most interesting and that I found to be the most challenging.
Multiplayer System
When it came to deciding on how to move on with multiplayer, we chose to use Photon engine to facilitate the process. When it came to connecting all players to lobbies, we decided to go with room creation and joining, thus the player can join any open room on the room list menu, once a player joins all the procedurally generated items are loaded the same based on seeds, this includes the interactable items. The inventory is also shared for all players, as well as when they join. Once an item has collected a photon PunRPC is called to sync everyone's interactable in the current room, this is the same for quests and inventory of the player.
Interaction & Inventory System
For the interaction system, it shoots a raycast with a given range and a layer mask and attempts to find any objects or interactable that are in the intractable layers, and once it finds an object with such layer, it activates its panel and displays the information about the object, here the objects are versatile as they are made using scriptable objects, which allows us to make many more intractable objects, with customizable settings such as time to interact and obvious what it is. Once an interactable object is collected using the selected collection key, the object calls destroy as well as updating the quest system while using the PunRPC attribute. For the inventory system I implemented using a stack-like algorithm, essentially added inventory items and stacked them if there was already one in the inventory, and expanded accordingly to the number of items, all items in this game were minerals, flint, and trees.
Quest System
The quest system is simple but effective, as we didn't necessarily implement a vast amount of quests, but the system can still be expanded to other quests even bosses, although we didn't implement this feature it was in our wishlist for this game. There was also a way for the player to see the active quest and know when they finished it.