MARIO.GAME
ru

MariOCaml

Платформер Super Mario, написанный на OCaml, со случайными уровнями

MariOCaml

Об игре MariOCaml

MariOCaml создали в Корнеллском университете Мэттью Сюй, Лиам Буй и Эшли Сюэ как итоговый проект курса по функциональному программированию, и он вырос в один из самых популярных проектов на OCaml на GitHub.

Вся игра — физика, враги, предметы, камера и рендерер — написана на OCaml и кросс-компилируется в JavaScript с помощью js_of_ocaml, поэтому работает на обычной веб-странице. В основе лежит «директор», который хранит состояние игры и запускает главный цикл, а процедурный генератор строит каждый уровень на сетке, следя за тем, чтобы его можно было пройти.

В итоге получается игра в духе Mario эпохи SNES, но с изюминкой: при каждой загрузке вас ждёт новое сочетание кирпичных башен, облаков из монет и Koopa Troopa. Одни раскладки получаются изящными, другие — хаотичными, и в этом вся прелесть случайного уровня.

Управление

КлавишаДействие
← → или A DДвижение
Пробел, ↑ или WПрыжок
↓ или SПрисесть

Особенности

  • На 100% написано на функциональном языке OCaml
  • Генератор случайных уровней расставляет блоки, монеты, врагов и пропасти
  • Счёт, счётчик монет, экраны проигрыша и победы
  • Эффекты частиц при разрушении блоков и когда врагов давят прыжком

Советы

  1. Счётчик в левом верхнем углу показывает частоту кадров, а не время, так что не торопитесь.
  2. Панцири можно пинать в других врагов, чтобы получить цепочку очков.
  3. Если уровень сгенерировался неудачно, перезагрузите кадр кнопкой перезапуска, чтобы получить новую раскладку.

Частые вопросы

Что такое OCaml?

OCaml — это функциональный язык программирования, который используется в науке и в индустрии. MariOCaml показывает, что после компиляции в JavaScript на нём можно сделать полноценную игру в реальном времени.

Уровни всегда разные?

Да — уровень генерируется случайным образом при каждой загрузке, так что после каждого перезапуска вас ждёт новая карта.

Кто создал MariOCaml?

Мэттью Сюй, Лиам Буй и Эшли Сюэ. Проект имеет открытый исходный код и распространяется по лицензии MIT.

Другие игры