2022/11/01(火) [n年前の日記]
#1 [tic80] TIC-80をWindows10でビルドできるか実験
TIC-80 は、機能制限された無料版と、全機能が使えるPro版(有償版)があるのだけど。github上のTIC-80の README.md に、「お金がない人のために、Pro版のビルドも簡単にできるようにしておいたよ」と書かれていて、そのあたりがなんだか気になってきた。
_nesbox/TIC-80: TIC-80 is a fantasy computer for making, playing and sharing tiny games.
ビルドって簡単にできるものなんだろうか…? ちょっと試してみようかなと。
環境は、Windows10 x64 21H2。
結論を先に書いておくと、Visual Studio Community 2019 ならビルドできた。MSYS2 + MinGW-w64 ではビルドできなかった。
_nesbox/TIC-80: TIC-80 is a fantasy computer for making, playing and sharing tiny games.
ビルドって簡単にできるものなんだろうか…? ちょっと試してみようかなと。
環境は、Windows10 x64 21H2。
結論を先に書いておくと、Visual Studio Community 2019 ならビルドできた。MSYS2 + MinGW-w64 ではビルドできなかった。
◎ MSYS2+MinGW-w64でビルドできるか実験。 :
自分の環境には MSYS2 + MinGW-w64 がインストール済みなので、まずはソレで試してみる。
スタートメニュー内の「MSYS2 MinGW 64bit」をクリックしてターミナルを起動。
以下が必要になるらしい。pacman を使ってインストール。
ちなみに、MSYS2で用意されたパッケージは、以下で検索できる。
_Pending Package Updates - MSYS2 Packages
git clone でソースその他をDL。
cmake で Makefile を作成してから make。たぶん。
注意点。cmake の指定の中にある「..」は省略の意味じゃなくて、一つ上のディレクトリを指定する記述なので、勝手に省いたりしないように。自分、最初、これは省略の意味なんだろうと勘違いして省いてしまって、動かないなーおかしいなーと悩んでた…。トホ。
mingw32-make を走らせて make をしたら、エラーが出た。
何が何だか分からない。Visual Studio でビルドしないとダメかな…。
スタートメニュー内の「MSYS2 MinGW 64bit」をクリックしてターミナルを起動。
以下が必要になるらしい。pacman を使ってインストール。
- git
- cmake
- ruby
pacman -S git pacman -S mingw-w64-x86_64-cmake pacman -S mingw-w64-i686-cmake pacman -S cmake pacman -S mingw-w64-x86_64-ruby pacman -S mingw-w64-i686-ruby
ちなみに、MSYS2で用意されたパッケージは、以下で検索できる。
_Pending Package Updates - MSYS2 Packages
git clone でソースその他をDL。
git clone --recursive https://github.com/nesbox/TIC-80 cd TIC-80/build
cmake で Makefile を作成してから make。たぶん。
cmake -G "MinGW Makefiles" .. -DBUILD_PRO=On mingw32-make -j4
注意点。cmake の指定の中にある「..」は省略の意味じゃなくて、一つ上のディレクトリを指定する記述なので、勝手に省いたりしないように。自分、最初、これは省略の意味なんだろうと勘違いして省いてしまって、動かないなーおかしいなーと悩んでた…。トホ。
mingw32-make を走らせて make をしたら、エラーが出た。
mingw32-make[2]: *** [vendor\sdl2\CMakeFiles\SDL2-static.dir\build.make:2551: vendor/sdl2/CMakeFiles/SDL2-static.dir/src /joystick/windows/SDL_windows_gaming_input.c.obj] Error 1 mingw32-make[1]: *** [CMakeFiles\Makefile2:976: vendor/sdl2/CMakeFiles/SDL2-static.dir/all] Error 2 mingw32-make: *** [Makefile:135: all] Error 2
何が何だか分からない。Visual Studio でビルドしないとダメかな…。
◎ Visual Studio Community 2019でビルドできるか実験。 :
自分の環境は Visual Studio Community 2019 (以下、VS2019と記述) もインストール済みなので、そちらでも試してみた。
以下も必要になるっぽい。
自分の環境では、3つともインストール済みだった。かつ、DOS窓上で呼び出せるようにパスも通してあった。
一応、上記ツールのインストール方法について解説してるページもメモしておく。
_WindowsにGitをインストールする手順(2022年10月更新)
_cmake のインストール(Windows 上)
_Ruby | Rubyのダウンロードとインストール
必要なツールは揃っているはずなので、作業を始める。Windows10のスタートメニューの中から、「x86 Native Tools Command Prompt for VS 2019」を選んで実行。DOS窓が開く。 *1
これで、Visual Studio同梱のコンパイラその他にパスが通ってくれて、DOS窓上でもそれらツールが利用できるようになる。後で cmake を実行する際、コンパイラその他が存在するかどうかチェックされるので、cmake の処理が終わるところまでは、このDOS窓上で作業をしていく必要がある。
任意のディレクトリに git clone でソースその他をダウンロード。cmake でビルド用のファイルを生成する。ちなみに、cmake に -DBUILD_PRO=On を付加して実行すれば、TIC-80 Pro版としてビルドできるらしい。また、今回は、TIC-80 1.0.2164 のタグ、「v1.0.2164」を指定して、 git clone してみた。
cmake に渡す文字列によって、どのツールでビルドするのかを指定しているのだろうけど、渡す文字列については以下の指定もできるっぽいので、VS2019 を必ずインストールしなきゃいけないというわけでも無さそう。VS2017でも、VS2015でも、ビルドできるのかもしれない。
cmake の処理が成功すると、TIC-80\build\ 以下に大量のファイルが生成される。その中に、TIC-80.sln というファイルも生成されていた。これを VS2019 で開く。
以下の記事によると、以前はリソースビュー上で足りないリソースがいくつかあってエラーになっていたらしい。
_TIC-80 ver 0.70.0 を Windows10 + VS2015 環境でビルドしてみた - Qiita
ただ、今回の版 ―― TIC-80 1.0.2164 の場合は、そういったエラーは見つからなかった。
上のほうで、「Debug」になっているところを「Release」に変更。
ビルド → ソリューションのビルド、を選ぶとビルドが始まる。
ビルドが終わると、TIC-80\build\ の中に bin というディレクトリが作られて、中には色々な .exe が生成されていた。その中に、tic80.exe というファイルがあった。これが目的のファイル。
tic80.exe を別ディレクトリにコピーしてから実行してみた。TIC-80 のウインドウが表示された。
ウインドウのタイトルには、「TIC-80 tiny computer 1.0.2164 Pro (b09c50c)」と表示されてる。「Pro」の文字が入ってる。
どうやらビルドは成功したっぽい。MinGW-w64 と比べると、すんなりビルドできてしまった…。
以下も必要になるっぽい。
- git
- cmake
- Ruby
自分の環境では、3つともインストール済みだった。かつ、DOS窓上で呼び出せるようにパスも通してあった。
>git version git version 2.30.2.windows.1 >cmake --version cmake version 3.21.2 >ruby --version ruby 2.6.10p210 (2022-04-12 revision 67958) [i386-mingw32]
一応、上記ツールのインストール方法について解説してるページもメモしておく。
_WindowsにGitをインストールする手順(2022年10月更新)
_cmake のインストール(Windows 上)
_Ruby | Rubyのダウンロードとインストール
必要なツールは揃っているはずなので、作業を始める。Windows10のスタートメニューの中から、「x86 Native Tools Command Prompt for VS 2019」を選んで実行。DOS窓が開く。 *1
これで、Visual Studio同梱のコンパイラその他にパスが通ってくれて、DOS窓上でもそれらツールが利用できるようになる。後で cmake を実行する際、コンパイラその他が存在するかどうかチェックされるので、cmake の処理が終わるところまでは、このDOS窓上で作業をしていく必要がある。
任意のディレクトリに git clone でソースその他をダウンロード。cmake でビルド用のファイルを生成する。ちなみに、cmake に -DBUILD_PRO=On を付加して実行すれば、TIC-80 Pro版としてビルドできるらしい。また、今回は、TIC-80 1.0.2164 のタグ、「v1.0.2164」を指定して、 git clone してみた。
git clone --recursive https://github.com/nesbox/TIC-80 -b v1.0.2164 cd TIC-80/build cmake -G "Visual Studio 16 2019" .. -DBUILD_PRO=On
cmake に渡す文字列によって、どのツールでビルドするのかを指定しているのだろうけど、渡す文字列については以下の指定もできるっぽいので、VS2019 を必ずインストールしなきゃいけないというわけでも無さそう。VS2017でも、VS2015でも、ビルドできるのかもしれない。
"Visual Studio 16 2019" "Visual Studio 15 2017 Win64" "Visual Studio 14 2015 Win64"
cmake の処理が成功すると、TIC-80\build\ 以下に大量のファイルが生成される。その中に、TIC-80.sln というファイルも生成されていた。これを VS2019 で開く。
以下の記事によると、以前はリソースビュー上で足りないリソースがいくつかあってエラーになっていたらしい。
_TIC-80 ver 0.70.0 を Windows10 + VS2015 環境でビルドしてみた - Qiita
ただ、今回の版 ―― TIC-80 1.0.2164 の場合は、そういったエラーは見つからなかった。
上のほうで、「Debug」になっているところを「Release」に変更。
ビルド → ソリューションのビルド、を選ぶとビルドが始まる。
ビルドが終わると、TIC-80\build\ の中に bin というディレクトリが作られて、中には色々な .exe が生成されていた。その中に、tic80.exe というファイルがあった。これが目的のファイル。
tic80.exe を別ディレクトリにコピーしてから実行してみた。TIC-80 のウインドウが表示された。
ウインドウのタイトルには、「TIC-80 tiny computer 1.0.2164 Pro (b09c50c)」と表示されてる。「Pro」の文字が入ってる。
どうやらビルドは成功したっぽい。MinGW-w64 と比べると、すんなりビルドできてしまった…。
◎ 本当にPro版なのか確認。 :
TIC-80 のコンソール上で folder と打って、システムディレクトリ(ユーザディレクトリ)の場所を確認しておく。エクスプローラが開いて、TIC-80 がシステムディレクトリとして扱ってる場所を開いてくれる。
TIC-80のコンソール上で、save test.lua と打ってみる。これで test.lua が保存されたら、Pro版が動いてることになる。もし、無料版なら、test.lua.tic というファイル名で保存されてしまうはず。
test.lua が保存された。エディタで開いてみると、ソースの後ろのほうにバイナリデータを示す文字列が並んでいた。
この tic80.exeは、たしかにPro版のバイナリらしい。
そんなわけで、Pro版が簡単にビルドできるという話は本当だった模様。そしてどうやら、Windows上で TIC-80 をビルドするなら、Visual Studio を使ったほうがいいようだなと…。MSYS2 + MinGW-w64 でビルドしようとすると、おそらくハマる。この手のツールやライブラリに詳しい人なら解決できるのだろうけど…。
TIC-80のコンソール上で、save test.lua と打ってみる。これで test.lua が保存されたら、Pro版が動いてることになる。もし、無料版なら、test.lua.tic というファイル名で保存されてしまうはず。
test.lua が保存された。エディタで開いてみると、ソースの後ろのほうにバイナリデータを示す文字列が並んでいた。
この tic80.exeは、たしかにPro版のバイナリらしい。
そんなわけで、Pro版が簡単にビルドできるという話は本当だった模様。そしてどうやら、Windows上で TIC-80 をビルドするなら、Visual Studio を使ったほうがいいようだなと…。MSYS2 + MinGW-w64 でビルドしようとすると、おそらくハマる。この手のツールやライブラリに詳しい人なら解決できるのだろうけど…。
◎ ファイルサイズについて。 :
ビルドするためにダウンロードしたファイル群や、生成されたファイル群の総ファイルサイズは、1.61GB、21255ファイルになった。
加えて、ビルドに必要なソフト群は…。git が 823MB (6170ファイル)、cmakeが 114MB (6949ファイル)、Rubyが 2.42GB (145112ファイル)、Visual Studioが 15.87GB (47372ファイル)。
TIC-80のソース群 + ビルド環境、全部合わせて約21GB。226858ファイル。
ちなみに、最終的に生成される tic80.exe は 4.6MB。1ファイル。
ストレージの空き容量的には、お金払ってPro版バイナリを買うほうがいいですわな…。
加えて、ビルドに必要なソフト群は…。git が 823MB (6170ファイル)、cmakeが 114MB (6949ファイル)、Rubyが 2.42GB (145112ファイル)、Visual Studioが 15.87GB (47372ファイル)。
TIC-80のソース群 + ビルド環境、全部合わせて約21GB。226858ファイル。
ちなみに、最終的に生成される tic80.exe は 4.6MB。1ファイル。
ストレージの空き容量的には、お金払ってPro版バイナリを買うほうがいいですわな…。
◎ 余談。 :
有償ソフトの購入に抵抗が無いのであれば、PICO-8 を買ってしまほうがいいのかも。PICO-8は、そもそもこのジャンルの始祖だろうし、一番人気のソフトっぽいし…。
_PICO-8 Fantasy Console
逆に、あくまで無料の範囲内でこの手のジャンルに触れてみたいなら、Pyxel も魅力的だなと…。無料で全機能が使えるし、今流行りのPythonに慣れることもできる。作者様がgithub上の人気度を調べたところ、全世界で6番目の人気振りだったというデータもあるし。
_pyxel/README.ja.md at main - kitao/pyxel
_PICO-8 Fantasy Console
逆に、あくまで無料の範囲内でこの手のジャンルに触れてみたいなら、Pyxel も魅力的だなと…。無料で全機能が使えるし、今流行りのPythonに慣れることもできる。作者様がgithub上の人気度を調べたところ、全世界で6番目の人気振りだったというデータもあるし。
_pyxel/README.ja.md at main - kitao/pyxel
◎ 余談その2。 :
以下は思考メモ。
PICO-8 や Pyxel と張り合っていくことを考えると、TIC-80 無料版は外部エディタでソース編集できない、という制限が結構マイナスになりそうな気もしてくる。今まで色々なソフトを眺めてきたけど、普及前からその手の制限を入れちゃうと、えてしてシェアを取れないまま自滅していくので…。
しかし、どうやってお金にかえていくのかは難しい問題だよなと…。例えば Unity のように色々なことができるツールなら、「ヒット作が出たらその時ドーンと払ってね」という方針も出せるけど。Fantasy Console、Fantasy Computer というジャンルは、「あえて制約の中で遊んでみませんか」という方針のソフトだから、ボリューム的に、有償でバカ売れするヒット作が出現する可能性は低いだろうし、Unityのようなやり方は真似できない。まして、外部エディタすら使えない不便な開発環境では、凝ったプログラムを書くモチベーションの維持も難しく…。目を見張るものが出てこないと、そのツールに興味を持ってくれる人も自ずと少なくなるので、ますます不人気に…。
TIC-80は、「PICO-8と比べたら無料でこんなに機能が解放されてるなんて大盤振る舞いですね」と捉えることもできるけど、「そこを制限しちゃったら普及しないのとちゃいますか…?」と思えるところも微妙にあって…。 *2
まあ、こういうジャンルって、存続のさせ方、普及させるための策について、色々難しいところがありそうだなと。
PICO-8 や Pyxel と張り合っていくことを考えると、TIC-80 無料版は外部エディタでソース編集できない、という制限が結構マイナスになりそうな気もしてくる。今まで色々なソフトを眺めてきたけど、普及前からその手の制限を入れちゃうと、えてしてシェアを取れないまま自滅していくので…。
しかし、どうやってお金にかえていくのかは難しい問題だよなと…。例えば Unity のように色々なことができるツールなら、「ヒット作が出たらその時ドーンと払ってね」という方針も出せるけど。Fantasy Console、Fantasy Computer というジャンルは、「あえて制約の中で遊んでみませんか」という方針のソフトだから、ボリューム的に、有償でバカ売れするヒット作が出現する可能性は低いだろうし、Unityのようなやり方は真似できない。まして、外部エディタすら使えない不便な開発環境では、凝ったプログラムを書くモチベーションの維持も難しく…。目を見張るものが出てこないと、そのツールに興味を持ってくれる人も自ずと少なくなるので、ますます不人気に…。
TIC-80は、「PICO-8と比べたら無料でこんなに機能が解放されてるなんて大盤振る舞いですね」と捉えることもできるけど、「そこを制限しちゃったら普及しないのとちゃいますか…?」と思えるところも微妙にあって…。 *2
まあ、こういうジャンルって、存続のさせ方、普及させるための策について、色々難しいところがありそうだなと。
[ ツッコむ ]
以上です。