Very nice! Since you're already toying with the code, you might want to try and test the impact of moving towards a more functional, immutable data structure approach. I've found that you can separate out those parts of the game state that change more rapidly and those that don't, and the slow-changing parts can easily tolerate functional paradigms, with the advantage being greater safety and reduced state complexity. On Tue, Nov 26, 2024 at 7:39 PM Andreas Rossberg wrote: > Couldn’t let it rest, so I’m (already) announcing version 2 of it — now a > much improved, practically feature-complete reimplementation of both > Boulder Dash 1 & 2. > > Version 2 was an excuse for me to mess around with the OCaml bindings to > popular graphics engines, and as a result, it now comes with 3 backends to > choose from: > > 1. the homely bare OCaml Graphics library ( > https://github.com/ocaml/graphics), > 2. the TSDL binding to the SDL2 API (https://github.com/dbuenzli/tsdl), > 3. the binding to the Raylib engine ( > https://github.com/tjammer/raylib-ocaml). > > The list is in order of increasingly better user experience, for the price > of a potentially harder build experience. In theory, all versions should > run on Windows, Mac, and Linux, though I was too lazy to test all > combinations, and I (or my opam) had trouble installing some of the > dependencies on some of the systems. > > Features: > > * Faithful original physics, graphics, animations, sound, and music > * Authentic scrolling mechanics combined with dynamic resizing > * All 40 levels and 5 difficulties of Boulder Dash 1 & 2 > * Pause-and-go mode for relaxed playing > > Relative to the previous release, version 2 adds the following niceties: > > * Support for SDL and Raylib engines, which allow all of the following > * Original sound effects and music > * Original level color schemes > * Full screen mode > * Faster graphics > * Dynamic graphics scaling adjustment > * Gamepad/joystick support as well as more precise keyboard controls > * Boulder Dash 2 levels and decoder > > Almost looks like a real game now. One from the 80s anyways. :) > > Enjoy, > /Andreas > > > > On 12. Nov 2024, at 16:55, Andreas Rossberg > wrote: > > > > Boulder Dash(*) was my favourite computer game in the 8-bit era, first > released on the Atari 400/800 in 1984. Though I never owned an 8-bit > machine myself, I had friends that I annoyed enough to let me play it on > theirs. > > > > As a homage to its 40th anniversary, I put together a fairly faithful > clone of the original game, implemented in just a few 100 lines of bare > OCaml, with nothing but the homely Graphics library. It should run on > Windows, Mac, and Linux, though I was too lazy to test the latter. > > > > Features: > > > > • Faithful original physics, graphics, and animations > > • Authentic scrolling mechanics combined with dynamic window resizing > > • All 20 levels, including intermissions, and 5 difficulties > > • Pause-and-go mode for relaxed playing > > > > It is open-source here: > > > > https://github.com/rossberg/boulder-dash > > > > Enjoy! > > > > /Andreas > > > > (*) https://en.wikipedia.org/wiki/Boulder_Dash_(video_game) > > "Boulder Dash" is a trademark of BBG Entertainment > > > >