2012年5月11日金曜日

わんこ



おやおや?
なにやら長いホースが館から正門まで伸びているぞ?

ホースの先にはなんといぬさくやが・・・

・・・どうしたのいぬさくや? 


「めいりんがねてばっかりなので、おしおきします」
(ずずず...)


まぁ!さすがいぬさくや、瀟洒な事を考えます。

館に発射役のメイドを待機させ、正門へ向かういぬさくや。
しっぽをぱたぱたと振り、とても楽しそうです。


2012年5月3日木曜日

pygameを使おうと思ってる方へのちょっとしたアレ

@brainfs:しらねさんの仕事めっちゃたのしそうだな。ってかpygameで作って得られた知見について語って欲しい

というポストを見て、ハッとしたので!
定期的にこの教訓は書き残そう!と思ったけど、ブログ習慣がもう完全に身から離れてて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なコーディングを楽しんでる方も居たら何か一緒に話せたらいいな!!!