Project Proposal - snoopy-team/snoopy-server GitHub Wiki
Project Proposal
Nicholas Miklaucic, Joshua Qin, Garrett Smith
Introduction
Our proposal is to make an AI agent for a 2D one-on-one air combat game of our own creation, modeled after games like Hyperspace Dogfights. Fundamentally, the core gameplay idea is controlling a plane shooting in a particular direction and being controlled via thrust and turning under gravity. We think that this type of physics provides an interesting space to explore computer control within. Hopefully, without the limits of human reaction time and human speed limitations, we can achieve superhuman play: this is the ideal outcome.
Algorithms Used
Our plan is to use Q-learning as the main underpinning of the AI agent—this seems appropriate given the similar use of reinforcement learning in other physics-based control problems and other adversarial realtime games. We plan on using approximate Q-learning with features to deal with the dimensionality of the state space and modeling the continuous state space discretely, with some time delta chosen to maximize performance while retaining as precise control as possible. Adversarial search may be used in a final agent given a sufficiently well-trained value function, although we haven't gotten that far yet.
Problem Specification
Specifically, we want an AI agent to, given a game state (the position, orientation, velocity, and acceleration of the agent and its opponent, the bullets on screen), take a next action (some combination of shooting, thrusting, and turning for the next frame). The goal is to destroy the opponent without having the same done to you, both by staying on screen and firing at the opponent.
Team Composition
We think three people is appropriate for this project in order to split the time necessary to implement a game for the AI to play and the time necessary to develop the AI. We have no specific formal labor distribution: our skill sets are similar enough that all of us expect to contribute to all parts of the final product.
Weekly Plan
Week | Plan |
---|---|
March 13-20 | Beginning game implementation, overall software design, reviewing relevant literature |
March 20-27 | Game implementation, further literature review |
March 27-April 3 | Game implementation, testing |
April 3-10 | Finishing game backend, beginning work on AI |
April 10-17 | AI training, optimization, and further tweaking |
April 17-24 | Further work on optimizing AI, writing draft report |
April 24-30 | Finishing final report |
Our halfway milestone is to have the game itself finished, with rudimentary AI implemented on top of that (e.g., a simple heuristic function and basic search).
Technologies
The game backend and AI will be written in Java. Our plan is to completely separate the backend and frontend: as of now the plan is to implement a web frontend, although we might use a debug implementation in a different language for testing purposes. The plan is not to use any specific game frameworks, although this is subject to change. We will ideally not need to heavily use any existing libraries or projects and can implement everything from the ground up.