【python】pythonでゲームを作るって有りなのか真面目に考えた結果の選択肢
pythonでゲームを作るって有りなのか真面目に考えた結果の選択肢
pythonで使えるゲームライブラリ
最近のゲーム界隈のプログラミングの流行として、ゲームエンジンてのがあります。有名なものだと、Unityとか、UnrealEngineとかですね。こいつらは、ライブラリというよりは、ゲーム向けの統合開発環境のようなイメージですね。昔は、フレームワークって言ったりもしたけど、とりあえずゲームフレームワーク、ゲームエンジンってそんな明確な分類はしていないようです。
それに対して、ゲームに必要な画像の読み込みや表示、制御などのAPIを提供するのみのものを、ゲームライブラリと呼んでるっぽいですね。
python界隈ではゲームを作ろうとすると、フレームワークというよりはライブラリと呼ばれる分類のものを利用することになりそうです。
pygame
ちょっと有名なゲームライブラリにSDLってやつがありまして、そいつをpythonでラッピングしたのがpygameってことになります。
XNAとか、enchant.jsとかよりは、優しくないですが、SDL自体はとてもメジャーなライブラリということになりますので、pythonでゲーム作ろうと思ったら、とりあえず一番手に上がってくるのではないでしょうか?
現在絶賛とん挫中のうちのテトリス作ってみた企画もpygameです。
初心者がpythonとpygameでテトリス風ゲームを作ってみた #03
youtubeを見るとサンプルが何個かあります。
Helicopter shoot em' up game made with Python and PyGame
ただ、なんだかんだ「ちゃんと」ゲームの形に仕上げて、1個のまとまったゲームとして使えそうだな?と納得するサンプルには出会えないなという印象です。
また、ほかの言語界隈では、SDL2が現在の主流のため、SDLベースのpygameはソフトウェアレンダリングだし、なんか処理が遅いなぁって感じのようです。
もう少しで、SDL2に対応した新バージョンが出るようです。
期待して待ちましょう。
公式サイト:
https://www.pygame.org/
日本語ドキュメント:
westplain.sakuraweb.com
インストール:
pip install pygame
PySDL2
一時期pygameのテンションが下がりまくって、SDL2対応も見送りされて、これからはpySDL2がpygameの後継になるでしょって言われていたライブラリです。
python用に作られたゲームライブラリというよりは、pythonによるAPIラッパーという感じなので、必要なものは自分で作る意気込みが必要そうです。
これでちゃんとゲーム作ったよっていう記事がそんなにみあたりません。。。これぐらいですかね?
公式サイト:
pysdl2.readthedocs.io
インストール:
pip install pysdl2
pyglet
ディ〇ニーのピンクの豚さんではないです。
マルチプラットフォームのウィンドウイング、マルチメディアライブラリです。ゲームにとどまらず、リッチなUIのアプリケーションの開発もターゲットにしており、フルスクリーンのアプリ製作も可能です。
ウィンドウ制御、イベントハンドリング、OpenGLグラフィックス、画像と動画の読み込み、サウンドと音楽の再生をサポートしています。画像や、音楽のサポート形式も豊富で、様々な形式のものを読み込むことができます。
また、依存ライブラリがなく単独で動作するという特徴があります。
pygletで作ったminecraftクローンです。
公式ページ:
pyglet.readthedocs.io
インストール
pip install pyglet
panda3D
3Dでゲームを作るなら、これが本命でしょうか?
ゲームライブラリというよりは、冒頭に話したゲームフレームワークに属するようです。というのも、
「THE OPEN SOURCE FRAMEWORK FOR 3D RENDERING AND GAMES」
と、公式でうたってますもんね。そして、ゲームのみならず3DCGレンダリングフレームワークとしても機能するので、3DCGシーンの構築などにも役に立ちそうです。UnityやUE4にならぶとまでは言わないまでも、python環境でのフレームワークといえばpanda3Dになるのではないでしょうか?
Panda3Dサンプル:
www.youtube.com
公式ページ:
www.panda3d.org
インストール
pip install Panda3D
kivy
pythonでゲーム作れないかな?ということで検索すると必ず出てくるのがkivyです。
kivy自体はゲームライブラリではありません。
NUI(Natural User Interface)構築のためのUIライブラリという位置づけで開発されています。マルチタッチイベントに対応しており、マウス、キーボード、TUIO、OS固有の広範な入力をサポートしています。OpenGL ES 2のVertext Buffer Objectとshadersを使用したグラフィックライブラリ、マルチタッチ対応のさまざまなウィジェット
、カスタムウィジェットを容易にデザインするための中間言語Kvを持つ、などの特徴があります。
pythonでアプリにGUIを導入しようと思うとコレって感じですかね?
そういう感じなので、日本語の資料も多く公式のドキュメントもほとんど日本語化されています。
ユーザーによる解説ページも非常に豊富ですので使いやすいかと思います。
描画や画像読み込みなどの機能も豊富で、それらkivyの持つ様々な機能を使ってゲームを作ることも可能です。
kivyゲームサンプル:
www.youtube.com
公式ページ:
kivy.org
インストール:
- 最新のpipとwheelを持っていることを確認します:
python -m pip install --upgrade pip wheel setuptools
- 依存関係をインストールします(gstreamer(120MB)が必要ない場合はスキップできます、 Kivy’s dependencies(Kivyの依存関係) を参照してください)
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew python -m pip install kivy.deps.gstreamer
- Python 3.5の場合には、glewの代わりに使用できるangleを追加でインストールできます:
python -m pip install kivy.deps.angle
- Kivyをインストールします:
python -m pip install kivy
Pyxel
何気に、今回一押しのライブラリです。
Pyxel (ピクセル) はPython向けのレトロゲームエンジンです。
使える色は16色のみ、同時に再生できる音は4音までなど、レトロゲーム機を意識したシンプルな仕様で、Pythonでドット絵スタイルのゲームづくりが気軽に楽しめます。
ファミコン世代にはたまらんこだわりを感じるゲームライブラリです。
ファンタジーコンソールを参考に作られており、昔の8ビット機のようなゲームの製作をターゲットにしています。
Python向けレトロゲーム開発環境 Pyxel をリリースしました! pipコマンドでインストールできます。 #gamedev #pixelart #pico8 #tic80https://t.co/IBrdA68So7 pic.twitter.com/ABB8OSnTvp
— Takashi Kitao (@kitao) 2018年7月29日
製作者が日本人なことと、じわじわ人気が出てきているので資料も増え続けています。
そして、ゲーム制作時に無駄に高機能なものを突き付けられ途方に暮れることもないです。まずは、このライブラリでじっくり本来の「ゲーム」ってなんだ?というところを学んでみるのに最適ではないでしょうか?
公式ページ:
pyxel/README.ja.md at master · kitao/pyxel · GitHub
インストール:
pip install -U pyxel