BitterBuster Future Development
Overview
This document provides a list of current limitations and potential steps for future development.
Future Development
AI Communication
We were able to explore different methods of communication with Python-based agents, but were not able to fully implement the communication framework.
Our idea for the game flow was that an Explorer/Selector would be able to join the room, then toggle themselves for being a human or AI agent; if an AI agent was selected, then once the game starts, it would periodically output observations and wait to receive actions from the agent. So, the agent would be running locally on the player machine that joins the room.
As a summary of our progress:
- Create a serialization function for all main objects in the game in the
Controller
classes, along with a global function inGameManager
demonstrating how to compile all the data together and export into ajson
file - Create a function to capture screenshots in
CameraController
and export them intopng
- Create a function that exports an array of actions that can be taken by the Explorer/Selector
- A sample of one potential way this can be done for the Explorer is found here
- Connect Unity with Python
- Send observation data in an efficient way that does not lag the game
- Receive action input from Python
- Apply the action input to the Explorer/Selector controllers in the game
- Create a button on the pre-game screen that allows a player to toggle between being human/AI
In our most-completed demo (conducted on this branch), we had successfully connected Unity to a Python server via C#-based TCP socket communication. We wrote a very simple Python script to take (and scrap) the observational input and return a random action based on the action array received. However, native C# solutions seemed to have conflicts with Unity and caused the game to lag (and eventually crash).
One of the paths that seemed promising was using an external library that would handle the communication, such as this one.
Additional Game Features
Some of the final changes we were not able to complete within the project semester:
- When a house is visited, adjusting the mailbox mesh to be flag-down along with the current color change
- A game over screen to be displayed to the host with a quick "replay" button that would bring everyone back to the pre-game screen with the same gameplay settings
- A full-on Input Manager that would allow for remapping of keys; currently, J & K work for Selectors, but we did not add in support for left-handedness
- Different houses being enabled/disabled on each gameplay session for having candies
- Updates to the tutorial screen:
- Currently missing the information that different neighborhoods and houses may have different probability distributions
- Also did not include the J/K for Selector and arrow keys as an option for movement