2010年11月02日

仲間


≪追記≫
Draw Callsは、主にCPUに依存してるボトルネック
Cpuが処理の為にGPUにデータを送らなければならないたびに発生する・・らしい
(自分メモに書いてあったのから抜粋、再確認せず)


前回から、描画部分を少なくしてみた。具体的には、フロントミラーに写る遠景を半分ほど削って、ミニマップを超簡素化し、メインカメラ、フロントカメラの描画もある一定の距離までに留める事でポリゴンの描画を少なくしてみた。あと、車の周りに配置してた4点ライトも削除。変更後にStatusを見ると、無駄にレンダリングしてたのがよくわかるぐらい数値が減った。。しかし、再度ノートPCでAE86単走してみたら、ほんっの少し動作は軽くなったけど、遊ぶには程遠い状態だった。。FPSカウンターは、アイドリング時前回5→8ぐらい 走行時前回15くらい?→15〜25で動作 最高30

AE86_statics.jpg


公式じゃないけど、Draw Callsは、CPU処理だって外人さんがネット上に書いてた。前回の記事でDraw Callsが10万1万でpretty badっていうぐらいだから、1000以下の数字なんて決してでかい値ではないはずなんだけど。。てか、3Dの処理ってグラボ(ビデオカード)が大事なのか・・

自分、PC機器には詳しくないので前回までよくわからなかったが、コチラのサイトさんの詳しい情報を参考にさせてもらうと、サブ機のノートPCのグラボがチップセットというのがすごく厳しい気もしてきた。。オンボードとか、チップセット内臓のようなのは3Dゲームするんじゃねぇっ、かー、ぺっ!てどっかで見た気もする。。しかし、実際にノートPCで、ゲーム会社の運営サバが重くない時にサクサク目で動く3Dゲームもした事があるし、チップセット内臓はぜんぜん動かないってのは認めたくないんだけどなぁ。。新しいPCとノートのスペックが離れすぎてるせいか、動作検証が厳しい;

fd3s_statics.jpg


ポリゴンの削減とか、マテリアル、テクスなんかもまだ改良できる余地はあるけど、スクリプト毎の負荷の検証とかにまでなると、自分一人じゃ厳しい。もう一つ問題があって、処理負荷と違う、競合の問題の可能性で多分それがあるから、ヌルヌル動いてるメインPCの環境でも、変な挙動になり、勝手にスピンするという状態がたまに出る。それは、負荷が重いと顕著に出まくるんだけど、競合の問題がまず、発生してると思うので検証しないといけない・・、のだがよくわかんないので、処理負荷を下げて回避しようとしてる状態;


そういえば、数日前にようやく彼と連絡がついたので、今日ひさしぶりに話せそう
信頼出来る人だけど、仕事忙しいかなぁ・・
posted by OK2 | Comment(0) | TrackBack(0) | GAME CREATE | このブログの読者になる | 更新情報をチェックする

2010年10月31日

最適化


スペックがそんなに高くないPCでも快適にPlayするにはどうすればいいんだろう・・
ちょっと調べてみた(英文から抜粋してるので、精度にこだわる人は下記原文へ↓)

メッシュを出来るだけ結合
マテリアルやテクスチャを出来るだけ共有
明かりが動かないなら、ライトマッパーを使おう(焼き付ける=Bake)
次世代ゲームさえ、ライトマップに頼ってる
ライトマップされた環境で1つか2つのダイナミックライトを使うだけにしよう
キャラクターのメッシュレンダラーは1つにしないといけない、2つにすると2倍かかる
マテリアルも1つにするべき、絶対に必要な時でも2,3で留めるべき
普通のデスクトップゲームは、15−60の骨を使ってる
モバイルも含めた状態なら、30本の骨以下で抑えるべき
モバイルプラットフォームなら、300から1500三角ポリに抑えるべき
デスクトップなら500から6000
PS3 or Xbox360とかの次世代機でもたいてい1キャラクターあたり5000〜7000
骨を再利用しよう、そうすれば、異なるキャラクターでアニメーションを使いまわせる
Quality Settings でPCスペックに応じて6段階に表示などを調整してくれてるみたい!、各設定の変更も可能 、あー、だから、サブマシンで動作させた時にテクスチャの表示とか粗い状態にしてなんとか動く感じにしてくれてたのか・・これは、ありがたい

performance_optimization_Unity3d


Unity上でライトマッパーが搭載されてるみたいなので、Bakeする事が出来る
ちなみにNormal map??(紫色のRGB)もTextureのinspector内で簡単にBakeできる
(↑Generate Bumpmapのとこ)
LightのRender Modeは、Importantにしまくるとパフォーマンス落ちるんだろうな・・
pixel Lightを使いすぎない事
Statsの Draw Callsは、52万50万2000(5hundred 2thousand)が最大 10万1万(10thousand)はpretty bad(下の動画内で開始数分後、外人さんが説明してます)
ライトもレイヤーにマスクかけて使うとか
Raycastは、メッシュに対して使うと遅い、各フレームでたくさんのRaycastを使わない
Raycastを速くする為にculling maskを使ってよ(マスクの選別?)
FindObjectsOfType,FindGameObjectWithTag,GameObjectFindは負荷が重い
便利だけど使いすぎを避けて、Callsがすぐ増えていくよ、静的変数を使ってね
UnityのjavaScriptについて) C++の50%遅く、従来のjavascriptより20倍速い
DynamicTypingは遅く、Static Typingなら、C#と同じパフォーマンス
下記リンクのOptimizationの動画の後半部分で鳥の大群のDemoを見せているけど、ScriptによってパフォーマンスのFPSが1付近から段階的に45くらいまで向上してる、こうも変わるのか。1度見ただけではよくわからなかったので、そのうちまた見よう
あと、気になったのがGame Windowの上部横に小さく設置されてるStatistics WindowのFPSカウントとCar tutorialなどに付属してるFPSカウンターの値が一致しない、同じ環境でPlayして、前者は、100〜170FPS近くで留まって、後者は60〜70付近 

≪追記≫

Unity2.6 Free版では、Terrain→CreateLightmapsはあって地形に対してライトの影響を焼付けできたけど、Window→Lightmappingがなかった。Lightmappingは、Unity Prp版だけ??BlenderでBakeするか・・

原文&最適化につながりそうな参考文書↓
posted by OK2 | Comment(0) | TrackBack(0) | GAME CREATE | このブログの読者になる | 更新情報をチェックする

2010年10月28日

うーん。。



レースゲーVer1.6 メイン作業PCのPlay
(敵車の奇妙な走り方は仕様 / vimeoで再エンコくらってるらしく、画質粗いです)




ゲーム画面の右上隅に表示される数字はFPSカウンター、ここの数字でPlay中のパフォーマンスがわかる・・らしい
現在の作業PCで、Ver1.6をPlayしてると平均的に60は出てる
前使ってたノートPCで試しにplayしてみたら、うげっ。テクスチャは効いてないし、めちゃくちゃカクカクしてた;ここまでパフォーマンスが落ちるのか。。で、右上の値を見ると5とかで正常作動せず、スピンしまくりだった。。最高でも15とか。。(各PCスペックは一番下に記載)

メインPC使っても、(作業&Play)中だと正常動作するのに、キャプチャソフトで録画しながらPlayしたりすると、リソース不足なのか、一瞬、操作を受け付けなくなり、挙動が極端に不安定になる、走ってて、スピンするようなトコじゃないのに、いきなりスピンしたりして、なかなか普通のPlayの時みたいには走れない。PC買ったのが2,3ヶ月前だから、普通に考えたら、PCスペックが自分のPC以下の人は多いと思うので、これでは、せっかくDLしてPlayしてもらっても、カクカク状態のスピン多発で正常作動してない人がいる気がする。。うー、気づかなかった、申し訳ない

低スペックでも動くのを作りたかったなぁ・・
車体(タイヤ・シャーシ別)のポリ数は、AE86が500、FDとS13が各2000ほど
他OBのポリ数も気になるが、スクリプトに変に負荷かかってるのがあるのか・・
デフォルトのCar TutorialサンプルのPlayで、既にカクカク状態だとしたらもうどうしょうもないけど、うーん。。

PCスペック参考↓
posted by OK2 | Comment(0) | TrackBack(0) | GAME CREATE | このブログの読者になる | 更新情報をチェックする

2010年10月12日

始まりor終わり



≪追記≫

Seesaaブログのアップロード上限25MBにひっかかってしまいました。。
25MB以上OKで、Unity3Dとhtmlの拡張子でも、うp出来るトコがあればいいんですが、
条件にあうとこがなかなか見つからないので、以後、まとめてZIP配布となります;
ローカルで遊んでねorz

何か動きがあれば、ココに書きます→レースゲー更新履歴.txt
クリック先→Click here to start download..からDLできます→ZIP (Ver1.6)


//////////////////////////////////////////////////////////////////


数日前に、とあるきっかけで車ゲーをいじる事に
そういえば、Unityに車ゲーのサンプルがあったなと思って、いじってみた
これ→http://unity3d.com/support/old-resources/tutorials/car-tutorial
サンプル起動ですぐに走れる、Unity3Dの中の人達の力すごいな
自分はプログラミングとかの知識がほぼないので、信頼出来てScript出来るような人がいればデータを丸投げしたいと思ってた。一人、心当たりがあるので連絡してみたが、返事はまだない、そうこうしてるうちに結局、自分で作業してしまった・・
(上の動画:見下ろし視点 下の動画:ドライバー視点)※音注意



+自分がやった事≫(車のBody OB→以前、背景素材用に作ってたローポリの車)差し替え+(音楽+効果音)差し替え+その他↓
(カウントダウン、ホイール回転数、スピード、トータルタイム(1周のみ)、視点切り替え)などを実装
ヤバスギル・スキルな外人さんのお力に助けられまくり。。自分一人じゃ作れそうにない




実際に遊べます↓(音注意)リンク先でプラグインをクリックで入れるとPlayできます
(操作方法はゲーム画面記載/Chromeのみ右クリックから画面を最大化できます)

86.html↑記事上からDLしてね
IEとChromeで動作確認済、時間あったら何か追加しよう・・気分転換にたまに遊んでみてね!


BGEとUnity3D≫
GameBlender2.49bでは、ゲームの公開がexe形式やBlend形式になり、配布→ローカルで遊ぶ事になる
対して、Unity3Dは、プラグインを一度入れればネット越しにリンククリックでそのまま遊べる、でもってデータを差し替えたらURLそのままで簡単に即バージョンあp公開出来るのもすばらしー

最近の気になる≫
HTML5 WebGL用のライブラリでゲーム作成にこれから期待?できそうなGLGEなんかも少し気になってChromiumとか使ってWebGL見てみた。
BlenderからExportできるWebGL用エクスポーター使えばjavascriptでデータが出るのを確認出来たし、それとGLGEなんかとあわせたらゲームも作れるの??と思ったけど・・、
現状、やっぱ単純なゲーム比較じゃノウハウのあるUnityの方がまだまだ効率よくいいものが作れるのかな 自分にとっては、どちらもムズいけど;javascriptベースってのは共通してそうだから、遊びながらいじって技術的に何か使いまわせたらいいな
posted by OK2 | Comment(0) | TrackBack(0) | GAME CREATE | このブログの読者になる | 更新情報をチェックする

2010年09月22日

おはよう




※2.49bのgame blenderで作成


☆動画に関して☆(動画は実際よりカクカクしてます)

以前は敵に与えたダメージ&HPの減少などは表示できてたけど、HUDとしてoverlayさせるとうまく動作してくれなくなった;開始48秒くらいの0がダメージ数、敵の横の数字がHPメータ
52秒〜戦闘の後の数字の動画は、シンプルなテストで、ランダムな数(10〜30)を取得してダメージと敵のHPを表示させてる(テストでは動作出来てるって状態;)
now loading画面も、テストでは動いててlinkで読み込むと正常動作しなかったのでAppendで読み込んで正常動作してたが、また止まっているように感じる・・



完成したGUIコマンドは、正常に動いてて、展開した文字を色変化だとイメージした感じにならなかったので反転表示させたら、処理が2倍に膨らんだ;
ピンクのボタンがペルソナボタン、召還獣みたいなもので3Dで素材作成は時間かかるなーと思ったので、とりあえず偉大な3人に登場していただいた
青のボタンはスキル(技)ボタン、ペルソナの3人の選択に合わせて(3個,2個,3個)のスキルを切り替えてる
アイテムボタンも3選択まで 他はボタンを押したらmessageを飛ばすようにまでは出来てるので回転GUIコマンド単体では完成してる
GUI コマンド操作◆マウススクロールで回転、◆クリックでnext window or 決定 ◆キャンセルや戻るは右クリック


☆使う機会がなくなりそうな素材達の動画☆



ペルソナステータスと出現させる予定だったペルソナ板ポリ
particleは、アニメみたいに粒子をそのまま使えないので、全部テクスチャと回転移動で表現(攻撃particle、ペルソナ発動時particle、煙、スキル発動時2つ)
あ、Actionもぼちぼち作ってたけど、撮るの忘れてた。またaction使えなかったなー





☆おわーり☆

記事前半に書いてたようなパターンがすごく多いんだよなぁ、テストの段階ではうまく動作してても、ちょっと複雑な処理が重なると挙動が不安定になったりする
(不安定になったりするってのは、logicが全く同じ状況なのに、実行すると、あるpropのデバッグ表示が3回に1回はTrueになって、2回はfalseになったりみたいで毎回違う状態になる)
製作中8,9割は自分の理解不足&誤解とgame blenderのバグと混同しそうな制約(決まりごと)が原因だと常々思っていたので、なんとか試行錯誤してみたんだけど、1割は明らかにおかしな所がある


2.49b gameblender・・おしいなぁ・・、すごくおしい気がする。こんなに直感的にlogic組めてガシガシ、プログラムしていけるのに・・・、制約がかなりあるし、その点をバグと勘違いしまいそうな点と、テストの段階でうまくいっても、実際に複雑な処理を重ねると挙動が不安定になるところ・・

開発者の人達は、大変な労力がかかっているんだろうし、ここまで出来るだけでも個人的には、logicの組み方とかで十分楽しめたけど・・
現状、これ以上製作しても、logic&OBの複雑さに加わって不安定な挙動で作業量が爆発的にかさみそうなので(実際、かさんでた;)、ここでひとまず終わろうと思う
あー、もっとキャラクタ増やして、声入れてもらいたかったなぁー!!ペルソナ3みたいにしたかった・・ ※音出ます→http://www.nicovideo.jp/watch/sm11940467
おまけ:松岡修造→http://www.nicovideo.jp/watch/sm4407075
posted by OK2 | Comment(0) | TrackBack(0) | GAME CREATE | このブログの読者になる | 更新情報をチェックする

2010年09月09日

こんばんわ



前回のブログから進んだ事

fieldシーン、HUD+シーン名作成&表示
GUIボタン next windowに行った時に、アクティブウィンドウだけ反応してほしいが、他のウィンドウも反応してしまうので、非アクティブウィンドウの入力関係をOFFにするように
クリック、右クリックで、ウィンドウの表示、非表示の連続がうまくいってなかったので、修正
GUIボタン回転時にボタンの色変化がアニメ終了まで無駄に続いていたので、特定部分以外移動時にボタンの色変化を消すように ・tikeiの衝突判定OBの追加 ・jelly追加 衝突したら戦闘開始←シーン切り替え
etc..


1年前に作ってた小道具を流用してfieldを簡単に作ってみました
で、牛子とパンダさんをパーティにして動かすテスト↓



〜17秒 牛子衝突判定(なし)&パンダさん(あり)壁(なし/default) 
//2人それぞれにキーボード入力を受け付けるように
〜29秒 パンダさんの設定 (near ・ truck to) 
//牛子のみキー操作受付、パンダさんはnearセンサとedit object→truckto actuator
29秒〜 パンダさんの設定 (near ・ truck to・motion・parent) 
//牛子のみキー操作受付、パンダさんを子にし、motionを保持
44秒〜 パンダさんの設定 (near ・ truck to・motionnasi・parent) 
//牛子のみキー操作受付、パンダさんを子にし、motionなし
56秒〜 パンダさんの設定 (near.truckto.motionnasi.parent.slowpar.offset100.)
1分9秒〜パンダさんの設定 (near.truckto.motionnasi.parent.slowpar.offset40.)

これは、数日前のテスト動画で、現状は、壁に衝突判定OBを作って触れるとそれ以上行けないようにしてます

直近の動作画面はこんな感じで↓簡易HUDをつけて、簡易敵jelly(≠スライ○)も出現させました。

ゲーム画面909.png


HUDは、メータの横リサイズ・アニメを作成してIPOで設定した状態でパラメータ(変数)の連携はとってないですorz四角形のとこが、顔グラ設置予定、下の数字は、HPとSPです
jellyの方は、キャラにTrucktoで近づかせて、近づく距離がせばまるとジャンプして近寄らせて、衝突と同時にシーン切り替えまでは出来てます。予定では、field→戦闘→fieldだったけど、loading中アニメがコンピュータ処理と同期させないで処理中だけloopアニメするのは簡単だったので、field→loading→戦闘→loading→fieldに変更しました。

////////////////////////////////////////////////////////////////////////////////////////////

技術的なお話し

いままでAppend or LinkのAppendばっかり使ってましたが、
Sceneを複数使う場合、OBの編集が一括で出来るLinkがすごい便利な事に気がついて、使っていこうと思いました。

・・んが、2.49b の game blenderでは、Link OBを使うとTruck toがうまく動かない
同Scene内のOB同士なら問題なく動いてるんだけど・・といった問題が起こる。

Linkは、Link元OBは編集出来てもLink先は編集できないし(make localにするって手もあるが・・)logicがLink先でほとんどいじれない、logic内の propertyは動くので、ああ編集できるんだとわかり、編集してsave 再loadすると編集結果がなくなって元に戻るwどうやらLinkは、元ファイルだけをいじる仕様らしい
じゃ、Groupはどうかなと調べると、Group複製だと、位置回転サイズ変更なんか出来ても、logicが全く見れないし、さらに他OBからの信号も受け取ってくれなくなる・・・?ような気がした
これに関してLinkで複製されたLink先OBは、Link元OBとは別ファイルでも他OBの信号を受信してくれる

考えたあげく、Link出来るトコは、Linkして、問題が勃発するようなとこはAppend OBで出来るだけ確実に動作させる方がいいかなと現状、落ち着いてます。
Truck to についても、する側をAppendでされる側をLinkだと動作しました。

/////////////////////////////////////////////////////////////////////////////////////////////

これは一例で、gameblenderは作業ごとに高機能実現途中ゆえの?未実装な部分や自分の理解不足でかなり足がひっかかるので、テストだけ繰り返して成果物が進まないという・・orz
しかし、プログラミング・スクリプトに注力したくないし、英語翻訳しながら試行錯誤する時間を考えたら・・、まっだまだパワフルなはず、うんそうだ
国内外問わずネットの情報で助けられてる部分は多々あるので、提供者に感謝しつつ、また作業を続けていこう
posted by OK2 | Comment(0) | GAME CREATE | このブログの読者になる | 更新情報をチェックする