この記事は本郷学園マイコン部 Advent Calender 2023 17日目の記事です。
お久しぶりです。UHAsikakutouです。
98エミュの使い方を載せてからはや数年、完璧にQiita投稿へのモチベーションが無くなっていました...
今回からは、皆さんおなじみゲームボーイ アドバンスのゲームを初心者が0から作っていく話を書いていきたいと思います。よろしくお付き合いください。
今回は環境構築からやっていきたいと思います。(本質とは関係ないのにミスすると一貫の終わり)
動機
- GBAのゲーム作ってみたい!!
- C++書けるようになりたい!
です()
AIに淘汰されないツヨツヨエンジニアになるためには最低限の低レイヤ技術は必須かな〜という思惑もあります。
筆者のスペック
ご参考までに。
PC環境
メイン機 | 持ち運びノート | |
---|---|---|
型番 | (自作) | MacBook Pro (13-inch,M1) |
CPU | Core i7-13700K | Apple M1 |
GPU | RTX 3060 (12GB) | Apple M1 (8コア) |
RAM | 64GB | 16GB |
OS | Windows 11 Pro | macOS Sonoma |
プログラミングスキル
- Python,Ruby,JSなど比較的高級な言語を「完全に理解した」(一通り触れるだけ)
- CやC++はほぼ初心
- メモリ管理?アセンブリ?ナニソレオイシイノ (勉強中です)
ライブラリの選定
では開発の話から入っていこうと思います。
GBA開発を思い立った私は、早速Google先生に「GBAのいいライブラリない?」とばかり聞いてみました。
Wow.
なにやら良さげなものが。
Butano
Butano は、Game Boy Advance 用のモダンな C++ 高レベルエンジンです。
機能
- わずか 1 行の C++ コードで、スプライト、背景、テキスト、ラスタエフェクトなどを作成して表示できます
- ETL をベースにしたヒープ割り当てや例外を使用しないカスタム標準ライブラリを採用しています
- 独自の資産を 簡単に インポートして使用できます
- アサート、エミュレータロギング、コードプロファイリングなど、複数の開発ツールを提供しています
- 共有所有権や RAII など、モダンな C++ の概念に基づいています
- 詳細な ドキュメント が用意されています
- エンジンのほとんどの側面を網羅した複数の 例 が用意されています
- このプロジェクトには、2 つの完全なゲーム (Butano Fighter と Varooom 3D) のソースコードとアセットが含まれています
Google Bardによる翻訳
最終コミットは執筆時点で12h前。コミュニティは活発なようです。
ドキュメントも用意されています。
というわけでこれを試してみることにしました。
早速環境構築していくことにします。
環境構築
環境構築に関してはこちらのページに書かれています。
早速これに沿って進めていくとしましょう。
Butano is built on top of the devkitARM toolchain, so it supports Windows, macOS and Unix-like platforms.
ButanoはdevkitARMツールチェーンの上に構築されているため、Windows、macOS、Unix系の環境がサポートされています。Deeplによる翻訳
devkitARMとは?
devkitProは、GBAやNintendo DS、PlayStation Portableなどのゲーム機で実行可能なソフト開発のためのツール群です。
中でもdevkitARMはGCCベースの、DS/DSi/GBA用のクロスコンパイラとなっています。
本来であればdevkitARMさえあればゲームを作ることはできるのですが、Butanoはさらにそれを簡単にしてくれるようです。(オイ低レイヤどこいった)
用意するもの
- GBAのエミュレータ
- DevKitARM
- Python
- お好きなエディタ
GBAエミュレータ
まずは、ビルドしたGBAのゲームを手軽に実行できる環境が必要です。
そのためにエミュレータを導入します。
私はWindowsではmGBA、MacではVisual Boy Advanceを元から使っていたのでそのまま使用しました。
RetroArchを使用している方はGBAのコアを使用されると良いと思います。
devkitARM
Windows
こちらからインストーラを落としてください。
https://gvaliente.github.io/butano/devkitpro.png
インストール時はGBA Development
を選択します。(他に開発したいものがあれば合わせてどうぞ)
さらに何をインストールするか尋ねられた場合は、gba-dev
内の全てのものを選択してください。
macOS
devkitPro用のパッケージマネージャである(本来はArch Linux用ですが...)Pacmanをインストールし、そこからGBAの開発コンポーネントをインストールします。
ダウンロードした.pkgファイルを実行します。
インストール先は/opt/devkitpro/pacman/bin
です。パスを通しておいてください。
インストールができたら、
$ sudo pacman -S gba-dev
を実行してください。
Linux
同じくpacmanをインストールします。
環境がないためコマンドをここより転記します。
$ wget https://apt.devkitpro.org/install-devkitpro-pacman
$ chmod +x ./install-devkitpro-pacman
$ sudo ./install-devkitpro-pacman
$ sudo pacman -S gba-dev
This should also work on WSL but a symlink may need to be created first.
これはWSLでも動作するはずですが、最初にシンボリックリンクを作成する必要があるかもしれません。
$ sudo ln -s /proc/self/mounts /etc/mtab
(Deeplによる翻訳)
Python
Butanoの動作にはPythonが必要です。
ググればインストール方法は大量に出てくるので省略します。
バージョンは古いかもしれませんがmacOSやLinuxの多くでは初期状態で入っています。
お好きなエディタ
自分の気分がアガるお好きなエディタでどうぞ。
初めての方はVSCodeが一番無難かと。
エディタ名 c++
などでググればC++用の設定方法などがわかると思います。
Butanoを入れよう
用意は終わりましたので、Butanoを入れていきましょう。
Gitをお持ちの方はClone、
そうでない方はこちらから最新のZipファイルをダウンロードして展開してください。
ただこのリポジトリに全ての例が入っていますので、フォルダ内でビルドしたり改変したりしてみたい場合はCloneせずにZipでダウンロードした方が安全かもしれません。
これで、準備は完了です。
動作確認
Butanoのインストール先に行きます。
Example
フォルダ内にたくさんのサンプル・作例が入っていますので、一つ動かしてみます。
ここでは、文字を出すサンプルであるtext
をビルドして実行します。
皆さんはお好みで好きなものをお選びください。(フォルダ以外は変わらないはずです)
$ make -j8
コマンドmake
は、Makefile
というファイルの情報を使ってC/C++のソフトをビルドするものです。
-j(数字)
は、ビルドに使用するCPUのコア数です。自分のPCの環境と相談して調整してください。
すると、フォルダ内に
- text.gba
- text.elf
の2つのファイルが新たにできると思います。
早速.gba
のファイルをエミュレータで開いてみましょう。
この画面が出ていれば成功です!
お疲れ様でした!!
エラーが出たら
pythonがないぞ!!と言われたら
OSや環境によってはPythonのコマンドがPython
ではなくPython3
なことがあります。確認した上で、
Python3
な場合は書き換えてください。
(略)
LIBBUTANO := ../../butano
- PYTHON := python
+ PYTHON := python3
SOURCES := src ../../common/src
(略)
あとがき
執筆時点では海外ニキの素晴らしい動画に出会いその方のサンプルを改変しながら色々といじってみています。
書こうと思えばもっと書けるのですが、いかんせんAdvent Calenderに間に合いそうにないというのと、少し長くなりすぎたのと...で、今回の記事では環境構築までになってしまいました。
冬休みに入ったので、随時次の記事も投稿していければと思っています。
それでは皆さん、良きGBAライフを!
次回は、@scratch221171さんのUnityで機械学習ネタです。