Pyxelを使って簡単なゲームの作成を試してみたい!part1

3 min
xainome

xainome

データサイエンティスト風味のSES
自身の話をするよりは人の話を聞く方が好き
普通の人

FOLLOW

Pyxelでゲーム開発入門

ゲームを作成するのであればUnityUnreal Engineが有名です。それとは別にpythonでコーディングができるpyxelがあります。

pyxelはレトロゲームエンジンになります。ファミコンのようなドット絵スタイルのゲームしか作れませんが、pythonを知ってる人にはちょうどいいかもしれません。

開発環境の準備

pythonを導入している前提ですが、少し進めていきたいと思います。基本的にはREADME通りに進めていけばよいと思います。まずはライブラリのインストールを進めていきます。

pip install -U pyxel
私の例: py -3.10 -m pip install -U pyxel

-Uがないとエディター画面が出ないので忘れずにつけましょう!その後は参考のためサンプルを導入するのもよいと思います。なくても特に問題はありません。

pyxel copy_examples

基本的なコード構造

そうすると簡単なゲームやガイドなどが入ってます。これを理解できれば基本的なコードは書けるようになると思います。基本的なコードはこんな感じになってます。

import pyxel

class App:
    def __init__(self):
        pyxel.init(160, 120)
        self.x = 0
        pyxel.run(self.update, self.draw)

    def update(self):
        self.x = (self.x + 1) % pyxel.width

    def draw(self):
        pyxel.cls(0)
        pyxel.rect(self.x, 0, 8, 8, 9)

App()

クラスの中に__init__関数とupdate関数とdraw関数があります。__init__関数では画面サイズの指定や各関数の実行ができます。

update関数ではキー入力や画面の切り替えを行う関数になります。update関数がメインになりそうです。もちろんupdate関数だけじゃなくて新しく関数を作っても問題ないです。キャラクター用や画面用などいろいろ作ると使い分けが楽になると思います。

draw関数では画面やキャラクターの描画を行います。エディター画面で作成した背景やキャラクターを呼び出したりします。

ドット絵とタイルマップの作成

というわけでまずはドット絵とタイルマップの作成からですね。ちなみに私は絵心は全くないので、大したものは書けません。所謂味がある絵みたいなイメージですね…コマンドは以下になります。

pyxel edit "絶対パス"
例: pyxel edit "C:\pyxel\assets\game.pyxres"
pyxel_蜂A
pyxel_蜂B

コマンドは相対パスだと開かないので気を付けてください。一応実行しているフォルダーに移動してファイル名のみ指定しても問題ありません。

こんな感じで蜂A、蜂B、空、草原、岩のタイルを用意してみました。適当ですが苦手なりにそれっぽくできた気がします。まずはタイルマップの作成をします。左上のエディターからタイルマップを選び、書いたタイルを指定して書いていきます。

タイルマップへのキャラクター表示

今度はコードを使ってタイルマップにキャラクターを表示してみます。

ここからどう動かすか?という感じですね。描画するときのコードはこんな感じですね。

import pyxel

class Scrolling_Game:
    def __init__(self):
        pyxel.init(128, 128, title='Scrolling Game')
        pyxel.load('assets/scroll_game.pyxres')
        self.char_x = 50  # キャラクターのX座標
        self.char_y = 50  # キャラクターのY座標
        pyxel.run(self.update, self.draw)

    def update(self):
        self.scroll_x += self.scroll_speed

    def draw(self):
        pyxel.cls(0)

        pyxel.bltm(0, 0, 0, 0, 0, 128, 128)
            
        # キャラクターの描画 (アニメーション)
        pyxel.blt(self.char_x, self.char_y, 0, 0, 0, 16, 16, 7)

Scrolling_Game()

キャラクター表示_コーディング

__init__内でエディターで描いたドット絵の読み込みと座標設定をしています。

drawではclsは一旦画面をリセットします。その後bltmでタイルマップの読み込みですね。bltでキャラクターの読み込みをしています。

bltmでは画面(0,0)の位置にタイルマップ0番を呼び出します。タイルマップ0番の(0,0)の位置から(128,128)まで描画します。

bltも同様に指定していますが、最後の7は透過する色になります。蜂が黄色と黒の模様なので黒透過が使えませんでした。なので白透過をするために7を指定しています。ちなみに黒透過なら0を指定すれば大丈夫です。

終わりに

今回は一旦ここまでにしようと思います。次回はキー入力で動かしたり、音楽を触ってみるぐらいはしてみたいなと思います。ではでは。

xainome

xainome

データサイエンティスト風味のSES
自身の話をするよりは人の話を聞く方が好き
普通の人

FOLLOW

カテゴリー:
関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


Social Media Auto Publish Powered By : XYZScripts.com