1 名前:名前は開発中のものです。 [2009/03/31(火) 01:14:36 ID:IgyJcgap] Cを習得した程度のスキルでも、 GUIのゲームを比較的容易に作成する事を可能にする、 「DXライブラリ」に関するスレッドです。 DXライブラリの詳細ついては homepage2.nifty.com/natupaji/DxLib/ を参照して頂きたい。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 過去スレ:DXライブラリ 総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1197468399/ DXライブラリ 総合スレッド 2008 pc11.2ch.net/test/read.cgi/gamedev/1224923873/
458 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 02:10:16 ID:1CAlzcIC] >457 自分は使ったことないんで分からないけど、 GetDrawStringWidth GetDrawFormatStringWidth というのはどう? で、長さを調べてxを調整して、文字列を出力するところまでを1つの関数にしちゃうの。
459 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 02:19:38 ID:qN6akUYZ] ドラクエみたいに停止してるキャラに足踏みさせるいい方法ないかな? countを0と1でオンオフしてSleep(300)とかで歩行と同じように調整はできたんだけど、 歩き出しが時々ぎこちないので悩んでます。sleepじゃなくていい方法が思いつかない
460 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 02:28:14 ID:H4jkoMGr] >>458 フォントを変えないならいける CreateFontToHandleで作ったフォントデータだと駄目っぽい >>459 countを範囲でオンオフ切り替えてみては if(count%40<20)//ドロー else //ドロー2 count++;
461 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 02:34:01 ID:wxVXqeT5] >>460 GetDrawStringWidthToHandleがあるじゃん
462 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 02:36:09 ID:H4jkoMGr] >>461 うわ・・・恥ずかしい・・ごめんなさい ありがとねん
463 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 03:45:39 ID:1CAlzcIC] >459 そもそもSleep使ったら何も出来なくなるんじゃ?
464 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 08:51:37 ID:mvp6g5dM] 歩行絵+右足踏み出し絵と左踏み出し絵を描けばいいだけじゃね?
465 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 09:09:09 ID:q6YxOHAd] while(ProcessMessage()!=-1){ ClearDrawScreen(); if(count<20) 右足が前に出てるキャラ表示 if(count>=20&&count<40)左足が前に出てるキャラ表示 ScreenFlip(); WaitTimer(10); count++; if(count==40)count=0; } うーんよくわからん
466 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 09:54:16 ID:1CAlzcIC] >465 基本的な考え方はそれでいいと思うよ。 あとせっかく答えてくれた>460の答えも読んどいた方がいいんじゃね?
467 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 10:06:16 ID:yTy6SiIo] >>465 基準FPS値決めて、フレーム数と秒が変換できるようにしてみるといい あとWaitTimer(10)とかいうのはジョークだよね?w
468 名前:466 mailto:sage [2009/06/16(火) 10:16:47 ID:1CAlzcIC] とりあえず>466の日本語がおかしいってのはスルーしてくれると嬉しい。 >>467 おや、見逃してたw もしかして>463(俺)の発言を勘違いしちゃったのかな……? だとしたらちょっと責任感が。
469 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 12:57:31 ID:zt3Tshey] >>467 たぶんWaitTimer等の関数を使わないと高速足踏みに見えると感じて、 こういう手段で自然に見えるようにしたんじゃないかな。 一秒でひとつの動作をループさせる必要はないからこれはあまり良くないと思うけど。
470 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 13:19:46 ID:1CAlzcIC] >469 count値20ごとに表示を変えてるみたいだし、それは大丈夫なんじゃないかしら?
471 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 14:04:12 ID:KbLsp5Ay] ScreenFlipで垂直同期信号待ちが行われているかどうかで変わってくるような。
472 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 14:17:30 ID:MjcTUWQv] WaitTimer使う位なら count<20 の値を増やした方がよくね
473 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 16:03:45 ID:rewLOGjy] 時分割で状態変移したいのなら、コルーチン使ってみては? と上級者ぶってみるわ
474 名前:459 mailto:sage [2009/06/16(火) 18:26:00 ID:qN6akUYZ] いろいろ意見ありがとう。 WaitやSleepは使わずにFPSとかFrameやらを使って試行錯誤してみます。 countを0と1でオンオフにしてたけど>>465 のようにフレームカウントにしてやってみます。
475 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 18:35:39 ID:1CAlzcIC] 別人だったんか!
476 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 23:35:34 ID:8GILQKQT] リフレッシュレートの概念がわからないと変なの書いちゃうぞ レートは60ヘルツかも100ヘルツかもしれないし 65とか75とか微妙な数値になることもある DXライブラリの教本にあるように書かないと、動作環境が変わった時に同じように動く保証がない 俺が以前に見た酷い例 FPSが60切ると点数がどんどん減る意味不明なゲーム しかもどんなアルゴリズムか知らんが、FPS60でも点数が減りっぱなし ああいう「自分の環境しか見ない」人間は駄目だな
477 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 23:40:46 ID:fYBFrBfu] ゲーム機のゲームってその辺固定だからなにも考えなくていいんだよなー。
478 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 23:56:34 ID:1CAlzcIC] >>476 と言っても、個人レベルの開発でどこまで他の環境を考えられるやら。 定番のアルゴリズムとかは書けるかもしれないけど、それだけじゃ意味ないし。 結局のところ「知らね」って言いきるしかできない。
479 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 23:59:57 ID:+nd9Tj3k] 俺今作ってるゲームはリフレッシュレート無視しちゃってる。 ティアリングが気になるんだよなぁ。 他人が作ったゲームは60FPS超えるやつとかあるけど ティアリングあまり気にならないんだよな。どうやってんだろ。
480 名前:名前は開発中のものです。 [2009/06/17(水) 00:27:22 ID:gsrBiXQc] >>469 WaitTimer(10); 入れるとCPU使用率が下がる ただそれだけw
481 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 00:32:32 ID:s0zhQi6M] >>479 君みたいな人が駄目らしいよ 自分の環境しか見ない人間は駄目なんだってさ ていうかさ、FPSが60切ると点数がどんどん下がるゲームかどうか ソースもアルゴリズムも考えずにどうやって判別したのかねwプッw 偉いなぁこの人wプレイしただけでバグの原因分かっちゃうって>>476 は神だねwプッw
482 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 03:56:59 ID:moXGEW/H] 環境を合わせる方法としては 1,Sleepを使ってFPSを30ほどに落としてやる。 2,時間と同期をとる。 くらいしか思いつかない。
483 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 07:52:50 ID:zFwmddUq] 関係ないけど、テクスチャに描画する場合ってZバッファ効かないんだね
484 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 08:55:08 ID:Sg+3JQO3] リフレッシュレートをAPIを使ってある固定値に設定する
485 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 15:01:39 ID:v4ECr6VG] セガの新人教育の本の人いわく、 作りやすいのは固定フレーム、性能を活かしやすいのは可変フレーム。 自分は面倒なので、60固定前提でやってるんだが (1)タイマ(ミリ秒)を取得して1フレームの規定時間(16msec)が過ぎるまで待つ (2)モニタのVSYNCを待つ (3)モニタのリフレッシュレートを変更する の3パターン用意して、あとはユーザに適当に選んでもらおうかなと。 まずいかな?
486 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 18:17:49 ID:V4BAg+VP] ScreenFlip使えばFPS保たれるんじゃないの
487 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 18:47:03 ID:A2Hqv0+b] >ScreenFlip使えばFPS保たれるんじゃないの ・環境(グラボの設定)によっては垂直同期信号待ちがOFFになってる場合があるのでFPSは保たれない。 ・垂直同期信号待ちがONだとして、FPS保てる状態でも、 モニタのリフレッシュレートを60にしてたり70にしてたりってのはユーザーの好き好きなので、 作り手の望んだとおりのFPSになってくれるとは限らない。
488 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 20:28:42 ID:00woQzQy] めんどくさいからゲーム機のゲーム作ろうぜ
489 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 20:53:25 ID:00woQzQy] www.gbadev.org/ www.pqrs.org/tekezo/gba/index.html.ja omoshiro-joho.com/tech-center/cgi-bin/wiki/index.php?Linux%A4%C7GBA%A5%B2%A1%BC%A5%E0%B3%AB%C8%AF nocash.emubase.de/gbatek.htm belogic.com/gba/directsound.shtml
490 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 01:52:47 ID:lg5GVuaj] >>481 は得点表示も見れないようです
491 名前:名前は開発中のものです。 [2009/06/18(木) 04:16:26 ID:eqFlz8O1] 勝手にリフレッシュレート60に切り替える命令とかあればいいのに
492 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 04:54:12 ID:U/ILN7Qk] >>491 一応あるっしょ。
493 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 05:03:47 ID:4gTcdCic] 別に少々速度違ってもいいじゃない
494 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 05:07:59 ID:U/ILN7Qk] >493 アクションゲームのゲーム速度2割アップとか結構きついですぜ
495 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 07:25:22 ID:8Inai5Jq] DXライブラリ3Dってどうなったの? 開発中止?
496 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 09:48:52 ID:obCaTvEe] 60FPSのゲームを70FPSとか、とんでもないぜw
497 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 16:23:14 ID:FAWLSPyh] たまに弾幕シューティングが75FPSになったりするけど、 気づくのはいつもしばらくプレイしてからだった
498 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 16:53:46 ID:U/ILN7Qk] >497 気付かぬうちに難易度が上がってたり、タイミングが変わってミスを誘発させたりするって ちょっと怖いよな。
499 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 17:10:57 ID:4gTcdCic] 一般的に表示上のFPSが上がるとゲーム速度も上がるものなの? ってことは2次元アクションでいえば1フレーム毎の移動量が固定なのか。 自分自身も楽だからそういう作り方をしているけど… 例えばあるゲームで 60FPSだと重いのでコンフィグで30FPSに変更って場合は ゲーム速度そのものは変わらないものだと思っていた。
500 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 17:35:08 ID:u8KJWVMz] >>499 時間で処理、描画だけFPSで更新なら変わらないよ。 全体をFPS60処理だと60より上に上がらないようにしてるのが一般的かなぁ。 ツールで簡単に上げれたり、処理間に合わないとFPS下がって全体の速度も低下する。
501 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 17:56:28 ID:U/ILN7Qk] >499 フレームではなく時間単位で処理してるなら ゲーム速度云々の話題にすらならんと思うよ。
502 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 21:48:15 ID:3XyNBKLr] しかし時間単位で処理すると確実にティアリングが発生するので画質面で劣るという
503 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 21:57:55 ID:y4gPpvjp] そんなの関係なくバッドノウハウ使わない限り起きるだろw
504 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 22:12:42 ID:4gTcdCic] 発想を逆転させるんだ ユーザーをゲームに合わしちまえばいいんだ
505 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 23:01:35 ID:7QIAxIr+] まともにゲーム作ったことある人手あげて〜?
506 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 23:19:36 ID:cOrVzTjy] >>502 違うんじゃない? モニタのリフレッシュレートが60だろうが70だろうが時間単位で処理するからこそ スピード一定でティアリングも発生しないようにできるんでしょ。 垂直同期信号が切ってあるなら、そもそもティアリングは発生してあたりまえだろうし。
507 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 23:47:20 ID:3XyNBKLr] モニタの画面更新のタイミングを無視してメモリ上の画面データを書き換えると言うことだから 1画面分のデータの構築途中でそのメモリイメージが画面に表示されて画面上部と下部でフレームがずれるということだから ティアリングが発生するということじゃないの
508 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 23:58:10 ID:cOrVzTjy] 「モニタの画面更新のタイミングを無視する」なら、時間単位で処理する意味ないでしょ? なぜ時間単位で処理する必要があるかって言ったら、 垂直同期信号待ちをして、ティアリングを起こさないようにしたいけど、 ユーザーのモニタのリフレシュレートが60なのか70なのかが判らない、からでしょ?
509 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 00:03:49 ID:Wkij18nv] 間違えた。逆だった。 実際の画面の更新途中でメモリ上の画面データが更新された場合に、描画済み画素と未描画画素でフレームがずれるためティアリングが発生する、だった。 要するにAPIでリフレッシュレートを60に設定して60前提で作ればよい。60に対応してないモニタを使ってるやつのことは知らない。
510 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 00:08:11 ID:AlkmRsbh] なんか「時間単位で処理」と「フレーム単位で処理」の認識が逆になってる気がするw
511 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 00:12:38 ID:s7w0uGNM] >509 FPS指定APIは過信してはいけない 上のほうにあるようにドライバ側の設定が優先される
512 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 00:22:34 ID:Wkij18nv] じゃあPC環境は糞
513 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 00:47:10 ID:pN8o6lEn] >509 「60以外は知らん」と言いきっちゃうのも、それはそれでアリな気がする
514 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 02:05:59 ID:7uKPrG8o] 最近は液晶が殆どだしそれもありだな
515 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 03:38:42 ID:AlkmRsbh] 液晶がどう関係するのか。
516 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 08:04:02 ID:huFKHnzQ] 一般的な普及価格帯のやつは選択肢が60Hzや59Hzしかない
517 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 09:00:27 ID:Dq7L9OoN] >>516 20世紀へお帰り下さい
518 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 09:40:02 ID:4AnMu6gm] 自己中心的なハード理論を押し付けるもんじゃない 動作環境をテキストに書いたら、それを満たすあらゆる環境で同じように動いてもらわないと困る デフォルトで不具合が出る可能性があるなら、設定で変えられるようにしなきゃ駄目 なるべくたくさんの環境でテストするのも大事
519 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 12:28:29 ID:8D0wDPEb] 難しいことしなくても、垂直同期かウェイトかはオプションで選べようにすれば問題ないだろ
520 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 12:57:07 ID:ciGq9GNb] 全くその通りだと思うんだが、 そういう選択式になってるゲームってほとんどみないよな? 普通はどうやってんだろ、ってのが話題の焦点じゃないかな。
521 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 15:25:14 ID:pN8o6lEn] >>517 実際、60Hz固定のモニタも多いんじゃね?
522 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 16:07:46 ID:L4Ogxl+D] 他に話題ねーのかよ 飽きた
523 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 16:47:37 ID:8D0wDPEb] 何か話したい話題があるなら自分から振れと
524 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 23:33:13 ID:Dq7L9OoN] >>521 だから帰れってww
525 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 23:50:46 ID:L4Ogxl+D] んー じゃぁDxLibの今後 俺はもう少し発展してくれてもいいと思う、3Dを強化して欲しいね
526 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 00:41:17 ID:ynTX3CaL] 無理じゃね 3D強化するなら作り直しレベルだろ
527 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 00:42:51 ID:FZJG9pXN] デスクリムゾンレベルなら作れるw
528 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 00:53:36 ID:gQS8hglY] 上からくるぞっ!気をつけろ!
529 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 01:03:05 ID:X3CDDO5o] >>526 いま3D機能作ってるって公式掲示板で言ってたけど・・・ 意外とみんなチェックしてないんだな
530 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 01:08:17 ID:ppcvkMn4] >>529 なん…だと?
531 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 01:49:27 ID:FZJG9pXN] 俺のクリムゾンは下からくる設定で作るわ
532 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 02:34:40 ID:gQS8hglY] せっかくだから俺はこの赤い扉を選ぶぜ!!
533 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 02:15:20 ID:dtFx8GuN] Platinumっていうマップエディタで、15*20マスのマップを作って csv形式で出力して、読み込んで描画したいんだけど上手くいきません #include "DxLib.h" int WINAPI... { if( DxLib_Init() == -1 ) return -1 ; int mapchip[256]; char mapdata[15][20]; int filehandle; LoadDivGraph("a.bmp",256,16,16,16,16,mapchip); f = FileRead_open("a.csv"); FileRead_gets(mapdata,num,filehandle); このあとfor文でFileRead_getsで読み込んだ1行を15回くりかえして mapchipに入れていきたいんだけど・・・ FileRead_getsのnumに何を入れていいのかが??状態。 リファレンス読んでもメモリ領域のサイズて書いてあるけど・・・ 日本語おかしくてスマン
534 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 02:35:09 ID:ffHKmVPn] numはメモリ領域のサイズってリファレンスに書いてあるじゃん。 てか、a.csvの内容はどんな感じになってんの?
535 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 02:48:44 ID:aQAsxkjf] >>533 int mapdata[15][20],mapwidth= 0, mapheight= 0, mapchipwidth, mapchipheight, bitcount; int filehandle; char buf[1024]; filehandle = FileRead_open("a.csv"); if (filehandle==0){エラー処理} int gyoucount = 0,retucount = 0, iVal,layercount; while((FileRead_eof(filehandle) == 0)&&( gyoucount < mapheight+1 )) { FileRead_gets(buf, 1023, filehandle); if (gyoucount == 0){ sscanf_s(buf, "%d,%d,%d,%d,%d,%d", &mapwidth, &mapheight, &mapchipwidth, &mapchipheight, &layercount, &bitcount); }else{ while(retucount<mapwidth){ char *next_token; if (retucount==0){ iVal=atoi(strtok_s(buf, ",",&next_token)); }else{ iVal=atoi(strtok_s(NULL, ",",&next_token)); } mapdata[gyoucount-1][retucount] = iVal; retucount++; }} gyoucount++; retucount = 0; } FileRead_close(filehandle); if( ( gyoucount != mapheight+1 ) || ( retucount != 0 ) ){エラー処理}
536 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 02:49:49 ID:dtFx8GuN] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 3 3 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 3 3 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 3 3 3 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 0 2 2 0 0 0 0 2 2 2 2 2 2 0 0 0 0 3 3 0 2 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0が草原で1が川で2が森で3が山です 1行ずつ読み込んでchar chip[ ][ ]に入れて その番号をint型の数字に変換してmapchip[ ]で描画させたいんですが・・orz ごめん、メモリ領域のサイズってどうやって調べるの?
537 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 04:17:54 ID:jkwbtsZu] コーディングしたのはおまいさんだろ?
538 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 08:29:25 ID:vb/GsENJ] FileRead_gets(mapdata,sizeof(mapdata),filehandle);
539 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 09:37:49 ID:SurdRKYg] >>507 遅れたけど正確にはダブルバッファリングしてるからティアリングはおきないよ。 データの構築中に画面に表示される事は無い。 あと垂直同期を待ちつつタイマーで調整する事も可能。 具体的にはタイマーでfpsを調整すれば、ゲームが基準にするのはタイマーじゃなく、 一定間隔が保障されてるフレームを基準にすればおk
540 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 13:35:35 ID:QJhUeuVR] マップの縦横が固定長なら ifstream+For2重ループで読み込んでしまえば良い 都合のいいことに半角スペース無視ってくれるからね c++知らなければスルーしてよし
541 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 13:59:11 ID:E25maqZD] 垂直同期を待つってことは動作速度がリフレッシュレート固定になるってことじゃないの? 最期の2行の意味をくわしく。
542 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 14:24:01 ID:ZO5ct3aw] 可変レートの場合、 60の時は、前回の1/60秒後の世界を描くし50の時は1/50秒後の世界を描くんだろう。
543 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 14:40:01 ID:/SjwP+Lm] ググってると公式サイトのリファレンスに載ってない関数が時々出てくるんですけど、 そういうのが載ってる詳細なリファレンスは無いんですか?
544 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 15:01:10 ID:E25maqZD] 擬似コードでいいからプログラムで説明してくんない? 下記に追記する形で。 while(1){ main_loop(); flip(); }
545 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 15:55:05 ID:gvSWV/Tl] 1秒間に100ドット移動させたい時。 : ScreelFlip() 時間計測A(ミリ秒) : ScreenFlip() 時間計測B(ミリ秒) : 移動距離算出 100 * ( B-A ) / 1000 : ScreenFlip() 時間計測〜 って感じ?
546 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 17:22:04 ID:nC5CYBlY] ぼくのイメージではこんなだけど合ってる? 垂直同期が取れるなら while(1){ main_loop(); sleep until 垂直同期60hz; flip(); } 取れないなら A = GetTickCount(); while(1){ main_loop(); B = GetTickCount(); sleep(17 - ((B - A) % 17)); //1tick = 0.001秒, 17tick = 1/60秒と仮定 flip(); A = B; } ただ、こうするとsleepしてる時間が無駄だから…
547 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 17:24:40 ID:nC5CYBlY] 無駄を減らすために main_loop()の処理時間が十分に短いなら A = GetTickCount(); while(1){ do { main_loop(); B = GetTickCount(); } while (B-A < 17); flip(); A = B; } あるいはタイマーを使うか… A = GetTickCount(); while(1){ main_loop(); B = GetTickCount(); SetTimer(17 - ((B - A) % 17), flip()); A = B; } それとも描画と計算は別スレッドにするか…
548 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:10:23 ID:SurdRKYg] >>541 そうとは限らないよ。 まずfps制限と描画を完全にわけて考える。 fps制限は60に設定したとする。 int nowtime = GetNowCount(); static int oldtime = 0; static int frametime = 1000 / 60; int diftime = nowtime - oldtime; while(1) { if(diftime >= frametime) { oldtime = nowtime; break; } else { Sleep(1); nowtime = GetNowCount(); diftime = nowtime - oldtime; } } これで垂直同期しようがしまいが60で固定された。 1ループで1フレーム1/60秒が保障されたので、1秒で100ドットキャラを進ませたいのなら、60フレームで100ドット進ませればおk 5秒後に何かをしたいときも、5秒をタイマーで計測するんじゃなくて300フレーム後に行えばおk だから>>539 で「ゲームが基準にするのはタイマーじゃなく、一定間隔が保障されてるフレームを基準にすればおk」と書いた。 ただ、これだとスペック不足によって60fpsが出ない場合や、リフレッシュレートが60以外でかつ垂直同期を待った場合中途半端な同期によって60fpsが出ない場合(これは垂直同期を待たない事で解決出来る)、 フレームがゲームスピードの基準になっているのでゲームスピードが遅くなってしまう。(処理落ち) これはこれでおkならそのままでいいが、ゲームスピードだけは死守するのならフレームスキップ(コマ落ち)が必要になる。 この方法も色々あるので今回は割愛。
549 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:20:31 ID:E25maqZD] 結局ティアリング発生するじゃん
550 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:27:19 ID:SurdRKYg] せっかく説明したのになにその全然読んでないようなレスは。 ティアリングの話がしたいの? >垂直同期を待つってことは動作速度がリフレッシュレート固定になるってことじゃないの? これを解決したいの? どっちなの? てか548を読んで解決出来なかったの? 質問しといてなんなの。
551 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:38:53 ID:E25maqZD] ティアリングを発生させずにどんなリフレッシュレートのモニタでも同じ処理速度で動作させる方法があるかを聞いてる。
552 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:52:15 ID:dtFx8GuN] 14歳からのゲームプログラミング読めよ 書いてあるよ
553 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:52:45 ID:n8mlBebR] >>551 >>539 に書いてあんじゃん SurdRKYgがかわいそすぎる、援護するぜ んでぐぐったらすぐにわかりやすいのでてきたぞ ちょっとは自分で調べろ ttp://spitfire.client.jp/program/fps.html
554 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:55:52 ID:dtFx8GuN] 馬の耳に念仏だろうがな
555 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 21:15:08 ID:E25maqZD] なるほど。 リフレッシュレートをAPIで固定する、か リフレッシュレートを何らかの方法で取得して、1フレームの移動量をリフレッシュレートに合わせて変更する しかないわけか。
556 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 21:26:14 ID:nqKSgOSf] >>555 何が「なるほど」なんだか・・・ 548をどう読めば 「リフレッシュレートを何らかの方法で取得して、1フレームの移動量をリフレッシュレートに合わせて変更する 」 の説明になるんだよ 読む気がないなら質問なんてするな
557 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 21:33:30 ID:E25maqZD] >>548 は垂直同期を待たない事で解決出来るとか言ってるから話にならないじゃん ダブルバッファリングしてるからティアリングはおきないとか言ってるし。
558 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 21:41:05 ID:OYxJ3LRg] ダブルバッファリングとティアリングは関係ないよな。 垂直同期信号待ちしないと、裏画面と表画面切り替える瞬間にモニタ画面更新される事もあるから結局ティアリングは発生する。
559 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 21:59:20 ID:SurdRKYg] >>557 垂直同期を待たない事で解決出来るのは60fpsにならない場合の話だから下5行は読まなくていいよ。 しかもコマ落ちさせれば同期待ちでも解決出来るって書いてあるのに…。 120Hzのモニタで同期待ちするけど60fpsに制限すればゲーム速度も一定になるでしょ? 1フレームの移動量を変更するんじゃなく、移動量をフレームに合わせれば常に一定でしょ? >>558 flipする時はコピーするんじゃなくてVRAMの参照先を変えるだけだから、VRAM上のデータを書き換え途中って事は無いと思うけど。 だからどの瞬間においても描画途中で画面更新される事は無いと思うんだけど違うのかな? もちろんこれはティアリングの厳密な意味でのことなので、広義の意味の 画面のちらつき=ティアリング として使われる事についてはそれでいいけど。
560 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:03:54 ID:nqKSgOSf] >>559 残念だけど垂直同期を待たない場合はビデオカードがモニタに映像を送信している間でも 参照先のVRAMアドレスを変えてしまうからティアリングは発生する
561 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:08:13 ID:OYxJ3LRg] >>559 DXライブラリで裏画面への描きこみ、ScreenFlipってほとんどデフォだよね? これが君のいうダブルバッファリングでしょ? ScreenFlipの垂直同期信号待ちをOFFにして、 タイマーだけでスピード固定するようにして、フルスクリーンで動かしてごらん。 ティアリング一目瞭然だから。
562 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:11:13 ID:SurdRKYg] >>560 そうなんだ。どうもありがとう。 同期しない事によるちらつきは画面更新部分と非更新部分の時間がばらばらな事による現象かと思ってた。 モニタのVsync信号の方が偉くて、そのタイミングでflipした時は次のVRAMの更新先を強制的に参照するみたいな認識でいいのかな。
563 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:16:46 ID:SurdRKYg] >>561 ややや、ちらつくのは一目瞭然だけど、ティアリング(=上半分表画面で下半分裏画面のような状態)かどうかっていのは人間の目では判別不可能でしょ。 そのちらつきの原因は、更新部分と更新して無い部分の時間差によるものだと思ってた。 例えば背景が流れる画面の場合、1場面を■、次の場面を□とした場合、 ■□■□■□■□■□ と見えればちらつかないが、 ■■□■□□□■■□ のように見えるとちらついてみえると思うんだ。 でも>>560 のレスで、ティアリング自体も起きているとのことなので一応解決出来た。 これはもうちょっと自力で調べてみようと思う。
564 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:23:40 ID:OYxJ3LRg] 「垂直同期信号待ち」ってのは要するに画面が全部描き終わるまで待つって事だから。 描き終わって、次の画面が描き始められるまでの一瞬の間にVRAMのアドレスを切り替える、って事だね。 そうする事で初めてティアリングを防げる。 >>563 ちらつくというより画面が波打つ、と言った方がよかったかな。 >ティアリング(=上半分表画面で下半分裏画面のような状態)かどうかっていのは人間の目では判別不可能でしょ。 ぴったりには合わないとは言え、だいたい60FPSで固定しようとしてスピード調整してるわけだから ズレが生じるのも大体画面更新の同じタイミングになるわけ。 当然、人間の目にもはっきり判るよ。
565 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:40:54 ID:Fv4f33jD] >>563 固定フレームレートの2Dゲーははっきりとわかる キャラだけならともかく背景のスクロールもよくつかわれるからくっきりと 3Dとかで可変フレームレートだとわかりにくくなるかな でも2Dメインでしょ、DXライブラリ
566 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:52:23 ID:i9HN6tkr] 問) 垂直同期を待たずにティアリングを抑制する方法を答えよ 答) 垂直同期信号の発生周期をフリップのタイミングの合わせればよい
567 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 23:06:19 ID:FjFdKqe+] 誤字があるから△だな
568 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 23:09:10 ID:SurdRKYg] >>564 CRTの場合は走査線があるので画面の上半分と下半分で違う場合もあると思うんだけど、 液晶の場合は1画面をいっぺんに更新するわけだけど、それでも上半分と下半分で違うようなものになるってことなのですか? VRAMから送られるデータは画面の左上から右下のデータが順次送られてるのかな? そしてその送られてる時間がネックになっていてその間にflipしたらバックバッファの途中のアドレスから参照されるってこと!? それってそもそもおかしくないですか? バックバッファが出来上がっていない可能性もあるし、どうせ同期待ちしていないんだからとりあえずフロントバッファのデータを送りきってからバックバッファ分を送ればいいわけだし。 じゃあ将来例えば物凄くリフレッシュレートが高くなった場合、VRAMからモニタにデータを送る時間よりもモニタの更新速度の方が速かったりしたら "同期待ちしてるのにティアリングが起きてる"っていう最悪な状態になっちゃいそうですが。 なのでやっぱり液晶の場合はティアリングは起きていないと思いますがどうでしょう? >>565 えと、だから、画面更新に合わせずに好き勝手にflipしたら、 ある1枚が長く見えてるかもしれないしある1枚が欠損しているかもしれない。 だからちらつくように見えると思うんだけど、 肉眼でただちらつくように見えるからってそれはティアリングが起きてる証明にはなってないよ。
569 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 23:33:13 ID:E25maqZD] とりあえず3行以内に要約する癖をつけてくれ
570 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 23:41:01 ID:nqKSgOSf] >>568 >VRAMから送られるデータは画面の左上から右下のデータが順次送られてるのかな? Yes >そしてその送られてる時間がネックになっていてその間にflipしたらバックバッファの途中のアドレスから参照されるってこと!? Yes >バックバッファが出来上がっていない可能性もあるし、どうせ同期待ちしていないんだからとりあえずフロントバッファのデータを送りきってからバックバッファ分を送ればいいわけだし。 ? 何を言いたいのか良くわからないけど VRAMのデータをモニタに送るタイミングはPC側からは操作できない リフレッシュレートに依存する >じゃあ将来例えば物凄くリフレッシュレートが高くなった場合、VRAMからモニタにデータを送る時間よりもモニタの更新速度の方が速かったりしたら >"同期待ちしてるのにティアリングが起きてる"っていう最悪な状態になっちゃいそうですが。 縦解像度nの画面データをモニタに送る流れ 0lineを転送→水平同期期間→1lineを転送→水平同期期間→ nlineを転送→垂直同期期間→0lineを転送→水平同期期間 つまり、垂直同期間は1画面分のデータを転送した後にくるので、 「VRAMからモニタにデータを送る時間よりもモニタの更新速度の方が速い」 というのはそもそもありえないよ、nline分送る前に垂直同期期間に突入する事はないから・・・
571 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 23:45:26 ID:nqKSgOSf] 2点修正 >リフレッシュレートに依存する 厳密には設定した解像度とリフレッシュレートに応じて発生する 水平同期信号と垂直同期信号に依存する >0lineを転送→水平同期期間→1lineを転送→水平同期期間→ >nlineを転送→垂直同期期間→0lineを転送→水平同期期間 0lineを転送→水平同期期間→1lineを転送→水平同期期間→ (n-1)lineを転送→垂直同期期間→0lineを転送→水平同期期間 の誤り
572 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 00:07:43 ID:kame7wv0] >>569 おまえ顔真っ赤だぞ?
573 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 00:08:14 ID:1Ugl+7iQ] で
574 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 00:09:59 ID:ErP4dB7R] >>570-571 そういうことだったんですね。 詳しい説明どうもありがとうございます。 >VRAMのデータをモニタに送るタイミングはPC側からは操作できない >厳密には設定した解像度とリフレッシュレートに応じて発生する >水平同期信号と垂直同期信号に依存する ビデオカード側がモニタに送るタイミングを主導しているんだと思ってましたけど、そこが間違っていたようです。
575 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 00:14:49 ID:kAGY284T] >>568 >だから、画面更新に合わせずに好き勝手にflipしたら、 >ある1枚が長く見えてるかもしれないしある1枚が欠損しているかもしれない。 >だからちらつくように見えると思うんだけど、 ちらつくっていうよりも、それはがたつくというか、コマ落ちとかそういう心配でしょ? ティアリングってのは君が言ってるように上と下の画像にズレが生じる現象だから、 横に対して線が入って(実際にはドット単位でずれてる)波打ってるようにみえる。 コマ落ちだったらこうは見えないはずでしょ? 実際にプログラム動かしてみてみれば一目瞭然だと思うんだが……。
576 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 00:17:48 ID:VZ3co5HH] >>552 14歳のやつ 計算式思い切り間違えているぞ。 実際にリフレッシュレートの違うモニタで確かめたから間違いない。
577 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 00:28:31 ID:XZV3fJ2J] あれ分母と分子逆になってるのかなあ
578 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 09:11:17 ID:4PYRYd3U] >>576 何がどう違うのか具体的に例をつけて書け 改良案も書け
579 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 14:34:23 ID:N6BYq6eh] >>578 ママにでも頼め。
580 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 15:54:58 ID:VZ3co5HH] >>578 自分で考える癖をつけよう。 適当な数字を入れて検証してみ。 明らかにおかしいのがわかるから。 どうおかしいのかわかれば治し方は自明だと思う。
581 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 17:39:07 ID:oZ+8nNkj] >>575 学生さんなのかな? デジタル写真に法的な証拠能力は無いわけだが
582 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 17:40:41 ID:pV5yAQzs] なんの話だw
583 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 18:16:54 ID:VZ3co5HH] どこの誤爆だw
584 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 20:45:11 ID:C5JJD30U] これが若さか。
585 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 20:51:20 ID:CIAC500Z] いいや幼さだ
586 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 20:51:55 ID:kame7wv0] 中年オヤジは黙っとけよクズ いい年こいて2chやってんじゃねえよカス
587 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 21:05:11 ID:CIAC500Z] こんなヤツもDXライブラリ使ってるのか……
588 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 21:10:13 ID:kame7wv0] 悪いの?使うのに制限あるなら教えてくれませんかね?
589 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 21:11:51 ID:CIAC500Z] 初心者向けライブラリのスレなんだし、カリカリしないでまったり行こうぜ?
590 名前:名前は開発中のものです。 [2009/06/22(月) 21:32:05 ID:6Vl6l2Pm] クソスレ晒しアゲ
591 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 21:58:40 ID:kame7wv0] まったく・・ オッサンにもなってゲームでも作ってんスかね?w
592 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 22:52:27 ID:wZqXAX7r] 世界のゲームプログラマーの殆どがオッサンですよ
593 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 23:27:33 ID:PR8N99oV] そもそもおっさんって何歳以上?
594 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 23:37:18 ID:6Vl6l2Pm] hideyoshi.2ch.net/test/read.cgi/lovesaloon/1235930554
595 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 00:57:26 ID:JW/qeXlf] DXライブラリはDixq氏のゲームプログラミングの館の影響で東方厨が流れ込んできてるからこんなのはゴマンと居るよ
596 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 01:04:40 ID:/wkYhisO] いちいち煽らない。
597 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 09:24:14 ID:eUvBMQ0G] おっさんでもガキでも宇宙人でも何でもいいから、 DXライブラリでおもしろいゲーム創っていこう。
598 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 09:52:25 ID:dhA25QDv] >>580 こういう奴は駄目だな…… デバッグ報告になってない 再現例も書けない奴は現場に出てこないでほしいと思う そもそも「適当な数字を入れたら」ってのは、「適当な数字が必ず入る」という前提なのか? プログラムの動作の中で「適当な数字」が入らざるを得ないような状況を説明できるのか? 例えばOSやモニタやリフレッシュレートを変えたらおかしい、と言うなら説明になるが チート使ったらゲームがバグった、レベルの議論は論外だ こういう人に限って動的な数値に固定値を代入したりしてるんだから
599 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 09:57:56 ID:NMdhocxd] 自分で調べようともしないで、他人に訊けば答えが返ってきて当然と思う人間の方が 現場では嫌がられると思うぞ。
600 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 09:58:29 ID:NvkMU1Q4] >>598 わからないなら、わかりません教えてくださいって素直に言えばいいんだよ。
601 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 10:49:50 ID:4P883XyE] 嘘なら嘘でしたといったほうがいい
602 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 12:18:26 ID:A0fh8Dl0] 作ってて楽しいからゲーム製作してるんだろ? なんでこんなカリカリしてんのさ
603 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 12:28:04 ID:btxPW8HG] 分をわきまえず背伸びしてるから疲れてるんだろ
604 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 15:57:39 ID:+DVKp8CT] >>598 わからないなら素直にそういえばいいじゃない。 >例えばOSやモニタやリフレッシュレートを変えたらおかしい、と言うなら説明になるが >>576 疑うならリフレッシュレート変えて実際に試してみ。
605 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 17:46:43 ID:ifo/8btq] ソース見せてくれたら第三者にも判断つくんだけどね。
606 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 22:32:28 ID:BZp72+wO] ここ現場じゃねーし 掲示板だし そもそも教えない奴にこそ性格に問題抱えてる事がほとんど
607 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 22:34:58 ID:BZp72+wO] わからない、とそいつが言ったら言ったで責めんの目に見えてるし ググレとかそれ以前のことでしょとか嫌味吐くのおまえらじゃん
608 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 23:13:33 ID:joZZV7Mo] フレーム単位で処理してモニタのリフレッシュレートに合わせて移動量を変えればリフレッシュレートによらず処理できることは分かるけど、 例えば、タイトル画面でスタートボタン押してから次の画面が表示されるまでの待ちの処理ってのはどうやってフレーム単位で処理すればいいんだろう。
609 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 23:19:45 ID:+iWMMldZ] >>607 これだけ色々答えてくれる場でなんでそういう考えに至るのか。 あまりにガキ過ぎる。
610 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 23:21:51 ID:UNSoodNB] そんなもん無視しろ
611 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 23:24:00 ID:ifo/8btq] >>608 どういう意味? 待ちの時間って、本当に何もしないって事? それともデータロードとかしてる時の事?
612 名前:名前は開発中のものです。 [2009/06/23(火) 23:53:01 ID:95CP5Nno] ゆとり乙 ガキは教えて貰うのが当たり前だと勘違いしてるから始末が悪い。
613 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 00:21:16 ID:9O2FRRtx] 移動量だけでなく待ちのフレーム数も可変にしないといけないとなるとちょっと面倒だな
614 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 00:45:52 ID:km6ob3xz] >>607 //14歳本より //リフレッシュレートの高い環境ほど1フレームあたりの移動量を小さくしfloatの配列にセットする void SetFrameRate() { float frametime = 0; unsigned int s = GetNowCount();//計算開始時刻をsに代入 for(int i=0; i<30; i++) { ScreenFlip(); unsigned int e = GetNowCount();//計測終了時間をeに代入 frametime += e - s ; s = e; } frametime = frametime/30;//30回採取した経過時間の平均を取る for(int i=1; i<20; i++) { idouryou[i] = i / frametime * 16.67;//←ここの式が間違い!自力で治そう! } } 解説文は間違っていないから単純ミスだろう 適当な数字を入れてみって言ったのは frametimeの値が小さくなればどうなるか式に入れて考えてみってこと 試すまでもなくこの式がおかしい事が判る筈
615 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 01:14:19 ID:OqjteeH5] FPS計測するとき同じミスよくやったなぁ
616 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 01:20:49 ID:zu36k+NF] 俺もそこおかしいと思ってずっと悩まされてた 答え言っちゃいけないのかな あそことあそこ入れ替えるでおk?
617 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 01:31:30 ID:km6ob3xz] >>616 うん。 それでおk。 ちなみに初版で気付いてラトルズに付属の葉書で出したが C++本でも後の版でも訂正されなかった。 サポートページに訂正箇所のpdfがあるが読んだら全然違う箇所のことだった。
618 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 02:15:36 ID:6DfYO0Sm] 14歳から〜って読んでる人結構いるんだな
619 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 10:34:44 ID:QnhT+AWI] 知らぬは、著者ただ一人だけ
620 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 15:00:37 ID:iWb66gX0] 「14歳〜」って読んだこと無いのだけれど、 これ買ったらDXライブラリの作者さんに何らかのお金が行くんだろうか? 行くなら買ってもいいかなあ。
621 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 19:31:31 ID:iPuVSgwO] >>616 何で答えを言っちゃいけないとかいう言葉が出るの?お前は? バカなの間抜けなの?なにがそんなに秘密にしたがんの?死ねば?
622 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 20:29:05 ID:2pcTgAck] 釣りだとわかってるけど笑ってしまったw
623 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 20:33:55 ID:cCHdRy2i] ティアリングに拘るよりやることがあるだろw 釣りであってくれw
624 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 20:53:30 ID:km6ob3xz] ネタじゃなかったら日本が滅ぶw
625 名前:名前は開発中のものです。 mailto:sage [2009/06/25(木) 00:07:29 ID:lGFh6/SQ] ティアリングサーガだな
626 名前:名前は開発中のものです。 mailto:sage [2009/06/25(木) 00:30:15 ID:z4Ht8mWs] こだわるのはプログラマの性だしなあ
627 名前:名前は開発中のものです。 [2009/06/28(日) 16:38:04 ID:Mn3+4Pod] 例えば class Enemy{}; と class Player{}; ってのがあったとして、両方とも座標用変数がpribate:になってる場合、両者の当たり判定はどうやって組んだらいいかな? あと、Enemyをたくさん出したい場合って、class Enemy型の配列をつくっていいの? それとも他になにか良い方法があるのかな? 今現在、練習を兼ねてミニゲームのようなものを作ってて行き詰っちゃって。 よかったら教えてください。
628 名前:名前は開発中のものです。 mailto:sage [2009/06/28(日) 18:36:01 ID:zlbWct1+] 俺は面倒だからpublic でやってるけど まあ普通は getx(){return x;} という public なメンバ関数から座標を取得するのかな もう一方の方は俺はEnemy型のlist でやってるけど 配列でも別にいいんじゃないかな まあ俺みたいなへぼいのから聞くより出来る奴から聞いたほうがいいと思うが
629 名前:名前は開発中のものです。 mailto:sage [2009/06/28(日) 18:52:38 ID:L4rlBUkj] Enemy中でplayer->touch_p(this->x,this->y)とかどうかな
630 名前:名前は開発中のものです。 [2009/06/28(日) 19:48:47 ID:Mn3+4Pod] >>628-629 返答ありがとうございます。 さあ当たり判定を作ろう。と思ったときに上記のことでつまづいて書き込ませもらったんだけど 返答があるまでちょこっとなにか加えようかなと思っていじってたら、上から降ってきたものが 地面についたとたん固まるという想定外の現象に見舞われて、コードの半分ほどを書き直す 羽目になってしまって。 いまだ復旧作業の途中なので、せっかく返答してくれたけどその知識を使うのはもう少しあとになりそうです。 とりあえず、HitEnemy()というメンバ関数を作って、Playerのポインタを渡す感じでいこうかと思ってます。 …出来ないかもしれないけど。返答ありがとうございました。
631 名前:名前は開発中のものです。 mailto:sage [2009/06/28(日) 20:07:12 ID:FGL1jWKo] ポインタを渡しても直接値を参照することはできないから privateならget使うことになるんじゃないかな。 めんどいなら一時的にfriendしてやるとか。
632 名前:名前は開発中のものです。 mailto:sage [2009/06/28(日) 21:45:36 ID:J3SLmnCX] >privateになってる場合 って書いてあるけどprivateにする意味があるからprivateなんじゃないのかな。 参照したいならprivateにする意味がないって事なので、 publicにするかアクセサメソッド作ればいいのでは。 まあ後者がいいと思う。
633 名前:名前は開発中のものです。 mailto:sage [2009/06/29(月) 00:05:45 ID:ExNjCSjV] 仕様がワカランからアレだけど、Enemy同士の当たり判定は必要ないのかな。 後、これも仕様がワカランからあれだけど Direction(方向)の情報とか必要ないのかな。
634 名前:名前は開発中のものです。 mailto:sage [2009/06/29(月) 00:08:39 ID:0NdYoqqQ] シューティングだとそれらのことあまりやらないんじゃないか 無駄にそういうの増やすと負荷増やすだけだし ゲームによってはそういうこともやるだろうが
635 名前:名前は開発中のものです。 [2009/06/29(月) 23:41:07 ID:0tScVOcn] Enemy同士もPlayerと同じ方法で判定すればよくないか?
636 名前:名前は開発中のものです。 mailto:sage [2009/06/29(月) 23:46:20 ID:4d+M4K38] playerとenemyなら1対多だけど、enemyとenemyだと多対多になって 判定回数が飛躍的に増えるって事でしょう。
637 名前:名前は開発中のものです。 mailto:sage [2009/06/30(火) 00:59:39 ID:2TdNpUsa] そもそも何でprivateなのか分かってんのかと 理屈がわかんなきゃ全部publicにしてもstaticにしてもいいじゃないかって話になる クラスの意味をまず勉強した方がいい
638 名前:名前は開発中のものです。 mailto:sage [2009/06/30(火) 12:36:26 ID:YPE4/kWn] GraphLock と GraphUnLock って以前はリファレンスに載ってたと思うんだが、見つからない。 サンプルが見たかったんだけど、以前のリファレンスってもう見れないのか。 インターネットアーカイブはダメだった。
639 名前:名前は開発中のものです。 mailto:sage [2009/06/30(火) 12:48:34 ID:EGHH7lwt] >>639 過去スレにそれっぽいものが www.2chsearch.jp/?b=gamedev&d=1224923873#kiji_828
640 名前:名前は開発中のものです。 [2009/06/30(火) 13:51:06 ID:A8eMVGin] タヒチで日本の即席めん大人気 リゾート地として知られる南太平洋のタヒチ(仏領ポリネシア)で、たつの市の食品メーカー「イトメン」が製造するインスタントラーメンが売り上げを伸ばしている。 ここ10年で輸出量が倍増しているほか、現地商社の依頼で2年前からカップめんの販売も始めるなどファンを増やしている。 イトメンによると、タヒチへの輸出量は1998年が155万食だったが、2008年には356万食に倍増。 神戸税関によると、神戸港の即席めんの輸出量は07、08年と連続で全国一。 うちタヒチへの輸出は08年が303トンで、同税関は「タヒチ向けはほとんどがイトメンの製品」という。 イトメンの即席めんがタヒチへ渡るようになったのは40年ほど前で、神戸の貿易会社がタヒチに住む中国人向けに輸出したのが始まりという。 タヒチには118の島に23万人が住む。今はシェア6割ほどを占め、イトメンが直接輸出している。 即席めんは、国ごとの味覚に合わせるケースが多く、現地生産が主流。 同社は日本で販売している「チャンポンめん」と味は同じで、パッケージを変え「ALL-IN-ONE」の商品名で販売しているが、現地でも受け入れられている。 人気が高い理由について、同社の伊藤充弘社長(53)は「香港製などライバルの製品が少ないためでは」と分析。 タヒチで日本の旅行会社現地法人で10年間働く日野到さん(36)は「日本のラーメンは最も品質が良くて人気。よく売り切れている。 長年、安定して輸入が続いているイトメンの商品が定着している」という。 伊藤社長は「最近は原料の高騰で利益はほとんどないが、親しまれている味を届け続けたい」としている。 www.kobe-np.co.jp/news/keizai/0002072011.shtml 【グルメ】タヒチで日本の即席めん「イトメン」が人気 tsushima.2ch.net/test/read.cgi/newsplus/1246257826/ 【イトメン】 イトメンのチャンポン麺 【総合スレ】 Part2 gimpo.2ch.net/test/read.cgi/nissin/1185419295/
641 名前:名前は開発中のものです。 mailto:sage [2009/06/30(火) 14:07:23 ID:6Cj5H8P6] 貴重な小麦粉をインスタントラーメンなんかに使うな馬鹿たれ。
642 名前:名前は開発中のものです。 mailto:sage [2009/06/30(火) 14:12:28 ID:IiroK7Eg] ここはニュー速じゃないぞ
643 名前:名前は開発中のものです。 mailto:sage [2009/06/30(火) 21:08:32 ID:O5h6+0gK] 私がニュー速だ。ここをあけろ!
644 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 00:09:56 ID:g4kBRgyq] DXLibを使う場合、全体を int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpc, int nC){ while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){ 〜 } } こう言う風に作れって本に書いてあったんですが この構造と本格的なwinプログラムの場合のウインドウズプロシージャとかとの関係がイマイチわからないのですが どういう風になってるんでしょうか?
645 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 00:15:05 ID:UhT4qFyx] >644 関係ないと思っておk
646 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 00:21:01 ID:tzxPZ+Bo] 初めてDXライブラリ使った時、小難しいwinプログラムがなんでこんなツクールみたいになるのかと愕然としたよ
647 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 00:31:13 ID:9VzVKeVm] 俺も最初WinMainではウインドウ作成とメッセージループしかしちゃいけないと思ってた 知人がタイマーイベント仕掛けてWM_TIMERがきたときにループ処理してたからそういうもんだと思って疑わなかった
648 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 05:08:47 ID:aia3X3LP] BorlandC++BuilderやDelphiのソースを読むともっとビックリするよん。
649 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 09:35:30 ID:LrL8gFoC] 落ち目会社だしどうでもいい
650 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 19:59:44 ID:eeCacGXj] >>646 きちんと関数化、ライブラリ化すれば難しいゲームでも綺麗に書けるってこと DXlibの機能には制限があるし、余計な機能もついているので、 最終的に自分で最適なライブラリを書くようになれるのがいいよ
651 名前:名前は開発中のものです。 mailto:sage [2009/07/03(金) 20:54:33 ID:BsjXjKQw] SetMainWindowTextが未定義関数扱いされるんだがどういうことなの・・・ 他の関数は普通に使える
652 名前:名前は開発中のものです。 mailto:sage [2009/07/04(土) 18:08:40 ID:p2ue3IYD] >>651 うちでは正常に動くが。ヘッダから消してしまったとか。
653 名前:名前は開発中のものです。 mailto:sage [2009/07/06(月) 22:42:09 ID:AVbDbUwf] ステータスバーってどうやって付けれるのよ? おせーて
654 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 01:56:14 ID:OgMSMAZ5] ファイルから再生する音楽のループ位置を設定することはできますか?
655 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 02:25:32 ID:94Ripojr] >>654 SetLoopPosSoundMemではだめなの?
656 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 02:58:22 ID:OgMSMAZ5] >>655 ありがとうございます。すみません、説明不足でした。 PlayMusicでストリーム再生し、ループ位置を設定したいのです。
657 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 11:53:36 ID:Qn1Es1Py] >>655 SetLoopPosSoundMemとSetCreateSoundDataTypeを使って解決しました。 ありがとうございました。
658 名前:名前は開発中のものです。 [2009/07/08(水) 22:05:37 ID:qTICtjjx] CPU Core 2 Duo 2.66GHz RAM 4GB GPU GeForce 9600M GT VRAM 2GB OS Windows Vista 64Bit DxLibで作られたソフトをこいつで動かすと、始めは60fpsでなめらかにも関わらず、 しばらくすると30fpsになるのはなぜなんだ? ガクガクするならまだしも、ぴったり30fpsなんだ。 またしばらくすると治ったりもするし、なにかひとつの関数が原因になってたりするのかな?
659 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 22:17:02 ID:i+ja7A8H] ScreenFlip()を2回呼んでいるとか
660 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 22:40:16 ID:uhEtjIe1] Vistaのいたずらじゃないかな? うちも24か30で安定、フルスクリーンだと60fpsありがとうございます状態。
661 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 23:16:39 ID:tUPC3dXe] なんか最近どっかで見たような質問だな……。
662 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 23:26:07 ID:Sk8AIN2R] ビデオカードとそのドライバと設定だな 60、30、24ってよく見る数字だし
663 名前:名前は開発中のものです。 mailto:sage [2009/07/09(木) 01:06:35 ID:h1wYunUV] 60hzに同期して描画したとする (1) 1フレームの処理が1/60秒未満なら1秒間に60回描画できる (2) 1/60秒以上2/60秒未満なら30回描画できる つまり瞬間的には30か60のどちらかになる 1のケースと2のケースが混ざったとすると長期的には平均することで30と60の間の値になりうる しかし大抵の場合は1フレームの処理が1/60秒で収まるか、あるいは超えるかで30と60に分かれる と予想
664 名前:名前は開発中のものです。 mailto:sage [2009/07/09(木) 02:46:07 ID:IPUdantx] ていうか垂直同期信号待ちをしてるのかしてないのかを先に明記してくれないと。
665 名前:名前は開発中のものです。 mailto:sage [2009/07/09(木) 22:24:55 ID:9TUAw73M] GPUの垂直同期をオフにしてもオンにしても結果が変わらず。 というか、GPUの設定をどう変えてもまったく同じ・・・
666 名前:名前は開発中のものです。 mailto:sage [2009/07/09(木) 23:12:54 ID:PnCCkvgD] もともとDXライブラリ側でOFFにしてるんじゃないの?
667 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 06:17:28 ID:On7fn4n8] 画像を半透明で描写する方法ってDXライブラリにありますか?
668 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 06:55:03 ID:aqVpLVfM] リファレンスも読めんのか…
669 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 09:02:40 ID:G7FiBYYu] あるよ。リファレンスにある。 全部読んでそれでもわからなかったらまたおいで。
670 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 12:51:04 ID:xhZ5jDJO] 座標ってxyで行うから構造体でセットにして扱うのってなんか不都合ある?
671 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 13:23:29 ID:Pbfo1cNY] 無いよ。 bullet[i].locate.x = 320; とか多重に扱うと見た目が重く感じるぐらい。
672 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 13:23:43 ID:GMEf2Yqs] 全然ないから、POINT を使うと良いよ。
673 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 15:09:18 ID:xhZ5jDJO] >>671-672 thx 多重に気をつけて、メンバ変数は極力そのクラス内で処理するようにしますわ
674 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 23:17:50 ID:kvfVpi7w] EnemyManager.Small.Flying.Bullet[i].Location.x = GameCanvas.TopLayer.ViewObject.Set(320); とかなら、ちょっとは考えろよwwとか思うけど。 普通に組んでる限りじゃ、そんな気にする必要はないかと。 どうしても気になるなら、POINTなりをpublicで継承すりゃ、 bullet[i].x=320にできるし、どうせゲームだからこれで問題無いでしょ。
675 名前:名前は開発中のものです。 mailto:sage [2009/07/11(土) 01:55:20 ID:UeAE0WWV] アクセス権が気になるなら参照を返すアクセサ作ればいいしな bullet[i].x()=320; これくらいなら見た目もタイプ量も許容範囲だろ
676 名前:名前は開発中のものです。 mailto:sage [2009/07/11(土) 01:56:20 ID:UeAE0WWV] あ、もちろんインライン展開される書き方前提でな
677 名前:名前は開発中のものです。 mailto:sage [2009/07/11(土) 07:49:08 ID:wBBMdddU] そういったセットになり易いものって他にどんなのがあるかな?
678 名前:名前は開発中のものです。 mailto:sage [2009/07/11(土) 18:21:58 ID:SvZlB+M+] セットって?
679 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 04:20:59 ID:wRlAP6qv] たまにタスクが応答なしになるという原因不明のバグに悩まされ 再起動してみると普通に実行されるのは何だろう
680 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 04:40:19 ID:mFQZCpWd] >>679 何を言いたいのか分らんが・・・ (エスパー希望の相談なのか、只の雑談なのか、愚痴なのか?) とりあえず、タスク がタスクマネージャーとかのタスク(application)の事なら、 単純にどっかが無限ループに嵌ったか、画面書き換えの部分を通らなくなったか(orキー入力の部分を・・・) だろう。 とりあえず、printfを色んな所に仕込んでおいて、デバックを掛けるとかするのが基本。 怪しい所がどうみてもライブラリ側だったら、公式に書き込めばいいし、 そうでないなら、再現性を高めて、その変な挙動をここででも、公式ででも聞いてみればいい。 大概は、配列でindexが超えて・・・・とか、switchでbreak;が抜けてて・・・とか if文の後に変なモノがあって、ifでの抜けだしが効かなくなってたりとか、 {}の対応が微妙にずれてて・・・とか、初期化してないのを使っていて、タイミング次第で・・・とか (後は、WindowsUpdateしてなさ過ぎて、リターンが遅れてるのを応答なしに解釈されてるとかもあるか、)
681 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 04:49:20 ID:wRlAP6qv] >とりあえず、タスク がタスクマネージャーとかのタスク(application)の事なら、 その通り >単純にどっかが無限ループに嵌ったか、画面書き換えの部分を通らなくなったか(orキー入力の部分を・・・) >だろう。 そういった部分は見当たらなかった 何せOSを再起動させてそのプログラムを再び実行させたら何の問題もなく動いたのですからプログラムに原因があるとは思えないのですが
682 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 05:07:49 ID:pOq3rm7P] そういう現象が出てるのが君だけなんだから君のプログラムに問題があるか、 あるいは君だけが体験できるくらいレアな現象って事になるだろう? 調べる事ができるのは君だけなんだから 素直に>>680 の忠告に従って、きちんと調べていけばいい。 「これで合ってるはず」なんて余計な「思い込み」はデバッグ作業の邪魔にしかならないぞ。
683 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 05:36:27 ID:mFQZCpWd] >>681 それだけの事で、プログラムに問題があるとは思えないって・・・・ とりあえず、 初期化なしでつかってる場合にはOS再起動とかで簡単に変わるし、 時間取得なんかをちゃんと処理してないと、 日にち跨ぎや時間跨ぎで、発生したりしなかったりする。 >>682 も言うとおり、思い込みよりも手を動かしてデバックしなぁ。 プログラムは書いた通りに動いても、思った通りには動くとは限らないんだからさぁ。
684 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 06:46:29 ID:wRlAP6qv] だってデバッグしたけど分んないんだもん まあ動くようになった訳だからそのまま何事もなかったかのように過ぎていくのだろう
685 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 07:14:55 ID:MgrfsfEm] forやwhileで使ってる変数の初期化忘れあたりが怪しいけどどうなんだろうな
686 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 07:53:46 ID:wRlAP6qv] それはないと思うがなあ その可能性のあるコードって、(実行時に処理を通ってるコードの中で) while( (!ProcessMessage()) && (!keybuf[KEY_INPUT_ESCAPE]) ) しかなかったんだが(変な書き方でスマソ) 確かに keybuf はグローバル変数にしてしまってるし char keybuf[256] = {0}; で初期化したつもりになってるけどどうなんか分らん まあ動くようになったし確認しようにももうできないからな、動くから まあ良しとして続けるしかないな
687 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 08:07:50 ID:1FTDe9TM] こうしてバグが量産され、ついにはうんともすんとも動かなくなりねあげる姿が
688 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 09:43:25 ID:MgrfsfEm] 裏画面の内容をテクスチャにコピーする関数ってあったっけ?
689 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 20:58:42 ID:2Fk/wASW] 「無いと思う」とかじゃなくて確かめないと。 プログラムに思い込みは絶対あかん。
690 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 23:37:46 ID:wRlAP6qv] だって動くようになったから確かめようがないじゃん この先動かなくなる可能性ないわけではないが そうなったところでこれ以上バグは見つからんだろうな、俺の力では
691 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 00:00:28 ID:MHxGaYOY] だからprintfとかで一つ一つ処理の中身を吐き出して見るんじゃん。 外見上動いてても、バグがあれば意図してないデータが含まれてる。
692 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 01:08:24 ID:ouOmT7td] うーん、やっぱりバグがあるとはどうしても思えないし 多分printfとかで一つ一つ処理の中身を吐き出して見てもどの道今の俺の能力では バグを発見できるとは思えないから忠告はありがたいがこのままいくことにするわ 以前も同じようなこと何回かあったしそんときもちゃんと完成まで漕ぎ付けているし
693 名前:名前は開発中のものです。 [2009/07/15(水) 01:17:22 ID:Pli3pE87] ID:wRlAP6qv ID:ouOmT7td お前さ、そんなスタンスなら、なんでわざわざここに書き込んだわけ?はじめから書き込むなよ。 なに、構って欲しかった?わざわざお前の書き込みに一生懸命考えてレスしてくれた 人達に失礼だと思わないの?
694 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 01:49:11 ID:9zT2ADv7] 実際問題、再現性のないバグを修正するのは難しいよ。 プログラムを書いた本人に見当がつかないなら、他人の経験に頼るのも良いと思うよ。 自分がそんなバグにぶち当たったとしても根気だけで調べようとは思わないな。 時間が余ってるなら別だけど。 で、他人の立場から言うと、あれだけの情報で問題のありそうな点を指摘するのは無理だ。 アドバイスとしてはバグ発見を諦めるのではなく自分用バグリストを作ってそこに追加しろ。
695 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 02:09:56 ID:ouOmT7td] 何かヒント得られると思って… でアドバイス通りに考えてみたけど駄目だった
696 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 02:15:50 ID:oAaV9htY] >>695 そうか、お疲れ。 コード晒す勇気があれば、案外デバックしてくれる人が居るとおもうけど… (自分一人だと考えがなかなか間違いに気付きにくいからコードレビューは有効だと思う) 「アドバイス通りに考えてみた」ってのは、 もちろん、printfとかでデバック情報をポコポコ吐き出させたけど、バグらしき場所が見あたらなかった って意味だよね。念のため。
697 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 02:28:23 ID:HAQqwNAf] ソースうpしろ 無理なら帰れ
698 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 06:33:25 ID:jzF+qqts] 最小のコードを切り出してる最中に問題が解決することって結構あるよね? 俺だけ?
699 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 07:55:06 ID:OJRObvUW] あるある 意外とバグって見当つけてたとこ以外にあったりするもんなんだよなぁ
700 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 08:38:43 ID:MHxGaYOY] >>696 >>692 でデバッグしてないと言ってるじゃん。
701 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 10:08:04 ID:kzUIqF8J] バグを直接見つけようとしないで、確実にそのバグを再現できるようにするのが第一歩
702 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 10:45:30 ID:jzF+qqts] >>701 分かる分かるw そしてバグを再現させるのは非プログラマに丸投げする俺
703 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 11:25:55 ID:aCtz8rQi] で少しずつ条件を変えてあたりをつけていく。
704 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 20:48:39 ID:vgHuQMIa] おまえら仕様書切らないから テストも作れないし そもそもバグなのか想定なのかも混乱するんだろ?
705 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 21:06:50 ID:SOTm+sdF] 分け入っても分け入ってもバグの山
706 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 21:09:53 ID:MHxGaYOY] 仕様書、製造終了してから書いた記憶しかないなぁ…
707 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 23:03:43 ID:MZkEPg1i] >>704 最終的にうまく動作するものが仕様です。 どだい、仕様書でバグが防げると思ってる法が異常。 仕様書の想定だろうが、結果駄目ならバグだろ!
708 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 23:17:51 ID:OJRObvUW] 個人製作だし仕様書なんて全部脳内の香港式です 仕様の段階でバグ出すレベルの人はちょっとヤバイ。
709 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 00:10:27 ID:ZK0MxNzH] 脳内でまとめようとして、てこずるものを 紙に書いてみたらあっさり解決ってのはよくあることだけどな。
710 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 03:15:22 ID:1/ar+JW7] そういえば話はずれるけど、「仕様を全てきっちり書いて、それを紙に印刷しておく のが重要なんです!」と力説する新人が入った時を思い出した
711 名前:名前は開発中のものです。 [2009/07/16(木) 10:03:06 ID:qgWixxR7] 人それぞれで、 仕様書がなければダメになる人とそうでない人がいる。 始めた時は正しい方向に向かっていたが、 出来上がった時には違った方向を向いている、 世の中にはそんな人も多くいる。 チームで進めるとき、意思の統一が重要で 依頼しても、出来上がりが違うものになるのは困り者。 人それぞれなので、きちんとできるひともいるので、そのような人は不要と言われる
712 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 10:53:13 ID:glHWB671] もし、違うものが出来上がってきたら、 「言った、言わない」の問題になってしまうから あらかじめ、ちゃんと紙にして保存しておくって事だろう。 できるできないの問題じゃないよ。 自分のため、相手のための保険みたいなもんだ。
713 名前:名前は開発中のものです。 [2009/07/16(木) 11:11:34 ID:qgWixxR7] 掛け捨て保険ではない。 チームで行う時の基盤になる、開発ドキュメントとして 取り扱い説明書として、保守業務の基準として必須のものである。
714 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 11:30:46 ID:Frg8+T60] チームでやるなら仕様書必須 作り方が違うだろ ttp://marupeke296.com/DXCLS_BottumUpStructingOfClass.html
715 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 13:48:32 ID:JxCE3uCo] コメント見ただけで仕様が把握できるようなソースが書けるようになりたい いつかは。
716 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 16:20:01 ID:MA5d2Bm1] コメント書かなくても把握できるソースが理想かな。
717 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 16:29:44 ID:K0RdyJ0x] どうも英語のコメントは読むのも書くのも苦手で……
718 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 17:36:09 ID:sfuED1R6] 悪ノリではっちゃけたコメント書いてるのは俺だけではないはず
719 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 21:20:58 ID:0qzmxnba] >>715 ダウト 仕様はソースと答え合わせする為のもの ソースみて内容がわかるのと、本来どうあるべきなのかは別問題
720 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 22:04:34 ID:sfuED1R6] そうか個人製作の場合ととチーム製作の場合と仕様書と仕様と仕様バグとバグを はっきり切り分けないで話してるからこんなにカオスなのか
721 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 09:45:51 ID:iPNwCeP8] みんな自分の話してるだけだからな
722 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 09:47:37 ID:ZC/cxW1d] メンバ関数でモジュール化するだけだよ、基本的には それにコメントは確かに大事だが 関数名をgetScreenFrameParSecondみたいにきちんと書けば、仕様が明らかにわかる クラス・変数名も同じ 例えばiteratorをitとか省略して書くのはダメ タイプ速度は速くなるが、後のコーディングで詰まるから、作業は全く速くなってない。むしろ遅くなる 省略しなければiteratorという言葉を知らない他人が見ても、ググれば意味がわかる あとは、日本語で名前つける人がいるけど ネットに和英辞書あるんだから使ってほしい 英語の勉強になるし国際化にも対応できる
723 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 10:08:40 ID:fic4arti] そこまで欧米コンプレックス持ってないし…。 国外にソース晒すほど立派なもん作れるなんてうぬぼれてない。
724 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 10:48:52 ID:XzHK2st6] 自分で分かりやすいのが一番
725 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 11:36:53 ID:71PbqEZA] 趣味の範囲内だし態々・・・
726 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 14:37:53 ID:AtGtaSaV] 熊々翻訳しなきゃわからないレベルの英単語は使わないかな
727 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 14:42:09 ID:vX9OmGXP] FileHandle ofh ( FileName, ">" ); とかは問題ないと思うけどな。宣言のクラス名で大体分かるし。 宣言が遠すぎて分からんような関数ならその時点で問題だし。
728 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 15:20:17 ID:vX9OmGXP] というか、「ローカルスコープの」識別名は短いのが主流な気がするんだけど。 定番の良書とかでも普通みんなそうだし、Linuxカーネルみたいな大物ソースでも そうだし。 結局、識別名だけで理解できる情報は限られるのも現実。そうでなければ、それこそ アプリケーションハンガリアンなんかを全識別名に徹底すれば最高なのかもしれない けど、実際は関数エントリにはしっかりした出入り仕様のコメントが欲しい訳で。 まぁ、スレ違いなんだけどね。 正直、D3DXのせいで、「扱いやすくする」という使命のラッパーライブラリの系統 は居場所を失ってるから、このスレの居場所も同様によく分からないんだよなぁ。
729 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 15:37:38 ID:/TZL4Vnl] ∩___∩ | ノ ヽ / ● ● | クマ知ってるか。 | ( _●_) ミ 出雲地方では、木と岩と水の在る場所を「熊々しい谷」と呼ぶ。 彡、 |∪| 、`\ 「熊々しい」とは、神々しいの意味だ。 / __ ヽノ /´> ) (___) / (_/ | / | /\ \ | / ) ) ∪ ( \ \_)
730 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 22:02:14 ID:Z3s3jxcY] >>722 レベルの長文関数名を記述すると 引数がある場合とかに 複数行にわたってしまって なんだか見づらくならない? 今まで見たソースだとgetScrFPS程度には略してるけど おまえらどうなの?
731 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 22:12:33 ID:3aIuRMAB] 略すと判んなくなる時以外は略してる。
732 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 22:12:54 ID:a1yK0hIN] 目的や用途によって使い分けてる。
733 名前:名前は開発中のものです。 [2009/07/17(金) 22:29:41 ID:PpX+kDe1] クラスの中に座標XとYをまとめてクラスか構造体にしておいて、他の関数などに渡すときに ひとつのGetPos()って関数で渡すにはどうしたらいいかな? 考えてみたんだけど、どうしても一つでいろいろなところで使える方法がみつからないんだよ。 まだプログラム経験が短いもんで。
734 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 22:47:07 ID:a1yK0hIN] 構造体を返せばいいと思うけど、そういうことではない?
735 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 23:03:35 ID:TRJ/ynqn] まあ状況によるけど。 基本Getは単一変数を返す方がいい。 内部の構造体のデータを返すのは間違っている。 その場合はとるのではなく、チェックしてもらう。 bool chk_XXXX (pos *dat); が正しい。 で、この関数はインラインであれば、スピード的には何の問題も無い。 考え方が逆。
736 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 23:06:22 ID:TRJ/ynqn] 補足、クラス内のデータの処理はそのクラスの関数で行う! これ基本中の基本
737 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 23:31:36 ID:cB4HhxMP] 皆が何言ってるかさっぱりわかんないぜ! でもゲームは作れてるぜ!
738 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 23:36:29 ID:iPNwCeP8] FPSはそれ自体で意味がわかるから使うけどScrは無いわ
739 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 00:03:32 ID:pCmtYAM2] class A があって xが public なメンバの場合 A.xでアクセスするのと private の場合 getx(){return x;} でアクセスするのと速度変わらんのか
740 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 08:04:35 ID:QevxnE5g] >>739 詳しい事はしらんが、常識的な範囲でコンパイルを考えれば、 最適化が普通だったら遅くなる理由は無いと思う。 最適化をしないなら、クラスから関数のアドレスに飛んで、 そこで値:xを取得して、それをどっかに格納な分 遅くなるんだろうけど・・・。
741 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 08:54:43 ID:UXbVEGUE] >>740 ちょっと違う getx(){return x;} がクラスの中に書かれ、そのクラスがヘッダーファイルなら。 インライン展開されるので aa = getx(){return x;} || aa = A.x と同じ 最適化は関係ない
742 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 08:56:36 ID:UXbVEGUE] あ、ちょっとまて、C++のみの話な、他の言語は知らん
743 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 10:41:55 ID:PwgwIsF1] それはヘッダに直接定義書いてるからinline付いてるだけじゃね ソース側で定義でもinlineつけて展開できるなら同じじゃないっけか 後、クラス内での処理はインラインしてくれるのが普通だったきがする メンバ関数内で別のメンバ関数呼び出して処理とか まー、>>736 か
744 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 14:09:33 ID:xlxZEQtn] インスタンスが確保されてる状態なら、参照を返せばいい。 class Foo { Pos pos_; public: Pos& GetPos() { return pos_; } const Pos& GetPos() const { return pos_; } }; スコープの外側にインスタンスを返すなら、参照渡しじゃ無理なので、コンパイラの NRVOに期待して、例えば以下のように書くことになる。 inline Pos GetPos() { Pos result; /* code */ return result; } NRVO非対応でRVOだけ対応のコンパイラだと、 inline Pos GetPos() { /* code */ return Pos( /* code */ ); } こういうコードじゃないと>>741 の言うような最適化は掛からない。 コンパイラーメーカーもC++標準化委員会もNRVOが掛かるように頑張ってるはずだが、 実装状況はコンパイラによってまちまちなんで調べてくれ。多分検索すればすぐ分かる。 VC++なら2005からNRVO行けるっぽい。/O1くらいでもNRVOは掛かる模様。 プロファイラで後から最適化ってのも常道だけど、I/F設計段階の話はそうもいかないし なぁ。 まぁ、俺なら基本的には参照渡し、リターンで解体される自動変数なら値渡しで返して、 後者がボトルネックになるならインライン化でたぶんNRVO発動でおk、って書く。で、 「この設計だと遅そうだしポインタ渡そう」って言われたら、実際どうなるか興味ある んでベンチでも書いたり、ついでに↓みたいなのも一緒に見たりしながら相談する。 msdn.microsoft.com/en-us/library/ms364057 (VS.80).aspx
745 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 14:20:17 ID:xlxZEQtn] >>744 補足 スコープの外に「自動」インスタンスを返すなら、だな。 つーか、二つめと三つめは最初の質問のシチュエーションから逸脱してるな。すまん。 まぁでも、メンバ関数でもNRVOは重要なんで、仕組みは知っておいた方が。
746 名前:名前は開発中のものです。 [2009/07/19(日) 05:29:35 ID:TXlg+NUw] //●ジャンぷ if(key & PAD_INPUT_B){ for(double t=0; t<10; t=t+0.1){ int vo = -60; int ay=10; jikidata.y = vo * t + 1/2 * ay * t*t + jikidata.y; WaitTimer( 1000 ); jikidata.ghandle = LoadGraph("media\\imgbb4792ea7ec6f3d_frame_0009.bmp"); } } DXライブラリを使ってアクションゲームのジャンプをプログラムしたいんですが これで実行すると、キャラが止まったり、動かなくなってしまうんですが、どこを改変すればいいんでしょうか?
747 名前:名前は開発中のものです。 mailto:sage [2009/07/19(日) 05:51:18 ID:EpiDWLJN] >>746 正直どこにつっこめばいいかわからないので 公式のサンプルを参考にすればいいとだけ言っておく homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N2
748 名前:名前は開発中のものです。 mailto:sage [2009/07/19(日) 11:01:02 ID:7iXtFi1U] WaitTimerは使っちゃだめれす><
749 名前:名前は開発中のものです。 [2009/07/19(日) 21:11:12 ID:mJh1WCZZ] フラッシュマン
750 名前:名前は開発中のものです。 mailto:sage [2009/07/20(月) 01:05:51 ID:pleKhZHB] >>748 リアルタイム処理で使うのは駄目に決まってるな フェードアウト後の待ち時間とかに使うのが正しい でも個人的にはウェイト系の関数やら処理体系作って、それを使えばいいと思う while(……){ //ここにwaitから切り放したい処理を書く //例えば、ゲームは止まっても風景は動かしたい //処理ごとにwaitを分ければさらに色々なことができる if(waitFlag==FALSE){ //ここにwait前にやりたい処理を書く //waitTime、waitFlagは本来条件式で設定するのが望ましい waitTime=1500;//1500ミリ秒=1.5秒 waitFlag=TRUE; }else{ if(1ミリ秒経過したら){ waitTime--; } if(waitTime==0){//1.5秒経った waitFlag==FALSE; }else{ //waitTime=0未満;を描いたな?と怒る //エラーフラグを大量に埋めるのは開発の最適化とアンチートに役立つ } } } こんな
751 名前:名前は開発中のものです。 mailto:sage [2009/07/20(月) 01:09:47 ID:pleKhZHB] 最後のとこはelse if(waitTime<0)だた
752 名前:名前は開発中のものです。 mailto:sage [2009/07/20(月) 18:56:48 ID:u2THICPq] ジャンプするたびに画像をロードしまくってどうする
753 名前:名前は開発中のものです。 mailto:sage [2009/07/20(月) 23:05:51 ID:hrqPLvNB] >>750 これならどの環境でもキッチリ結果が出るね カウンタ回すしかやったことないから参考になるわ だけどアクションとかだと遅延おきてカクカクにならないかな
754 名前:名前は開発中のものです。 mailto:sage [2009/07/22(水) 14:20:11 ID:23EfZ5Te] 同じフォルダ内にあるTTFフォントを使って文字列描画したいんですけどそれはDXライブラリでできますか? フォントのファイル名を指定して読み込みするような関数が見つからなくてどうすればいいか困ってるんですが
755 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 01:22:02 ID:w7s2/iav] なんかソレっぽいサンプルどっかで見かけたような気が……
756 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 01:49:57 ID:w7s2/iav] ごめん適当なこと言った DXライブラリでは出来ないような気がする でもフォントファイルを一時的に開くプログラムがあれば通常のフォントと同じように 名前の指定だけで使えるはず……
757 名前:754 mailto:sage [2009/07/23(木) 02:35:05 ID:M1f3xhTA] ありがとう!!探してみて解決したよ!! 結果はWin32APIのAddFontResourceEx関数を使えば一時的にTTFファイルからフォントリストに登録できるみたい 第二引数に0x10(FR_PRIVATE)を渡せばそのプロセスだけで使えるようになるぽ 使い終えたらRemoveFontResourceExで開放する必要もあるみたい。登録時とまったく同じ引数で呼び出す必要あり AddFontResourceEx("hoge.ttf", 0x10, 0); // これでhogeフォントを登録。DxLibのEnumFontNameでも表示されるはず。 RemoveFontResourceEx("hoge.ttf", 0x10, 0); // 削除。引数を↑と同じにしないといけないらしい いくらDxLib関係でググっても見つからなかったので少々冗長気味に解説してみたよ 正直この機能はDxLibにラップされてても違和感無いと思うんだけど
758 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 03:39:18 ID:8ujD6dNo] 確かに自動対応してもいいレベルではある
759 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 21:34:58 ID:PImKyCUU] 暗転ってどうやってやってる?
760 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 21:51:01 ID:tLjhSV6z] 普通に画像を表示して、その上にかぶせるように真っ黒な画像を少しずつ濃くしながら表示。 完全に濃くなったら、表示する画像を切り替える。 真っ黒な画像を少しずつ薄くしながら表示する。完全に薄くなったら、以後、真っ黒な画像は表示しない。 これでいいと思う。
761 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 23:37:10 ID:JVsH2uDi] SetDrawBlendModeとDrawBoxでやってるな。
762 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 02:52:41 ID:sonMl0Vt] これ一旦止めた音楽止めた場所から再開させることできないのか
763 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 03:42:20 ID:nwWosEk7] できるけど Dxlib.h内を、サウンドハンドルの再生位置で検索
764 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 04:08:03 ID:sonMl0Vt] ありがとうございます やってみました PlaySoundMem でやってるときは GetSoundCurrentPosition で取得すればいいのかな でやってみましたが GetSoundCurrentPosition がいくら再生してるときでも0しか返ってこないのですが ちゃんと引数に正しい SoundHandle 入れてますよ
765 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 04:20:10 ID:nwWosEk7] ごめん、検証してなかった PlaySoundMemのTopPositionFlagを0にすれば 取りあえずは途中から再生できるはず
766 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 06:13:08 ID:sonMl0Vt] ありがとうございました、できました
767 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 08:59:47 ID:5C3gkZxn] DXライブラリ卒でD3D9使ってるけど、久々にDXライブラリ時代のソース引っ張り出して ちょっと懐かしかった。pchも使ってなかったんだなぁとか。 つーかpch使ってない奴も多そうだから勝手に手順説明するぜ。 1. プロジェクト→新しい項目の追加→ヘッダーファイルでstdafx.hをプロジェクトに追加 2. プロジェクト→新しい項目の追加→C++ファイルでstdafx.cppをプロジェクトに追加 3. DxLib.hや標準ライブラリなど、自作でない巨大ヘッダのinclude文を*.cppから全部削除して、 代わりにstdafx.hの中に全部突っ込む(自作ヘッダは普通に*.cppで各自includeする方がいい) /* stdafx.hの例 */ #pragma once #include <DxLib.h> #include <string> using std::string; /* ここまで */ 4. 全ての*.cppの最初に#include "stdafx.h"を書く(コメントは前に入れてもおk) ちなみにstdafx.cppは、#include "stdafx.h"の一行だけでおk 5. ソリューションエクスプローラでプロジェクト名を右クリックしてプロパティを開き、左上の 構成を「すべての構成」にして、構成プロパティ→C/C++→プリコンパイル済みヘッダー→ プリコンパイル済みヘッダーの作成/使用を「プリコンパイル済みヘッダーファイルを使用する (/Yu)」に変更する 6. ソリューションエクスプローラで「stdafx.cpp」を右クリックしてプロパティを開き、左上の 構成を「すべての構成」にして、構成プロパティ→C/C++→プリコンパイル済みヘッダー→ プリコンパイル済みヘッダーの作成/使用を「プリコンパイル済みヘッダーファイルを作成する (/Yc)」に変更する これで、stdafx.hを変更する時以外は、ビルド速度がかなり劇的に上がるはず。 大した作業にはならないはずだから一度試すといい。
768 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 09:09:49 ID:5C3gkZxn] ああ、気付きにくいかもしれないことを補足。 自作ヘッダから<string>とか<math.h>とか使いたい場合も、「必ず全ての*.cppの最初で stdafx.hがインクルードされる」という規則だから、結局は自作ヘッダがインクルードされる 時点ではstdafx.hが既に読み込み済みになってる。 なので、自作ヘッダに#include <string>とか書く必要も無し。自作ヘッダで使いたい標準の ライブラリなんかのincludeも、全部stdafx.hに逃がせばおk。
769 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 17:40:08 ID:JWiEj2kH] これは便利そうですね デメリットとかはありますか?
770 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 18:12:52 ID:HmqJ54co] 今の俺には何のことだかさっぱりだがメモっておく
771 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 19:26:36 ID:5C3gkZxn] デメリットは思い当たらないなぁ。 「使いたい外部ライブラリのヘッダを全部何も考えずにstdafx.hに入れまくれ」 「全てのcppファイルの頭でstdafx.hをインクルードしろ」 ってルールが縛りといえば縛りだけど、むしろ楽になるだけだと思う。コンパイルも 別次元に速くなるし。 原理的には、stdafx.hの中身をコンパイルし終わったとこでいったん止めちゃって、 中間情報として拡張子pchのファイルに保存しておき、*.cppをコンパイルする時に その情報を使い回して、#include "stdafx.h"まで読み飛ばして、それ以降のソース だけコンパイルするイメージ。実際に内部がどう動いてるかは知らないけど。 なので、cppの頭で#include "stdafx.h"を入れ忘れると、 「プリコンパイル済みヘッダーの検索中に予期せぬ EOF を検出しました」 とか言われる。 stdafx.hの中には、C++のソースなら何書いても多分平気だから、大抵の使い方には 対応できると思われ。あまり頻繁に書き換えると、そのたびにpch作り直しで効果が 薄まるけど、自作ヘッダでも「更新少ない」「かなり色々なソースから参照される」 みたいな奴はstdafx.hに入れちゃってもいいと思う。
772 名前:名前は開発中のものです。 [2009/07/25(土) 15:25:58 ID:3qZ+q5uI] 当たり判定はこうすればいい。 プレイヤーキャラクターを移動させたければこうすればいい。 といった部品部品は作れるけど、いざゲーム自体を作ろうとなったら全然作れないんだ。 いったいどうしたらいいのかな・・・?
773 名前:名前は開発中のものです。 mailto:sage [2009/07/25(土) 15:36:28 ID:hVdocGyY] その部品を組み立てればゲームになるはずなんだが 一体何が問題なんだ? それを言わずして質問されてもわかるはずがない。
774 名前:名前は開発中のものです。 mailto:sage [2009/07/25(土) 15:37:45 ID:tEWYFYw5] >>772 とりあえず目標を決めてはどうか。 ただし、あまり大作でも作れなきゃ意味がないので、 初期の携帯電話用ゲームや、初期のファミコン、インベーダゲーム、倉庫番あたりを目指す。 矢印キーだけ、せいぜいそこにボタン1個くらいで遊べるゲームが楽でいい。 目標が決まったら、それを「部品」に分解する。 うまく部品単位になればお前さんの勝利。
775 名前:名前は開発中のものです。 mailto:sage [2009/07/25(土) 17:05:50 ID:OnXN/lFa] 綺麗な部品作りの楽しさとゲーム作りの楽しさは、何というかちょうど90度くらい ずれた方向性がある。両方うまい人はすごくいい。 最初の一歩はとにかく単純に、ゲーム内容どうでもいいから一本のゲームとして 成り立ってる物を作る、つーこと。極端な話、全部WinMain()に入ってても一向に 構わない。(綺麗な部品作りに慣れてるならそうはならないだろうが) 部品は必要性を実感してから作る方が最適になりやすい。いわゆるシーズじゃなく ニーズで作る。先に需要を予測して部品を作る、ってのはほどほどにすべき。 で、「クソゲー作ってもなぁ」と思うなら、いっそ最初から真面目に本気ゲーを 作り始めてしまっても全然問題ない。
776 名前:名前は開発中のものです。 mailto:sage [2009/07/26(日) 08:48:42 ID:Hw5xOpYa] 個々の部品の作り方が分かっていても、それらを全部組み合わせて、うまく動くようにするのは結構大変。 特にシーンやリソースの管理が入ってくるとかなり面倒になる。 そういう点ではやっぱり最初は1面のみの単純なゲームから始めた方がいいね。 プログラムが大きくなればなるほどバグ取りも大変になるから、最初は小規模から始めた方がいい。 自分はいつも最初からあれこれ入れようとして墓穴を掘ってる。
777 名前:名前は開発中のものです。 mailto:sage [2009/07/26(日) 11:40:31 ID:AWfgbmGQ] プログラムを書く能力とゲームを組み立てる能力は、全くの別物 紙にステータスを書いて遊ぶとか、人形をいじって遊ぶとか そういうアナログな手法でイメージを立てて設計する 何も考えずにプログラムを先に書くのは意味がない。 ゲームを考える(妄想する)、ゲームを作る、ゲームを遊ぶ この3つのどれが欠けてもうまくいかない まず面白いシステムや世界観を考える 次にプログラム、シナリオ、絵、音楽などで形にする 最後に完成品を遊び倒して面白いゲームに近付ける ゲームは工業製品だから、作り手の職人気質がもろに出るよ
778 名前:名前は開発中のものです。 mailto:sage [2009/07/26(日) 11:57:44 ID:aBNM0ylQ] >>772 は単に大枠の設計が分からないとかそういうことなんじゃね? >>776 のいうシーン管理とかそういう骨組みの構造とか
779 名前:名前は開発中のものです。 mailto:sage [2009/07/26(日) 23:48:51 ID:AGlm2m1e] stdafx.hにいれた上で、そのソースに必要なヘッダはあえて書くソースに書くようにしてる
780 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 00:01:10 ID:GCep4g8b] 俺は何も考えずにいきなりプログラム作るぞ。 特に最初のうちは、あんまり考えないほうがいいと思うんだけどな。 緻密に設計していくのは、ミニゲームを何本か完成させた後のほうがいいと思う。
781 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 00:11:13 ID:bEbQPsi9] 俺は「これできるかな? ……できた。んじゃこれはできるかな……? よしできた」とかやってるうちに 肥大化してゲームになってる。
782 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 00:16:38 ID:VenKtjMK] 俺は「これできるかな? ……できた。んじゃこれはできるかな……? よしできた」とかやってるうちに 肥大化してまとまらなくなってやめる。
783 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 00:30:42 ID:aQ/IFL1X] 俺は「これできるかな? ……できない。んじゃこれはできるかな……? できない……」とかやってるうちに 肥大化することなく寝る。
784 名前:名前は開発中のものです。 [2009/07/27(月) 01:20:08 ID:VJq6W4rL] >>781-783 フイタwwwww
785 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 01:49:38 ID:pfTBKVpb] >>781-783 がそれぞれ昔の俺、少し昔の俺、今の俺な件
786 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 04:39:26 ID:GaH2TMCV] 昔はコードが汚いだとか構造が嫌だとかの細かいことが気にならなかった 今はゲームが完成しない
787 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 04:44:35 ID:aJcGKYvD] 習作はできるが完成はできん
788 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 08:01:02 ID:sP35fefq] > 「○ ○の作り方」という本を読んで「この本に××が足りない」と考え、 > そこで今度は××に冠する解説をよみ「これには△△が抜けている」という印象をもち、 > そしてなかなか自分のゲームが完成しない、というパターンに陥った人は少なくないでしょう。 > さまざまな技術書や解説書、入門書を読みつくし、最先端技術に精通しているはずなのに > 自作アプリケーションがほとんど作れないというのは、決して珍しくありません。
789 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 08:53:03 ID:CBwVvngl] そういうのを「頭でっかち」というんだな。
790 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 13:31:26 ID:1REfJ+es] どこの引用なんだ
791 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 17:02:26 ID:cEG3tUqV] 本を読めば作れると考えるのが間違い
792 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 21:15:32 ID:C0govEpu] 昔どっかのゲームクリエイターが「やってみるのが一番勉強になる」的なこと言ってたから 俺はそれを胸に頑張ったよ…。
793 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 23:14:17 ID:aJcGKYvD] 男は度胸 何でも試してみるもんさ
794 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 23:41:51 ID:1REfJ+es] 女は豊胸?
795 名前:名前は開発中のものです。 [2009/07/28(火) 02:18:15 ID:0RhUYUoP] 股だな
796 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 05:12:13 ID:uYQPfFdp] DXライブラリPortable、次のバージョン来ないかな 3Dポリゴン描画したいです……
797 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 12:23:42 ID:YL4nqTsX] そういやDX3Dってどれくらいできたのかな?
798 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 13:20:14 ID:aQj264s2] >>797 逃げたんじゃないか? 大学中退するやつだし
799 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 19:50:25 ID:lbcOkIrb] DX3DってD3DXと紛らわしいな。 3D描画をDXライブラリみたいに単純化するのは無理。3D描画のフレームワークは D3DXで十分。それ以上やるとライブラリの独自色が付く。 2DもD3DXSpriteで構わないし、ちょっと調べればテクスチャにαの付いた板ポリを D3DXで描画する方法はいくらでも出てくるけど。 DirectX6はDreamcast向け、DirectX8はXbox向けに作り直されてる訳で、そのまま でも十分行けるライブラリ。DXライブラリの最大の意義は、WinMainのすっきり感 だと思う。
800 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 20:50:59 ID:LTJXvZ7v] 本家の名前の紛らわしさに比べたら… DXライブラリでも使えよ!って言われて固有名詞だとは夢にも思わず なかなか存在に気付けなかった俺
801 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 20:52:30 ID:bkreYxYW] 3Dなんかいくら敷居を下げたところでDXライブラリしか使えないような子には扱えないよ ゲームフレームワークみたいな方向に簡単にするなら別だけども
802 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 21:36:50 ID:C3k1GCCB] あの・・・ 流れを断ち切った横レスなんですが、 C言語+dxlibで作ったプログラムをC++のクラスってのを使って まとめようと思い、メインループを書いてみたんですが、 書き方があっているのかすごく不安なのでお聞きしたいと思いました。 もし、スレチならいいスレ教えて・・・ よし!見せてみろ!ならソース張る。
803 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 21:37:39 ID:lZJGMEL/] DXライブラリに親でも殺されたのか
804 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 21:43:58 ID:LTJXvZ7v] >>802 ヨシみせてみろ
805 名前:802 mailto:sage [2009/07/28(火) 21:52:18 ID:C3k1GCCB] ワーイ ID GCCってw #include "GV.h" int WINAPI WinMain( HINSTANCE hI,HINSTANCE hP, LPSTR lpC,int nC ) { ChangeWindowMode(TRUE); if(DxLib_Init() == -1) return -1; //↓このあたりがめっちゃ不安なのですが。 Flame* T = new Flame; // SetDrawScreen(DX_SCREEN_BACK); //MainLoop()内で処理を書いてます while(!(ProcessMessage()) && !(CheckHitKey(KEY_INPUT_ESCAPE)) && (T -> MainLoop()) && !(ScreenFlip()) && !(ClsDrawScreen())); // DxLib_End(); return 0; } ヘッダファイルも見てもらえるのなら・・・・☆彡ってレスしてくらさい
806 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:00:28 ID:bkreYxYW] それだけならそんなにおかしいところはないと思う 細かいどうでもいいことを突っ込ませてもらうと, FlameじゃなくてFrame あと大文字一字の変数名はやめてくれ紛らわしい
807 名前:801 mailto:sage [2009/07/28(火) 22:09:21 ID:C3k1GCCB] フレイム・・・フレーム・・・ 一文字違いが大違いでした・・・ 参考にした本(セガ本?)にそういう記述があったのでつい (Tの件は) T* <=この変数を使う場合 T->A T->B とか、 for(int i=0;i<1000;i++){ T-> X[i] } みたいに変数の中身をwhileの中で更新しまくっても問題ないですか?
808 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:10:29 ID:YL4nqTsX] ゲームプログラマーになる前に〜ってタイトルの本か
809 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:14:47 ID:C3k1GCCB] そうです。 ちなみに2章を読み始めてから進まないまま二ヶ月目
810 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:16:24 ID:bkreYxYW] >>807 ダメダメ それならCの構造体と変わらない クラスの外からメンバ変数にアクセスするのは避ける クラスっていうのは,外からはボタンを押すだけで中で勝手に処理してくれる 便利な機械みたいな感じ(そういう風に作るのが理想)
811 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:19:08 ID:TfpzHMPf] 先にEffectiveC++とデザインパターンの本読むべき
812 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:26:10 ID:bkreYxYW] クラスを利用したこともないのにいきなり作れるわけがない ためしに他の人が作ったC++のクラスライブラリを触ってみればいいんじゃない ゲームエンジンならSeleneとか 英語大丈夫ならIrrlichtなんかも簡潔でおすすめ どういう風にクラスを使えばいいのかわかるよ
813 名前:802 mailto:sage [2009/07/28(火) 22:29:42 ID:C3k1GCCB] なるほど。。 本高い・・・。 すでに 14才から・・・、 OS自作・・・ やさしいC・・・ よくわかるC・・・ IP! Cプログラミング講座、 アルゴリズムマニアックス、 はじめてのアルゴリズム入門、 とかの本を買っては進めないところがあって止まるを繰り返してもう資金が・・・ 来月余裕があったら買ってみます。
814 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:31:58 ID:TfpzHMPf] 買う前に一冊読みきれwww それか図書館だな
815 名前:801 mailto:sage [2009/07/28(火) 22:35:44 ID:C3k1GCCB] これだけ本読んだらもしかしたらオレゲーム作れるんじゃね? と勘違いして作り始めたのさ! もう・・・タイムリミットがちかずいている・・・・・・ やつが・・・・来る!
816 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:36:54 ID:LTJXvZ7v] マクドに注文する側がバイトのシフトとかパンズの在庫を気にしちゃ駄目だぜ
817 名前:802 mailto:sage [2009/07/28(火) 22:41:24 ID:C3k1GCCB] >>815 そういうことなのか! なんかよくわかった気がしました。 クラスの中で処理を完結すればいい感じになれるってことですね♪ アレ?ッてことは今書いるプログラムは・・・・
818 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:50:21 ID:lbcOkIrb] スタックフレームとヒープとスタティック領域が分かってないとC/C++は辛い。 どっかに親切な解説ねーかな。ここじゃ正直めんどい。 とりあえず今から風呂→ネトゲでギルド潜りするんで、一分でそれっぽいとこ探して おいた。 ttp://gihyo.jp/dev/serial/01/antique_assembler 初心者に分かるかはシラネ。でもこれが分かればCのメモリでつまづくことはたぶん 無くなりそうな記事に見えた。15秒くらいしか読んでないけど。
819 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:55:24 ID:lbcOkIrb] すまん、面白そうなんで↑の記事をちょっと読んでみたが、初心者でWindows環境だと 素直に読めるもんじゃないかも。 ある程度「ふんふんそんなもんか」って飛ばし読みするには悪くないとは思うけど、 真面目にサンプルコードを走らせたりするタイプだと微妙にきつそう。
820 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:57:31 ID:bkreYxYW] あんまり低レベルなことは気にしなくていいと思うよ オブジェクト指向をちゃんとやりたかったらJavaのような 思いっきり抽象的な世界でリフレッシュした方がいいかもしれない ゲーム作るのだって簡単
821 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:58:28 ID:C3k1GCCB] えっと・・・ 関数を呼び出したときには元の場所に帰ってくるための情報が どこかよくわからないない場所に スタックの構造をした形でつまれているんだよ、ってこと?
822 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:11:05 ID:lZJGMEL/] しかしゲームを作るのにそれほど必要ない知識なのであった
823 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:14:09 ID:C3k1GCCB] java・・・・ とりあえずおいらゲームを作って見るよ! クラスの中でクラスを宣言したりnewする方法がまったく理解出来ないけど。 時間切れなので・・・ノシ ご指導ありがとうございました!
824 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:29:31 ID:0RhUYUoP] さて、そろそろD言語に手を出そうか…
825 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:32:38 ID:LTJXvZ7v] そして一向にゲームが完成しない罠 勉強もいいけど取り敢えずサクッと作った方がよいかも
826 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:40:38 ID:gMpP2gLw] 上から降ってくる「モノ」を、ただひたすら画面下部で避けるだけのゲームとか、そういうの?
827 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:45:05 ID:C3k1GCCB] あら?? ニコニコ動画にうpしたのならあるけど・・・・ それよりヘッダファイル見る?
828 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:53:41 ID:KFmBMjPZ] 見てあげないこともない
829 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 00:07:48 ID:6Y8+8XuP] ttp://www.nicovideo.jp/watch/sm7736340 とりあえず張ってみる。 これ以上スレすると荒らしになってしまいそうな気ガスる
830 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 00:22:10 ID:sFXJxN65] つーか、やろうとしてることから考えると、ちゃんとメモリの意味が分かってないと トンチンカンになる。 余計なことやろうとせず、意味の分かってる仕様だけ使っていればいい。いわゆる better CとしてのC++。newとか罠満載なものにやたらと触らない。
831 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 00:37:52 ID:1WJmBm/8] 俺は昔アセンブラかじったことあったからメモリの意味はある程度わかってるつもりだったが、 最近までポインタが理解できずに使えなかった……。 どっかのサイトで「int *p」は「int* p」だって書いてあるのを読んでやっと少しだけわかった気がした。 「なんで *p で宣言してるのに使うのは p なんだ???」とずっと疑問だった。 Cって俺にはわかりづら過ぎる……。わかる奴凄い。
832 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 00:46:49 ID:e3ckjdq+] >>831 68系のアセンブラを知っていればポインタを知っているとおもう。 ここを読んでみなさい。C++について詳しく解説してある。 www.asahi-net.or.jp/~yf8k-kbys/
833 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 02:17:12 ID:IM9p+Dbm] ポインタなんて最初あまり分からずに大分年月経ったらやっと分かり始めた いろいろ試行錯誤とか苦労しないと分からないのでは 話変わるがちょっと上のレスに関連することだが俺結構メンバ公開にして外からアクセスしてた 何かアクセサ使うとその分遅くなるような気がしてしまうんだよなあ
834 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 04:42:03 ID:sFXJxN65] ぶっちゃけアセンブラが分かってれば、ソフトウェアレベルの出来事なら一番下の構造 から透けて見えるから、ポインタなんかは概念も挙動も一発で飲み込める。 下の構造が見えないと、どんな処理が速いとか遅いとか効率いいとか悪いとかは経験の 繰り返しで飲み込むしか無いけど、下から見えていれば論理的に自然に飲み込める。 だが、アセンブラを理解する段階での苦労が大きいし、今のご時世でどんだけ報われる かは自信ないからお勧めもしない。 とは言っても、昔は「まずアセンブラで」とか「BASICかアセンブラしか開発環境は ありません」とかが普通だったから、そこまで難しいもんでも何でもないけどな。
835 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 05:06:48 ID:KJv9oy2N] アセンブリ言語自体はそらもう単純なもんだからな ただ今のプログラミング環境に慣れ親しんでると、ちょっとした事すら書くのが面倒ってだけで
836 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 06:22:35 ID:gEGcx4CR] newとかdeleteとか 必要性がよくわからなくて結局殆ど使っていない。 使った方がカッコいいんだろうけど
837 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 07:15:08 ID:cb/+Lg0n] 動的に確保するときだけ使ってる
838 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 09:17:36 ID:IM9p+Dbm] 俺も必要性よく分らなかった時は使わずにやってた 使い方覚えたら結構便利だ すぐでなくともそのうち覚えればいいんじゃないか
839 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 10:34:12 ID:jVZkfrqg] 使わないでなんとかできてると 覚えようとしないんだよなぁ……。 プログラム言語の解説サイトとかで命令の説明とかはいくらでも読めるけど、 「ゲームを作る際にこうやって使ったら便利!」とかまで書いてある事ないじゃん? だから「ふーん」で終わっちゃうんだよね……。 いや俺が不勉強なのはわかってるんだが。
840 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 10:40:16 ID:p52lIH/W] 必要になったときに学ばないと覚えないんだよなぁ…… ポインタもメモリの確保もよく分からなかったけど、 一度必要になってから調べなおしたら結構使いこなせるようになった
841 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 11:05:54 ID:IM9p+Dbm] 俺もテンプレート使う気なかったけどある時どうしても使う必要に駆られて使ってみたらすんなりいって便利だったなあ まあ使わないでいけるんならいいんじゃまいか
842 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 11:45:25 ID:oi3ivzjY] C++は文法習得〜良いコーディングの間が長すぎる いろいろ覚えるとC++のほうがゲーム作りやすく感じるんだけどな
843 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 13:08:33 ID:B4ng0Zvn] Javaだと手軽にクラス使えるから結構細かいこともクラス使って実装したりするけど C++はクラスが使いにくくて返って面倒になったりするからつい細かいことはC風に書いてしまう
844 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 13:15:13 ID:tcSJ+b5u] STLはすげー便利
845 名前:843 mailto:sage [2009/07/29(水) 13:17:37 ID:B4ng0Zvn] いや出来合いのクラスを使うのはいいんだけど 作るのがめんどくさいんだよね
846 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 13:47:45 ID:IM9p+Dbm] そもそもJavaはクラス使わずに書けないのでは
847 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 13:54:50 ID:B4ng0Zvn] そりゃもちろんそうだけど,「すべての変数や関数がクラス内に収められている必要がある」 というだけのことであって,クラスを単なる名前空間と考えるならCと変わらん クラス使ったからってオブジェクト指向になるわけじゃない
848 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 14:11:50 ID:p52lIH/W] まあ、intだってクラスだし、C++は設計的に変数は全部クラスっちゃクラス さまざまな動きするものをまとめて管理するにはクラス使う方がラクだと思う シューティングの弾とかRPGのNPCとか。 というか俺はクラス使った半オブジェクト指向でしかゲーム作れなかったりする
849 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 14:20:10 ID:gEGcx4CR] JAVAでひとつのクラスの中に全ての処理を 手続き型で書いちゃうプログラマを思い出した。
850 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 14:22:40 ID:mG6Pind/] ああ、俺がやりそうだな、そういう事。
851 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 14:53:37 ID:KJv9oy2N] >>848 >まあ、intだってクラスだし おいおいそれはJavaの事を言ってるんだろうな? C++でのintはコンストラクタもデストラクタも持たないPODだが
852 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 15:03:26 ID:cAIJJmev] Javaのintはプリミティブ・・・
853 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 15:05:31 ID:KJv9oy2N] >>852 すまん Javaの事>Javaのintegerクラスの事 で
854 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 15:05:32 ID:B4ng0Zvn] Javaでもintはクラスではなくプリミティブな値型 むしろJavaのほうがクラスとプリミティブ型の間に明確な振る舞いの違いがある intをクラスの一種(正しくは構造体)として扱うのは.NETだな(C#やVB.NET)
855 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 15:09:10 ID:cAIJJmev] Rubyもね
856 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 15:12:55 ID:p52lIH/W] あれ?違ったっけ? と思ったら C++では「intにもコンストラクタとデストラクタがある」ってのを間違えて覚えてたみたい…… 恥ずかしい///
857 名前:名前は開発中のものです。 [2009/07/29(水) 18:42:39 ID:PJW2UirX] >>826 俺、それさえも途中で投げたんだが
858 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 19:09:50 ID:QQ6cQOKX] >>857 まてまてまて。流石にそれは話にならんぞ。 料理が出来ないって人に、 「出汁とかその辺無視してもいいから、とりあえずお味噌汁から作ってみようか」 ってアドバイスして、無理って言われたようなもの。
859 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 20:04:55 ID:DQFan6Z4] 教えて偉い人 爆発とか衝撃波みたいなエフェクトを管理するクラスを作ったのよ メンバ的にはコンストラクタとデストラクタと描画中かどうかのフラグ管理と実際に描画する関数といった具合 コンストラクタでエフェクト用の画像をメモリに読み込んでるんだけど このクラスのオブジェクトを作る度にロードされるのが気持ち悪くてしかたない 画像リソースを読むところだけ外に出せないだろうか
860 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 20:14:58 ID:p52lIH/W] 前もって画像を読んでおいて、そのグラフィックハンドルを コンストラクタでクラス内の変数に代入すればいいんじゃないの? グラフィックハンドルってただの数値だし
861 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 20:29:24 ID:RdHjB4sC] クラスAのコンストラクタで画像を読んで、 クラスBのコンストラクタでそのグラフィックハンドルを得るようにした場合、 どちらのコンストラクタが先に呼び出されるか分かりませんが問題ないですか
862 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 20:33:36 ID:tcSJ+b5u] その場合クラスAは動的に確保しとくべきじゃないの
863 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 20:49:35 ID:vU/WuoP5] // あらかじめ画像を読み込んでおく Image *image = new Image("effect.png"); // 複数のインスタンスでハンドルを使いまわす Effect *explode1 = new Effect(image->handle); Effect *explode2 = new Effect(image->handle);
864 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 21:21:10 ID:sFXJxN65] どこでdeleteするんだ?
865 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 21:31:15 ID:cAIJJmev] 画像管理するクラス作っておいて以前ロードしたものと同じものがあったらそれ使いまわす
866 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 22:04:56 ID:oi3ivzjY] shared_ptrで画像を共有する
867 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 23:32:20 ID:IM9p+Dbm] 画像管理クラスなんて態々作らずメイン処理のクラスにハンドル持たしてるわ俺 そっからオブジェクトクラスに渡すのはそのハンドルのポインタにしてる そうすれば途中でウィン→フルに変えるときとかもそのメインの画像読み込みメソッド呼び直すだけで済む
868 名前:名前は開発中のものです。 [2009/07/30(木) 12:04:22 ID:OvoMaJfI] ハンドラをスタティックにしちゃだめなのか?
869 名前:名前は開発中のものです。 mailto:sage [2009/07/30(木) 12:18:43 ID:OvoMaJfI] 上げちまったすまね むしろグローバルでハンドラを作れってことか 再利用性が皆無になるが
870 名前:名前は開発中のものです。 mailto:sage [2009/07/30(木) 13:34:41 ID:9rAtPdyT] コンストラクタで画像を読み込み+デストラクタで開放するだけのクラスImageを そのステージで必要ならshared_ptrで読み込む エフェクトを実際に使う箇所ではそのshared_ptrをコピーして使う ステージを通して読み込みは1回だけで、コピーもshared_ptrのコピーだけですむから軽い しかもステージが終わったら勝手に安全に開放される 何よりコードがすごい簡単で見やすくなる ってじっちゃがいってたけど、俺GUIのゲームまだ作ったこと無いからわからねーわ
871 名前:名前は開発中のものです。 mailto:sage [2009/07/30(木) 22:13:59 ID:650NzX62] >>870 とかを見るとさらに、 class ImagePool : noncopyable { typedef shared_ptr<Image> ImageSP; typedef unordered_map< wstring, ImageSP > ImageHash; ImageHash ih_; public: ImageSP get( wstring name ) { ImageHash::iterator it = ih_.find(name); if ( it == ImageHash.end() ) { it = ( ih_.insert( make_pair( name, ImageSP( new Image(name) ) ) ) ).first; } return it->second; } void clear() { ih_.clear(); } }; みたいな感じのも書きたくなるな。パフォーマンスどうなるかはシラネ。
872 名前:名前は開発中のものです。 mailto:sage [2009/07/30(木) 22:20:25 ID:650NzX62] ああ、もちろんステージの頭で必要そうなイメージはget()しまくっておくんだけどな。 ステージ始まってるのにいちいち止まってたらうぜーし。
873 名前:名前は開発中のものです。 mailto:sage [2009/07/30(木) 22:20:35 ID:hh3V9W8K] どうせステージ読み込むときに何回か呼ぶだけだろ そんなもんにパフォーマンスもクソもあるかよ
874 名前:名前は開発中のものです。 mailto:sage [2009/07/30(木) 22:24:47 ID:650NzX62] 参照時のパフォーマンスだぜ まぁhash検索のとこが重いだけだから、何度も何度も何度も何度もshared_ptr拾い直す ようなアホなことをしなきゃ問題無いだろうけど つーかぶっちゃけ超絶やっつけだから先に言い訳で書いた>パフォ
875 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 14:00:04 ID:QXWHJ91E] class effect { private: int x,y,kasokudo,flag,type,r,g,b,xt,yt; int static swgraph,slgraph,slgraph2,slgraph3,vcgraph,ptgraph,ptgraph2; double angle,timer,spread; public: effect(){} Load_resorce() (中略) ~effect(){} }; int effect::swgraph=0; int effect::slgraph=0; int effect::slgraph2=0; int effect::slgraph3=0; int effect::vcgraph=0; int effect::ptgraph=0; int effect::ptgraph2=0; 結局こんな解決に落ち着いたよ ありがとう 無理に外へ出さないでヘッダと画像ファイルだけ移植すれば使いまわせる方がいいかなと 画像ロードするメソッドを1回だけ呼ぶようにしてスタティックなハンドラへぬっこむ感じで
876 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 14:00:25 ID:Qfg9axiN] ウィンドウとフルスクリーンの切り替えって、設定と読み込んだもの全部どこかに記録しておいて、切り替えた後に読み直さないといけないの?
877 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 14:02:27 ID:QXWHJ91E] メモリに読み込んでたものは切り替えで開放しちゃうんじゃなかったっけ? 呼びなおすようにはしてる
878 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 14:09:47 ID:hsxXyy+h] 画像の情報とハンドルをラップするクラスを作るのがスマートかなあ でもそういうことしだすと何のためにDXライブラリ使ってるのかいまいち分からなくなってくる どうせラップするんだから中身は別に複雑でもいいよねみたいな
879 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 14:37:35 ID:fM5CMo54] グラフィックを読み込む処理はひとまとめにしてる。 グラフィックを読み込んだ時にエラーだと-1が返ってくるそうだから、 グラフィックハンドルに-1はありえないって事で 各グラフィックハンドルの初期値は-1にしておいて、 -1でないやつだけを読み直すとかやってるな。
880 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 17:19:13 ID:Qfg9axiN] ProcessMessageの返すエラーと×印を押した時の終了メッセージを見分ける方法 あるいは、右上の×印をクリックできないようにする方法はありますかね?
881 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 18:11:57 ID:XBQ0j9Rg] ×をクリックできないようにするのはあまりよろしくないんじゃないか
882 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 18:13:18 ID:fM5CMo54] クリックできなくさせる事になんの意味があるのかわからん。
883 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 18:23:08 ID:XBQ0j9Rg] 閉じるボタンは GetWindowUserCloseFlag で取得できるかも
884 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 18:23:30 ID:M1rtP1+j] hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=658
885 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 18:31:27 ID:Qfg9axiN] サンクス なんとかなりそうです
886 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 18:49:30 ID:XBQ0j9Rg] >>884 真面目に読んでて途中からワロタ
887 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 22:58:32 ID:Qfg9axiN] GetWindowUserCloseFlagってエラーが起こった時の返り値ってわかりますか?
888 名前:名前は開発中のものです。 mailto:sage [2009/08/02(日) 04:05:26 ID:ioGay+hN] エラーって?
889 名前:名前は開発中のものです。 mailto:sage [2009/08/02(日) 13:21:29 ID:raZxXOJp] >>888 だいたいほかの関数だと成功:0、エラー:-1を返してるじゃないですか? そいうのがこれにも無いのかなとおもって
890 名前:名前は開発中のものです。 mailto:sage [2009/08/02(日) 15:42:36 ID:kM+dLyLX] TRUEかFALSEか取得して返すのにエラーが出るとは思えないけど。 でも一応DxLibは関数の共通規約が-1=エラーぽいから-1だけ特別扱いでいいと思うよ
891 名前:名前は開発中のものです。 mailto:sage [2009/08/02(日) 15:47:58 ID:VhKHrAIb] エラーが起きない関数だってあるんだから、余計な処理はしなくていい。
892 名前:名前は開発中のものです。 mailto:sage [2009/08/02(日) 18:18:51 ID:kM+dLyLX] GetWindowUserCloseFlagってエラー起きないの? ドキュメントに載ってない関数だから知らないんだけど ソース見る気はしないし
893 名前:名前は開発中のものです。 mailto:sage [2009/08/03(月) 13:33:57 ID:Bkg1TOoK] 暗号化した画像ファイルからDrawGraphで描画するまでの手順って ファイルから読み込み複合化した色情報を配列にセット →MakeARGB8ColorSoftImageなどでSoftImageのメモリ確保 →DrawPixelSoftImageなどで配列からSoftImageに書き込む →CreateGraphFromSoftImageなどでグラフィックハンドルを作成 →DeleteSoftImageでメモリ開放 →DrawGraphとかで描画 でおk?
894 名前:名前は開発中のものです。 mailto:sage [2009/08/03(月) 18:31:28 ID:Iq3WkgiH] 自分も用意したフォントが使いたくなったので>>757 の方法を試してみたんだけど、 開放に成功しないんだよなぁ…… 仕様上プログラムが終了すると開放されるみたいだし、大丈夫なのかなコレ
895 名前:894 mailto:sage [2009/08/03(月) 18:43:55 ID:Iq3WkgiH] うわー引数ミスってただけでした…… こめんなさい
896 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 01:23:43 ID:zuu4zu8S] おまいら名前空間ってどうしてる? 微妙にグローバルなのが邪魔くさいんだが、Dxライブラリのソースをまるっと書き換えるしかない?
897 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 01:44:29 ID:HZG+0EA+] WIN98前後にプログラミングやってみたくなって、 とりあえずCだけ独学してすぐにDirectX見て 挫折した自分には今更ながら、ピッタリじゃないか。 実際の所はオブジェクトで書いていけないと、ツラいの?
898 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 02:36:14 ID:I3xbLsIe] さぁ? 俺はオブジェクトが何かも知らないが DXライブラリのおかげでゲームは作れてる。
899 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 03:09:27 ID:2NLtwfy5] main.cppとヘッダファイルだけでゲーム作ってる俺もいるし
900 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 06:22:55 ID:6mk+vC8F] >>897 あると便利
901 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 07:58:54 ID:jjYfmP92] 何か途中でフル⇔ウィンドウ変えれるようにしたらフルにした時に画面がチラつくんだが 画像を読み直すだけでは駄目なのか
902 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 08:02:04 ID:jjYfmP92] と思ったら事故解決した SetDrawScreen( DX_SCREEN_BACK ) ;死直さないと駄目なのか
903 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 10:32:21 ID:sPOvaCTT] >>897 ちょっと勉強すればいいだけのことを避けて ずいぶんと無駄に自分の幅を狭めてると思わない?
904 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 17:23:09 ID:gMr+p3zp] みんなDxLibのラッパークラスとか作っちゃったりするの?
905 名前:名前は開発中のものです。 mailto:sagw [2009/08/04(火) 17:27:28 ID:xk/uaGqe] >>904 ラッパーというか、あのまんまじゃゲーム作りに面倒だから、 あれにもうちょっと色々と処理類を追加して、作りやすくはしてる。
906 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 17:27:59 ID:zuu4zu8S] ラッパを作らずに、ゲームを作れるのだろうか。
907 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 19:53:27 ID:sPOvaCTT] device->DrawImage((Image*)image); みたいな? さすがにこんなラッパーが必要になるようなら他のC++用のライブラリ使った方がいいと思うよ
908 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 20:01:54 ID:vP8Ikyop] ゲームなんてラッパみたいなもんだ
909 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 20:43:25 ID:ODeu4gp1] そんなことせんでもゲーム作れるようにするのがDXライブラリが目指す所だと思うし
910 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 20:48:39 ID:YerTetmP] そんなことしたいならDirectX覚えろっていう
911 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 21:06:21 ID:nYiQO+FG] 併!用!
912 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 22:48:47 ID:tCn5IwcP] 誰がラップ歌えと。
913 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 22:57:08 ID:ODeu4gp1] >>912 のお陰でやっと気付いた
914 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 23:06:20 ID:l5hPySed] うまいな
915 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 00:19:33 ID:SP3G2Rzn] >>911 は、その才能を別のところに生かすべきだったと思う ところで、あえてゲームのジャンルを指定せずに聞くが ChangeFontType( この辺とか ) ; ChangeFont( "この辺て" ) ; 何入れてる? ChangeFontType( DX_FONTTYPE_ANTIALIASING_EDGE ) ; ChangeFont( "MS P明朝" ) ; とかだと、どうにも汚い メイリオとかオーサカつかえりゃいいんだろうけど
916 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 01:41:03 ID:6IxCn2Gg] 640x480のwindowモードで1秒に60回メインループを回してClearDrawScreenとScreenFlipするだけのプログラム 書いたらCPU使用率が20%超えてるんだけどこんなもん?WaitTimer(10);は入れてます。
917 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 02:13:38 ID:tpv/Q7sN] >>915 >>757 使ってBDF M+やVL Gothic使うと汚くはないしライセンス的なものもきれいで好きです
918 名前:名前は開発中のものです。 mailto:sagw [2009/08/05(水) 02:27:07 ID:uKOy3PVl] >>916 そんなものじゃない?自分の環境でも、だいたい20%前後で推移してるし。 ScreenFlipには、アイドリングループもやってるような事を>>70-95 当りに書いてるし きっと大体そんな感触。 だから、多少負荷を掛けたループを入れても、いきなり100%とかにはならないし。
919 名前:名前は開発中のものです。 [2009/08/05(水) 05:21:50 ID:Nty2bj+r] A:あるXというパソゲーがあったとして、そのゲームをDXライブラリで再現したとしたら どっちの方が処理速度が速い? 管:それはおそらくオリジナルのゲームになるでしょう。 しかしそれは仕方ありません。DXライブラリは DirectX を意識しないでプログラムを 組めるように出来ているので、どうしても DirectX を意識して、DirectX にとって最適な 方法を念頭にいれて作られたソフトには敵いません。 ですが、それは DirectX と密接に関わらないと出来ない表現や処理が出きるか出来 ないか程度の違いで、処理速度的には目を凝らさない限りわからない程の差だと 思います。 これみて思ったが前に hot スープ なんとかってベーシックみたいなやつ使ったことあるけど あの処理の遅さには萎えた
920 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 06:49:21 ID:pLHczCar] HSPのことかあああああああああ
921 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 07:07:46 ID:m9BmQxuD] そもそも比較対象とするほうがおかしくないか。
922 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 07:11:20 ID:b5+ghAk/] HSPはインタプリタだし 過去にGameMaker使ってた俺はC++に乗り換えて処理の早さに感動した 弾10000個出しても一切処理落ちなしとか
923 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 09:28:27 ID:6IxCn2Gg] 家庭用ゲーム機ってCPU使用率どのくらいなの
924 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 09:35:09 ID:b5+ghAk/] >>923 ゲームによる PS2の後期作品は常に100%近いものも多いと思う
925 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 10:03:45 ID:BDIkZ1Lk] メイリオはXPならダウンロード可能になってるから、 ・XP以上でやれ ・メイリオ自分で落とせ と割り切った動作環境なら使えなくもない まぁ、そこまでするより>>917 がベターな気はする
926 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 13:28:59 ID:rAOud/k3] >>919 初期化に関してはDXライブラリの方が遅い なぜなら使わない機能まで実装してしまうから 初期化のプロセスさえ我慢してしまえば、DirectXを使っている以上、ほとんど処理に差は出ない
927 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 13:40:07 ID:b5+ghAk/] 初期化も他のライブラリに比べればかなり早くないか? 初期化→モデル読み込み→表示ってプログラム組んでるけど 起動から表示まで1秒も掛からないぞ
928 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 16:15:24 ID:OhVzEwVo] え?
929 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 20:39:22 ID:QIPk2n9v] クライアントがウィンドウのタイトルバーをつかむとかして処理が停止したことを判別する方法はある?
930 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 21:20:02 ID:5Y+5L7IB] アクティブかどうか判定する関数があったような
931 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 21:57:12 ID:tpv/Q7sN] >>929 もし直接DxLibのAPIになかったとしても、 最悪隠れAPIのSetHookWinProcを使っていけちゃうのであきらめずに頑張ってください
932 名前:名前は開発中のものです。 mailto:sage [2009/08/06(木) 00:09:50 ID:HbTQ3knb] フルスクリーンにすればいいのに
933 名前:名前は開発中のものです。 mailto:sage [2009/08/06(木) 00:17:40 ID:jDGBXq4e] フルスクリーン・ウィンドウの切り替え時って画像はDeleteGraphする必要なし? >>932 でもやっぱウィンドウのほうがやりやすいゲームとかあるよ