7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

「OpenSiv3D Web版を使ってブラウザで動くゲームを作る」をやってみた(in WSL)

Posted at

概要

OpenSiv3D Web版を使ってブラウザで動くゲームを作る (VSCode版, Windows)
これをWSLでやっていく

emscriptenの準備

# git とpythonが必要になる
$ apt update && apt install -y git python3

# emsdkのインストールは/mnt/以下以外がおすすめ。permissionなどで面倒ごとになる 
$ git clone https://github.com/emscripten-core/emsdk.git

# 2.0.4を使うのはOpenSiv3DForWeb-VSCodeが作られた当時の最新ヴァージョンであったと思われることと 
# 2.0.7以降のバージョンだとなんかうまくいかないため (https://github.com/emscripten-core/emscripten/issues/12527)
$ ./emsdk/emsdk install 2.0.4
$ ./emsdk/emsdk activate 2.0.4
$ source ./emsdk/emsdk_env.sh # 環境変数などを設定する(一時的)
version情報
$ git -C emsdk/ describe --tags
2.0.10

$ emcc -v
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 2.0.4
clang version 12.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 77152a6b7ac07ce65568d7c69305653e7cad4bb0)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /emsdk/upstream/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8.0.1
shared:INFO: (Emscripten: Running sanity checks)

OpenSiv3DForWeb-VSCodeをためす

https://github.com/nokotan/OpenSiv3DForWeb-VSCode/blob/9ab018500cc446e681edddb36d30c2b6e7c770bd/.vscode/tasks.json#L10 を見ながらビルドコマンドをつくった。ビルドする

# これは/mnt/以下でよい
$ git clone https://github.com/nokotan/OpenSiv3DForWeb-VSCode.git
$ git -C OpenSiv3DForWeb-VSCode/ rev-parse HEAD
9ab018500cc446e681edddb36d30c2b6e7c770bd

$ cd OpenSiv3DForWeb-VSCode/
$ em++ Main.cpp -c -o Main.o -O0 -std=c++17 -g4 -IOpenSiv3D/include -IOpenSiv3D/include/ThirdParty
$ em++ Main.o -o index.html -O0 -std=c++17 -g4 -LOpenSiv3D/lib -LOpenSiv3D/lib/freetype -LOpenSiv3D/lib/harfbuzz -LOpenSiv3D/lib/opencv -lfreetype -lharfbuzz -lopencv_core -lopencv_imgproc -lopencv_objdetect -lopencv_photo -lSiv3D --emrun -s FULL_ES3=1 -s USE_GLFW=3 -s USE_LIBPNG=1 -s USE_OGG=1 -s USE_VORBIS=1 -s ALLOW_MEMORY_GROWTH=1 -s ERROR_ON_UNDEFINED_SYMBOLS=0 --preload-file OpenSiv3D/example@/example --preload-file OpenSiv3D/resources@/resources --shell-file template-web-player.html --js-library OpenSiv3D/lib/Siv3D.js

起動する

生成されたindex.htmlを適当なサーバからみれば生成物を見ることができる
自分はweb server for chromeを使った。使いかたはググってくれ

出来た
キャプチャ1.PNG

ゲームに適用する

上記のシンプルなプロジェクトに対し、ゲーム制作では以下のものが必要になる

  • cppファイルが複数存在する
  • 入力にリソースファイルが存在する

そのためにMakefileやビルドコマンドを書いていく

今回はこのゲームでやってみる

やること

  • ソースコード&&リソースをコピーする
  • Makefileを書く
  • Main.cppを適切な形に書き替える

ソースコード&&リソースをコピーする

Oidonou/macOS/src/Oidonou/macOS/App/textures/ を OpenSiv3DForWeb-VSCode/以下に置く

$ ls OpenSiv3DForWeb-VSCode/
Makefile   README.md  template-web-player.html
OpenSiv3D  index.wasm src             textures

Makefileを書く

ゴリゴリとMakefileを書いていく
正直色々実用に耐えないMakefileだが、とりあえず動くのでこれでよいことにする

ビルドコマンドとしてはリソースとして新たに textures/ を新たに増やしたため --preload-file textures@/resources/textures を追加した(https://emscripten.org/docs/porting/files/packaging_files.html)


index.html: build/Game.o build/Main.o build/Result.o build/Title.o
	em++ $^ -o index.html -O0 -std=c++17 -g4 \
	-LOpenSiv3D/lib -LOpenSiv3D/lib/freetype -LOpenSiv3D/lib/harfbuzz -LOpenSiv3D/lib/opencv -lfreetype -lharfbuzz -lopencv_core -lopencv_imgproc -lopencv_objdetect -lopencv_photo -lSiv3D \
	--emrun -s FULL_ES3=1 -s USE_GLFW=3 -s USE_LIBPNG=1 -s USE_OGG=1 -s USE_VORBIS=1 -s ALLOW_MEMORY_GROWTH=1 -s ERROR_ON_UNDEFINED_SYMBOLS=0 \
	--preload-file OpenSiv3D/example@/example --preload-file OpenSiv3D/resources@/resources --preload-file textures@/resources/textures \
	--shell-file template-web-player.html --js-library OpenSiv3D/lib/Siv3D.js

build/%.o: src/%.cpp
	mkdir -p build
	em++ $< -c -o $@ -O0 -std=c++17 -g4 -IOpenSiv3D/include -IOpenSiv3D/include/ThirdParty

Main.cppを適切な形に書き替える

参照:https://qiita.com/nokotan/items/6222ac8e0bd618ad6b63

先ほどと同じように起動する。
できた

キャプチャ2.PNG

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?