1
Help us understand the problem. What are the problem?

posted at

updated at

WSLでEbitenGameJam用Go言語開発環境を構築

経緯

おおよそ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サンプルも多分動かせるはずです。
エラー出ていた過程で色々これ入れれば動くんかー?と試したのでもしかしたら漏れがあるかもしれません

そして環境構築だけしてまだゲーム開発の何にも着手してない...!!
頑張りたいと思います

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
1
Help us understand the problem. What are the problem?