Canvas City
Aug 2019 - Jun 2021
Made for basa e.V.
Role: Freelance Unity3D Developer & Game Designer (AR)
C#, Unity3D, UGUI, Web Development, JavaScript, TypeScript, WebGL, PixiJS, Frontend, React, Styled Components, Node.js, Express, Sequelize, MobX, Mobile Development, Android, Network Programming, Game Design, Augmented Reality
Canvas City is a location-based augmented reality multiplayer game for Android devices to be used in workshops for political education. In the game, 30 workshop participants play the game in a small section of a real-world city over multiple hours, walking around and interacting with data nodes, NPCs and with each other.
It consists of the following parts:
- The game server (C# using LiteNetLib).
- The Android game app (Unity/C# using LiteNetLib).
- A web-based map editor to configure map locations of ingame elements and other game settings (TypeScript).
- A web-based dialogue editor.
- A web-based configuration app to fine tune game server settings and upload maps/dialogue files.
Apart from being the only programmer on the team I also worked on the game design together with the other team members.
Features:
- Android Game
- Location-based augmented reality elements via AR + GPS Location.
- Four mini games to interact with data nodes, one of them multiplayer.
- An NPC dialogue system.
- A mini map using Online Maps v3.
- A lot of UI.
- Server
- Server authority for game elements that concern multiple clients, and client authority for elements that only apply to one client, shortening delays and working well with short disconnects in mobile networks. (Since all client devices are owned by the workshop organizers we can assume that clients are benign.)
- Saving and reloading of the server game state, allowing server restart and easier game testing/debugging.
- Clients can rejoin the current game session, allowing for device restart in case of a problem and easier game testing/debugging.
- Session transfer between clients. (E.g. in case a device breaks.)