
大ファンの株式会社 刀の森岡さんが、西武園ゆうえんちの改革に乗り出すそうです。あのUSJをハリーポッターでV字回復させた方です。西武園ゆうえんちは、古い遊園地ということを活かし昭和のレトロ空間をコンセプトにするとの事。
というわけで、今回はpyxel(ぴくせる)というpythonのレトロゲームエンジンで2Dゲームを作成してみました。
作成したゲームは次のようなものです。
一言で表すなら、爆弾を上下に移動して爆弾を避けるゲームです。
スペースキーを押すと上昇、離すと加工するフラッピーバード的なゲームです。
200行程度のプログラムで作成することができます。
Pyxel(ぴくせる)だけでゲームが作れる!
まずはPyxelの特徴ですが、pyxelはpyxelだけで、ゲームに必要な絵、音楽もつくることができます!
自分でゲームを作る際に問題になるのが「絵がかけない」、「音楽が作れない」という問題です。
キャラクターが作れないとゲームにならないし、絵が描けてもBGMがないゲームは味気ないです。
そんな悩みを一掃してくれるのがPyxelです。
上の方に貼り付けてあるゲーム画像の絵は全てオリジナルで描いたものです。
キャラクタも爆弾も爆発も雲も自分で書きました。
下手なんですけど2Dのレトロ風ゲームと言うことで味のある感じになります。
Pyxelでゲーム素材を作る方法
pyxelは標準で「pyxeleditor(ぴくせるエディター」という画像と音楽を作るツールが含まれており、オリジナルのゲーム素材
を作成することが可能です。
ゲーム内で使用する画像は四角のドットを並べて作成します。
音楽を作る場合はピアノロールを使って音を並べていくだけでOKです。どーでしょうか?いけそうじゃあないですか?
作成したサウンドは同時に4チャンネル重ねることも可能です。
Pyxelで理解すべき3つの関数について
素材が完成したらプログラムを組んでいきます。
Pyxelは基本的なプログラムのベースは次の通りです。
Appクラスの中の3つのクラスに処理を記述していきます。
それぞれの関数の役割は次の通りです。
・def __init__関数
Appクラスのコンストラクタです。
App()を実行したとき最初に呼ばれる関数のため、画面のサイズやプレイヤーの初期位置等、
ゲームの初期設定を記述します。
・def update関数
フレーム更新ごとに呼ばれる処理を書きます。
キャラクターの移動や、キー入力時の処理を記述します。
・def draw関数
ゲーム画面を描画する処理を書きます。
updateで更新した座標をdraw関数で描写するように記述していきます。
Pyxelで作成したゲーム素材を利用する方法
pyxelで作成したゲーム素材は次の手順で利用することができます。
1.素材ファイルを読み込む
コンストラクタ内で作成した素材を読み込みます
pyxel.load関数の引数に作成したpyxresのファイルパスを渡すことで、
ゲーム内に素材をロードすることができます。
2. 画像を表示したいところでblt関数を呼び出す
bltやbltmを利用して作成した素材から画像を描画することができます。
8つの引数はそれぞれ次のようになります。
x: 画像を表示するx座標
y: 画像を表示するy座標
img: 画像番号(イメージバンク番号)
u: イメージバンクからの位置(x)
v: イメージバンクからの位置(y)
w: 取得するイメージの幅
h: 取得するイメージの高さ
音はMusic番号を指定してあげればOKです。
サンプルゲームのプログラム内容
今回作成したpyxelのプログラムは次の通りです。
シンプルなゲームのため、複雑な処理はありません。
ボタンを押すと上昇し、離すと下降する処理は次のように記述しています。
上下するキャラの処理の流れ
1.スペースキーが押された場合はPOWERを徐々に増やし重力(gravity)からPOWERを引くことで
キャラクターが浮き上がるように設定しています。(10行目、15行目)
2.ボタンを話した場合はgravityが徐々に増加していくので、徐々に落ちる速度が上昇します。
(13行目、15行目)
背景の雲を動かす方法
背景の雲の移動はプレイヤーから見て奥行きの近い雲と遠い雲の2パターン作成しています。
雲の動きの流れ
1.雲の初期位置を決めるリストの作成します。なお、リストの要素数が雲の数となります
(2行目、5行目)
2.経過フレームを定数で割った商を横幅と同じ160で余剰したときの結果分右にずらす。
(10、13行目、18、21行目)
ちょっと難しい処理ですが、雲が右から左に向かって少しずつ移動するような処理になっています。
Pyxelで作ったゲームを他の人に遊んでもらう
通常、pythonで作成したゲームを他の人のパソコンで遊んでもらうには、作成したゲームプログラムと
pythonの実行環境が必要になりますが、Pyxelではpythonの環境がない場合でも遊べるように
変換してくれる機能があります。
使い方は以下の通りです。
python_fileは自分が作成したゲームファイル名が入ります。
素材ファイルはassetsフォルタを作成し、その中に入れておく必要がありますが
うまく作成できるとdistフォルダの中に実行ファイルが作成されます。
ファイルを他のパソコンにコピーして起動すれば同じゲームが遊べます。
ちなみに今回作成したファイルリンクを貼っておきますので
よろしければ試してみてください。
※上の例ではMacで作成したので、同じOSの「Mac」で動かすことは可能ですが、
windowsやLinuxでは動かないので注意してください。
もしwindowsやLinuxで動くものを作りたい場合はpyxelの環境をそれぞれのOSで作成して
再度pyxelpackagerを実行してください。
今回はpyxelでゲームを作成してみましたが、画像だけでなく、音楽も簡単に作ることができるので
すぐにオリジナルのゲームを作成することができます。
単独実行ファイルを出力ができるため自分が作ったゲームを友達に遊んでもらうことも気軽にできます。
是非一度試してみてください。