Skip to content
dellswor edited this page Feb 15, 2014 · 1 revision

3D Missile Command

We need control software for the Alien Kinetic Weapon Defense System (AKWDS).

AKWDS sensor network completes a sweep of a defended area every second. The sensor network produces a stream of bounding boxes for items detected in the covered area. The centroid of the bounding box is also the centroid of the detected item. From time to time, extraneous objects are reported.

Known Flying Objects (KFOs) provide a squak signal periodically. The squak stream provides the KFOs location within an epsilon of X meters. UFOs will not provide squak. Projectiles (UFO, KFO, and AKWDS) will not provide squak.

UFOs and KFOs have the ability to accelerate themselves in any direction. Projectiles are subject to standard physics. As a simplifying assumption, gravity is constant instead of a gradient.

The AKWDS cannons can fire once every 5 seconds (reload time) and require 2 seconds to process firing commands (propagation delay + aiming). Cannon firing commands take a facing and azmuth, radians off north and the horizon respectively. Cannons firing commands also expect a muzzle velocity and time to live (TTL). At the end of the TTL, the shell explodes to increase the area of effect.

The simulation harness that solutions will be evaluated in operates with a 500ms resolution. Events occurring between time steps will use linear interpolation to determine location and effect.

As a simplifying assumption, AKWDS is being used to defend the midwest (no hills/mountains need to be considered when computing targeting solutions).

Init Stream: <uint number of cannons> <float x,y,z> …​ <uint citys> <float x,y,z> <float radius>

Sensor Stream: <uint second number, wraps> <uint boxes this frame> <float x,y,z> <float x,y,z> …​

Squak Stream: <float x,y,z> <char[16] code>

Cannon Command Stream: <uint cannon id> <uint fire second> <float heading> <float azmuth> <float velocity> <float TTL>

Internals: Visualization, if available, would plot in 3 space and allow the user to rotate and watch the location of things.

The network/IPC to stream to and from would be provided as a library. The harness just needs to update locations of objects based on known velocities and accelerations, and detect collisions. UFOs and KFOs should have some kind of waypoint mechanism to help provide sane-ish trajectories. UFOs should target cities and KFOs. KFOs could target UFOs but could also represent passenger aircraft…​

Parallelism Check: Manual code review: Ask for design notes regarding which patterns were used, where, and why. Verify their presence in the code.

Performance Evaluation: Same random seed for the simulation harness for all runs. Ramp up the number of objects provided and see how long before the queues over run or all cities are destroyed.

Clone this wiki locally