[過去ログ] DXライブラリ 総合スレッド その5 (1001レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
413(1): 2010/01/01(金)17:46 ID:+lDteCCN(1/14) AAS
ゼタセカンドでさえ遅れるのを許されない設計の場合
まず
・設計を改める
削れる処理はないか。
もっと速い処理はないか。 特に算術演算はコンパイラでさえ最適化しきれない「なにがやりてーんだタココラ」って効率の悪いコードになりがち。
セオリーから外れてないか。 ウェイトを「カウントアップ」でやろうとしてないか。
などを見直し、それでもダメだ!1ヨクトセカンドでも遅れるのは許されぬ!ってとき
省5
414(1): 2010/01/01(金)17:52 ID:+lDteCCN(2/14) AAS
格闘ゲームだったら体力が0になったとき義塾大学になるのはもちろんだが、
気絶などのステータスもある。何のモーションのとき何が何でキャンセルできるのか
そういうことも常に演算する対象だが、これを
if(cancell_OK == 1)
とかやってるやつは基本がなってない。
char cancell_OK, cancell_NG, cancell_only_special・・・・・・・
省3
417: 2010/01/01(金)18:20 ID:+lDteCCN(3/14) AAS
結局のところ、格闘ゲームにおけるステータスってのは0か1しかない。
分かるだろ。の
419(1): 2010/01/01(金)18:23 ID:+lDteCCN(4/14) AAS
カウントアップウェイト
信じられないことに、いまだに良く見るんだが
for(i=0, i < During; i++)
のこと。逆も然り。
for(i=During; i !=0; i--)
のような
これ数えてる間、CPUがずっとそれに占有されるだろ
省1
421: 2010/01/01(金)18:27 ID:+lDteCCN(5/14) AAS
ウェイトやスリープってのは、
「何もしないんだから、その間他の処理をさせよう」
ってのが基本だ。また、そうでないとウェイトしてる間他の何の処理もできないから
極端に言えば画面が停止することになる。
普通は、OS越しに駆動するゲームだったらOSに用意されるスリープ命令を使う。
OSがない組み込みなどで動かすゲームなら、割り込みを使う。
426: 2010/01/01(金)19:28 ID:+lDteCCN(6/14) AAS
時間軸で考えると、
例えば「1時間後に働けよ」というのがスリープの考え方。
「じゃあその1時間何をするか」。
1時間、ずーっと1,2,3,4,5,6,7,8,・・・・と声に出して数え上げるとする。
これじゃ、なんか用事があっても何も出来ない。
「じゃあ本でも読むか」となれば、別の処理(本を読んで知識を得る)が出来る。
どっちやっててもシステム時間として1時間は過ぎるが
省3
427(4): 2010/01/01(金)19:31 ID:+lDteCCN(7/14) AAS
また、ループも
for(i=0; i < During; i++){
Plus += Exactly;
}
ではなく、
if(During == FuckingAss){
Plus += Exactly;
省9
430: 2010/01/01(金)19:37 ID:+lDteCCN(8/14) AAS
デッドライン、つまりここまでに必ず処理終えろ!っていう最終期限が決まってるシステムでは
forループではなく、こういうふうな展開したループもどきが使われることも多い。
難点は、見た目素人っぽいこと
それ以外は何してるか分かりやすくていいのだが
「こっちのほうが速いよ」ってことをなかなか認めてもらえないのが難といえば難
これを、デッドラインまで繰り返す
デッドラインが決まっているということはおおよそのアタリがつくし、
省1
431: 2010/01/01(金)19:42 ID:+lDteCCN(9/14) AAS
まあこういう小ネタは
「もっと軽くしたい」ってときの最終手段なので
根本から遅いのであれば設計を見直したほうがいいよ
435(1): 2010/01/01(金)19:50 ID:+lDteCCN(10/14) AAS
俺やったら、スリープはCPUに直結する。
例えばPowerPCはタイマユニットを持っているので
これに値を入れてカウントさせる。アンダーフローと同時に割り込みが入る。
その割り込みでタスクを駆動させる。
こういうハード寄りもいいとこのタイマ管理ってのはアプリで使うもんじゃないというし、
まあそれもそうだろうが実現する場合これが一番いいのだ。
ハードウェアのタイマクロック計上はタスクじゃないので、一切影響を及ぼさない。
省2
438: 2010/01/01(金)20:05 ID:+lDteCCN(11/14) AAS
PowerPCは例えだし
サンプルといっても、やりたい事を記した関数しかないのだがw
割り込みはソフトウェアじゃない。
割り込みは、ベクタ方式の場合ベクタベースからオフセットしたところにプログラムカウンタが来るだけだから
別にソースで表すもんじゃない。
また、PowerPCならベクタじゃない。
441: 2010/01/01(金)20:10 ID:+lDteCCN(12/14) AAS
でもハード寄りプログラムは面白い。
普通あんまり使わないウォッチドッグタイマ
どうしても更新したいのに処理が終わらなかったとき
これで強制的に更新したりできる
たまにはハード寄りのオブジェクトを作ってみても面白い
443: 2010/01/01(金)20:50 ID:+lDteCCN(13/14) AAS
考え方はx86系統でも同じなのに・・・w
449: 2010/01/01(金)23:30 ID:+lDteCCN(14/14) AAS
なんかコンパイラを優秀な最適化屋と思ってるのがいるが、
logとビットシフトでは10秒も差がある。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.039s