以前python のpyxelというゲームエンジンで2Dゲームを作ってみたという記事を書いたのですが、これだとスマホに移植が難しい。そこで、今回はスマホのアプリを作れるGUIライブラリ「kivy」を使ってみよう。というお話です。
こちらは前回のpyxelと違って、日本語の情報も少なくて手間取ってしまいました。同じように悩む方がいそうなのでインストールからサンプルを動かすところまでを書いてみます。
インストールできません!
ここ https://pyky.github.io/kivy-doc-ja/installation/installation-windows.html や、ここ https://algorithm.joho.info/programming/python/kivy-install/ を参考に、インストールしようとするんだけど、コマンドプロンプトに赤い文字が出てきて止まってしまう。なぜなのか・・・ 簡単な話で、kivy公式サイトに python2.7, 3.5~3.7に対応と書いてある。僕のWinPythonは3.8.3だったからダメだったんです。すぐにWinPython3.7.7をダウンロード・・・ kivy入りました!
さらにあとでわかったのですが、Kivy言語にも対応した開発環境VS Codeを使いたいためWinPythonのパッケージの中では、3.7.x.xcodをおすすめします (2020.6.23時点では、3.7系の最新は3.7.7.1cod)
サンプル動きません!
さて、kivyをインストールできたのでサンプルプログラムを動かそうとしたら、実行時にコマンドプロンプトに以下のようなログが出た。そして、ウィンドウが開き、「Kivy Fatal Error」以下のようなメッセージが表示され、アプリケーションが終了してしまった。
D:\Documants\WPy64-3771cod\scripts\kivy_examples>python 01_hello_kivy.py
[INFO ] [Logger ] Record log in D:\Documants\WPy64-3771cod\settings\.kivy\logs\kivy_20-06-23_5.txt
[INFO ] [deps ] Successfully imported "kivy_deps.gstreamer" 0.2.0
[INFO ] [deps ] Successfully imported "kivy_deps.glew" 0.2.0
[INFO ] [deps ] Successfully imported "kivy_deps.sdl2" 0.2.0
[INFO ] [Kivy ] v1.11.1
[INFO ] [Kivy ] Installed at "D:\Documants\WPy64-3771cod\python-3.7.7.amd64\lib\site-packages\kivy\__init__.py"
[INFO ] [Python ] v3.7.7 (tags/v3.7.7:d7c567b08f, Mar 10 2020, 10:41:24) [MSC v.1900 64 bit (AMD64)]
[INFO ] [Python ] Interpreter at "D:\Documants\WPy64-3771cod\python-3.7.7.amd64\python.exe"
[INFO ] [Factory ] 184 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL" graphics system
[INFO ] [GL ] GLEW initialization succeeded
[INFO ] [GL ] No framebuffers extension is supported
[INFO ] [GL ] Backend used <glew>
[INFO ] [GL ] OpenGL version <b'1.1.0'>
[INFO ] [GL ] OpenGL vendor <b'Microsoft Corporation'>
[INFO ] [GL ] OpenGL renderer <b'GDI Generic'>
[INFO ] [GL ] OpenGL parsed version: 1, 1
[CRITICAL] [GL ] Minimum required OpenGL version (2.0) NOT found!
OpenGL version detected: 1.1
Version: b'1.1.0'
Vendor: b'Microsoft Corporation'
Renderer: b'GDI Generic'
Try upgrading your graphics drivers and/or your graphics hardware in case of problems.
The application will leave now.
ふむふむ、どうやらOpenGLが古いようですな。 ビデオボードのドライバが古いのか? しかし、デバイスマネージャーから確認しても、「最新です」としか書いてないし、スペックを調べても、OpenGL 3以降に対応してそうだし。。。
いろいろ調べていくと、
ここ https://qiita.com/eleven-junichi2/items/7f38a248f042f4a14ab8 にたどり着いた。
こいつを参考にして、サンプルプログラムの先頭にimport os
os.environ ['KIVY_GL_BACKEND'] = 'angle_sdl2'
を付けたら、動くようになりました。 長かった。。。
(注意:この方法はWindowsで動作します。
https://qiita.com/eleven-junichi2/items/7f38a248f042f4a14ab8
kivyで使用するOpenGLのバックエンドをangle_sdl2に変更します。
angle_sdl2を利用するにはkivy.deps.sdl2とkivy.deps.angleが必要なので、
pipでkivy.deps.sdl2とkivy.deps.angleをインストールします。python -m pip install kivy.deps.sdl2
python -m pip install kivy.deps.angle
方法#1
https://qiita.com/eleven-junichi2/items/7f38a248f042f4a14ab8
次に、コードの先頭にimport os
os.environ ['KIVY_GL_BACKEND'] = 'angle_sdl2'
と記述すれば実行できます。
まとめ
- Kivyは3.8未対応なので、3.7までにする
- Kivy言語にも対応した開発環境VS Codeを使いたいので3.7.x.xcodがおすすめ
- OpenGL 2.0以上なのに読み込んでくれない場合はOpenGLのバックエンドをangle_sdl2に変更する
参考リンク
参考 User’s Guide(翻訳済み) » Installation on Windows(翻訳済み)
参考 Winpython + kivyのインストール
参考 kivyがopenGL 2.0を読み込んでくれない
コメント