萌えハッカーニュースリーダー

2025/04/28 20:08 No-engine gamedev using Odin and Raylib

出典: https://zylinski.se/posts/no-engine-gamedev-using-odin-and-raylib/
hakase
博士

ロボ子、今日はOdinとRaylibを使ったゲーム開発の話じゃぞ!UnityとかGodotみたいな汎用ゲームエンジンは要らないらしい。

roboko
ロボ子

博士、OdinとRaylibですか。初めて聞きました。具体的にどういうものなんですか?

hakase
博士

Odinはプログラミング言語で、Raylibはグラフィック描画、入力処理、サウンド再生用のライブラリじゃ。RaylibはOdinの"vendor"コレクションに含まれてるから、すぐに使えるぞ。

roboko
ロボ子

なるほど。セットアップは簡単そうですね。記事によると、Odinのインストール手順は[https://odin-lang.org/docs/install/](https://odin-lang.org/docs/install/)に、サンプルコードは`odin run .`で実行できると。

hakase
博士

そうそう!Raylibを使えば、背景色を変えたり、画像を表示したりも簡単じゃ。ただし、画像を読み込むときは`rl.InitWindow`の実行後にする必要があるから注意が必要じゃぞ。

roboko
ロボ子

なるほど。プレイヤーの移動はどうするんですか?

hakase
博士

入力に応じてプレイヤーの位置を更新するんじゃ。Odinの固定長配列を使って2D/3D空間の位置や方向を表現できるし、線形代数パッケージ(`la.normalize0`)でベクトルの正規化もできるぞ。

roboko
ロボ子

便利ですね。アセットのインポートはどうでしょう?

hakase
博士

最初はテクスチャの読み込みから始めるのがオススメじゃ。テクスチャを一度ロードして再利用するために、パスとテクスチャをマッピングしておくと良いぞ。

roboko
ロボ子

メモリ管理はどうすれば?

hakase
博士

`temp_allocator`を使うと、フレームごとに必要なデータだけを一時的に確保できるから、メモリ管理が楽になるぞ。

roboko
ロボ子

テクスチャアトラスも使えるんですね。ロード回数を減らせると。

hakase
博士

そうじゃ!複数のテクスチャを1つの大きなテクスチャにまとめるんじゃ。アトラス作成ツールは[https://github.com/karl-zylinski/atlas-builder](https://github.com/karl-zylinski/atlas-builder)にあるぞ。

roboko
ロボ子

ゲームワールドの管理は?

hakase
博士

最初はシンプルな`Entity`構造体と、それらを格納する`World`構造体を使うと良いぞ。エンティティへの参照を安全に管理するために、ハンドルベースのマップを使うのがオススメじゃ。実装は[https://github.com/karl-zylinski/odin-handle-map](https://github.com/karl-zylinski/odin-handle-map)にあるぞ。

roboko
ロボ子

レベルエディタも必要ですね。

hakase
博士

必要な機能だけを実装して、複雑なエディタを模倣しないのがコツじゃ。レベルの保存とロードには`core:encoding/json`パッケージを使うと簡単じゃぞ。LDtkやTiledなどのサードパーティ製エディタも利用できる。

roboko
ロボ子

3Dゲーム開発も可能なんですね。

hakase
博士

Raylibを使えば3Dモデルのロードやシェーダーの適用もできるぞ!

roboko
ロボ子

ホットリロードもできるんですか?

hakase
博士

できるぞ!ゲームプレイコードの変更をリアルタイムに反映できるんじゃ。Odin + Raylib + ホットリロードテンプレートは[https://github.com/karl-zylinski/odin-raylib-hot-reload-game-template](https://github.com/karl-zylinski/odin-raylib-hot-reload-game-template)にある。

roboko
ロボ子

Webビルドも可能なんですね!

hakase
博士

そうじゃ!Webブラウザで実行可能なゲームをビルドできるぞ。Odin + RaylibのWebビルドは[https://github.com/karl-zylinski/odin-raylib-web](https://github.com/karl-zylinski/odin-raylib-web)にある。

roboko
ロボ子

学習リソースも充実しているんですね。

hakase
博士

Odinに関する書籍は[https://odinbook.com](https://odinbook.com)にあるし、ゲーム開発のブログとビデオシリーズは[https://zylinski.se/posts/gamedev-for-beginners-using-odin-and-raylib-1/](https://zylinski.se/posts/gamedev-for-beginners-using-odin-and-raylib-1/)にあるぞ。

roboko
ロボ子

すごい!色々できそうですね!

hakase
博士

じゃろ?ちなみに、著者のゲームはCAT & ONIONというらしいぞ!Steamとitch.ioで公開されてるみたいじゃ。

roboko
ロボ子

へー、面白そうですね。博士も作ってみたらどうですか?

hakase
博士

うむ… 私が作ると、全部爆発オチになるかもしれんぞ…!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search