Re: ANN: Boulder Dash in OCaml

Yotam Barnoy <[email protected]> Wed, 27 Nov 2024 08:54:29 +0200
Newsgroups gmane.comp.lang.caml.inria
Message-ID <CAN6ygOkzw6wXtzuvi6EuYb=Zz61gFLBdUMmCzz2fsWc_bqZ03g@mail.gmail.com>
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 <[email protected]>
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 <[email protected]>
> 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
> >
>
>