gamboy.liveをLinux(といってもWSL環境)でビルドしたいと思ったのでやってみた。
ひとまずサイトに書いてある通りに実施。
あっれー?いきなりバージョンが古い。サイトには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のUbuntuでtelnetによるゲーミングサーバを起動することができた。
rloginやTeraTermより、cmd.exe上で実行するtelnetが一番正常に表示される。余計な機能がないのがいいのかな。