経緯
おおよそ2週間でEbitenを使用したゲーム開発を行うEbitenGameJamに参加することになりました。
https://itch.io/jam/ebiten-game-jam
Ebitenについては @eihigh さんの書いている記事がとても参考になります。
https://qiita.com/eihigh/items/1fd6077327f99245b807
普段仕事で使用しているPCはMacですが、自宅用PCはWindowsです。
会社のPCで行うのもなんかなぁ...と思ったのでWindowsPCで開発を行うことにしました。
まったくgo言語触れたことがなく、当初vscodeを使用した開発を~と思っていましたが、
普段主に使用しているのがVimの為、できる限り近い感じでの開発環境を探していたところ、
WSLというのがあるからそれが良いんじゃないか?とアドバイスを頂きましてそれを試すことにしました。
使用しているPC
OS Windows 10 Pro
CPU i5-11400
WSL準備手順
いくつかのサイトを参考にさせて頂きました。ありがとうございます。
「WindowsでWSL2を使って「完全なLinux」環境を作ろう!」
https://www.kagoya.jp/howto/it-glossary/develop/wsl2_linux/
Linux用Windowsサブシステムと仮想マシン プラットフォームの有効化
コントロールパネル→プログラム→Windowsの機能の有効化または無効化 から、
「Linux用Windowsサブシステム」と「仮想マシン プラットフォーム」にチェックマークを付ける。
自分のPCの場合、Hyper-Vにもチェックマークを付けないと後述のubuntu起動時に
WslRegisterDistribution failed with error: 0x80370102
のようなエラーが発生しました。
また、Biosの設定で Virtualization TechnologyをEnableにする必要もありました。
WSL2用Linuxカーネルをインストールする
記事に書いてあった通り「https://aka.ms/wsl2kernel 」にアクセスし、
「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」をダウンロード→インストールしました。
ARM64 マシンを使用している場合はそれようのものをダウンロードする必要があるようです。
WSLのバージョン指定をする
コマンドプロンプトを開き、
wsl --set-default-version 2
を実行することでWSL2が開くようになるようです(よくわかっていない)
Ubuntuをインストール
「Microsoft Store」を開き、検索に「ubuntu」と入力する。
出てきたubuntuを選択するとインストールが始まる。
色々なバージョンが表示されていたがubuntuとしか書いてないやつを選択しましたが、
それによりインストールされたのは「Ubuntu 20.04.4 LTS」のようです。
インストールが終わり、開くとubuntuの初期設定が表示されるのでアカウント名とかパスワードとかを入れます。
ここでエラーが出た場合は仮想マシン云々の設定が漏れているのかもしれません。
Windows Terminalをインストールする
記事に書いてあったのでそのまま行いました
「Microsoft Store」を開き、Windows Terminalを検索、そのままインストール
iTermみたいなのがインストールされ、タブを開く際にubuntuを選ぶことが出来るようです(よくわかってない)
go開発環境準備
準備にあたってはこちらのサイトを参考にさせて頂きました。
「Ubuntu Linux 20.04 LTSに、Goをインストールする(+Emacs lsp-mode)」
https://kazuhira-r.hatenablog.com/entry/2020/12/19/010344
内容をよく分かってないので行ったことを記述
現在のgolangパッケージを確認
apt info golang
Dependsの項目がgolangパッケージのバージョンだと思われます。
2022/06現在最新バージョンは1.18のようでしたが、golang-1.13と表示されていました。
PPAの追加
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt update
PPAは「Personal Package Archive」の略でUbuntuの非公式リポジトリだとか何とか...
goのインストール
sudo apt install golang
上記ppaの対応後golangパッケージを再確認すると1.18になっていたのでinstall
終わった後に
go version
でバージョンが表示されればオッケー
Ebitenの準備
公式のドキュメントがあるのでこちらを参考に行いました
https://ebiten.org/documents/install.html?os=linux
以下を準備しておく必要があるようです
C コンパイラ
apt install gcc
依存ライブラリ
sudo apt install libc6-dev libglu1-mesa-dev libgl1-mesa-dev libxcursor-dev libxi-dev libxinerama-dev libxrandr-dev libxxf86vm-dev libasound2-dev pkg-config
よしこれで環境準備も完璧だと思ってサンプル( https://ebiten.org/tour/hello_world.html )を動かしてみるとエラーが出る
Can't open display
どうやらWSLにディスプレイがないみたいなことになっている様子
Can't open displayの解決
正直ここに一番ハマりました。
解決には以下のサイトを参考にさせて頂きました。
「VcXsrv(Xサーバー)をWindowsにインストールしLinuxのGUIをリモート操作する設定方法」
https://rin-ka.net/windows-x-server/
「WSL2+Ubuntu 20.04でGUIアプリを動かす」
https://astherier.com/blog/2020/08/run-gui-apps-on-wsl2/
「WSL2におけるVcXsrvの設定」
https://qiita.com/ryoi084/items/0dff11134592d0bb895c
VcXsrvをインストール
プログラムの「実行」と「画面表示」を別の環境で実現できるようにするツールのようです
https://sourceforge.net/projects/vcxsrv/ からVcXsrvをダウンロードしてインストール
設定は全部デフォルト
ubuntuの.bashrcに以下を追加
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
VcXsrv windows.serverのファイアーウォールを許可にする
パブリックネットワークが許可になっていないとダメだそうです
自分はここを許可にしていなかったのでインストールしても動かない!!ってなってました
おわり
ここまで行えばEbitenサンプルも多分動かせるはずです。
エラー出ていた過程で色々これ入れれば動くんかー?と試したのでもしかしたら漏れがあるかもしれません
そして環境構築だけしてまだゲーム開発の何にも着手してない...!!
頑張りたいと思います