Skip to main content

Pyxel-Physics-Engine

日本語 | English

日本語

概要

レトロゲームエンジンPyxelを基盤に開発された軽量で、プログラミング初心者向けの2D物理演算フレームワークです.

pyxel との違い

pyxelは描画・音・入力機能などを提供する優れたフレームワークですが、本格的なゲームを作る上で必須となる「物理演算」「オブジェクト管理」は開発者が一から実装する必要があります。そこで、これらの車輪の再発明を肩代わりを行い、実装の上で必要となる数学・物理・プログラミングの知識がなくても本格的なゲーム開発が行えるように設計したのが本フレームワークです。

1. 座標ではなくオブジェクト単位で考える

pyxelでは座標を個別に管理しますが、本フレームワークではゲーム内に登場する「プレイヤー」「ボール」「ブロック」といった物理的な実体をそれぞれ一つのオブジェクトとして管理することで、各要素の更新(update)や描画(draw)の処理をひとまとめにしてコードを綺麗に保つことが出来ます。

2. 当たり判定の最適化

通常$N$個のオブジェクトの当たり判定を行うには、それらのオブジェクトの組み合わせを考えておよそ$N^2$回の計算を必要とします。 ですが、本フレームワークではこの当たり判定の処理を数学的知識を用いて最適化することによって、およそ理想的には$N\log{N}$回の計算に落とし込むことが出来ます。

例えば、$100$個オブジェクトがあったとき、通常は$10,000$回の衝突処理を行う必要がありますが、これを理想的には$460$回にまで減らすことが出来ます。

3. 物理演算

アクションゲームにおけるジャンプ、2つの物体の衝突による跳ね返り、バネの挙動などは、高校レベル〜大学教養レベルの物理学(力学)の知識を必要とします。一方で本フレームワークを使用することで、あなたはオブジェクトの「当たり判定の大きさ」「重さ」「跳ね返りやすさ」といったパラメーターを設定するだけで物理的な動きを実装することが可能です。

対象ユーザー

Pyxel-Physics-Engineは特に以下の項目に当てはまるような人を対象に開発を行っています。 (もちろん、本フレームワークは誰でもMITライセンスの範囲内で自由に使用可能です!)

  • ifやforは分かるが、ゲームはどうやって作れば...?という人 (初心者)
  • 学校でpyxelを使ったプログラミングの学習を行なっていたが、もっと本格的なゲームが作りたくなった人 (初心者)
  • 将来Unityなど他ゲームエンジンに興味があり、基本的な知識を習得したい人 (中級者)
  • とりあえずゲームのアイデアを手っ取り早くプロトタイプとして形にしたい人 (中級者~)

特徴

  • 知識がなくても使いやすい
    • 直感的な仕組み。App,World を作って add するだけで、より直感的にゲームが作ることができます!
    • 豊富なデモと日本語によるドキュメント (予定)
    • 衝突判定といったゲーム制作の上で必須の処理をPyxel-Physics-Engine側で最適化!高度な数学の知識は必要ありません
  • ゲームエンジンUnityの設計思想、用語に準拠
    • もし将来本格的なゲーム開発がしたい場合、ゲームエンジンの中で一位二位を争う知名度であるUnityにスムーズな移行ができます!

インストール方法 & クイックスタート

pip install pyxel-physics-engine
import pyxphys 
import pyxel

class Ball(pyxphys.GameObject):
    color : int = 6 # ボールの色
    radius : int = 10 # ボールの半径

    def __init__(self):
        super().__init__(x=100, y=20)
        self.name = "ball"
        self.vx = 0
        self.vy = -4
        self.add_collider(pyxphys.CircleCollider(self.radius))
    
    def update(self):
        if self.y > 190:
            self.vy *= -0.9
            self.y = 190

    def draw(self):
        pyxel.circ(self.x, self.y, self.radius, self.color)

# 初期設定
app = pyxphys.App(200,200) # アプリ本体
world = pyxphys.World(gravity = 0.9) # アプリの中における世界
app.add_world(world) # ゲーム本体に、世界を追加

world.add_object(Ball()) # "world"という世界にBallオブジェクトを追加

app.run() # アプリを実行

API仕様

基本構造

クラス名 説明
App アプリ本体。Appが保有しているすべてのWorldの描画をここで行います
World GameObjectが配置できる仮想的な空間です
GameObject 実際のゲーム上における物理的な実体です。複数個のColliderを保有します。
Collider 衝突や接触といった判定を検知します。

English

This framework enables you to use a physic object with a retro game-engine Pyxel.

Metadata

Release files for pyxel-physics-engine 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyxel-physics-engine 0.2.0
File Size Uploaded
pyxel_physics_engine-0.2.0.tar.gz 13.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyxel-physics-engine 0.2.0
File Interpreter ABI Platform
pyxel_physics_engine-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 29.2 kB

Release files / pyxel_physics_engine-0.2.0.tar.gz

Download URL pyxel_physics_engine-0.2.0.tar.gz
Size 13.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4f87a20a268c370dd8abc7b5a303a09c703ae28801495758b5dc4bd6687bc5a7
BLAKE2b-256 checksum
How to use checksums
4734836b7cdbdb73da1656b4ba3bc932172bffbd91809da077b93f97a21a0506
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / pyxel_physics_engine-0.2.0-py3-none-any.whl

Download URL pyxel_physics_engine-0.2.0-py3-none-any.whl
Size 16.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7b9338f05834af88b793ac5ddac551340a5b3355a94505a295462cadda111ee7
BLAKE2b-256 checksum
How to use checksums
dee24bb4bb9e07bb9c45a40075c7c7f017489ec2072a122256ad6eaa7b606869
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page