WebAssembly
オプション 1. WasmServe
ゲームがブラウザ上で動くのを確認するのであれば、 wasmserve が最も簡単な方法です。
go run github.com/hajimehoshi/wasmserve@latest ./path/to/yourgame
次に http://localhost:8080/
にアクセスしてください。
オプション 2. 自前でコンパイル
ゲームをパブリッシュするのであれば、ゲームを自分でコンパイルする必要があります。.
ゲームのコンパイル
Unix/Linux シェルの場合:
env GOOS=js GOARCH=wasm go build -o yourgame.wasm github.com/yourname/yourgame
Windows PowerShell の場合:
$Env:GOOS = 'js'
$Env:GOARCH = 'wasm'
go build -o yourgame.wasm github.com/yourname/yourgame
Remove-Item Env:GOOS
Remove-Item Env:GOARCH
WebAssembly バイナリを実行するための wasm_exec.js
のコピー
Unix/Linux シェルの場合:
cp $(go env GOROOT)/misc/wasm/wasm_exec.js .
Windows PowerShell の場合:
$goroot = go env GOROOT
cp $goroot\misc\wasm\wasm_exec.js .
HTML の作成
次のような HTML を作成してください:
<!DOCTYPE html>
<script src="wasm_exec.js"></script>
<script>
// Polyfill
if (!WebAssembly.instantiateStreaming) {
WebAssembly.instantiateStreaming = async (resp, importObject) => {
const source = await (await resp).arrayBuffer();
return await WebAssembly.instantiate(source, importObject);
};
}
const go = new Go();
WebAssembly.instantiateStreaming(fetch("yourgame.wasm"), go.importObject).then(result => {
go.run(result.instance);
});
</script>
この HTML をブラウザで開いてください。ローカル HTTP サーバーが必要になるかもしれません。
もしあなたのサイトにゲームを埋め込みたいのであれば、 iframe を使うことを強く推奨します。スクリーンスケールは自動的に調整されます。上の HTML の名前が main.html
として、ホスト側の HTML は次のようになります:
<!DOCTYPE html>
<iframe src="main.html" width="640" height="480"></iframe>
Chrome で次のようなメッセージが表示されるかもしれません:
The AudioContext was not allowed to start. It must be resume (or created) after a user gesture on the page. https://goo.gl/7K7WLu
この場合、 iframe に allow="autoplay"
を追加すると解決するかもしれません。