2012年5月11日金曜日
2012年5月3日木曜日
pygameを使おうと思ってる方へのちょっとしたアレ
@brainfs:しらねさんの仕事めっちゃたのしそうだな。ってかpygameで作って得られた知見について語って欲しい
というポストを見て、ハッとしたので!
定期的にこの教訓は書き残そう!と思ったけど、ブログ習慣がもう完全に身から離れててwww
ついったーの副作用だ~。゜(゜´^♉^`゜)゜。
でも実際、
僕が改めて説明すべき事なんて大して思いつかず、
もちろん勉強になった事はたくさんあったけど、pygameと直接関係無い事(python標準ライブラリの学習)・・・などを多く含んでて、
質問でもされないと厳しいかなって!!
・・・
・・・僕の説明力の問題ですね!はいすんません!!
というわけで、まーここでは
~~~~~~~~~~~~~~(˘・▿・˘)~~~~~~~~~~~~~~~~
※環境
Lenovo G570
Windows7 Home SP1
Core i5-2410M 2.30GHz 64bit
RAM 4GB
python 2.7.3 32bit
**初心者のためのpygameガイド**
http://www.unixuser.org/~euske/doc/pygame/newbieguide-j.html
訳モノですが、分かりやすく説明されています。
ぶっちゃけ語りたい事はここで説明されてるかも
※ "5.汚れたRectをアニメーションさせる" の項はいささか大胆なので惑わされぬよう。
”何も描画しない状態で28FPSしか出ないスペックのPCを日本でお持ちの方”は、恐らくpythonなど使ってないはずです。
・・・が、計測自体はpythonを扱う上で重要なので、まず最初に測れる環境を整えるべし。
( time.clock()で測った値の差分を見るくらいで、それらしい値が見れます )
**公式**
http://www.pygame.org/
ライブラリのDLはこちらから
※ア、amd64bit環境でも32bit版を動かした所、import pygameの時点で例外が発生しました。
僕が英文よく読まなかったからですけど、
Downloadページには32bit版しか置いてなく、64bit版は
>>There are some pre release binaries for 64bit windows, and for python 2.7 at
と書かれたリンクの先にあるので、お間違いなく!
(もちろんpython自体も64bit版が必要です)
**ドキュメント日本語訳**
公式にあるドキュメントの日本語訳です。
http://westplain.sakuraweb.com/
ボク英語苦手なんで、これが無かったら何もできなかった(*˘▿˘ 人)
組んでる最中、暇さえあればひたすらこれを見渡し続けておくといいです。
・・・ので、
果たしてpygameで作れるか否かを判断するのは、
"どれくらいの描画を要するゲームか"を考えるといいです。
**ボクの環境で60FPSを下回った処理**
640*480のサーフェイスを3度描画(blit)した程度
**各合成の速度差**
640*480のSurfaceを通常描画(option無しblit)を 1 とした場合、
640*480のSurfaceを加算合成 は 40倍以上、
640*480のSurfaceをset_alphaで半透過を指定して描画 は3.5倍ほどでした。
**描画開始処理による速度差**
32*32*300のSurfaceを1度描画した場合を 1 とした場合、
32*32のSurfaceを300回描画した場合は4.5倍 でした
・ゲームのベースとなるシステム。
(Androidで言うアクティビティ管理のようなもの。と、それに連なる入力、描画処理の統括。)
・キー選択とマウス選択に対応したキーコンフィグ画面。
・マップチップ画像を読み込んで、タイル状に並べたりできるマップエディタ
(えんぴつ、矩形塗りつぶし、線分描画、塗りつぶし と言った描画実装が特に勉強になった)
・キャラクターを動かし、アクションゲームの基本的な実装。
・マップを読み込んで、チップとキャラクターの衝突判定を実装。
(キャラクターがチップを2*3枚ほど跨ぐサイズで、正しく処理できるか心配だったけど、がんばった!ちょうがんばった!この辺綺麗にできて感動したので、同じような事やってる人と設計共有したい!!)
ってことで、
今はpygameとオサラバして、Direct2Dで上記のものを再構築してます。。
pygameの他、DirectXのDirectなコーディングを楽しんでる方も居たら何か一緒に話せたらいいな!!!
というポストを見て、ハッとしたので!
定期的にこの教訓は書き残そう!と思ったけど、ブログ習慣がもう完全に身から離れててwww
ついったーの副作用だ~。゜(゜´^♉^`゜)゜。
でも実際、
僕が改めて説明すべき事なんて大して思いつかず、
もちろん勉強になった事はたくさんあったけど、pygameと直接関係無い事(python標準ライブラリの学習)・・・などを多く含んでて、
質問でもされないと厳しいかなって!!
・・・
・・・僕の説明力の問題ですね!はいすんません!!
というわけで、まーここでは
pygameを使おうと思ってる方へのちょっとしたつぶやき
くらいのものを、白根なりに書いておきます。~~~~~~~~~~~~~~(˘・▿・˘)~~~~~~~~~~~~~~~~
※環境
Lenovo G570
Windows7 Home SP1
Core i5-2410M 2.30GHz 64bit
RAM 4GB
python 2.7.3 32bit
▼オススメリンク
まずは3つほど。**初心者のためのpygameガイド**
http://www.unixuser.org/~euske/doc/pygame/newbieguide-j.html
訳モノですが、分かりやすく説明されています。
ぶっちゃけ語りたい事はここで説明されてるかも
※ "5.汚れたRectをアニメーションさせる" の項はいささか大胆なので惑わされぬよう。
”何も描画しない状態で28FPSしか出ないスペックのPCを日本でお持ちの方”は、恐らくpythonなど使ってないはずです。
・・・が、計測自体はpythonを扱う上で重要なので、まず最初に測れる環境を整えるべし。
( time.clock()で測った値の差分を見るくらいで、それらしい値が見れます )
**公式**
http://www.pygame.org/
ライブラリのDLはこちらから
※ア、amd64bit環境でも32bit版を動かした所、import pygameの時点で例外が発生しました。
僕が英文よく読まなかったからですけど、
Downloadページには32bit版しか置いてなく、64bit版は
>>There are some pre release binaries for 64bit windows, and for python 2.7 at
と書かれたリンクの先にあるので、お間違いなく!
(もちろんpython自体も64bit版が必要です)
**ドキュメント日本語訳**
公式にあるドキュメントの日本語訳です。
http://westplain.sakuraweb.com/
ボク英語苦手なんで、これが無かったら何もできなかった(*˘▿˘ 人)
組んでる最中、暇さえあればひたすらこれを見渡し続けておくといいです。
▼描画速度の実例
描画速度を上回る処理なんて、ガッチガチに組んだ衝突判定とか、ほんの限られるとおもいます。・・・ので、
果たしてpygameで作れるか否かを判断するのは、
"どれくらいの描画を要するゲームか"を考えるといいです。
**ボクの環境で60FPSを下回った処理**
640*480のサーフェイスを3度描画(blit)した程度
**各合成の速度差**
640*480のSurfaceを通常描画(option無しblit)を 1 とした場合、
640*480のSurfaceを加算合成 は 40倍以上、
640*480のSurfaceをset_alphaで半透過を指定して描画 は3.5倍ほどでした。
**描画開始処理による速度差**
32*32*300のSurfaceを1度描画した場合を 1 とした場合、
32*32のSurfaceを300回描画した場合は4.5倍 でした
▼作ったものまとめ
何か役立てる事があったら、相談に乗れたらいいなって。・ゲームのベースとなるシステム。
(Androidで言うアクティビティ管理のようなもの。と、それに連なる入力、描画処理の統括。)
・キー選択とマウス選択に対応したキーコンフィグ画面。
・マップチップ画像を読み込んで、タイル状に並べたりできるマップエディタ
(えんぴつ、矩形塗りつぶし、線分描画、塗りつぶし と言った描画実装が特に勉強になった)
・キャラクターを動かし、アクションゲームの基本的な実装。
・マップを読み込んで、チップとキャラクターの衝突判定を実装。
(キャラクターがチップを2*3枚ほど跨ぐサイズで、正しく処理できるか心配だったけど、がんばった!ちょうがんばった!この辺綺麗にできて感動したので、同じような事やってる人と設計共有したい!!)
▼現状
@sirane:@koi_zoom1 pyでゲーム作ってたんですが、やっぱ想定してた仕様では重くなりすぎるという事で、同じものをDirect2Dの上に構築しなおしてる具合っす。C++とpyだともちろん毛色全然違うんで、構造コピーというより目で参照して作り直す感じになってるという!楽しいですけど!ってことで、
今はpygameとオサラバして、Direct2Dで上記のものを再構築してます。。
pygameの他、DirectXのDirectなコーディングを楽しんでる方も居たら何か一緒に話せたらいいな!!!
登録:
投稿 (Atom)