gamboy.live をLinux (といっても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のUbuntu でtelnet によるゲーミングサーバを起動することができた。
gameboy .liveのtelnet コンソールを利用したポケモン 青
rlogin やTeraTerm より、cmd.exe上で実行するtelnet が一番正常に表示される。余計な機能がないのがいいのかな。