Об игре MariOCaml
MariOCaml создали в Корнеллском университете Мэттью Сюй, Лиам Буй и Эшли Сюэ как итоговый проект курса по функциональному программированию, и он вырос в один из самых популярных проектов на OCaml на GitHub.
Вся игра — физика, враги, предметы, камера и рендерер — написана на OCaml и кросс-компилируется в JavaScript с помощью js_of_ocaml, поэтому работает на обычной веб-странице. В основе лежит «директор», который хранит состояние игры и запускает главный цикл, а процедурный генератор строит каждый уровень на сетке, следя за тем, чтобы его можно было пройти.
В итоге получается игра в духе Mario эпохи SNES, но с изюминкой: при каждой загрузке вас ждёт новое сочетание кирпичных башен, облаков из монет и Koopa Troopa. Одни раскладки получаются изящными, другие — хаотичными, и в этом вся прелесть случайного уровня.
Управление
| Клавиша | Действие |
|---|---|
| ← → или A D | Движение |
| Пробел, ↑ или W | Прыжок |
| ↓ или S | Присесть |
Особенности
- На 100% написано на функциональном языке OCaml
- Генератор случайных уровней расставляет блоки, монеты, врагов и пропасти
- Счёт, счётчик монет, экраны проигрыша и победы
- Эффекты частиц при разрушении блоков и когда врагов давят прыжком
Советы
- Счётчик в левом верхнем углу показывает частоту кадров, а не время, так что не торопитесь.
- Панцири можно пинать в других врагов, чтобы получить цепочку очков.
- Если уровень сгенерировался неудачно, перезагрузите кадр кнопкой перезапуска, чтобы получить новую раскладку.


