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.

Links