MARIO.GAME
ja

MariOCaml

ランダムなステージで遊べる、OCamlで書かれたスーパーマリオ風プラットフォーマー

MariOCaml

MariOCamlについて

MariOCamlは、コーネル大学でMatthew Hsu、Liam Bui、Ashley Xueが関数型プログラミングの授業の最終課題として制作したもので、GitHubで最も人気のあるOCamlプロジェクトのひとつにまで成長しました。

ゲーム全体、つまり物理演算、敵、アイテム、カメラ、レンダラーまでがすべてOCamlで書かれ、js_of_ocamlでJavaScriptにクロスコンパイルされているため、通常のウェブページ上で動作します。土台にはゲームの状態を管理してメインループを回す「ディレクター」があり、プロシージャル生成プログラムがグリッド上で各ステージを組み立て、きちんとプレイできるように配慮しています。

見た目はスーファミ時代のマリオのようですが、ひと味違います。読み込むたびに、レンガの塔、コインの雲、ノコノコの配置が毎回変わるのです。洗練されたレイアウトもあれば、カオスなレイアウトもあります。それがランダムステージの魅力です。

操作方法

入力アクション
← → または A D移動
スペース、↑ または Wジャンプ
↓ または Sしゃがむ

特徴

  • 関数型言語OCamlで100%書かれています
  • ブロック、コイン、敵、穴を配置するランダムステージジェネレーター
  • スコア、コインカウンター、ゲームオーバー画面、ゲームクリア画面
  • ブロックを壊したときや敵を踏んだときのパーティクルエフェクト

ヒント

  1. 左上のカウンターはタイマーではなくフレームレートです。ゆっくり進めて大丈夫です。
  2. 甲羅を他の敵に向かって蹴ると、連鎖して得点を稼げます。
  3. ステージの生成が遊びにくいときは、リスタートボタンでフレームを再読み込みすると新しいレイアウトになります。

よくある質問

OCamlとは何ですか?

OCamlは、学術界や産業界で使われている関数型プログラミング言語です。MariOCamlは、JavaScriptにコンパイルすることで、本格的なリアルタイムゲームも動かせることを示しています。

ステージは毎回違いますか?

はい。ステージは読み込むたびにランダムに生成されるので、リスタートするたびに新しいマップで遊べます。

MariOCamlは誰が作ったのですか?

Matthew Hsu、Liam Bui、Ashley Xueの3人です。このプロジェクトはMITライセンスのオープンソースです。

ほかにも遊べるゲーム