- 1 名前:名前は開発中のものです。 mailto:sage [2009/12/04(金) 16:49:13 ID:7SKA4I5z]
- Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、 「DXライブラリ」に関するスレッドです。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 【公式】 homepage2.nifty.com/natupaji/DxLib/ 【過去スレ】 DXライブラリ 総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1197468399/ DXライブラリ 総合スレッド 2008 pc11.2ch.net/test/read.cgi/gamedev/1224923873/ DXライブラリ 総合スレッド その3 pc11.2ch.net/test/read.cgi/gamedev/1238429676/ DXライブラリ 総合スレッド その4 pc11.2ch.net/test/read.cgi/gamedev/1249822550/
- 347 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 00:12:09 ID:kPK58Sfx]
- >>346
そこらへんがDXライブラリじゃ駄目といわれる所以だよね 出来なくても無いけど2Dほど簡単ではないし、それならちょっと頑張って他のライブラリ使ったほうがずっと天井が高い
- 348 名前:名前は開発中のものです。 mailto:さ [2009/12/27(日) 00:28:01 ID:MBrvOJgD]
- 結局このライブラリは3Dに関してはまだ遅れているってことなのかな
つい最近対応したばかりだから仕方ない話だといえばそれまでなんだけど
- 349 名前:332 mailto:sage [2009/12/27(日) 01:02:13 ID:bc5V7EbG]
- >>346
>X、FBX,、PMD+VMDの話題は前にも見た気がする 情報ありがとう。 前スレ見てなかったけど、Blenderの出力したFBXは問題ないようですね。 ただUIが独特で個人的には使いにくかったので・・・ あとToyStudioの出力したXファイルも問題ないみたいなのでこっちも良いかも。
- 350 名前:346 mailto:sage [2009/12/27(日) 01:27:46 ID:GGjOngEr]
- >>347
つっても、あくまで現時点ね >>348が言うように、3D対応されたばかりで機能が足らないのは仕方ない 個人的には期待してる PMD化するのは手間だけど PMD+VMDは3Dを扱う敷居がぐっと下がる モーションが連番で別ファイルになってるのも、使ってみればかなり便利 最終的にはMV1にしてもいいしね 3D機能の充実は時間かかるだろうけど、作者にはがんばってもらいたい
- 351 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 13:06:29 ID:2vbWXkV1]
- でもあまり機能が充実しすぎるとお手軽ライブラリじゃなくなるのよね。
高機能で簡単、というのはただ単に高機能というだけよりよっぽど作るのが難しい。 DXライブラリはお手軽なところが受けてるだろうから、あまり機能追加しすぎて複雑にならないことを祈る。
- 352 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 14:00:34 ID:uhSQPV5X]
- DXライブラリの3Dライブラリは、安定するまでに2年くらい必要だろう
同程度のライブラリでDrakGDKを使ってれば良いと思う。 C言語の初級からでも扱える3Dライブラリで難易度が低い これで3Dの技術を身に付けて、 2年後くらいにDXライブラリ3Dを始めるのもよい 3Dは表面化されない小さいトラブルが多い。 そして、わけのわからん専門用語も出てくるし....
- 353 名前:名前は開発中のものです。 [2009/12/27(日) 17:13:24 ID:z8YG6h4b]
- 今サンプルを参考にちょろっと創った感じだと、現時点でもかなり簡単に
ある程度のレベルのものは創れそうだよ。 少なくとも64以上のものは簡単に作れるだろうし、努力しだいではPS2レベルのも出来るんだろう。 本格的に目指すのでない限りは更新速度や質問できる環境などを考えると、 DXライブラリでぜんぜんいいと思った。 まだ3Dモデルを動かすとこまでしかやってないけどね。
- 354 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 17:59:53 ID:yZAsy6xS]
- 直接質問できる環境は大きいよな
しかし管理人さんって何者なんだろうな
- 355 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 18:49:06 ID:8drOPqxx]
- 作者って14歳の中のひとなんだろうか…
- 356 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 18:51:42 ID:A9L3SGsA]
- クラスとか使ってC++に最適化されたDxLibも作って欲しいわ
- 357 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 18:56:35 ID:8drOPqxx]
- Dx.
まで入力したら入力補間で命令がズラっと出るという夢をみた。 いや、まぁ自分で改造すればいいのかもしれんけど…
- 358 名前:名前は開発中のものです。 [2009/12/27(日) 19:16:58 ID:z8YG6h4b]
- これってブラーとか鏡(レンダリングした結果をテクスチャに)とかはまだ実装されてない?
- 359 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 20:07:35 ID:M0Cw0Z6W]
- >>357
DxLib::
- 360 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 20:23:19 ID:LDM1qCXB]
- すいませんこのソフトってオブジェクト指向を理解してないと利用できないのでしょうか?
- 361 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 20:32:01 ID:jKh1EiXg]
- 自分はHSPから移動してきたので
変数は全てグローバル変数で管理して 各ファンクションもサブルーチンとしてしか認識していなかったが 普通に作れた
- 362 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 20:37:49 ID:bc5V7EbG]
- >>358
「ブラー」はモデルを半透明にして重ねて描画じゃダメ? 「鏡」は3Dに限らず描画先を指定できないと思うので無理そう。 >>360 C言語の知識だけで十分だよ。 まあ、14歳でも使えるらしいので。
- 363 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 21:54:18 ID:mBfODTUH]
- ガチで99%の変数をグローバルにして
ゲーム完成させたらソースコードが12000行とかになって悶絶した クラス使わないなら関数化は必須に近い・・・ VCの左画面様様だわ
- 364 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 22:06:33 ID:8drOPqxx]
- 俺もHSPから移行組だったからグローバル当たり前が染み付いていたけど
アクセス制限が邪魔なら全部publicでもいいからクラス使った方が 変数名とか関数名の管理が楽だぞ
- 365 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 01:07:57 ID:3r1xx2ry]
- >>358
>ブラーとか鏡 今試してみたら3Dでも、SetDrawScreen()でテクスチャにも レンダリングできたよ。管理人さんが昨日直してくれたバージョンだと DrawExtendGraph()でも表示できた。 ずらしたり拡大縮小すれば、DirectXの本とかに良く載っているAAや 被写界深度の表現も出来そうな感じ。 できないのはテクスチャをロックしてピクセル単位でいじること じゃないかな。つまりブラーや鏡とかは可能だけどレンダリングした 画像にポスト処理とかはできない…と思う。 ただこのへんの処理やソートとかは、DirectX直接いじる時と同じで 自分で実装しないといけないぽいので、その意味では既出のように 低レベル(ハード寄り)なので2D機能よりは敷居高い部分あるかも。
- 366 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 03:34:23 ID:9l/NWr9W]
- すみません。
このエラーは何が原因なんでしょうか? LINK : fatal error LNK1104:DxLib_VC2005用.exe' を開くことができません。
- 367 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 03:42:52 ID:/F5FiFDi]
- 良い感じにPMDの問題報告→修正されてきてるな
- 368 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 07:59:40 ID:TSFI1pm5]
- >>366
DXライブラリのエラーではない、以上。 変な場所で実行してるんじゃなければ、 exeファイルのパーミッション確認しとけ。
- 369 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 10:27:15 ID:9l/NWr9W]
- わかりました。ありがとうございます。
- 370 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 11:44:34 ID:Us5hvkZh]
- >>362
14歳より歳いってて、Cは授業で少しくらいの自分がいまいち理解できないとちょっと悲しくなるタイトルだと思うんだ。
- 371 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 11:45:38 ID:dBTW62Xp]
- 俺なんか14歳以下どころか猫以下だぜ・・・
- 372 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 11:49:28 ID:jpOTUZve]
- あの猫高知能すぎだよな…
- 373 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 11:57:25 ID:yuCthtY8]
- >>365
SetDrawScreen関数は任意のテクスチャを描画先に指定できないと思うんですがやり方があるんでしょうか?
- 374 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 12:43:57 ID:u/qep0of]
- あんなレベルの猫や猿が標準だったら今頃世界から人間滅ぼされてるよな・・・
- 375 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 12:58:13 ID:3EFD++9F]
- 俺は逆にグローバル関数出来るだけ使わないように拘ってたが
色々面倒になってグローバルも積極的に使うようにしたがな
- 376 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 12:59:10 ID:3EFD++9F]
- 間違えた
×グローバル関数 ○グローバル変数 まあどうでもいいことだけど
- 377 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 13:16:08 ID:jpOTUZve]
- 最新(掲示板)の奴、ウィンドウの拡大縮小すると変にならね?
- 378 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 13:46:53 ID:yuCthtY8]
- >>377
掲示板(2009/12/27(Sun) 13:35)に投稿されているバージョンで試してみたけど確かに挙動が違う。 ウィンドウの拡縮が反映されてないね。
- 379 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 14:29:28 ID:vxFbJ2Ow]
- ifってeles使わなくてもifで固めればeles使う必要あるのかな?
- 380 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 14:41:43 ID:TSFI1pm5]
- >>379
どこから突っ込めばいいんだい?
- 381 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 14:49:03 ID:YIPGDrjp]
- 日本語からじゃない?
- 382 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 14:54:14 ID:jpOTUZve]
- スレチって所からだな
- 383 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 15:42:28 ID:0XgsQP9X]
- >>379
とりあえずマジレスするが まずスレチな 次にelseな elseを使わないと想定していないエラーが起きる場合もあるから else ifって形にするべき
- 384 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 15:43:55 ID:vxFbJ2Ow]
- すいませんでした。
else ifのところのelseをぬいてもおなじように動いたので、 いるのかなと思って C言語のすれにいきます。
- 385 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 15:46:54 ID:vxFbJ2Ow]
- ですよね、些細な疑問にマジレスありです。
すっきりしました^^
- 386 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 16:46:29 ID:EmomTfPw]
- 友蔵心の俳句
- 387 名前:365 mailto:sage [2009/12/28(月) 17:40:27 ID:3r1xx2ry]
- >>373
試したことはないけどpng等から作ったテクスチャとか 「任意なテクスチャ」には無理だと思う。 たぶんテクスチャにレンダリングしたい時は、描画可能な テクスチャを専用で作らないといけないはず。 具体的には、SetDrawValidAlphaChannelGraphCreateFlag()等で 指定してから、MakeGraph()で作ったテクスチャになら レンダリングできる。 あとはそのテクスチャを普通にDrawGraph()とかで描画できるけど UVやビルボードに使えるかはまだ試してないので分からない。 このへんを含めてリファレンスには載っていない関数も かなり多いので、Dxlibのソースや公式掲示板の過去ログ とか見ると使い方も含めていろいろ発見あるかも。
- 388 名前:373 mailto:sage [2009/12/28(月) 18:48:57 ID:yuCthtY8]
- >>387
ありがとうございます。 SetDrawScreen関数はMakeGraph関数で作成したグラフィックも指定できるんですね。 リファレンスに書かれていない機能だったとは・・・
- 389 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 18:52:49 ID:dBTW62Xp]
- ほうほうそれは知らんかった
なんで隠すんだろうな
- 390 名前:名前は開発中のものです。 mailto:sage [2009/12/29(火) 00:11:37 ID:MjH8+OO8]
- 関係ないスレだろうけど、ぐぐって検索したらここが見つかったのでここで書く。
「ゲームプログラマになる前に覚えておきたい技術」のシングルトンが変 普通シングルトンといったらpublic static getInstance()内部で初回呼び出し時に インスタンスを作成するのに、別にインスタンス作成のためのpublic static create()というメソッドがある。 そして、クラス外部のどこかでcreate()を呼び出してインスタンスを作成している。 二回createしたら落ちるだとさ。つまり複数インスタンスをcreateするコードをかけてしまう。 これでは、実行時に落ちるとはいえ、コンパイル時にエラーを検出できない。 たとえば、複数のプログラマが、コードの一部分を分担してそれぞれ作っているときに それぞれがcreate()していると、コードを分けている段階では問題なくても 一つにマージしたときにエラーが発生するというシナリオが起きてしまう。
- 391 名前:名前は開発中のものです。 mailto:sage [2009/12/29(火) 00:18:26 ID:IYgt3GZP]
- あの本は結構適当だからな
- 392 名前:名前は開発中のものです。 mailto:sage [2009/12/29(火) 01:19:32 ID:0CS2MVBj]
- セガの限界です
教育担当者ですらその程度 だからあそこまで落ちぶれた
- 393 名前:名前は開発中のものです。 mailto:sage [2009/12/29(火) 02:24:27 ID:RokfBydo]
- Singleton の構築|Code++
ttp://ameblo.jp/woooh-p/entry-10031871696.html 2回create()を呼び出すと落ちるのは問題だが 初期化関数を別に用意したほうがいい場合もある
- 394 名前:名前は開発中のものです。 mailto:sage [2009/12/29(火) 10:12:58 ID:Mul0eZVk]
- まあシングルトンなんか使う時点で…
- 395 名前:名前は開発中のものです。 mailto:sage [2009/12/29(火) 10:14:09 ID:qD3DEd6e]
- シングルトンは普通に使うだろ
- 396 名前:名前は開発中のものです。 mailto:sage [2009/12/29(火) 10:31:45 ID:Mul0eZVk]
- とりあえずシングルトンにしとけばオブジェクト指向っぽいしどこからでもアクセスできて便利と思ってる奴が多すぎる
グローバル変数だと意識して使うのは勝手だけどさ
- 397 名前:名前は開発中のものです。 mailto:sage [2009/12/29(火) 11:41:51 ID:4TKwhtv1]
- SEGAはプログラマが悪いんじゃなくて企画が悪いんじゃね?
- 398 名前:名前は開発中のものです。 mailto:sage [2009/12/29(火) 12:33:29 ID:MJuE+QA3]
- 宣伝が悪い
- 399 名前:名前は開発中のものです。 mailto:sage [2009/12/29(火) 12:33:57 ID:IYgt3GZP]
- つまりなにもかも悪いのか
- 400 名前:名前は開発中のものです。 mailto:sage [2009/12/30(水) 18:16:44 ID:UY2bjnZL]
- ChangeFontType(DX_FONTTYPE_ANTIALIASING_EDGE);
↑でフォントを変更すると異常に重くなる。 これ以外で文字も目立たせる方法ってあります? たくさんの色つかってる背景なので、文字が目立たなくて見にくい
- 401 名前:名前は開発中のものです。 mailto:sage [2009/12/30(水) 18:19:27 ID:61sxYcJT]
- CreateFontToHandle
- 402 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 10:45:01 ID:OYP4V88L]
- VC++確かにべんりだーー。
{}のつながりがわかるじゃないか。 bccのときはこめんとひっつでした。 ただぎょうがわかればいいな〜〜
- 403 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 10:49:31 ID:usKzGBmk]
- 一度VC#やVB触ったらVC++なんかゴミにしか感じられなくなるけどな
- 404 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 10:52:44 ID:tpzydI5S]
- VC#やVBも機械語と比べたらゴミにしか感じられないけどな
- 405 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 12:36:09 ID:WC0TdB7O]
- >>402
メニューの[ツール]->[オプション]->[テキストエディタ]->[C/C++]->[全般] で行番号をチェック
- 406 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 13:08:58 ID:/td8CeQE]
- >>402
それはお前のインデントが悪い
- 407 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 15:11:34 ID:7pzjYUfB]
- VC#やVBってVC++より遅いんだろ?
それにVC#はガベジなんちゃらというので急に重くなるそうじゃないか アクションとかシューティングに向くの?
- 408 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 15:26:26 ID:rtNA4Eqo]
- その通りだからC++でやりなよ
- 409 名前:名前は開発中のものです。 mailto:さ [2010/01/01(金) 16:19:43 ID:oXGgPpta]
- >>407
.NETのガベージコレクションは優秀だから重くなることは無いよ Xbox360では多少難あるけどね 実行速度遅くて困るなんてことは今の時代のPCスペックじゃ有り得ないそ Javaのゲームも余裕で動く時代だし アクション、シューティングもネットブックで動かせたよ
- 410 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 16:32:52 ID:i5316gGW]
- 勝手に動いたガベコレが2フレームくらい時を止めても困る
- 411 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 16:44:58 ID:usKzGBmk]
- 今時そんな細かい処理速度が表に出てくるほどのゲームを作るのは大変だぞ
そんなカツカツの高負荷のゲーム作るんだったらそもそもDXライブラリなんか使うべきじゃないしな それはともかく>>403は単にIDEの出来だけを言ったつもりだった
- 412 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 16:48:57 ID:qgsN6nSc]
- VC#()笑 VB()爆
- 413 名前:名前は開発中のものです。 [2010/01/01(金) 17:46:25 ID:+lDteCCN]
- ゼタセカンドでさえ遅れるのを許されない設計の場合
まず ・設計を改める 削れる処理はないか。 もっと速い処理はないか。 特に算術演算はコンパイラでさえ最適化しきれない「なにがやりてーんだタココラ」って効率の悪いコードになりがち。 セオリーから外れてないか。 ウェイトを「カウントアップ」でやろうとしてないか。 などを見直し、それでもダメだ!1ヨクトセカンドでも遅れるのは許されぬ!ってとき ハードウェアとダチ公になる のだ。 遅れるってのは結局「OSのスリープに頼っているから」である。 OSのスリープはもちろんOSがやることなので「今は特に眠くないです。」といったらスリープしてもらえない。 そこをハードウェアとダチトモコレクションすることで、強制的にスリープするのだ。
- 414 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 17:52:47 ID:+lDteCCN]
- 格闘ゲームだったら体力が0になったとき義塾大学になるのはもちろんだが、
気絶などのステータスもある。何のモーションのとき何が何でキャンセルできるのか そういうことも常に演算する対象だが、これを if(cancell_OK == 1) とかやってるやつは基本がなってない。 char cancell_OK, cancell_NG, cancell_only_special・・・・・・・ などと延々必要になるではないか。 ステータス管理の変数は1つにまとめろ。それは可能である。 というふうに、効率の悪いコードになっているのを改めることでだいぶ良くなる。
- 415 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 18:19:25 ID:Xn7CcDBA]
- >ステータス管理の変数は1つにまとめろ。それは可能である。
へぇ〜どうなるの 40文字以内で教えてください
- 416 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 18:20:21 ID:ulJ3MFDL]
- >ウェイトを「カウントアップ」でやろうとしてないか。
これについて教えて下さい
- 417 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 18:20:50 ID:+lDteCCN]
- 結局のところ、格闘ゲームにおけるステータスってのは0か1しかない。
分かるだろ。の
- 418 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 18:22:58 ID:qgsN6nSc]
- >>414
cancell… ステータスはビット演算でやってもいいが可読性が著しく低いから、 boolの配列作って0〜nの数字をそれぞれステータス名でenumしてる スパゲッティどころか脳髄の如く絡まってるコード持って自慢げにメモリ使用量が〜〜とか言ってる奴いるとぶん殴りたくなる というかぶん殴る
- 419 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 18:23:47 ID:+lDteCCN]
- カウントアップウェイト
信じられないことに、いまだに良く見るんだが for(i=0, i < During; i++) のこと。逆も然り。 for(i=During; i !=0; i--) のような これ数えてる間、CPUがずっとそれに占有されるだろ これじゃウェイト、スリープの意味がない。
- 420 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 18:25:49 ID:ulJ3MFDL]
- >>419
これ駄目なの?普通に使ってた 代わりにどう書けばいいの?
- 421 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 18:27:56 ID:+lDteCCN]
- ウェイトやスリープってのは、
「何もしないんだから、その間他の処理をさせよう」 ってのが基本だ。また、そうでないとウェイトしてる間他の何の処理もできないから 極端に言えば画面が停止することになる。 普通は、OS越しに駆動するゲームだったらOSに用意されるスリープ命令を使う。 OSがない組み込みなどで動かすゲームなら、割り込みを使う。
- 422 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 18:38:45 ID:ulJ3MFDL]
- ?
- 423 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:16:43 ID:CHW7ms0X]
- ループ処理の話かと思った
- 424 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:24:26 ID:Xn7CcDBA]
- unsigned long stat;
#define CANCEL_OK 0x00000001 ,,, if (stat & CANCEL_OK) ... else if (stat & CANCEL_NG) ... とか書くのかな >boolの配列作って0〜nの数字をそれぞれステータス名でenumしてる みたいなほうが好きだ ただ例にあげてるとおりに格闘ゲームだとするとキャラクターの1フレームごとの変数の数が増えるのをきらうのはわかる
- 425 名前:名前は開発中のものです。 [2010/01/01(金) 19:28:11 ID:DuVCrQzJ]
- >OSがない組み込みなどで動かすゲームなら、割り込みを使う。
GBAとかMSXとか古いゲーム機の時のことでしょ 懐かしいな
- 426 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:28:36 ID:+lDteCCN]
- 時間軸で考えると、
例えば「1時間後に働けよ」というのがスリープの考え方。 「じゃあその1時間何をするか」。 1時間、ずーっと1,2,3,4,5,6,7,8,・・・・と声に出して数え上げるとする。 これじゃ、なんか用事があっても何も出来ない。 「じゃあ本でも読むか」となれば、別の処理(本を読んで知識を得る)が出来る。 どっちやっててもシステム時間として1時間は過ぎるが 片方は「実質的に意味のあることを何もしてないのにパワーだけ食う」 片方は「実質的に何もしないんだから別のことをする」 どっちが効率的か分かるだろう
- 427 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:31:29 ID:+lDteCCN]
- また、ループも
for(i=0; i < During; i++){ Plus += Exactly; } ではなく、 if(During == FuckingAss){ Plus += Exactly; Plus += Exactly; Plus += Exactly; Plus += Exactly; Plus += Exactly; Plus += Exactly; } などとしたりすることがある。 基本的にコッチのほうが速いからだ。 CPUとコンパイラにもよるが。
- 428 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:32:53 ID:ulJ3MFDL]
- >>427
へー
- 429 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:35:16 ID:ulJ3MFDL]
- でも1000回のループとかだと、1000行書いてたらさすがにソース長くなって鬱陶しいよね
大体何回までのループなら>>427の↓のパターンで書いてもいいの?
- 430 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:37:18 ID:+lDteCCN]
- デッドライン、つまりここまでに必ず処理終えろ!っていう最終期限が決まってるシステムでは
forループではなく、こういうふうな展開したループもどきが使われることも多い。 難点は、見た目素人っぽいこと それ以外は何してるか分かりやすくていいのだが 「こっちのほうが速いよ」ってことをなかなか認めてもらえないのが難といえば難 これを、デッドラインまで繰り返す デッドラインが決まっているということはおおよそのアタリがつくし、 そんなに長いループにもならない。なってはいけない。
- 431 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:42:28 ID:+lDteCCN]
- まあこういう小ネタは
「もっと軽くしたい」ってときの最終手段なので 根本から遅いのであれば設計を見直したほうがいいよ
- 432 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:44:49 ID:Xn7CcDBA]
- >ID:+lDteCCNが考える中で
じゃあWindowsのDXライブラリで たとえば1フレーム50ミリ秒にするのにSleepを使わない最適なメインループはどういうの 公式のサンプルがいいのなら「それ」といってくれればいいです
- 433 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:46:30 ID:qgsN6nSc]
- マジレスするとDXライブラリ使うような環境でこんな事を考える必要は無い
- 434 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:48:17 ID:ulJ3MFDL]
- >boolの配列作って0〜nの数字をそれぞれステータス名でenumしてる
これ具体的にどんな感じで書けばいいの?
- 435 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:50:56 ID:+lDteCCN]
- 俺やったら、スリープはCPUに直結する。
例えばPowerPCはタイマユニットを持っているので これに値を入れてカウントさせる。アンダーフローと同時に割り込みが入る。 その割り込みでタスクを駆動させる。 こういうハード寄りもいいとこのタイマ管理ってのはアプリで使うもんじゃないというし、 まあそれもそうだろうが実現する場合これが一番いいのだ。 ハードウェアのタイマクロック計上はタスクじゃないので、一切影響を及ぼさない。 普通OSのスリープは多かれ少なかれCPUのパワーを食うが 俺のやるタイマは一切食わない。割り込み処理のオーバーヘッドは微々たるもの。
- 436 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:52:10 ID:ulJ3MFDL]
- >>435
全然わからんからサンプルソースで説明しておくれ
- 437 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 19:54:51 ID:OvIEzR2y]
- wwwwww
DXライブラリのスレでPowerPCwwww 面白いヤツだなお前
- 438 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 20:05:29 ID:+lDteCCN]
- PowerPCは例えだし
サンプルといっても、やりたい事を記した関数しかないのだがw 割り込みはソフトウェアじゃない。 割り込みは、ベクタ方式の場合ベクタベースからオフセットしたところにプログラムカウンタが来るだけだから 別にソースで表すもんじゃない。 また、PowerPCならベクタじゃない。
- 439 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 20:07:18 ID:rctl5BXb]
- 割り込みベクタとか。正月でやっぱらったロートルPGが集まるスレはここか?
- 440 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 20:08:35 ID:rctl5BXb]
- やっぱらったって酔っぱらったなw
俺も飲んでるがなww
- 441 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 20:10:31 ID:+lDteCCN]
- でもハード寄りプログラムは面白い。
普通あんまり使わないウォッチドッグタイマ どうしても更新したいのに処理が終わらなかったとき これで強制的に更新したりできる たまにはハード寄りのオブジェクトを作ってみても面白い
- 442 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 20:42:23 ID:WC0TdB7O]
- >413で間違えて書き込んだのか知らないけど
ここは主にDXライブラリやそれに関する話をするスレなので DXライブラリに全く関係ないPowerPCの話はやめてほしい あとゲームではあまり意味の無い、 >427のような時期尚早な最適化を進めるのはどうかと思う 今のVC++の無償版には最適化機能が付いているし
- 443 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 20:50:31 ID:+lDteCCN]
- 考え方はx86系統でも同じなのに・・・w
- 444 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 22:16:35 ID:yLIIIbHt]
- >>434
横レスだが、たぶんこんなかんじじゃないの enum StatusSet{ Stat_POINSON, Stat_PARALYSIS, Stat_DISEASE, Stat_CURSE, Stat_NUM }; bool phys_stat[Stat_NUM]; for(int i=0;i<Stat_Num;++i) phys_stat[i] = false; あとはif( phys_stat[Stat_POISON] )とかでもswitchで振り分けてもいいし STLのbitsetは役に立たないかな?使ったことないけど
- 445 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 22:41:12 ID:qgsN6nSc]
- >>444
意図してたのはちょっと違った enum StatusSet{ JUMP, WALK, DASH, ATTACK, }; bool stat[5]; if (stat[JUMP]) { 〜〜 } という。 #まあjumpとかwalkは色々やるべきなのでintで管理すべきだが……
- 446 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 22:49:37 ID:ulJ3MFDL]
- >>444-445
ありがとん
- 447 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 23:18:29 ID:4nYhycH7]
- ID:+lDteCCNみたいなオナニーはブログででもやってくれ
|

|