LoginSignup
63
85

More than 3 years have passed since last update.

Python Kivyでゲームを作る

Last updated at Posted at 2017-11-12

みんなのPython勉強会でLTを行った内容を元に再構成しています。

内容としてはPyconJP2017の発表で削ったネタになります。
Kivy(Python)でどんなゲームが作れるかの説明と実際に作る際に参考になりそうなゲームのソースコードを載せています。

ゲームを作るメリット

よく言われるメリットは以下の感じです。

  • アルゴリズムの勉強
  • プログラミング言語の理解をみにつける
  • コンピュータのしくみを理解する
  • 比較的改良しやすい
  • 自動操作などでAIの学習に使えるかも

また個人的にはゲームは画面などに結果が反映されるので学習意欲がわきやすいというものがあります。

代表的なゲームエンジンについて

おそらく日本で最もポピュラーなものは以下の3つだと思います。
優れた機能、充実した日本語訳のマニュアル、豊富なサンプルとアセットがあります

  • Unity(C#)
  • UnrealEngine4 (BulePrints/C++)
  • Amazon Lumberyard (C++)

ただし個人的には画面のレイアウトなど覚えることも多いのでプログラミングに特化した学習をしたいという人には不向きかもしれません。

またゲームエンジンは他にもたくさんの種類がありcocos2d,Godot Engine,Game maker といったものもあります。

UnrealEnginePythonについて

UnrealEngine4をPythonで動かそうということをしている人もいます。
EuroPython2017でAAA GAMES WITH UNREAL ENGINE 4 AND PYTHONという公演内容で発表もされています。

日本でも導入の仕方についての解説記事があります。
UnrealEnginePythonをちょっとだけ試す

Godot Engine のGD Scriptについて

フリーのゲームエンジンであるGodot Engineの開発言語の一つであるGD ScriptもPythonライクの形式で書けるそうです。

またこれとは別にPythonでの対応も進んでいるようです。C++のAPIをCythonを使用してアクセスするようです。EuroPython2017で公演もしています。

Pythonのゲームをつくるライブラリ

Pythonでゲームを作るライブラリはいくつか出ています。
以下がよく聞かれるものの一覧です。

  • Pygame
  • Kivy
  • KivEnt
  • Pyglet
  • Renpy
  • Tkinter

各ライブラリの紹介ですが、
Pythonでゲームを作るライブラリーに関してはPygameが一番ポピュラーかと思います。
日本でもたくさんの紹介がblogなどにあります。

Kivyに関しては省略します。
PygameとKivyはともにSDL2を介して動いているのでできることはあまり変わらないです。
といいますかKivyは以前のバージョンではpygameを介してSDL2を動かしていました。

KivEntはKivyの派生でKivyを元にしたゲームライブラリです。国内での使用例はおそらくないと思います

Pygletは使用したことがないのでよく分かってないので詳細はリンク先のwikipediaのページを見てください。

Renpyはノベルゲームを作成するライブラリーで海外でノベルゲームを作成する際はよく使用されているみたいです。
日本でも使用してゲームを作成されている方もいます。

TkinterはPythonをインストールする際についてくる標準ライブラリです。インストールが簡単なのでPythnでプログラミングの勉強をする際に使用されることがよくあるようです。ゲームで使用する場合いですと12歳からはじめる ゼロからの Pythonゲームプログラミング教室という書籍が出版されています。

Pythonで作れるゲームについて

図1.png

  • スーパーファミコンレベル
  • 2Dカジュアルゲームの作成が多い
  • 3Dは得意ではない

作れるゲームですがスーパーファミコン時代の2Dカジュアルゲームならできます。
昨今の3DのリアルタイムのFPSの様なゲームの作成は描画処理の問題があり難しいです。

Pygameでの参考書籍

Pygameに関しては日本語の書籍があります

図2.jpg

  • ゲームを作りながら楽しく学べるPythonプログラミング (https://www.amazon.co.jp/dp/B06XRQS8PN/)
  • マインスイーパー、テトリスなどゲームのアルゴリズムの解説も載っています

ただしこの書籍、 オンデマンドプリントなので書店にはおかれてないです。
Amazonで印刷かKindleでの販売しか入手できません。
ゲームはアルゴリズム自体は変わらないのでそういう意味では中古で本や他の言語のゲームのチュートリアルみてもできるかと思います。

Kivyで作成できるゲームについて

公式サイトでは紹介されていないGithubで公開されているKivyで作成されたゲームを以下で紹介します。

暗記系

図3.png

マインスイーパー

図4.png

https://github.com/pipy/minesweeper
Python2系のみ動作
出来に難がある

2048

パターン1

図5.png

Kivyのコアディベロッパーの Mathieu Virbelが開発
2048のクローン
そこそこ話題になった

パターン2

図6.png

https://github.com/mvasilkov/kb/tree/master/6_2048
書籍(Kivy Blueprints)のサンプルコード
2048のクローン

Floppy Birdのクローン

KivyBird

図7.png

https://github.com/mvasilkov/kb/tree/master/7_KivyBird
書籍(Kivy Blueprints)のサンプルコード

FlappyKivy

図8.png

シューティングゲーム

図9.png

日本の方が作成
https://torina.top/detail/308/
https://bitbucket.org/toritoritorina/kvgames

シューティングゲーム

図10.png

書籍(Kivy Blueprints
)のサンプルコード

インベーダーゲーム

図11.png

書籍(Kivy - Interactive Applications and Games in Python Second Edition)のサンプルコード

オセロ

図12.png

Python2.7でのみ実行
Kv Languageで作成されていない

テトリス

1

図13.png

テトリスはブロックの消去などのアルゴリズムの関係ですこし内容が難しいです

2

図14.png

スタート画面や音楽もついている

Life game

日本の方でも作られた方がいるみたいです。

ブロック崩し

63
85
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
85