Pyxelの使い方|Pythonでレトロゲームを作る方法を初心者向けに解説

プログラミング・電子工作






Pyxelの使い方|ゲーム制作をゼロから解説






入門 / Python

Pyxelの使い方|ゲーム制作をゼロから徹底解説

Pyxelは、Pythonでレトロ風のゲームを作れるゲームエンジンです。日本人開発者による、オープンソースのツールです。画像や音を作る専用エディタも付属しています。素材集めに悩まず、すぐに制作を始められます。本記事では、Pyxelのインストールから解説します。入力処理、図形描画、当たり判定、サウンド再生まで、多彩な角度で紹介します。ゲームの配布方法や、リハビリ分野への応用アイデアまで、初心者の方に向けて丁寧にまとめました。

YOFUKASI LAB編集部
公開日:2026年8月28日
読了目安:22分

執筆・実機検証:YOFUKASI LAB運営者

理学療法士/Arduino・Pythonを使った医療機器制作・学会発表経験あり

Chapter 01 / Overview

01Pyxelとは|レトロ風ゲームを作れるPython製エンジン

Pyxelとは何かをPython・ドット絵・サウンド・専用エディタの特徴から解説した図

Pyxelの特徴

Pyxelは、Pythonでゲームを作るためのエンジンです。公式GitHubリポジトリによると、Kitao Takashi氏によって開発されました。ファミコンのような、レトロなゲーム機の雰囲気が特徴です。16色のカラーパレット、3枚のイメージバンク、8枚のタイルマップを持っています。同時に4チャンネルのサウンドを再生できます。仕様がシンプルなぶん、気軽にドット絵ゲームを楽しめます。

Pygameとの違い

当サイトでは、以前にPygameというライブラリも紹介しました。Pyxelとはどう違うのでしょうか。もっとも大きな違いは、専用のリソースエディタです。Pyxelには、画像や音を作るエディタが最初から付属しています。Pygameのように、外部の画像編集ソフトを別途用意する必要がありません。

表現力と自由度のトレードオフ

一方で、トレードオフもあります。Pyxelは画面サイズが最大255までです。色数も16色に制限されています。Pygameのような自由な解像度や、フルカラーの表現はできません。しかし、この制約こそがPyxelの個性です。あえて選択肢を絞ることで、迷わずに完成まで進めます。初心者にとっては、むしろ扱いやすい設計だと言えるでしょう。

項目 Pyxel Pygame
得意な表現 ドット絵・レトロ風 自由度の高いグラフィック全般
リソースエディタ 標準で付属 付属しない(外部ソフトが必要)
配布のしやすさ 専用形式やHTML変換に対応 PyInstallerなど別ツールが必要
学習の始めやすさ 非常に手軽 やや自由度が高い分、選択肢が多い

どちらが優れている、というものではありません。作りたいものに応じて選ぶとよいでしょう。

編集部想定シナリオ

Pygameで基本を学んだTさんは、次にPyxelを試してみた。画像素材を用意する手間がないことに驚いたという。エディタでドット絵を描き、そのままコードから呼び出せたのだ。素材探しに時間を取られず、アイデアをすぐに形にできる。この手軽さが、Pyxelならではの魅力だと感じたそうだ。



Chapter 02 / Installation

02インストール方法|pip install pyxelから動作確認まで

Pyxelのインストールからサンプルゲームを実行するまでの4ステップ

pipでインストールする

Pyxelは、Python3.7以降で動作します。まずはバージョンを確認しておきましょう。インストールは、pipコマンド1つで完了します。

pip install -U pyxel

Windows環境では、注意点があります。Pythonのインストール時に「Add python.exe to PATH」にチェックを入れておきましょう。これを忘れると、pyxelコマンドが認識されないことがあります。

Mac・Linuxでの準備

Macの場合は、Homebrewを使う方法が簡単です。事前にSDL2関連のパッケージを入れておきます。Linuxの場合は、libsdl2-devなどのパッケージを用意してから、pipでインストールします。

サンプルをコピーして動作確認する

インストールが終わったら、公式サンプルを試してみましょう。次のコマンドで、サンプル一式がコピーされます。

pyxel copy_examples

コピーされたフォルダの中に移動し、次のように実行します。

cd pyxel_examples
pyxel run 01_hello_pyxel.py

レトロな雰囲気のウィンドウが表示されれば、準備は完了です。

Chapter 03 / First Program

03最初のプログラム|updateとdrawの2つの関数

Pyxelのupdate関数とdraw関数によるゲームループの仕組み

最小構成のコード

Pyxelのプログラムには、決まった型があります。公式APIリファレンスでも紹介されている、基本の書き方です。

import pyxel
pyxel.init(160, 120)
def update():
    if pyxel.btnp(pyxel.KEY_Q):
        pyxel.quit()
def draw():
    pyxel.cls(0)
    pyxel.rect(10, 10, 20, 20, 11)
pyxel.run(update, draw)

各部分の役割

pyxel.init()があります。画面の幅と高さを指定して初期化します。注意点があります。画面サイズの上限は255までです。Pygameのような大画面には向きません。その分、レトロな表現に集中できます。update()関数は、状態を更新する処理です。draw()関数は、画面を描画する処理です。pyxel.run()に、この2つの関数を渡します。すると、自動的にループが回ります。

クラスを使った書き方

公式ドキュメントでは、クラスを使う書き方も推奨されています。規模が大きくなったときに、見通しがよくなるためです。

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()

ループが不要な場合はshow()も使える

動きのない、静止画のような表現もあるでしょう。その場合は、pyxel.show()が便利です。ループを書かずに、1回だけ描画して表示できます。

import pyxel
pyxel.init(120, 120)
pyxel.cls(1)
pyxel.circb(60, 60, 40, 7)
pyxel.show()

用途に応じて、run()show()を使い分けましょう。



Chapter 04 / Input

04入力を扱う|btnとbtnpの使い分け

Pyxelのbtnとbtnpの違いとキャラクター移動・ジャンプでの使い分け

btnpは押された瞬間だけを検知する

Pyxelには、入力を検知する関数が2つあります。pyxel.btnp()は、キーが押された瞬間だけを検知します。ボタンを押すたびに1回だけ処理したい場合に向いています。メニュー選択や、ジャンプ操作によく使われます。

def update():
    if pyxel.btnp(pyxel.KEY_SPACE):
        print("スペースキーが押されました")

btnは押され続けているかを検知する

pyxel.btn()は、キーが押され続けているかを毎フレーム確認します。キャラクターの移動など、なめらかな操作に向いています。

def update():
    if pyxel.btn(pyxel.KEY_RIGHT):
        player_x += 2

この2つの違いは、Pygameのイベント処理と似た関係です。用途に応じて、正しく使い分けましょう。

Chapter 05 / Graphics

05図形と画像を描画する

Pyxelのrect・circ・bltを使った図形と画像の描画方法

基本の図形描画

Pyxelには、多くの描画関数が用意されています。rect()で四角形、rectb()で四角形の輪郭を描けます。circ()で円、circb()で円の輪郭を描けます。色は、0〜15の数値で指定します。16色のパレットに対応した番号です。

def draw():
    pyxel.cls(0)              # 画面全体を色0でクリア
    pyxel.rect(10, 10, 30, 20, 8)   # 塗りつぶした四角形
    pyxel.circb(80, 60, 15, 11)     # 円の輪郭

画像を表示する

画像を表示するには、まずイメージバンクに読み込みます。そのあと、blt()関数で画面に描画します。

pyxel.image(0).load(0, 0, "assets/cat_16x16.png")
def draw():
    pyxel.cls(0)
    pyxel.blt(75, 45, 0, 0, 0, 16, 16)

blt()の引数には意味があります。表示先の座標、イメージバンク番号、読み込み元の座標、幅と高さの順です。慣れないうちは、公式サンプルの数値を真似てみるとよいでしょう。



Chapter 06 / Collision

06当たり判定の基本

Pyxelの当たり判定と壁での反射・frame_countの基本を解説した図

座標を比較して判定する

Pyxelには、PygameのRectのような専用クラスはありません。その代わり、座標を自分で比較する形で判定します。四角形同士の重なりは、次のような条件式で調べられます。

def is_colliding(x1, y1, w1, h1, x2, y2, w2, h2):
    return (x1 < x2 + w2 and x1 + w1 > x2 and
            y1 < y2 + h2 and y1 + h1 > y2)

タイルマップとの当たり判定

Pyxelには、便利な機能もあります。タイルマップ専用のcollide()という関数です。地形との衝突を、まとめて処理できます。マップを使ったアクションゲームを作る際に役立ちます。慣れてきたら、ぜひ試してみてください。

frame_countで時間経過を扱う

当たり判定と合わせて覚えておきたい機能があります。pyxel.frame_countです。ゲーム開始からの経過フレーム数を、自動で数えてくれる変数です。一定時間ごとに敵を出現させたり、点滅アニメーションを作ったりする際に活用できます。

def draw():
    # 16フレームごとに点滅させる
    if pyxel.frame_count % 16 < 8:
        pyxel.text(10, 10, "GAME OVER", 8)
Chapter 07 / Sound

07サウンドを鳴らす

効果音を定義して再生する

Pyxelのサウンドには、特徴があります。チップチューン風の音を、コード上で直接作れるのです。音楽ファイルを別途用意する必要はありません。

pyxel.sounds[0].set(
    note="c3e3g3",     # 音階
    tone="s",          # 音色(矩形波)
    volume="7",        # 音量
    effect="n",        # エフェクトなし
    speed=10,          # 再生速度
)
def update():
    if pyxel.btnp(pyxel.KEY_SPACE):
        pyxel.play(0, 0)  # チャンネル0でサウンド0を再生

BGMを再生する

複数のサウンドを組み合わせると、音楽トラック(Music)を作れます。pyxel.playm()を使えば、BGMとして再生できます。専用エディタを使えば、こうした音作りもマウス操作で行えます。次の章で紹介します。



Chapter 08 / Resource Editor

08専用リソースエディタを使う

Pyxel Editorとは

ここが、Pyxelならではの大きな特徴です。専用のリソースエディタが標準で付属しています。pyxel editコマンドで起動できます。画像、タイルマップ、サウンド、音楽を、マウス操作で作成できます。プログラミングの知識がなくても、素材作りだけは進められます。

pyxel edit my_resource.pyxres

エディタで保存したファイルは、.pyxresという拡張子になります。これをコードから読み込むには、pyxel.load()を使います。

pyxel.load("my_resource.pyxres")

画像編集ソフトと、音楽制作ソフトと、ゲームエンジンが一体になっている。そんなイメージを持つと分かりやすいでしょう。この統合された環境こそ、Pyxelが「ゲーム制作をゼロから」体験できる理由です。

Chapter 09 / Practice

09実践例:ボールが跳ね返るミニゲームを作る

これまでの知識を組み合わせる

ここまで学んだ内容を組み合わせて、簡単なミニゲームを作ってみましょう。画面の中をボールが動き回ります。壁にぶつかると跳ね返る、シンプルな仕組みです。

import pyxel
class App:
    def __init__(self):
        pyxel.init(160, 120, title="跳ね返るボール")
        self.x = 80
        self.y = 60
        self.dx = 2
        self.dy = 1
        pyxel.run(self.update, self.draw)
    def update(self):
        if pyxel.btnp(pyxel.KEY_Q):
            pyxel.quit()
        self.x += self.dx
        self.y += self.dy
        # 壁にぶつかったら向きを反転させる
        if self.x < 4 or self.x > pyxel.width - 4:
            self.dx *= -1
        if self.y < 4 or self.y > pyxel.height - 4:
            self.dy *= -1
    def draw(self):
        pyxel.cls(1)
        pyxel.circ(self.x, self.y, 4, 10)
App()

発展のヒント

このコードに、プレイヤーが操作するパドルを追加してみましょう。4章のbtn関数を使えば実装できます。6章で紹介した当たり判定と組み合わせれば、ブロック崩しに近づきます。少しずつ機能を足しながら、自分だけのゲームに育てていきましょう。



Chapter 10 / Distribution

10完成したゲームを配布する

Pyxel Editorでドット絵と音を作りゲームをHTMLやアプリとして配布する方法

pyxappファイルにまとめる

ゲームが完成したら、誰かに遊んでもらいたくなるでしょう。Pyxelには、専用の配布形式があります。.pyxappというファイルです。次のコマンドでまとめられます。

pyxel package APP_DIR STARTUP_SCRIPT_FILE

作成したファイルは、次のコマンドで実行できます。

pyxel play my_game.pyxapp

実行ファイルやHTMLに変換する

さらに便利な機能もあります。pyxel app2exeを使うと、実行ファイルに変換できます。Pythonの環境がないパソコンでも遊べるようになります。pyxel app2htmlを使うと、HTMLファイルに変換できます。対応ブラウザさえあれば、パソコンでもスマートフォンでも遊べます。手軽に友人へ共有したいときに便利な方法です。

Chapter 11 / Rehabilitation Applications

11医療・リハビリ分野での応用アイデア

手軽さを活かした試作ツール

ここからは、当サイトならではの視点です。Pyxelの手軽さは、リハビリ分野の試作にも活かせます。3つのアイデアを紹介します。

1シンプルな反応課題ゲーム

画面に現れる図形を、素早くボタンで撃ち落とすようなミニゲームです。Pyxelの16色パレットは、視覚的にはっきりした刺激を作りやすい特徴があります。注意機能や反応速度の、簡易的な評価課題に応用できます。

2記憶・順序課題のミニゲーム

決まった順番で光るマスを覚えて、同じ順番で入力するゲームです。認知トレーニングの分野でよく使われる課題です。Pyxelのシンプルな描画機能だけで、十分に実装できます。

3素早い試作とフィードバック

Pyxelの強みは、素材作りから実装までを1つの環境で完結できる点です。臨床のアイデアを、その場ですぐに試作できます。患者さんやスタッフからのフィードバックを、短いサイクルで反映しやすくなります。

実運用の前に確認すべきこと

これらは、あくまでアイデアの一例です。実際に臨床現場で使う場合は、有効性の検証が欠かせません。専門家への相談も必要です。それでも、「思いついたらすぐ形にできる」という体験は、学習や臨床アイデアの検証において大きな価値を持ちます。



Chapter 12 / Troubleshooting

12よくあるエラーと対処法

症状別の対処早見表

症状 主な原因 対処法
pyxelコマンドが見つからない PATHが通っていない Python導入時にPATH設定を確認する(2章参照)
画面サイズを大きくしてもエラーになる 幅・高さの上限(255)を超えている 画面サイズを255以下に収める(3章参照)
画像が表示されない ファイルパスの間違い、読み込み順の誤り load()のパスと、blt()の引数を再確認する(5章参照)
音が鳴らない sounds[]への設定忘れ、チャンネル番号の重複 set()での定義とplay()の引数を確認する(7章参照)
pyxel editが起動しない グラフィック環境の問題、ファイルパスの誤り ターミナルのエラーメッセージを確認する(8章参照)

公式ドキュメントを活用する

編集部想定シナリオ

初めて画像を読み込んだRさんは、キャラクターが表示されないというトラブルに直面した。コードを見直しても、原因が分からなかった。そこで、blt()の引数の順番を1つずつ確認してみた。すると、読み込み元の座標と表示先の座標を、取り違えていたことに気づいた。修正すると、無事に表示された。引数の多い関数ほど、公式リファレンスと照らし合わせる習慣が役立ちます。

Chapter 13 / FAQ

13よくある質問

基本のQ&A

Q.PyxelとPygame、どちらを使えばいいですか?
A.レトロなドット絵ゲームを手早く作りたいなら、Pyxelがおすすめです。専用のリソースエディタが付属しており、画像や音を用意しなくても始められます。より自由な表現や、高解像度のグラフィックを扱いたい場合は、Pygameが向いています。どちらもPythonの知識を活かせるので、両方を試してみるのもよい方法です。

Q.Pyxelは日本人が開発したというのは本当ですか?
A.本当です。PyxelはKitao Takashi氏によって開発された、オープンソースのゲームエンジンです。GitHub上でソースコードが公開されており、誰でも自由に利用できます。日本語を含む複数言語でドキュメントが整備されている点も特徴です。

応用のQ&A

Q.画像や音楽の素材を用意できません。それでもゲームは作れますか?
A.作れます。Pyxelには専用のリソースエディタが付属しています。ドット絵や効果音を、ソフト上で直接作成できます。外部の素材サイトを探し回る必要がありません。この手軽さが、Pyxelの大きな魅力の1つです。

Q.作ったゲームをスマートフォンで遊んでもらうことはできますか?
A.できます。pyxel app2htmlコマンドを使うと、ゲームをHTMLファイルに変換できます。変換したファイルは、対応するWebブラウザがあれば、パソコンだけでなくスマートフォンやタブレットでも動作します。手軽に友人へ共有できる方法です。

関連記事・参考資料

基礎を学べる記事

  1. YOFUKASI LAB「Pygame入門|Pythonでゲームを作る方法」2026年, https://yofukasi-lab-wp.com/2026/09/05/pygame-python-game/
  2. YOFUKASI LAB「Arduinoは何言語?C言語・C++との違いを初心者向けに解説」2026年, https://yofukasi-lab-wp.com/2026/09/04/arduino-language-c-cpp/
  3. YOFUKASI LAB「電子工作入門|初心者が最初に覚える基本と始め方」2026年, https://yofukasi-lab-wp.com/2026/09/04/electronics-beginner-guide/

応用・関連記事

  1. YOFUKASI LAB「ArduinoとPythonとセンサーを用いたリハビリテーションへの応用」2026年, https://yofukasi-lab-wp.com/2026/07/11/rehabilitation/
  2. YOFUKASI LAB「PythonによるDelsysの筋電図のCSVデータを可視化」2026年, https://yofukasi-lab-wp.com/2026/07/13/delays_emg/
  3. YOFUKASI LAB「Arduinoのコンパイルエラー一覧」2026年, https://yofukasi-lab-wp.com/2026/07/30/error/

参考資料(外部・一次情報)

  1. GitHub「kitao/pyxel:A retro game engine for Python」, https://github.com/kitao/pyxel
  2. Pyxel Documentation「API Reference」, https://kitao.github.io/pyxel/web/api-reference/
  3. DevelopersIO「【Pythonでゲームを作ろう!】レトロな2Dゲームを作ってみた!」, https://dev.classmethod.jp/articles/gamedev-with-python-pyxel1/

※本記事は個人の学習・趣味用途を対象にしています。リハビリ・医療分野での実運用を検討する場合は、有効性の検証や専門家への相談を必ず行ってください。


関連記事

特集記事

コメント

この記事へのコメントはありません。

TOP
CLOSE