axelson / scenic_asteroids

A toy Asteroids clone written in Elixir with the Scenic UI library
BSD 3-Clause "New" or "Revised" License
46 stars 4 forks source link
elixir example game nerves

Scenic Asteroids Logo

Scenic Asteroids

Demo of Gameplay

This is an Asteroids clone written in Elixir with Nerves, more for fun and learning than for anything else. Also since the code (and behavior) is relatively simple, I hope that it can serve as an example for Scenic, Nerves, and as a simple poncho project.

It is licensed under the 3-clause BSD license (see LICENSE) for details.

Instructions

From the root of the repository run the following commands:

Note: if scenic doesn't launch then you may be affected by the bug https://github.com/boydm/scenic_new/issues/36

Keys:

Use the mouse to target the asteroids (or your finger if you're running with a Nerves touch screen)

Have fun!

Implementation Notes

SchedEx is used to implement the core animation timer which runs at a rate of 60 frames per second.

Collision detection is incredibly basic and non-performant. Ideally either scenic or a cooperating library would implement some collision detector helpers. If you're interested in collision detection then please contribute to Scenic issue #91.

Projects

JS Multiplayer (in progress)

TODO:

The player javascript will record action states (not key states) Actions:

NOTE: if move_aim_direction is used then the other move and aim actions should not be used. This will be enforced on the server-side.