Multiplayer Virtual Spaces

Main idea is - users easily join each other's spaces, in which they can build and hangout in. Since this was done in WebGL, it was possible to generate and share a link, which would allow the players to play the game in their browsers, no matter the platform.

Networking is done using Nakama, which also handles match making. Syncing of game objects is done manually. Players get their own unique characters, and PlaySpaces. When a PlaySpace becomes multiplayer, one player is declared a host. They then send sync data to any clients that request them. This is how the placed objects in PlaySpaces are synced, and how we made it possible that players can leave/rejoin, and the state of the PlaySpace will remain unchanged.

Each player is the owner of their own objects, meaning only they can move/delete them. This was configurable, so objects can be modified by anyone.

Movement is done using a simple A* algorithm. And the objects are placed using a grid cell system.

Public Spaces

We also experimented with public spaces that the players could only hang out at, but not modify or build.

The idea was to at some point expand on player actions, allowing them to emote, interact with objects (eg. they could play an arcade mini game if they interact with the object). We didn't have time to implement all of this, but in the videos the idea of it can be seen, where the player views a picture on the wall.

For these we had an editor scene, which could be used to decorate the space.