さて、ホッケーゲームが完成したことだし、誰かに遊んでもらえるようにしていこうか!
っていうことは、実行ファイル化するってことだよね??
それなら、じゃんけんアプリを作った時と一緒で「PyInstaller」を使うんじゃないの?
実質的にはそうなんだけど、今回はPyxelに付いている機能を使った実行ファイル化の方法を紹介するよ
「実質的」...とは??
Pyxelで実行ファイル化する機能はPyInstallerを使ってるから、事前にPyInstallerもインストールする必要があるんだよね
ああ!それで「実質的」なんだね!!
ということでまずは、ファイルの整理からしようか!
最初にフォルダ「hockey_game」を作って、今回作った「hockey.py」と「assets.pyxres」を入れよう
もうすでに自分でホッケーゲーム用のフォルダを作ってたら別にそれで良いよね??
そうだね!それで大丈夫!!
次に、ここが重要なんだけど、カレントディレクトリはフォルダ「hockey_game」が置かれているフォルダに設定してほしいんだ
「hockey.py」とかが置かれている場所じゃなくて、一個手前のフォルダだね
もし、カレントディレクトリが「hockey.py」の置かれているフォルダになっている場合は、ターミナルで「cd ..」とすればOKだよ!
おっけー!フォルダはデスクトップに置いてたから、カレントディレクトリをデスクトップに変更したよ!
そしたら次は、「仮想環境」の設定をしようか
今回の仮想環境名は「hockey_venv」にしておこう
Windowsの場合
python -m venv hockey_venv
.\hockey_venv\Scripts\activate
Macの場合
python3 -m venv hockey_venv
source hockey_venv/bin/activate
もし、Windowsで実行したときに赤字で「セキュリティエラー」が出たら、下のプログラムを実行してからもう一度試してみてね
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
準備完了!ちゃんとターミナルの一番左に「(hockey_venv)」が表示されたよ!
もうその辺りはバッチリだね!じゃあその状態で「Pyxel」と「PyInstaller」をpipでインストールしよう
Windowsの場合
pip install pyxel pyinstaller
Macの場合
pip3 install pyxel pyinstaller
インストール完了!
ここからが新しい方法になるよ!
Pyxelでは、実行ファイルを作る前に「パッケージング」をするんだ
パッケージング?プログラムをまとめちゃうって感じかな
まぁそんな感じだと思っておけばOK!
早速、ターミナル上で次のコードを実行してみよう
pyxel package ./hockey_game ./hockey_game/hockey.py
「hockey_game」のところは、自分が作ったフォルダの名前に合わせてね
なんか、「hockey_game.pyxapp」ってファイルが出来たよ!
それがパッケージングされたPyxelのゲームだよ!
無事に出来たら、ファイル名を「hockey_game.pyxapp」から「hockey.pyxapp」に変更しとこうか
ん?わざわざ変更しないといけないの?
前のバージョンは変更しなくても大丈夫だったけど、最近のバージョンでは実行ファイルを作る時にファイル名と同じ名前のフォルダを作ろうとして、元のプログラムのファイルが上書きで消えちゃうかもしれないんだよね(汗)
それは怖いね...
せやろ
んで、名前の変更が出来たら、次のコードを実行すると実行ファイルが完成するはずだよ!
pyxel app2exe hockey.pyxapp
おお!「hockey.exe」が完成した!!ダブルクリックでちゃんと起動するよ!
だけど、この流れならPyInstallerで実行ファイル化した方が楽じゃない??
そこが今回のポイント!
今紹介した方法を少し変えるだけで「ブラウザ上で動作する形」に出力する事も出来るんだ
なんと!?...そういえば、Pyxelのサイトでデモのゲームが遊べたね!
そうそう
しかも、その方法はさっき実行ファイル化した時のコードの「app2exe」を「app2html」に変更するだけで作ってくれるよ!
pyxel app2html hockey.pyxapp
それだけで良いんだ!
こうやって出力形式を変えるために「パッケージング」が必要だったんだね!
そういうこと
こうやって出力されたデータは「HTMLファイル」になっているから、ゲーム投稿系のサイトや「GitHub Pages」などで公開することができるよ
おおーーー!「hockey.html」をダブルクリックしたらブラウザが開いてゲームが出来た!!
...ということで、ここからは「GitHub Pages」で公開する方法を説明するね
よろしくお願いします!!
その前に、さっき作った「hockey.html」を「index.html」に名前を変更しておいてね
了解!
そしたら最初に、Webアプリの時と同じく「GitHub」にアクセスしよう!
再度ログインが必要な場合はログイン情報を入力してね
アクセスするとおそらく、自分のメインページにいると思うから、「New」と書かれた緑色のボタンをクリックしよう
クリックしたら、新しいリポジトリを作る画面が出てくるね!
今回のリポジトリ名は「hockey_game」にして、公開情報は「Public」にしておこうか
今回の公開情報は「Private」じゃないんだね
無料枠内でサイトを公開する場合は「Public」じゃないとダメみたいなんだよね
じゃあ、秘密の情報とかの扱いには気を付けないとだね...!!
入力が完了したら、右下の「create repository」をクリックしよう
クリック後はリポジトリのメイン画面が表示されるはずだから、「create a codespace」をクリックして、移動したページの「create new codespace」をクリックしよう
こうすればブラウザにVSCodeの画面が出てくるんだよね!
ちゃんとフォルダの名前が「HOCKEY_GAME」になってるよ!
大丈夫そうだね!そしたら、この中に「index.html」と「hockey_game.pyxapp」をドラッグアンドドロップで追加しよう
あとは前回と同じく、「ソース管理」の項目で「メッセージ」を追加して「コミット」ボタンをクリック後、「変更の同期」をクリックして元のページに戻ろう
うん、レポジトリのメインページに戻ったらちゃんと反映されてるね!
メインページに戻ってきたら、一番右にある「Settings」っていうタグをクリックして、その下の方にある「Pages」を選ぶと次のような画面が出てくるよ
この時の「Branch」の項目の左にある「None」を「main」に変更して、「Save」をクリックしよう
あ!なんか、上のところに「GitHub Pages source saved.」って出てきた!
それが出てきてからブラウザを更新すると、「Visit site」ってボタンが出てくると思うよ!
もし出てこない場合は少し待ってからもう一度更新してみてね
お!「Visit site」が出てきたよ!
そしたら、それをクリックしてみて!
ゲームが...出来る...!!!!!
完璧だね!!公開おめでとう!!
あとは、このURLを共有すれば誰でも遊べるようになるよ
流れさえ覚えたら簡単にブラウザゲームを公開出来るようになるね!
ちなみに、今回はスペースキーでゲームが始まるようにしてるからダメだけど、スマホで起動すると画面に十字キーと4つのボタンが出て来るから、スマホ対応のゲーム作成も出来るよ!
マジでか!!
今回の公開方法以外にも国内のゲーム投稿サイト「ふりーむ!」や海外のゲーム投稿サイト「itch.io」などにも公開可能だよ!
サイトごとに公開するためのルールと投稿方法があるから、それについては自分で調べてチャレンジしてみてね!
たくさん良いゲームを作って、皆に遊んでもらえるようにしたいね!!
ちなみに、もっと複雑なゲームや3Dゲームを作りたいなら、Pythonじゃなくて「Unity」や「Unreal Engine」、「RPGツクール」や「ティラノスクリプト」みたいなゲーム制作に特化したものを学ぶのが良いと思うよ
| エンジン名 | 代表的なゲーム | 公式サイト | 備考 |
|---|---|---|---|
| Unity | 原神 / Among Us / Hollow Knight(ホロウナイト) | https://unity.com/ | 世界的に最も普及している汎用ゲームエンジン |
| Unreal Engine 5 | フォートナイト / FINAL FANTASY VII REMAKE / 鉄拳8 | https://www.unrealengine.com/ | 高画質リアルタイム3Dに最適。大型商用作品に多用 |
| Godot | Caramel Mokaccino(Steam版で日本語あり) | https://godotengine.org/ | 軽量で2Dに強い。オープンソースかつ日本語対応も進行中 |
| GameMaker | Undertale(アンダーテイル) / Hyper Light Drifter | https://gamemaker.io/ | 2DアクションやRPGに最適。日本語化された名作多数 |
| RPGツクール(MV/MZ) | To the Moon / いりす症候群! / OneShot(日本語版あり) | https://tkool.jp/ | ノンプログラムでJRPGが作れる王道ツール |
| WOLF RPGエディター | Ib(イヴ) / 魔女の家 / 霧雨が降る森 | https://www.silversecond.com/WolfRPGEditor/ | 完全無料で国内ノベル・ホラーRPGの名作が生まれた |
| ティラノスクリプト | 廃深 / フリー・同人ノベル多数(日本語専用) | https://tyrano.jp/ | ノベル・ADVに特化したHTMLベースエンジン |
| Ren'Py | Doki Doki Literature Club(ドキドキ文芸部!) | https://www.renpy.org/ | 多言語対応で、日本語化されたノベルゲームも多数 |
| Construct 3 | Mindustry(マインダストリー) | https://www.construct.net/ | ノーコードでWebやスマホ向けに強い |
| GDevelop | 自由創作系多数(例: Lil BUB's HELLO EARTH – 日本語対応) | https://gdevelop.io/ | 初心者・教育向け、ノーコードで日本語対応も進行 |
| Scratch | 教育向けゲーム多数(公式ギャラリーで日本語タグ検索可) | https://scratch.mit.edu/ | 子供のプログラミング学習用に設計 |
| Cocos Creator | 非公開事例が多いが、スマホゲーム(中国系)が日本語展開 | https://www.cocos.com/en/ | TypeScriptベース。モバイル向けに最適 |
| CryEngine | Hunt: Showdown(ハント・ショーダウン) | https://www.cryengine.com/ | 超写実的グラフィックが強みの重量級エンジン |
| PICO-8 | Celeste(セレステ)※PICO-8版が存在 | https://www.lexaloffle.com/pico-8.php | レトロ感ある8bitゲーム制作が可能 |
ゲームジャンルに合わせて得意不得意があるみたいだし、自分の作りたいものに合わせて使うのが大事かもね
他のツールについて学びなおすのは大変かもしれないけど、プログラムの基礎的な知識や考え方は既に身についてると思うから、きっとうまくやれるはず!
そうだね!これからも頑張ってみる!!
