gameboy.liveをWSLのUbuntuでビルドする

gamboy.liveLinux(といってもWSL環境)でビルドしたいと思ったのでやってみた。

 

ひとまずサイトに書いてある通りに実施。

# go version
go version go1.6.2 linux/amd64

あっれー?いきなりバージョンが古い。サイトにはgo 1.11以上が必要と書いてあるのだが・・・まあいいか。

とりあえずビルドに必要なライブラリをインストール

# apt install libasound2-dev libgl1-mesa-dev

そして次を実行

git clone https://github.com/HFO4/gameboy.live.git

cd gameboy.live

go build -o gbdotlive main.go

必要なgoのモジュールが全然ないというエラーがたくさん出る!

 

go 1.11じゃないので、go.modに記載のモジュールを自動的にダウンロードしてくれないのだった。。。

しゃーないので、go getコマンドで手動でダウンロードする。

ダウンロード前に、環境変数GOPATHを設定しておく。go getコマンドは、GOPATH配下にソースをインストールし、ビルド時にはGOPATH配下を探しにいくらしいので。

.bashrcに次を追記した

 export GOPATH=/root/go

そしてgo.modに書いてあるモジュールを全部go getしてみた。

go get github.com/faiface/beep
go get github.com/faiface/glhf
go get github.com/faiface/mainthread
go get github.com/faiface/pixel
go get github.com/go-gl/gl
go get github.com/go-gl/glfw
go get github.com/go-gl/mathgl
go get github.com/gosuri/uilive
go get github.com/logrusorgru/aurora
go get github.com/reiver/go-oi
go get github.com/reiver/go-telnet
go get github.com/satori/go.uuid

 いくつかダウンロードできないモジュールがあったが気にしない。なにあやら直接ダウンロードしなくていいのが混じっている模様。

そしてビルドしてみる。

# go build -o bgdotlive main.go
# github.com/HFO4/gbc-in-cloud/server
../go/src/github.com/HFO4/gbc-in-cloud/server/server.go:44: multiple-value uuid.NewV4() in single-value context

 がーん。まだエラーになる。

このエラーメッセージでいろいろググると、プログラムが使用しているものよりgithub.com/satori/go.uuidが新しいとこのエラーになるらしい。バージョンが新しいと非互換があるとか。

この解説を参考に、エラーが出ているserver.goの44行目を次のように修正してみた。

PlayerID := uuid.NewV4()

↓↓↓

pid,_ := uuid.NewV4()
PlayerID := pid

そしてビルド

# go build -o bgdotlive main.go

 ついに成功した。

(go v1.11以降ならこんな苦労はいらなかったはず)

 

WSLのUbuntutelnetによるゲーミングサーバを起動することができた。

f:id:stkyk:20190521222244p:plain

gameboy.liveのtelnetコンソールを利用したポケモン

 

rloginTeraTermより、cmd.exe上で実行するtelnetが一番正常に表示される。余計な機能がないのがいいのかな。