Hey all! I recently made a simple text-based dungeon crawler using a mix functional and object-oriented programming in OCaml. Feel free to check it out if it interests you I have a video of the game being played and explained here. You can find the source on GitHub here.
Cool. I see you’ve made heavy use of the object system. If you’re interested in games built using the more idiomatic functional/ocaml approach (i.e. modules), you should check out a-nikolaev/wanderers.
I also wrote bramford/2d-exploration-game - a simple terminal/ncurses game while I was learning ocaml. I tried a couple of different approaches using the module system. I never felt that I got it quite right so while it is quite simple, it may not be the best example.
Nice, I hope you will make more adventures
On my side I started a shmup game with abstract graphics because I’m fond of Kenta Cho games, not yet in a git repository, I put it in a gist: shmup_av6.ml
Quite functional too, only shot and missed variables are imperative.
My best score is:
shot: 460
missed: 25
score: 435
The name made my day
Speaking of the code a small piece of advice, instead of writting
| (k,`String v) when k="name" -> e#set_name v
| (k,`Int i) when k="health" -> e#set_health i
| (k,`Int i) when k="damage" -> e#set_dmg i
you can do
| ("name",`String v) -> e#set_name v
| ("health",`Int i) -> e#set_health i
| ("damage",`Int i) -> e#set_dmg i
Brilliant! I’ll keep that in mind for next time, thanks
That’s so cool! I’d love to see it when you put it on Github
That sounds great, I’ll check it out
I updated it to remove the dependencies on ageom and timeline by including the pieces of code used: shmup_av10.ml
As there is only one source code file, you can run it directly with ocaml:
opam install ocamlsdl2
If you’re using SDL2 version 2.0.9, or if you installed an older version:
opam install ocamlsdl2.0.02
Then you can run the game with:
eval $(opam env)
ocaml -I $(ocamlfind query sdl2) sdl2.cma shmup_av10.ml
I created a basic webpage for this game, there are screenshots and an executable binary for Windows.