概要
pythonの言語勉強としてローグライクのサンプルゲームを作成しました。
GitHubにプロジェクトを公開していますので、その紹介記事となります。
こちらは、廣瀬 豪さん著「Pythonでつくるゲーム開発 入門講座」の題材となっている、本格RPGのサンプルゲームをベースとして、ゲーム内容の調整やオブジェクト指向の取り入れ等を行った物となります。
なのでコードを確認する前に一旦こちらの入門書を終わらせておくと、内容が理解しやすいかも知れません。
プロジェクトの詳細な説明については、GitHubの readme
をご参照ください。
プレイ動画
環境
- OS:Windows 10
- Python:3.7.4
利用ライブラリ
pygame 1.9.6
pythonで2Dゲーム制作を行う際に便利なライブラリ
https://github.com/pygame/pygame/
numpy 1.18.4
配列の利用にちょっと参照した程度。 単に使ってみたかったので入れました。
オリジナルからの主な変更点
オリジナルのRPGは戦闘シーンがドラクエ風対面式バトルとなってましたが、マップ上でシームレスにバトルができる仕組みへと変更してます。
また、GitHubへ公開するに当たり、リソース類をすべて自作のものに差し替えています。
以下、主な変更点です。
- オブジェクト指向で制作
- クラス単位でファイル分割
- バトル方式を対面式からシームレスタイプに
- ゲームの進行にシーンとタスクの手続き導入
- 移動のアニメーションをスムーズに
- 画像描画手続きをカメラを用いた構造に変更
- リソース類の置き換え
利用したツール
MusicStudio (作曲)
iPadで作曲ができるDAWアプリです。 Winで気軽に使えるDAWになかなか巡り会えず、5年前くらいに買ってほぼ放置していたアプリを引っ張り出してきました。
Serverモードという、ブラウザからアクセスしてファイルを直でダウンロードできる機能がなかなか良い。
KanaWave (効果音)
ひらがなで効果音が作成できるフリーウェアのツールです。 ちょっとした効果音をサクッと作りたいときにすごく重宝してます。
Audacity (効果音調整)
音声波形編集ツールで、こちらもフリーウェア。 音声ファイルの音量調整や、wav → ogg 変換等に利用しました。
Aseprite (ドット絵)
ドット作成ツールです。 STEAMのストアで購入しました。 アニメーションの確認ツールなども含まれており、かなり本格的なツールですが、ちょっとしたドットを書きたい時でも、ストレスなく簡単に使えて良いです。
参考書籍
今回の題材としたこちらの書籍ですが、
とにかく実践的な内容で、細かい言語仕様の解説よりまずは手を動かしてものを作っていくスタイルとなっていました。
最終的には今回参照した本格RPGに、落ちものパズル等、結構ガッツリしたゲームの作成解説があり、プログラミング楽しみながら覚える入門書として、すごく優れている本だと思います。
逆に、Pythonの言語仕様については解説が少なめなので、この本でコードを書くという事になれたら、別の入門書で保管する流れが良さそうです。
■ Pythonでつくるゲーム開発 入門講座
https://amzn.to/2ZNCgps
GitHub
感想
Pythonの勉強のために、軽くリファクタリングをしながら、2~3日で終わらせるつもりが、ゲームエンジン部の作り込みにハマってしまい、いつの間にか2週間規模の作業となってしまいました。
IDEはVSCodeを使ったのですが、デバッグ実行等もでき、軽くならリネームも効いて、かなり開発が行いやすかったです。
また、lintライブラリとして、pylintとflake8を使ったのですが、これらのおかげでpythonの一般的なコーディングルールが学べました。
新しい言語を勉強する際はとりあえずlintを入れるというのはかなり有効ですね。
ある程度汎用的に利用できる直前くらいまでは作り込めたと思うので、今回の学習を活かして、今後スマホで同様のアプリを作ってみるなり何らかの展開が見せていければ良いなと思っています。