Hello there, I'm one of the co-creators of the Operation Outbreak project, which uses proximity sensing in smartphones to enable educational outbreak experiences (you can read more about the project at operationoutbreak.org). We are currently developing a version of OO to work as a multiplayer online game, we have an initial prototype using Godot (not fully functional yet), and we're looking for an experience game developer to finalize the prototype. See the the details below:
Introduction
Operation Outbreak (OO) is an innovative platform for science education that uses a mobile app to spread a “digital” virus among participants’ phones via Bluetooth. This enables immersive real-world outbreak simulations that have been tested in hundreds of schools in the US and abroad.
With the VirtualOO project, we aim to prototype a web-based client for users to join OO simulations in a multi-user virtual space. Initial work (including some code) has been done to evaluate the feasibility of implementing VirtualOO using the Godot game engine.
The goal of this job would be finalizing the VirtualOO prototype using Godot. Please contact Prof. Andrés Colubri from UMass Chan Medical School if you are interested: andres.colubri AT umassmed.edu
Specification
The virtual version of Operation Outbreak needs to fulfill the following requirements:
- Playable on low-end hardware available by K12 students at school, such as Chromebooks
- Able to connect with the Operation Outbreak backend
- Playable in web browser
- Support 50+ users at once
- Mimics the spreading of disease in the game world
- Accepts simulation parameters from the OO backend
- Essentially a virtual space where the simulation (starting conditions pulled from a sim on the backend) is allowed to play out
- Has a 2D, top-down perspective
Philosophy
The basic vision for this is to build a small, top-down virtual space akin to a small MMO like Realm of the Mad God.
Basically, give people some space to run around in and infect each other, chat, and supply simulation data, generated by their actions, to the OO backend. It'd be great to design the space such that it encourages intelligent social distancing. It would also be great to have some activities, items, or tasks for players to interact with. An art style similar to Plague Inc or the OO mobile app would probably be great!
Additionally, we figured it’d be a good idea to use a peer-to-peer authoritative server model, with one “Host” player (the authoritative server) and additional “Client” players who use a join code to link up with the “Host.” The idea is to allow teachers, similarly to games like Kahoot, to spin up an instance of the environment, have kids run around in it on their devices, and have the teacher’s machine send that information back to the OO backend.
Technology
The prototype was developed using Godot, as it has good networking architecture support, is open-source, is free, can export to HTML5/WebGL, and is relatively lightweight on hardware requirements. So, we’d recommend you use Godot as such:
- Version: Godot 4.2.2 stable
- Presets: Use the HTML5/WebGL presets upon project creation
- For multiplayer networking: ENetMultiplayerPeer
- For multiplayer scene management: MultiplayerSpawner, MultiplayerSynchronizer
- For HTTP requests: HTTPRequest node.
What we have so far
So far, we have a small Godot app that has some basic networking boilerplate and makes a sample HTTP request to the OO backend. Hitting play creates two instances of the game, which can connect to each other locally via the “Host” and “Join” buttons. The “Start game” button only sends a message to all players to verify connectivity. Players can move around, but not interact with each other.
Known issues
There is a bug where the “Joined “Client” Players cannot move their avatar around. We believe this is related to either the Clients not having “authority” to move themselves and/or a quirk of the MultiplayerSynchronizer and MultiplayerSpawner nodes we don't fully understand.
Next steps
- Fix the player movement bug
- Add a hitbox around the Players that allows them to get Infected by coming into contact with other Players’ hitboxes. Make sure it gets added to the Player's MultiplayerSynchronizer synchronized members.
- Generate a code (NOT the sim code) for Clients to connect to the Hosting Server's game
- Pull simulation parameters from OO backend
- Test for a large number of users
- Figure out hosting for application. itch.io?