Installation

Requires Crystal to be installed

$ brew install crystal

Install crystal shard dependencies (game depending on cray)

$ shards install

Running

Run the Makefile to build a release and run

$ make release

Screenshot Example

Development/Testing

Compile a non-release build quicker using

$ make

(test is the default Makefile target for now.)

make test takes around 4 sec vs 12 sec for make release as of 9/17/2019.

All builds are compiled to ./builds.

Distribution Notes

Running a build requires referencing the RayLib external library (in ./lib_ext) so using the Makefile is easiest. This could be wrapped in a script, that a native wrapper application can call.

Ultimately, I'd like the release to create a distribution of a native system application wrapper like .app for OSX, .exe for Windows, etc. This is doable, but since crystal static compiling is only currently available on Alpine Linux, all libraries crystal depends on still need to be installed for the target. See Static Linking Crystal wiki. I could possibly figure out the libraries needed and supply them, or install Crystal as a setup/installing part of the distribution.

Cross-Platform

If anyone reading this knows how to use Crystal (with or without RayLib) to develop for native platforms like Nintendo Switch, Xbox, PlayStation, etc, or Roms for older platforms (GBA, GBC, NES, SNES, etc), please let me know, I'd be very interested on how I could compile Crystal to be executed on a platform other than a Linux/MacOS/Windows. I very much doubt it's possible right now, or really ever in the future, but hey, I can dream! Developing prototype games in Crystal/RayLib has been far more enjoyable for me than the game engine bohemoths like Unity, Godot, UnrealEngine, etc. I also just really prefer the syntax of Crystal/Ruby to everything else. I'm guessing custom compilers would need to be written, similar to jruby, IronRuby, etc for Ruby? Maybe it would be more similar to a transpiler like Opal for Ruby to JavaScript, except it would be Crystal to C/C++? I'll probably post something on the Crystal forum if I realize it's more than a pipe dream.

Credits

Thanks to Zatherz for creating the RayLib Crystal bindings (cray)!

Assets Attribution

TODO attribution, licenses, etc. the correct way

For now, just listing here:

https://opengameart.org/content/a-blocky-dungeon

https://opengameart.org/content/dungeon-tileset

https://opengameart.org/content/fps-placeholder-sounds