09/06/10 23:47:48 yn44iXp9
こんなとこでじっちゃの性癖を暴露せんでもよかろう。
431:名前は開発中のものです。
09/06/11 23:55:55 GA3GCHk+
int keiken;
if(keiken==0)printf("童貞乙");
432:名前は開発中のものです。
09/06/12 00:00:02 ADvlYAyg
>431
初期化しとけ
433:名前は開発中のものです。
09/06/12 00:04:48 M4d3vxIH
>>432
こうですか?分かりません><
#define KEIKEN 0
if(KEIKEN==0)printf("童貞乙");
434:名前は開発中のものです。
09/06/12 04:04:32 Yy7W6LDG
こうでしょ
int keiken=0;
if(keiken==0)printf("童貞乙");
435:名前は開発中のものです。
09/06/12 07:22:27 9cqRM4P7
const int keiken=0;
if(keiken==0)printf("童貞乙");
436:名前は開発中のものです。
09/06/12 08:37:17 yeEoVlcI
これだからプログラミングはやめられないw
437:名前は開発中のものです。
09/06/12 11:39:23 jHstWpts
int keiken = 0;
keiken ++ ;
keiken ++ ;
keiken ++ ;
keiken ++ ;
if ( 1 ) printf ( "童貞乙" ) ;
これで。
438:名前は開発中のものです。
09/06/12 12:18:42 xPu8mGZk
雑談するにしても、せめてDrawFormatStringを使うぐらいには気を回してくれよ。
439:名前は開発中のものです。
09/06/12 12:22:38 Upl7Se9G
動くわけねーと思ったら動いた。
インクリメントってスペースがあってもいいの?
440:名前は開発中のものです。
09/06/12 12:33:12 5rESS90A
半角スペースは無視されるだろ
441:名前は開発中のものです。
09/06/12 12:48:39 l4TbPUJW
if(keiken)
とか
if(!keiken)
ってみんなあんま使わない?
視認性重視で「==1」「==0」なのかな?
某神録のサイトでも今見たらそんな表記だった。
442:名前は開発中のものです。
09/06/12 13:02:13 jHstWpts
>441
よく使うと思うが、今回は単に>431に合わせただけじゃない?
あとは掲示板で見やすい書き方というのはあるかもしれんね。
443:名前は開発中のものです。
09/06/12 13:08:28 AJoYy9jz
あんま面白くなかったけど、今回のは0回かどうかが重要だから
あえて==0使ったんでしょ。
実際のコードでもそういうことはやる。
444:名前は開発中のものです。
09/06/12 13:48:30 6cWATceQ
>>441
0であることを強調するため。
あと文化圏の違いもある。
0が偽じゃない言語も多数存在するから、そういう言語出身の人は
if(keiken)というコードは気持ち悪く感じる。
逆に生粋のC/C++の人はif(keiken==0)というのは冗長に感じる。
俺は簡潔性よりもわかりやすさを重要と考えてるから、==で比較する。
使う言語がC++だけじゃないってのもあるけど。
445:名前は開発中のものです。
09/06/12 13:57:03 +pEtBUBP
URLリンク(www.youtube.com)
こういうのDXライブラリで作ってるのかな
446:名前は開発中のものです。
09/06/12 13:58:09 +pEtBUBP
>>441
while(!CheckHitKey(KEY_INPUT_ESCAPE)){
}
おおこういう表記もできるのか
447:名前は開発中のものです。
09/06/12 14:39:12 Nk+ds+Ow
変数自体の評価なら「==」で結ぶけど、
関数の戻り値なら>>446みたいな感じで書くかな。
448:名前は開発中のものです。
09/06/12 15:36:56 CIdl30UY
2値もしくはそれに準じるものなら>>446
3値以上なら(不)等号あるいはswitchを使うかな
if (!strcmp(str, "hoge")) // 一致したら
とかは気持ち悪い
449:名前は開発中のものです。
09/06/12 16:05:58 wLR5hiQv
スタイルは人それぞれ。自分に合ったやり方で書けば良いよ。
450:名前は開発中のものです。
09/06/12 18:56:18 g9ISpJC5
if (0==keiken)
やっぱこれは見づらいのかな
451:441
09/06/12 19:00:21 l4TbPUJW
>>450
俺自身はそれ。
会社でfalse==keikenって書いたら!に修正されていたけど
452:名前は開発中のものです。
09/06/13 10:14:12 yreqn12m
具体的な数値や列挙が書いてあるだけマシ
世の中には条件式を省略しようとする輩がいるから
453:名前は開発中のものです。
09/06/13 10:24:26 yreqn12m
だいたい
if(hoge()){
…
}
じゃ返値をひとつだけ判定することができないじゃないの
あとでhoge()の返値を増やしたら予期せぬ動作をする可能性が高い
hoge()の返値を絶対に増やさない!なんて自信満々に言える奴は少ないでしょ
==で結べば必ず1つの返値で動作するから安全
454:名前は開発中のものです。
09/06/13 13:01:19 khmiiTOM
>>453
C++は多値返せないよ
戻り値のとり得る値が増減する、とエスパーすると、
関数の戻り値っていうのは、関数本来の意味を参照すると、
関数の作用そのもの、すなわち関数が実装する機能そのもの。
(わからないならSchemeやHaskellとか関数型プログラミング言語を一度触ってくれ)
これが変更されるということは、すなわち関数の機能が変わったか、設計の錬度が全く足りてない
(どんな機能を実装するかすらあやふやだった)かどちらか。
どちらにせよその変更は、その関数を使用するコード全体に波及する。
だから
>あとでhoge()の返値を増やしたら予期せぬ動作をする可能性が高い
この指摘はずれてる。
繰り返しになるけど、戻り値の変更はそれを使用するコード全体に波及するから、
予期せぬ動作をする可能性が高い、じゃなくて、予期せぬ動作をしないようにコード
を変更しないといけない。
455:名前は開発中のものです。
09/06/13 15:58:30 MRDz7JnU
>>453
実装の修正は何度もやるとして
インターフェースや振る舞いはなかなか変えないもんだ
というか、戻り値の意味が2通りを超える時は
関数名も変えざるを得ない気がするが
456:名前は開発中のものです。
09/06/15 23:58:33 FuxW1Dfe
Windows 7 のペイントでpng保存しても
透明色指定しても透明にならない
bmp2pngが必要
457:名前は開発中のものです。
09/06/16 01:46:16 H4jkoMGr
文字列を画面の中央に表示したいけど
何かいい方法あるかな?
x座標を調整するの面倒だ
458:名前は開発中のものです。
09/06/16 02:10:16 1CAlzcIC
>457
自分は使ったことないんで分からないけど、
GetDrawStringWidth
GetDrawFormatStringWidth
というのはどう?
で、長さを調べてxを調整して、文字列を出力するところまでを1つの関数にしちゃうの。
459:名前は開発中のものです。
09/06/16 02:19:38 qN6akUYZ
ドラクエみたいに停止してるキャラに足踏みさせるいい方法ないかな?
countを0と1でオンオフしてSleep(300)とかで歩行と同じように調整はできたんだけど、
歩き出しが時々ぎこちないので悩んでます。sleepじゃなくていい方法が思いつかない
460:名前は開発中のものです。
09/06/16 02:28:14 H4jkoMGr
>>458
フォントを変えないならいける
CreateFontToHandleで作ったフォントデータだと駄目っぽい
>>459
countを範囲でオンオフ切り替えてみては
if(count%40<20)//ドロー
else //ドロー2
count++;
461:名前は開発中のものです。
09/06/16 02:34:01 wxVXqeT5
>>460
GetDrawStringWidthToHandleがあるじゃん
462:名前は開発中のものです。
09/06/16 02:36:09 H4jkoMGr
>>461
うわ・・・恥ずかしい・・ごめんなさい
ありがとねん
463:名前は開発中のものです。
09/06/16 03:45:39 1CAlzcIC
>459
そもそもSleep使ったら何も出来なくなるんじゃ?
464:名前は開発中のものです。
09/06/16 08:51:37 mvp6g5dM
歩行絵+右足踏み出し絵と左踏み出し絵を描けばいいだけじゃね?
465:名前は開発中のものです。
09/06/16 09:09:09 q6YxOHAd
while(ProcessMessage()!=-1){
ClearDrawScreen();
if(count<20) 右足が前に出てるキャラ表示
if(count>=20&&count<40)左足が前に出てるキャラ表示
ScreenFlip();
WaitTimer(10);
count++;
if(count==40)count=0;
}
うーんよくわからん
466:名前は開発中のものです。
09/06/16 09:54:16 1CAlzcIC
>465
基本的な考え方はそれでいいと思うよ。
あとせっかく答えてくれた>460の答えも読んどいた方がいいんじゃね?
467:名前は開発中のものです。
09/06/16 10:06:16 yTy6SiIo
>>465
基準FPS値決めて、フレーム数と秒が変換できるようにしてみるといい
あとWaitTimer(10)とかいうのはジョークだよね?w
468:466
09/06/16 10:16:47 1CAlzcIC
とりあえず>466の日本語がおかしいってのはスルーしてくれると嬉しい。
>>467
おや、見逃してたw
もしかして>463(俺)の発言を勘違いしちゃったのかな……? だとしたらちょっと責任感が。
469:名前は開発中のものです。
09/06/16 12:57:31 zt3Tshey
>>467
たぶんWaitTimer等の関数を使わないと高速足踏みに見えると感じて、
こういう手段で自然に見えるようにしたんじゃないかな。
一秒でひとつの動作をループさせる必要はないからこれはあまり良くないと思うけど。
470:名前は開発中のものです。
09/06/16 13:19:46 1CAlzcIC
>469
count値20ごとに表示を変えてるみたいだし、それは大丈夫なんじゃないかしら?
471:名前は開発中のものです。
09/06/16 14:04:12 KbLsp5Ay
ScreenFlipで垂直同期信号待ちが行われているかどうかで変わってくるような。
472:名前は開発中のものです。
09/06/16 14:17:30 MjcTUWQv
WaitTimer使う位なら count<20 の値を増やした方がよくね
473:名前は開発中のものです。
09/06/16 16:03:45 rewLOGjy
時分割で状態変移したいのなら、コルーチン使ってみては?
と上級者ぶってみるわ
474:459
09/06/16 18:26:00 qN6akUYZ
いろいろ意見ありがとう。
WaitやSleepは使わずにFPSとかFrameやらを使って試行錯誤してみます。
countを0と1でオンオフにしてたけど>>465のようにフレームカウントにしてやってみます。
475:名前は開発中のものです。
09/06/16 18:35:39 1CAlzcIC
別人だったんか!
476:名前は開発中のものです。
09/06/16 23:35:34 8GILQKQT
リフレッシュレートの概念がわからないと変なの書いちゃうぞ
レートは60ヘルツかも100ヘルツかもしれないし
65とか75とか微妙な数値になることもある
DXライブラリの教本にあるように書かないと、動作環境が変わった時に同じように動く保証がない
俺が以前に見た酷い例
FPSが60切ると点数がどんどん減る意味不明なゲーム
しかもどんなアルゴリズムか知らんが、FPS60でも点数が減りっぱなし
ああいう「自分の環境しか見ない」人間は駄目だな
477:名前は開発中のものです。
09/06/16 23:40:46 fYBFrBfu
ゲーム機のゲームってその辺固定だからなにも考えなくていいんだよなー。
478:名前は開発中のものです。
09/06/16 23:56:34 1CAlzcIC
>>476
と言っても、個人レベルの開発でどこまで他の環境を考えられるやら。
定番のアルゴリズムとかは書けるかもしれないけど、それだけじゃ意味ないし。
結局のところ「知らね」って言いきるしかできない。
479:名前は開発中のものです。
09/06/16 23:59:57 +nd9Tj3k
俺今作ってるゲームはリフレッシュレート無視しちゃってる。
ティアリングが気になるんだよなぁ。
他人が作ったゲームは60FPS超えるやつとかあるけど
ティアリングあまり気にならないんだよな。どうやってんだろ。
480:名前は開発中のものです。
09/06/17 00:27:22 gsrBiXQc
>>469
WaitTimer(10); 入れるとCPU使用率が下がる ただそれだけw
481:名前は開発中のものです。
09/06/17 00:32:32 s0zhQi6M
>>479
君みたいな人が駄目らしいよ
自分の環境しか見ない人間は駄目なんだってさ
ていうかさ、FPSが60切ると点数がどんどん下がるゲームかどうか
ソースもアルゴリズムも考えずにどうやって判別したのかねwプッw
偉いなぁこの人wプレイしただけでバグの原因分かっちゃうって>>476は神だねwプッw
482:名前は開発中のものです。
09/06/17 03:56:59 moXGEW/H
環境を合わせる方法としては
1,Sleepを使ってFPSを30ほどに落としてやる。
2,時間と同期をとる。
くらいしか思いつかない。
483:名前は開発中のものです。
09/06/17 07:52:50 zFwmddUq
関係ないけど、テクスチャに描画する場合ってZバッファ効かないんだね
484:名前は開発中のものです。
09/06/17 08:55:08 Sg+3JQO3
リフレッシュレートをAPIを使ってある固定値に設定する
485:名前は開発中のものです。
09/06/17 15:01:39 v4ECr6VG
セガの新人教育の本の人いわく、
作りやすいのは固定フレーム、性能を活かしやすいのは可変フレーム。
自分は面倒なので、60固定前提でやってるんだが
(1)タイマ(ミリ秒)を取得して1フレームの規定時間(16msec)が過ぎるまで待つ
(2)モニタのVSYNCを待つ
(3)モニタのリフレッシュレートを変更する
の3パターン用意して、あとはユーザに適当に選んでもらおうかなと。
まずいかな?
486:名前は開発中のものです。
09/06/17 18:17:49 V4BAg+VP
ScreenFlip使えばFPS保たれるんじゃないの
487:名前は開発中のものです。
09/06/17 18:47:03 A2Hqv0+b
>ScreenFlip使えばFPS保たれるんじゃないの
・環境(グラボの設定)によっては垂直同期信号待ちがOFFになってる場合があるのでFPSは保たれない。
・垂直同期信号待ちがONだとして、FPS保てる状態でも、
モニタのリフレッシュレートを60にしてたり70にしてたりってのはユーザーの好き好きなので、
作り手の望んだとおりのFPSになってくれるとは限らない。
488:名前は開発中のものです。
09/06/17 20:28:42 00woQzQy
めんどくさいからゲーム機のゲーム作ろうぜ
489:名前は開発中のものです。
09/06/17 20:53:25 00woQzQy
URLリンク(www.gbadev.org)
URLリンク(www.pqrs.org)
URLリンク(omoshiro-joho.com)
URLリンク(nocash.emubase.de)
URLリンク(belogic.com)
490:名前は開発中のものです。
09/06/18 01:52:47 lg5GVuaj
>>481は得点表示も見れないようです
491:名前は開発中のものです。
09/06/18 04:16:26 eqFlz8O1
勝手にリフレッシュレート60に切り替える命令とかあればいいのに
492:名前は開発中のものです。
09/06/18 04:54:12 U/ILN7Qk
>>491
一応あるっしょ。
493:名前は開発中のものです。
09/06/18 05:03:47 4gTcdCic
別に少々速度違ってもいいじゃない
494:名前は開発中のものです。
09/06/18 05:07:59 U/ILN7Qk
>493
アクションゲームのゲーム速度2割アップとか結構きついですぜ
495:名前は開発中のものです。
09/06/18 07:25:22 8Inai5Jq
DXライブラリ3Dってどうなったの?
開発中止?
496:名前は開発中のものです。
09/06/18 09:48:52 obCaTvEe
60FPSのゲームを70FPSとか、とんでもないぜw
497:名前は開発中のものです。
09/06/18 16:23:14 FAWLSPyh
たまに弾幕シューティングが75FPSになったりするけど、
気づくのはいつもしばらくプレイしてからだった
498:名前は開発中のものです。
09/06/18 16:53:46 U/ILN7Qk
>497
気付かぬうちに難易度が上がってたり、タイミングが変わってミスを誘発させたりするって
ちょっと怖いよな。
499:名前は開発中のものです。
09/06/18 17:10:57 4gTcdCic
一般的に表示上のFPSが上がるとゲーム速度も上がるものなの?
ってことは2次元アクションでいえば1フレーム毎の移動量が固定なのか。
自分自身も楽だからそういう作り方をしているけど…
例えばあるゲームで
60FPSだと重いのでコンフィグで30FPSに変更って場合は
ゲーム速度そのものは変わらないものだと思っていた。
500:名前は開発中のものです。
09/06/18 17:35:08 u8KJWVMz
>>499
時間で処理、描画だけFPSで更新なら変わらないよ。
全体をFPS60処理だと60より上に上がらないようにしてるのが一般的かなぁ。
ツールで簡単に上げれたり、処理間に合わないとFPS下がって全体の速度も低下する。
501:名前は開発中のものです。
09/06/18 17:56:28 U/ILN7Qk
>499
フレームではなく時間単位で処理してるなら
ゲーム速度云々の話題にすらならんと思うよ。
502:名前は開発中のものです。
09/06/18 21:48:15 3XyNBKLr
しかし時間単位で処理すると確実にティアリングが発生するので画質面で劣るという
503:名前は開発中のものです。
09/06/18 21:57:55 y4gPpvjp
そんなの関係なくバッドノウハウ使わない限り起きるだろw
504:名前は開発中のものです。
09/06/18 22:12:42 4gTcdCic
発想を逆転させるんだ
ユーザーをゲームに合わしちまえばいいんだ
505:名前は開発中のものです。
09/06/18 23:01:35 7QIAxIr+
まともにゲーム作ったことある人手あげて~?
506:名前は開発中のものです。
09/06/18 23:19:36 cOrVzTjy
>>502
違うんじゃない?
モニタのリフレッシュレートが60だろうが70だろうが時間単位で処理するからこそ
スピード一定でティアリングも発生しないようにできるんでしょ。
垂直同期信号が切ってあるなら、そもそもティアリングは発生してあたりまえだろうし。
507:名前は開発中のものです。
09/06/18 23:47:20 3XyNBKLr
モニタの画面更新のタイミングを無視してメモリ上の画面データを書き換えると言うことだから
1画面分のデータの構築途中でそのメモリイメージが画面に表示されて画面上部と下部でフレームがずれるということだから
ティアリングが発生するということじゃないの
508:名前は開発中のものです。
09/06/18 23:58:10 cOrVzTjy
「モニタの画面更新のタイミングを無視する」なら、時間単位で処理する意味ないでしょ?
なぜ時間単位で処理する必要があるかって言ったら、
垂直同期信号待ちをして、ティアリングを起こさないようにしたいけど、
ユーザーのモニタのリフレシュレートが60なのか70なのかが判らない、からでしょ?
509:名前は開発中のものです。
09/06/19 00:03:49 Wkij18nv
間違えた。逆だった。
実際の画面の更新途中でメモリ上の画面データが更新された場合に、描画済み画素と未描画画素でフレームがずれるためティアリングが発生する、だった。
要するにAPIでリフレッシュレートを60に設定して60前提で作ればよい。60に対応してないモニタを使ってるやつのことは知らない。
510:名前は開発中のものです。
09/06/19 00:08:11 AlkmRsbh
なんか「時間単位で処理」と「フレーム単位で処理」の認識が逆になってる気がするw
511:名前は開発中のものです。
09/06/19 00:12:38 s7w0uGNM
>509
FPS指定APIは過信してはいけない
上のほうにあるようにドライバ側の設定が優先される
512:名前は開発中のものです。
09/06/19 00:22:34 Wkij18nv
じゃあPC環境は糞
513:名前は開発中のものです。
09/06/19 00:47:10 pN8o6lEn
>509
「60以外は知らん」と言いきっちゃうのも、それはそれでアリな気がする
514:名前は開発中のものです。
09/06/19 02:05:59 7uKPrG8o
最近は液晶が殆どだしそれもありだな
515:名前は開発中のものです。
09/06/19 03:38:42 AlkmRsbh
液晶がどう関係するのか。
516:名前は開発中のものです。
09/06/19 08:04:02 huFKHnzQ
一般的な普及価格帯のやつは選択肢が60Hzや59Hzしかない
517:名前は開発中のものです。
09/06/19 09:00:27 Dq7L9OoN
>>516
20世紀へお帰り下さい
518:名前は開発中のものです。
09/06/19 09:40:02 4AnMu6gm
自己中心的なハード理論を押し付けるもんじゃない
動作環境をテキストに書いたら、それを満たすあらゆる環境で同じように動いてもらわないと困る
デフォルトで不具合が出る可能性があるなら、設定で変えられるようにしなきゃ駄目
なるべくたくさんの環境でテストするのも大事
519:名前は開発中のものです。
09/06/19 12:28:29 8D0wDPEb
難しいことしなくても、垂直同期かウェイトかはオプションで選べようにすれば問題ないだろ
520:名前は開発中のものです。
09/06/19 12:57:07 ciGq9GNb
全くその通りだと思うんだが、
そういう選択式になってるゲームってほとんどみないよな?
普通はどうやってんだろ、ってのが話題の焦点じゃないかな。
521:名前は開発中のものです。
09/06/19 15:25:14 pN8o6lEn
>>517
実際、60Hz固定のモニタも多いんじゃね?
522:名前は開発中のものです。
09/06/19 16:07:46 L4Ogxl+D
他に話題ねーのかよ
飽きた
523:名前は開発中のものです。
09/06/19 16:47:37 8D0wDPEb
何か話したい話題があるなら自分から振れと
524:名前は開発中のものです。
09/06/19 23:33:13 Dq7L9OoN
>>521
だから帰れってww
525:名前は開発中のものです。
09/06/19 23:50:46 L4Ogxl+D
んー
じゃぁDxLibの今後
俺はもう少し発展してくれてもいいと思う、3Dを強化して欲しいね
526:名前は開発中のものです。
09/06/20 00:41:17 ynTX3CaL
無理じゃね
3D強化するなら作り直しレベルだろ
527:名前は開発中のものです。
09/06/20 00:42:51 FZJG9pXN
デスクリムゾンレベルなら作れるw
528:名前は開発中のものです。
09/06/20 00:53:36 gQS8hglY
上からくるぞっ!気をつけろ!
529:名前は開発中のものです。
09/06/20 01:03:05 X3CDDO5o
>>526
いま3D機能作ってるって公式掲示板で言ってたけど・・・
意外とみんなチェックしてないんだな
530:名前は開発中のものです。
09/06/20 01:08:17 ppcvkMn4
>>529
なん…だと?
531:名前は開発中のものです。
09/06/20 01:49:27 FZJG9pXN
俺のクリムゾンは下からくる設定で作るわ
532:名前は開発中のものです。
09/06/20 02:34:40 gQS8hglY
せっかくだから俺はこの赤い扉を選ぶぜ!!
533:名前は開発中のものです。
09/06/21 02:15:20 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:名前は開発中のものです。
09/06/21 02:35:09 ffHKmVPn
numはメモリ領域のサイズってリファレンスに書いてあるじゃん。
てか、a.csvの内容はどんな感じになってんの?
535:名前は開発中のものです。
09/06/21 02:48:44 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:名前は開発中のものです。
09/06/21 02:49:49 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:名前は開発中のものです。
09/06/21 04:17:54 jkwbtsZu
コーディングしたのはおまいさんだろ?
538:名前は開発中のものです。
09/06/21 08:29:25 vb/GsENJ
FileRead_gets(mapdata,sizeof(mapdata),filehandle);
539:名前は開発中のものです。
09/06/21 09:37:49 SurdRKYg
>>507
遅れたけど正確にはダブルバッファリングしてるからティアリングはおきないよ。
データの構築中に画面に表示される事は無い。
あと垂直同期を待ちつつタイマーで調整する事も可能。
具体的にはタイマーでfpsを調整すれば、ゲームが基準にするのはタイマーじゃなく、
一定間隔が保障されてるフレームを基準にすればおk
540:名前は開発中のものです。
09/06/21 13:35:35 QJhUeuVR
マップの縦横が固定長なら
ifstream+For2重ループで読み込んでしまえば良い
都合のいいことに半角スペース無視ってくれるからね
c++知らなければスルーしてよし
541:名前は開発中のものです。
09/06/21 13:59:11 E25maqZD
垂直同期を待つってことは動作速度がリフレッシュレート固定になるってことじゃないの?
最期の2行の意味をくわしく。
542:名前は開発中のものです。
09/06/21 14:24:01 ZO5ct3aw
可変レートの場合、
60の時は、前回の1/60秒後の世界を描くし50の時は1/50秒後の世界を描くんだろう。
543:名前は開発中のものです。
09/06/21 14:40:01 /SjwP+Lm
ググってると公式サイトのリファレンスに載ってない関数が時々出てくるんですけど、
そういうのが載ってる詳細なリファレンスは無いんですか?
544:名前は開発中のものです。
09/06/21 15:01:10 E25maqZD
擬似コードでいいからプログラムで説明してくんない?
下記に追記する形で。
while(1){
main_loop();
flip();
}
545:名前は開発中のものです。
09/06/21 15:55:05 gvSWV/Tl
1秒間に100ドット移動させたい時。
:
ScreelFlip()
時間計測A(ミリ秒)
:
ScreenFlip()
時間計測B(ミリ秒)
:
移動距離算出 100 * ( B-A ) / 1000
:
ScreenFlip()
時間計測~
って感じ?
546:名前は開発中のものです。
09/06/21 17:22:04 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:名前は開発中のものです。
09/06/21 17:24:40 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:名前は開発中のものです。
09/06/21 20:10:23 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:名前は開発中のものです。
09/06/21 20:20:31 E25maqZD
結局ティアリング発生するじゃん
550:名前は開発中のものです。
09/06/21 20:27:19 SurdRKYg
せっかく説明したのになにその全然読んでないようなレスは。
ティアリングの話がしたいの?
>垂直同期を待つってことは動作速度がリフレッシュレート固定になるってことじゃないの?
これを解決したいの?
どっちなの?
てか548を読んで解決出来なかったの?
質問しといてなんなの。
551:名前は開発中のものです。
09/06/21 20:38:53 E25maqZD
ティアリングを発生させずにどんなリフレッシュレートのモニタでも同じ処理速度で動作させる方法があるかを聞いてる。
552:名前は開発中のものです。
09/06/21 20:52:15 dtFx8GuN
14歳からのゲームプログラミング読めよ
書いてあるよ
553:名前は開発中のものです。
09/06/21 20:52:45 n8mlBebR
>>551
>>539に書いてあんじゃん
SurdRKYgがかわいそすぎる、援護するぜ
んでぐぐったらすぐにわかりやすいのでてきたぞ
ちょっとは自分で調べろ
URLリンク(spitfire.client.jp)
554:名前は開発中のものです。
09/06/21 20:55:52 dtFx8GuN
馬の耳に念仏だろうがな
555:名前は開発中のものです。
09/06/21 21:15:08 E25maqZD
なるほど。
リフレッシュレートをAPIで固定する、か
リフレッシュレートを何らかの方法で取得して、1フレームの移動量をリフレッシュレートに合わせて変更する
しかないわけか。
556:名前は開発中のものです。
09/06/21 21:26:14 nqKSgOSf
>>555
何が「なるほど」なんだか・・・
548をどう読めば
「リフレッシュレートを何らかの方法で取得して、1フレームの移動量をリフレッシュレートに合わせて変更する 」
の説明になるんだよ
読む気がないなら質問なんてするな
557:名前は開発中のものです。
09/06/21 21:33:30 E25maqZD
>>548は垂直同期を待たない事で解決出来るとか言ってるから話にならないじゃん
ダブルバッファリングしてるからティアリングはおきないとか言ってるし。
558:名前は開発中のものです。
09/06/21 21:41:05 OYxJ3LRg
ダブルバッファリングとティアリングは関係ないよな。
垂直同期信号待ちしないと、裏画面と表画面切り替える瞬間にモニタ画面更新される事もあるから結局ティアリングは発生する。
559:名前は開発中のものです。
09/06/21 21:59:20 SurdRKYg
>>557
垂直同期を待たない事で解決出来るのは60fpsにならない場合の話だから下5行は読まなくていいよ。
しかもコマ落ちさせれば同期待ちでも解決出来るって書いてあるのに…。
120Hzのモニタで同期待ちするけど60fpsに制限すればゲーム速度も一定になるでしょ?
1フレームの移動量を変更するんじゃなく、移動量をフレームに合わせれば常に一定でしょ?
>>558
flipする時はコピーするんじゃなくてVRAMの参照先を変えるだけだから、VRAM上のデータを書き換え途中って事は無いと思うけど。
だからどの瞬間においても描画途中で画面更新される事は無いと思うんだけど違うのかな?
もちろんこれはティアリングの厳密な意味でのことなので、広義の意味の 画面のちらつき=ティアリング として使われる事についてはそれでいいけど。
560:名前は開発中のものです。
09/06/21 22:03:54 nqKSgOSf
>>559
残念だけど垂直同期を待たない場合はビデオカードがモニタに映像を送信している間でも
参照先のVRAMアドレスを変えてしまうからティアリングは発生する
561:名前は開発中のものです。
09/06/21 22:08:13 OYxJ3LRg
>>559
DXライブラリで裏画面への描きこみ、ScreenFlipってほとんどデフォだよね?
これが君のいうダブルバッファリングでしょ?
ScreenFlipの垂直同期信号待ちをOFFにして、
タイマーだけでスピード固定するようにして、フルスクリーンで動かしてごらん。
ティアリング一目瞭然だから。
562:名前は開発中のものです。
09/06/21 22:11:13 SurdRKYg
>>560
そうなんだ。どうもありがとう。
同期しない事によるちらつきは画面更新部分と非更新部分の時間がばらばらな事による現象かと思ってた。
モニタのVsync信号の方が偉くて、そのタイミングでflipした時は次のVRAMの更新先を強制的に参照するみたいな認識でいいのかな。
563:名前は開発中のものです。
09/06/21 22:16:46 SurdRKYg
>>561
ややや、ちらつくのは一目瞭然だけど、ティアリング(=上半分表画面で下半分裏画面のような状態)かどうかっていのは人間の目では判別不可能でしょ。
そのちらつきの原因は、更新部分と更新して無い部分の時間差によるものだと思ってた。
例えば背景が流れる画面の場合、1場面を■、次の場面を□とした場合、
■□■□■□■□■□
と見えればちらつかないが、
■■□■□□□■■□
のように見えるとちらついてみえると思うんだ。
でも>>560のレスで、ティアリング自体も起きているとのことなので一応解決出来た。
これはもうちょっと自力で調べてみようと思う。
564:名前は開発中のものです。
09/06/21 22:23:40 OYxJ3LRg
「垂直同期信号待ち」ってのは要するに画面が全部描き終わるまで待つって事だから。
描き終わって、次の画面が描き始められるまでの一瞬の間にVRAMのアドレスを切り替える、って事だね。
そうする事で初めてティアリングを防げる。
>>563
ちらつくというより画面が波打つ、と言った方がよかったかな。
>ティアリング(=上半分表画面で下半分裏画面のような状態)かどうかっていのは人間の目では判別不可能でしょ。
ぴったりには合わないとは言え、だいたい60FPSで固定しようとしてスピード調整してるわけだから
ズレが生じるのも大体画面更新の同じタイミングになるわけ。
当然、人間の目にもはっきり判るよ。
565:名前は開発中のものです。
09/06/21 22:40:54 Fv4f33jD
>>563
固定フレームレートの2Dゲーははっきりとわかる
キャラだけならともかく背景のスクロールもよくつかわれるからくっきりと
3Dとかで可変フレームレートだとわかりにくくなるかな
でも2Dメインでしょ、DXライブラリ
566:名前は開発中のものです。
09/06/21 22:52:23 i9HN6tkr
問)
垂直同期を待たずにティアリングを抑制する方法を答えよ
答)
垂直同期信号の発生周期をフリップのタイミングの合わせればよい
567:名前は開発中のものです。
09/06/21 23:06:19 FjFdKqe+
誤字があるから△だな
568:名前は開発中のものです。
09/06/21 23:09:10 SurdRKYg
>>564
CRTの場合は走査線があるので画面の上半分と下半分で違う場合もあると思うんだけど、
液晶の場合は1画面をいっぺんに更新するわけだけど、それでも上半分と下半分で違うようなものになるってことなのですか?
VRAMから送られるデータは画面の左上から右下のデータが順次送られてるのかな?
そしてその送られてる時間がネックになっていてその間にflipしたらバックバッファの途中のアドレスから参照されるってこと!?
それってそもそもおかしくないですか?
バックバッファが出来上がっていない可能性もあるし、どうせ同期待ちしていないんだからとりあえずフロントバッファのデータを送りきってからバックバッファ分を送ればいいわけだし。
じゃあ将来例えば物凄くリフレッシュレートが高くなった場合、VRAMからモニタにデータを送る時間よりもモニタの更新速度の方が速かったりしたら
"同期待ちしてるのにティアリングが起きてる"っていう最悪な状態になっちゃいそうですが。
なのでやっぱり液晶の場合はティアリングは起きていないと思いますがどうでしょう?
>>565
えと、だから、画面更新に合わせずに好き勝手にflipしたら、
ある1枚が長く見えてるかもしれないしある1枚が欠損しているかもしれない。
だからちらつくように見えると思うんだけど、
肉眼でただちらつくように見えるからってそれはティアリングが起きてる証明にはなってないよ。
569:名前は開発中のものです。
09/06/21 23:33:13 E25maqZD
とりあえず3行以内に要約する癖をつけてくれ
570:名前は開発中のものです。
09/06/21 23:41:01 nqKSgOSf
>>568
>VRAMから送られるデータは画面の左上から右下のデータが順次送られてるのかな?
Yes
>そしてその送られてる時間がネックになっていてその間にflipしたらバックバッファの途中のアドレスから参照されるってこと!?
Yes
>バックバッファが出来上がっていない可能性もあるし、どうせ同期待ちしていないんだからとりあえずフロントバッファのデータを送りきってからバックバッファ分を送ればいいわけだし。
?
何を言いたいのか良くわからないけど
VRAMのデータをモニタに送るタイミングはPC側からは操作できない
リフレッシュレートに依存する
>じゃあ将来例えば物凄くリフレッシュレートが高くなった場合、VRAMからモニタにデータを送る時間よりもモニタの更新速度の方が速かったりしたら
>"同期待ちしてるのにティアリングが起きてる"っていう最悪な状態になっちゃいそうですが。
縦解像度nの画面データをモニタに送る流れ
0lineを転送→水平同期期間→1lineを転送→水平同期期間→
nlineを転送→垂直同期期間→0lineを転送→水平同期期間
つまり、垂直同期間は1画面分のデータを転送した後にくるので、
「VRAMからモニタにデータを送る時間よりもモニタの更新速度の方が速い」
というのはそもそもありえないよ、nline分送る前に垂直同期期間に突入する事はないから・・・
571:名前は開発中のものです。
09/06/21 23:45:26 nqKSgOSf
2点修正
>リフレッシュレートに依存する
厳密には設定した解像度とリフレッシュレートに応じて発生する
水平同期信号と垂直同期信号に依存する
>0lineを転送→水平同期期間→1lineを転送→水平同期期間→
>nlineを転送→垂直同期期間→0lineを転送→水平同期期間
0lineを転送→水平同期期間→1lineを転送→水平同期期間→
(n-1)lineを転送→垂直同期期間→0lineを転送→水平同期期間
の誤り
572:名前は開発中のものです。
09/06/22 00:07:43 kame7wv0
>>569
おまえ顔真っ赤だぞ?
573:名前は開発中のものです。
09/06/22 00:08:14 1Ugl+7iQ
で
574:名前は開発中のものです。
09/06/22 00:09:59 ErP4dB7R
>>570-571
そういうことだったんですね。
詳しい説明どうもありがとうございます。
>VRAMのデータをモニタに送るタイミングはPC側からは操作できない
>厳密には設定した解像度とリフレッシュレートに応じて発生する
>水平同期信号と垂直同期信号に依存する
ビデオカード側がモニタに送るタイミングを主導しているんだと思ってましたけど、そこが間違っていたようです。
575:名前は開発中のものです。
09/06/22 00:14:49 kAGY284T
>>568
>だから、画面更新に合わせずに好き勝手にflipしたら、
>ある1枚が長く見えてるかもしれないしある1枚が欠損しているかもしれない。
>だからちらつくように見えると思うんだけど、
ちらつくっていうよりも、それはがたつくというか、コマ落ちとかそういう心配でしょ?
ティアリングってのは君が言ってるように上と下の画像にズレが生じる現象だから、
横に対して線が入って(実際にはドット単位でずれてる)波打ってるようにみえる。
コマ落ちだったらこうは見えないはずでしょ?
実際にプログラム動かしてみてみれば一目瞭然だと思うんだが……。
576:名前は開発中のものです。
09/06/22 00:17:48 VZ3co5HH
>>552
14歳のやつ
計算式思い切り間違えているぞ。
実際にリフレッシュレートの違うモニタで確かめたから間違いない。
577:名前は開発中のものです。
09/06/22 00:28:31 XZV3fJ2J
あれ分母と分子逆になってるのかなあ
578:名前は開発中のものです。
09/06/22 09:11:17 4PYRYd3U
>>576
何がどう違うのか具体的に例をつけて書け
改良案も書け
579:名前は開発中のものです。
09/06/22 14:34:23 N6BYq6eh
>>578
ママにでも頼め。
580:名前は開発中のものです。
09/06/22 15:54:58 VZ3co5HH
>>578
自分で考える癖をつけよう。
適当な数字を入れて検証してみ。
明らかにおかしいのがわかるから。
どうおかしいのかわかれば治し方は自明だと思う。
581:名前は開発中のものです。
09/06/22 17:39:07 oZ+8nNkj
>>575
学生さんなのかな?
デジタル写真に法的な証拠能力は無いわけだが
582:名前は開発中のものです。
09/06/22 17:40:41 pV5yAQzs
なんの話だw
583:名前は開発中のものです。
09/06/22 18:16:54 VZ3co5HH
どこの誤爆だw
584:名前は開発中のものです。
09/06/22 20:45:11 C5JJD30U
これが若さか。
585:名前は開発中のものです。
09/06/22 20:51:20 CIAC500Z
いいや幼さだ
586:名前は開発中のものです。
09/06/22 20:51:55 kame7wv0
中年オヤジは黙っとけよクズ
いい年こいて2chやってんじゃねえよカス
587:名前は開発中のものです。
09/06/22 21:05:11 CIAC500Z
こんなヤツもDXライブラリ使ってるのか……
588:名前は開発中のものです。
09/06/22 21:10:13 kame7wv0
悪いの?使うのに制限あるなら教えてくれませんかね?
589:名前は開発中のものです。
09/06/22 21:11:51 CIAC500Z
初心者向けライブラリのスレなんだし、カリカリしないでまったり行こうぜ?
590:名前は開発中のものです。
09/06/22 21:32:05 6Vl6l2Pm
クソスレ晒しアゲ
591:名前は開発中のものです。
09/06/22 21:58:40 kame7wv0
まったく・・
オッサンにもなってゲームでも作ってんスかね?w
592:名前は開発中のものです。
09/06/22 22:52:27 wZqXAX7r
世界のゲームプログラマーの殆どがオッサンですよ
593:名前は開発中のものです。
09/06/22 23:27:33 PR8N99oV
そもそもおっさんって何歳以上?
594:名前は開発中のものです。
09/06/22 23:37:18 6Vl6l2Pm
スレリンク(lovesaloon板)
595:名前は開発中のものです。
09/06/23 00:57:26 JW/qeXlf
DXライブラリはDixq氏のゲームプログラミングの館の影響で東方厨が流れ込んできてるからこんなのはゴマンと居るよ
596:名前は開発中のものです。
09/06/23 01:04:40 /wkYhisO
いちいち煽らない。
597:名前は開発中のものです。
09/06/23 09:24:14 eUvBMQ0G
おっさんでもガキでも宇宙人でも何でもいいから、
DXライブラリでおもしろいゲーム創っていこう。
598:名前は開発中のものです。
09/06/23 09:52:25 dhA25QDv
>>580
こういう奴は駄目だな……
デバッグ報告になってない
再現例も書けない奴は現場に出てこないでほしいと思う
そもそも「適当な数字を入れたら」ってのは、「適当な数字が必ず入る」という前提なのか?
プログラムの動作の中で「適当な数字」が入らざるを得ないような状況を説明できるのか?
例えばOSやモニタやリフレッシュレートを変えたらおかしい、と言うなら説明になるが
チート使ったらゲームがバグった、レベルの議論は論外だ
こういう人に限って動的な数値に固定値を代入したりしてるんだから
599:名前は開発中のものです。
09/06/23 09:57:56 NMdhocxd
自分で調べようともしないで、他人に訊けば答えが返ってきて当然と思う人間の方が
現場では嫌がられると思うぞ。
600:名前は開発中のものです。
09/06/23 09:58:29 NvkMU1Q4
>>598
わからないなら、わかりません教えてくださいって素直に言えばいいんだよ。
601:名前は開発中のものです。
09/06/23 10:49:50 4P883XyE
嘘なら嘘でしたといったほうがいい
602:名前は開発中のものです。
09/06/23 12:18:26 A0fh8Dl0
作ってて楽しいからゲーム製作してるんだろ?
なんでこんなカリカリしてんのさ
603:名前は開発中のものです。
09/06/23 12:28:04 btxPW8HG
分をわきまえず背伸びしてるから疲れてるんだろ
604:名前は開発中のものです。
09/06/23 15:57:39 +DVKp8CT
>>598
わからないなら素直にそういえばいいじゃない。
>例えばOSやモニタやリフレッシュレートを変えたらおかしい、と言うなら説明になるが
>>576
疑うならリフレッシュレート変えて実際に試してみ。
605:名前は開発中のものです。
09/06/23 17:46:43 ifo/8btq
ソース見せてくれたら第三者にも判断つくんだけどね。
606:名前は開発中のものです。
09/06/23 22:32:28 BZp72+wO
ここ現場じゃねーし
掲示板だし
そもそも教えない奴にこそ性格に問題抱えてる事がほとんど
607:名前は開発中のものです。
09/06/23 22:34:58 BZp72+wO
わからない、とそいつが言ったら言ったで責めんの目に見えてるし
ググレとかそれ以前のことでしょとか嫌味吐くのおまえらじゃん
608:名前は開発中のものです。
09/06/23 23:13:33 joZZV7Mo
フレーム単位で処理してモニタのリフレッシュレートに合わせて移動量を変えればリフレッシュレートによらず処理できることは分かるけど、
例えば、タイトル画面でスタートボタン押してから次の画面が表示されるまでの待ちの処理ってのはどうやってフレーム単位で処理すればいいんだろう。
609:名前は開発中のものです。
09/06/23 23:19:45 +iWMMldZ
>>607
これだけ色々答えてくれる場でなんでそういう考えに至るのか。
あまりにガキ過ぎる。
610:名前は開発中のものです。
09/06/23 23:21:51 UNSoodNB
そんなもん無視しろ
611:名前は開発中のものです。
09/06/23 23:24:00 ifo/8btq
>>608
どういう意味?
待ちの時間って、本当に何もしないって事?
それともデータロードとかしてる時の事?
612:名前は開発中のものです。
09/06/23 23:53:01 95CP5Nno
ゆとり乙
ガキは教えて貰うのが当たり前だと勘違いしてるから始末が悪い。
613:名前は開発中のものです。
09/06/24 00:21:16 9O2FRRtx
移動量だけでなく待ちのフレーム数も可変にしないといけないとなるとちょっと面倒だな
614:名前は開発中のものです。
09/06/24 00:45:52 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:名前は開発中のものです。
09/06/24 01:14:19 OqjteeH5
FPS計測するとき同じミスよくやったなぁ
616:名前は開発中のものです。
09/06/24 01:20:49 zu36k+NF
俺もそこおかしいと思ってずっと悩まされてた
答え言っちゃいけないのかな
あそことあそこ入れ替えるでおk?
617:名前は開発中のものです。
09/06/24 01:31:30 km6ob3xz
>>616
うん。
それでおk。
ちなみに初版で気付いてラトルズに付属の葉書で出したが
C++本でも後の版でも訂正されなかった。
サポートページに訂正箇所のpdfがあるが読んだら全然違う箇所のことだった。
618:名前は開発中のものです。
09/06/24 02:15:36 6DfYO0Sm
14歳から~って読んでる人結構いるんだな
619:名前は開発中のものです。
09/06/24 10:34:44 QnhT+AWI
知らぬは、著者ただ一人だけ
620:名前は開発中のものです。
09/06/24 15:00:37 iWb66gX0
「14歳~」って読んだこと無いのだけれど、
これ買ったらDXライブラリの作者さんに何らかのお金が行くんだろうか?
行くなら買ってもいいかなあ。
621:名前は開発中のものです。
09/06/24 19:31:31 iPuVSgwO
>>616
何で答えを言っちゃいけないとかいう言葉が出るの?お前は?
バカなの間抜けなの?なにがそんなに秘密にしたがんの?死ねば?
622:名前は開発中のものです。
09/06/24 20:29:05 2pcTgAck
釣りだとわかってるけど笑ってしまったw
623:名前は開発中のものです。
09/06/24 20:33:55 cCHdRy2i
ティアリングに拘るよりやることがあるだろw
釣りであってくれw
624:名前は開発中のものです。
09/06/24 20:53:30 km6ob3xz
ネタじゃなかったら日本が滅ぶw
625:名前は開発中のものです。
09/06/25 00:07:29 lGFh6/SQ
ティアリングサーガだな
626:名前は開発中のものです。
09/06/25 00:30:15 z4Ht8mWs
こだわるのはプログラマの性だしなあ
627:名前は開発中のものです。
09/06/28 16:38:04 Mn3+4Pod
例えば
class Enemy{};
と
class Player{};
ってのがあったとして、両方とも座標用変数がpribate:になってる場合、両者の当たり判定はどうやって組んだらいいかな?
あと、Enemyをたくさん出したい場合って、class Enemy型の配列をつくっていいの?
それとも他になにか良い方法があるのかな?
今現在、練習を兼ねてミニゲームのようなものを作ってて行き詰っちゃって。
よかったら教えてください。
628:名前は開発中のものです。
09/06/28 18:36:01 zlbWct1+
俺は面倒だからpublic でやってるけど
まあ普通は getx(){return x;} という public なメンバ関数から座標を取得するのかな
もう一方の方は俺はEnemy型のlist でやってるけど
配列でも別にいいんじゃないかな
まあ俺みたいなへぼいのから聞くより出来る奴から聞いたほうがいいと思うが
629:名前は開発中のものです。
09/06/28 18:52:38 L4rlBUkj
Enemy中でplayer->touch_p(this->x,this->y)とかどうかな
630:名前は開発中のものです。
09/06/28 19:48:47 Mn3+4Pod
>>628-629
返答ありがとうございます。
さあ当たり判定を作ろう。と思ったときに上記のことでつまづいて書き込ませもらったんだけど
返答があるまでちょこっとなにか加えようかなと思っていじってたら、上から降ってきたものが
地面についたとたん固まるという想定外の現象に見舞われて、コードの半分ほどを書き直す
羽目になってしまって。
いまだ復旧作業の途中なので、せっかく返答してくれたけどその知識を使うのはもう少しあとになりそうです。
とりあえず、HitEnemy()というメンバ関数を作って、Playerのポインタを渡す感じでいこうかと思ってます。
…出来ないかもしれないけど。返答ありがとうございました。
631:名前は開発中のものです。
09/06/28 20:07:12 FGL1jWKo
ポインタを渡しても直接値を参照することはできないから
privateならget使うことになるんじゃないかな。
めんどいなら一時的にfriendしてやるとか。
632:名前は開発中のものです。
09/06/28 21:45:36 J3SLmnCX
>privateになってる場合
って書いてあるけどprivateにする意味があるからprivateなんじゃないのかな。
参照したいならprivateにする意味がないって事なので、
publicにするかアクセサメソッド作ればいいのでは。
まあ後者がいいと思う。
633:名前は開発中のものです。
09/06/29 00:05:45 ExNjCSjV
仕様がワカランからアレだけど、Enemy同士の当たり判定は必要ないのかな。
後、これも仕様がワカランからあれだけど Direction(方向)の情報とか必要ないのかな。
634:名前は開発中のものです。
09/06/29 00:08:39 0NdYoqqQ
シューティングだとそれらのことあまりやらないんじゃないか
無駄にそういうの増やすと負荷増やすだけだし
ゲームによってはそういうこともやるだろうが
635:名前は開発中のものです。
09/06/29 23:41:07 0tScVOcn
Enemy同士もPlayerと同じ方法で判定すればよくないか?
636:名前は開発中のものです。
09/06/29 23:46:20 4d+M4K38
playerとenemyなら1対多だけど、enemyとenemyだと多対多になって
判定回数が飛躍的に増えるって事でしょう。
637:名前は開発中のものです。
09/06/30 00:59:39 2TdNpUsa
そもそも何でprivateなのか分かってんのかと
理屈がわかんなきゃ全部publicにしてもstaticにしてもいいじゃないかって話になる
クラスの意味をまず勉強した方がいい
638:名前は開発中のものです。
09/06/30 12:36:26 YPE4/kWn
GraphLock
と
GraphUnLock
って以前はリファレンスに載ってたと思うんだが、見つからない。
サンプルが見たかったんだけど、以前のリファレンスってもう見れないのか。
インターネットアーカイブはダメだった。
639:名前は開発中のものです。
09/06/30 12:48:34 EGHH7lwt
>>639
過去スレにそれっぽいものが
URLリンク(www.2chsearch.jp)
640:名前は開発中のものです。
09/06/30 13:51:06 A8eMVGin
タヒチで日本の即席めん大人気
リゾート地として知られる南太平洋のタヒチ(仏領ポリネシア)で、たつの市の食品メーカー「イトメン」が製造するインスタントラーメンが売り上げを伸ばしている。
ここ10年で輸出量が倍増しているほか、現地商社の依頼で2年前からカップめんの販売も始めるなどファンを増やしている。
イトメンによると、タヒチへの輸出量は1998年が155万食だったが、2008年には356万食に倍増。
神戸税関によると、神戸港の即席めんの輸出量は07、08年と連続で全国一。
うちタヒチへの輸出は08年が303トンで、同税関は「タヒチ向けはほとんどがイトメンの製品」という。
イトメンの即席めんがタヒチへ渡るようになったのは40年ほど前で、神戸の貿易会社がタヒチに住む中国人向けに輸出したのが始まりという。
タヒチには118の島に23万人が住む。今はシェア6割ほどを占め、イトメンが直接輸出している。
即席めんは、国ごとの味覚に合わせるケースが多く、現地生産が主流。
同社は日本で販売している「チャンポンめん」と味は同じで、パッケージを変え「ALL-IN-ONE」の商品名で販売しているが、現地でも受け入れられている。
人気が高い理由について、同社の伊藤充弘社長(53)は「香港製などライバルの製品が少ないためでは」と分析。
タヒチで日本の旅行会社現地法人で10年間働く日野到さん(36)は「日本のラーメンは最も品質が良くて人気。よく売り切れている。
長年、安定して輸入が続いているイトメンの商品が定着している」という。
伊藤社長は「最近は原料の高騰で利益はほとんどないが、親しまれている味を届け続けたい」としている。
URLリンク(www.kobe-np.co.jp)
【グルメ】タヒチで日本の即席めん「イトメン」が人気
スレリンク(newsplus板)
【イトメン】 イトメンのチャンポン麺 【総合スレ】 Part2
スレリンク(nissin板)
641:名前は開発中のものです。
09/06/30 14:07:23 6Cj5H8P6
貴重な小麦粉をインスタントラーメンなんかに使うな馬鹿たれ。
642:名前は開発中のものです。
09/06/30 14:12:28 IiroK7Eg
ここはニュー速じゃないぞ
643:名前は開発中のものです。
09/06/30 21:08:32 O5h6+0gK
私がニュー速だ。ここをあけろ!
644:名前は開発中のものです。
09/07/01 00:09:56 g4kBRgyq
DXLibを使う場合、全体を
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpc, int nC){
while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){
~
}
}
こう言う風に作れって本に書いてあったんですが
この構造と本格的なwinプログラムの場合のウインドウズプロシージャとかとの関係がイマイチわからないのですが
どういう風になってるんでしょうか?
645:名前は開発中のものです。
09/07/01 00:15:05 UhT4qFyx
>644
関係ないと思っておk
646:名前は開発中のものです。
09/07/01 00:21:01 tzxPZ+Bo
初めてDXライブラリ使った時、小難しいwinプログラムがなんでこんなツクールみたいになるのかと愕然としたよ
647:名前は開発中のものです。
09/07/01 00:31:13 9VzVKeVm
俺も最初WinMainではウインドウ作成とメッセージループしかしちゃいけないと思ってた
知人がタイマーイベント仕掛けてWM_TIMERがきたときにループ処理してたからそういうもんだと思って疑わなかった
648:名前は開発中のものです。
09/07/01 05:08:47 aia3X3LP
BorlandC++BuilderやDelphiのソースを読むともっとビックリするよん。
649:名前は開発中のものです。
09/07/01 09:35:30 LrL8gFoC
落ち目会社だしどうでもいい
650:名前は開発中のものです。
09/07/01 19:59:44 eeCacGXj
>>646
きちんと関数化、ライブラリ化すれば難しいゲームでも綺麗に書けるってこと
DXlibの機能には制限があるし、余計な機能もついているので、
最終的に自分で最適なライブラリを書くようになれるのがいいよ
651:名前は開発中のものです。
09/07/03 20:54:33 BsjXjKQw
SetMainWindowTextが未定義関数扱いされるんだがどういうことなの・・・
他の関数は普通に使える
652:名前は開発中のものです。
09/07/04 18:08:40 p2ue3IYD
>>651
うちでは正常に動くが。ヘッダから消してしまったとか。
653:名前は開発中のものです。
09/07/06 22:42:09 AVbDbUwf
ステータスバーってどうやって付けれるのよ?
おせーて
654:名前は開発中のものです。
09/07/08 01:56:14 OgMSMAZ5
ファイルから再生する音楽のループ位置を設定することはできますか?
655:名前は開発中のものです。
09/07/08 02:25:32 94Ripojr
>>654
SetLoopPosSoundMemではだめなの?
656:名前は開発中のものです。
09/07/08 02:58:22 OgMSMAZ5
>>655
ありがとうございます。すみません、説明不足でした。
PlayMusicでストリーム再生し、ループ位置を設定したいのです。
657:名前は開発中のものです。
09/07/08 11:53:36 Qn1Es1Py
>>655
SetLoopPosSoundMemとSetCreateSoundDataTypeを使って解決しました。
ありがとうございました。
658:名前は開発中のものです。
09/07/08 22:05:37 qTICtjjx
CPU Core 2 Duo 2.66GHz
RAM 4GB
GPU GeForce 9600M GT
VRAM 2GB
OS Windows Vista 64Bit
DxLibで作られたソフトをこいつで動かすと、始めは60fpsでなめらかにも関わらず、
しばらくすると30fpsになるのはなぜなんだ?
ガクガクするならまだしも、ぴったり30fpsなんだ。
またしばらくすると治ったりもするし、なにかひとつの関数が原因になってたりするのかな?
659:名前は開発中のものです。
09/07/08 22:17:02 i+ja7A8H
ScreenFlip()を2回呼んでいるとか
660:名前は開発中のものです。
09/07/08 22:40:16 uhEtjIe1
Vistaのいたずらじゃないかな?
うちも24か30で安定、フルスクリーンだと60fpsありがとうございます状態。
661:名前は開発中のものです。
09/07/08 23:16:39 tUPC3dXe
なんか最近どっかで見たような質問だな……。
662:名前は開発中のものです。
09/07/08 23:26:07 Sk8AIN2R
ビデオカードとそのドライバと設定だな
60、30、24ってよく見る数字だし
663:名前は開発中のものです。
09/07/09 01:06:35 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:名前は開発中のものです。
09/07/09 02:46:07 IPUdantx
ていうか垂直同期信号待ちをしてるのかしてないのかを先に明記してくれないと。
665:名前は開発中のものです。
09/07/09 22:24:55 9TUAw73M
GPUの垂直同期をオフにしてもオンにしても結果が変わらず。
というか、GPUの設定をどう変えてもまったく同じ・・・
666:名前は開発中のものです。
09/07/09 23:12:54 PnCCkvgD
もともとDXライブラリ側でOFFにしてるんじゃないの?
667:名前は開発中のものです。
09/07/10 06:17:28 On7fn4n8
画像を半透明で描写する方法ってDXライブラリにありますか?
668:名前は開発中のものです。
09/07/10 06:55:03 aqVpLVfM
リファレンスも読めんのか…
669:名前は開発中のものです。
09/07/10 09:02:40 G7FiBYYu
あるよ。リファレンスにある。
全部読んでそれでもわからなかったらまたおいで。
670:名前は開発中のものです。
09/07/10 12:51:04 xhZ5jDJO
座標ってxyで行うから構造体でセットにして扱うのってなんか不都合ある?
671:名前は開発中のものです。
09/07/10 13:23:29 Pbfo1cNY
無いよ。
bullet[i].locate.x = 320; とか多重に扱うと見た目が重く感じるぐらい。
672:名前は開発中のものです。
09/07/10 13:23:43 GMEf2Yqs
全然ないから、POINT を使うと良いよ。
673:名前は開発中のものです。
09/07/10 15:09:18 xhZ5jDJO
>>671-672
thx
多重に気をつけて、メンバ変数は極力そのクラス内で処理するようにしますわ
674:名前は開発中のものです。
09/07/10 23:17:50 kvfVpi7w
EnemyManager.Small.Flying.Bullet[i].Location.x = GameCanvas.TopLayer.ViewObject.Set(320);
とかなら、ちょっとは考えろよwwとか思うけど。
普通に組んでる限りじゃ、そんな気にする必要はないかと。
どうしても気になるなら、POINTなりをpublicで継承すりゃ、
bullet[i].x=320にできるし、どうせゲームだからこれで問題無いでしょ。
675:名前は開発中のものです。
09/07/11 01:55:20 UeAE0WWV
アクセス権が気になるなら参照を返すアクセサ作ればいいしな
bullet[i].x()=320;
これくらいなら見た目もタイプ量も許容範囲だろ
676:名前は開発中のものです。
09/07/11 01:56:20 UeAE0WWV
あ、もちろんインライン展開される書き方前提でな
677:名前は開発中のものです。
09/07/11 07:49:08 wBBMdddU
そういったセットになり易いものって他にどんなのがあるかな?
678:名前は開発中のものです。
09/07/11 18:21:58 SvZlB+M+
セットって?
679:名前は開発中のものです。
09/07/14 04:20:59 wRlAP6qv
たまにタスクが応答なしになるという原因不明のバグに悩まされ
再起動してみると普通に実行されるのは何だろう
680:名前は開発中のものです。
09/07/14 04:40:19 mFQZCpWd
>>679
何を言いたいのか分らんが・・・
(エスパー希望の相談なのか、只の雑談なのか、愚痴なのか?)
とりあえず、タスク がタスクマネージャーとかのタスク(application)の事なら、
単純にどっかが無限ループに嵌ったか、画面書き換えの部分を通らなくなったか(orキー入力の部分を・・・)
だろう。
とりあえず、printfを色んな所に仕込んでおいて、デバックを掛けるとかするのが基本。
怪しい所がどうみてもライブラリ側だったら、公式に書き込めばいいし、
そうでないなら、再現性を高めて、その変な挙動をここででも、公式ででも聞いてみればいい。
大概は、配列でindexが超えて・・・・とか、switchでbreak;が抜けてて・・・とか
if文の後に変なモノがあって、ifでの抜けだしが効かなくなってたりとか、
{}の対応が微妙にずれてて・・・とか、初期化してないのを使っていて、タイミング次第で・・・とか
(後は、WindowsUpdateしてなさ過ぎて、リターンが遅れてるのを応答なしに解釈されてるとかもあるか、)
681:名前は開発中のものです。
09/07/14 04:49:20 wRlAP6qv
>とりあえず、タスク がタスクマネージャーとかのタスク(application)の事なら、
その通り
>単純にどっかが無限ループに嵌ったか、画面書き換えの部分を通らなくなったか(orキー入力の部分を・・・)
>だろう。
そういった部分は見当たらなかった
何せOSを再起動させてそのプログラムを再び実行させたら何の問題もなく動いたのですからプログラムに原因があるとは思えないのですが
682:名前は開発中のものです。
09/07/14 05:07:49 pOq3rm7P
そういう現象が出てるのが君だけなんだから君のプログラムに問題があるか、
あるいは君だけが体験できるくらいレアな現象って事になるだろう?
調べる事ができるのは君だけなんだから
素直に>>680の忠告に従って、きちんと調べていけばいい。
「これで合ってるはず」なんて余計な「思い込み」はデバッグ作業の邪魔にしかならないぞ。
683:名前は開発中のものです。
09/07/14 05:36:27 mFQZCpWd
>>681
それだけの事で、プログラムに問題があるとは思えないって・・・・
とりあえず、
初期化なしでつかってる場合にはOS再起動とかで簡単に変わるし、
時間取得なんかをちゃんと処理してないと、
日にち跨ぎや時間跨ぎで、発生したりしなかったりする。
>>682も言うとおり、思い込みよりも手を動かしてデバックしなぁ。
プログラムは書いた通りに動いても、思った通りには動くとは限らないんだからさぁ。
684:名前は開発中のものです。
09/07/14 06:46:29 wRlAP6qv
だってデバッグしたけど分んないんだもん
まあ動くようになった訳だからそのまま何事もなかったかのように過ぎていくのだろう
685:名前は開発中のものです。
09/07/14 07:14:55 MgrfsfEm
forやwhileで使ってる変数の初期化忘れあたりが怪しいけどどうなんだろうな
686:名前は開発中のものです。
09/07/14 07:53:46 wRlAP6qv
それはないと思うがなあ
その可能性のあるコードって、(実行時に処理を通ってるコードの中で)
while( (!ProcessMessage()) && (!keybuf[KEY_INPUT_ESCAPE]) )
しかなかったんだが(変な書き方でスマソ)
確かに keybuf はグローバル変数にしてしまってるし
char keybuf[256] = {0};
で初期化したつもりになってるけどどうなんか分らん
まあ動くようになったし確認しようにももうできないからな、動くから
まあ良しとして続けるしかないな
687:名前は開発中のものです。
09/07/14 08:07:50 1FTDe9TM
こうしてバグが量産され、ついにはうんともすんとも動かなくなりねあげる姿が
688:名前は開発中のものです。
09/07/14 09:43:25 MgrfsfEm
裏画面の内容をテクスチャにコピーする関数ってあったっけ?
689:名前は開発中のものです。
09/07/14 20:58:42 2Fk/wASW
「無いと思う」とかじゃなくて確かめないと。
プログラムに思い込みは絶対あかん。
690:名前は開発中のものです。
09/07/14 23:37:46 wRlAP6qv
だって動くようになったから確かめようがないじゃん
この先動かなくなる可能性ないわけではないが
そうなったところでこれ以上バグは見つからんだろうな、俺の力では
691:名前は開発中のものです。
09/07/15 00:00:28 MHxGaYOY
だからprintfとかで一つ一つ処理の中身を吐き出して見るんじゃん。
外見上動いてても、バグがあれば意図してないデータが含まれてる。
692:名前は開発中のものです。
09/07/15 01:08:24 ouOmT7td
うーん、やっぱりバグがあるとはどうしても思えないし
多分printfとかで一つ一つ処理の中身を吐き出して見てもどの道今の俺の能力では
バグを発見できるとは思えないから忠告はありがたいがこのままいくことにするわ
以前も同じようなこと何回かあったしそんときもちゃんと完成まで漕ぎ付けているし
693:名前は開発中のものです。
09/07/15 01:17:22 Pli3pE87
ID:wRlAP6qv
ID:ouOmT7td
お前さ、そんなスタンスなら、なんでわざわざここに書き込んだわけ?はじめから書き込むなよ。
なに、構って欲しかった?わざわざお前の書き込みに一生懸命考えてレスしてくれた
人達に失礼だと思わないの?
694:名前は開発中のものです。
09/07/15 01:49:11 9zT2ADv7
実際問題、再現性のないバグを修正するのは難しいよ。
プログラムを書いた本人に見当がつかないなら、他人の経験に頼るのも良いと思うよ。
自分がそんなバグにぶち当たったとしても根気だけで調べようとは思わないな。
時間が余ってるなら別だけど。
で、他人の立場から言うと、あれだけの情報で問題のありそうな点を指摘するのは無理だ。
アドバイスとしてはバグ発見を諦めるのではなく自分用バグリストを作ってそこに追加しろ。
695:名前は開発中のものです。
09/07/15 02:09:56 ouOmT7td
何かヒント得られると思って…
でアドバイス通りに考えてみたけど駄目だった
696:名前は開発中のものです。
09/07/15 02:15:50 oAaV9htY
>>695
そうか、お疲れ。
コード晒す勇気があれば、案外デバックしてくれる人が居るとおもうけど…
(自分一人だと考えがなかなか間違いに気付きにくいからコードレビューは有効だと思う)
「アドバイス通りに考えてみた」ってのは、
もちろん、printfとかでデバック情報をポコポコ吐き出させたけど、バグらしき場所が見あたらなかった
って意味だよね。念のため。
697:名前は開発中のものです。
09/07/15 02:28:23 HAQqwNAf
ソースうpしろ
無理なら帰れ
698:名前は開発中のものです。
09/07/15 06:33:25 jzF+qqts
最小のコードを切り出してる最中に問題が解決することって結構あるよね?
俺だけ?
699:名前は開発中のものです。
09/07/15 07:55:06 OJRObvUW
あるある
意外とバグって見当つけてたとこ以外にあったりするもんなんだよなぁ
700:名前は開発中のものです。
09/07/15 08:38:43 MHxGaYOY
>>696
>>692でデバッグしてないと言ってるじゃん。
701:名前は開発中のものです。
09/07/15 10:08:04 kzUIqF8J
バグを直接見つけようとしないで、確実にそのバグを再現できるようにするのが第一歩
702:名前は開発中のものです。
09/07/15 10:45:30 jzF+qqts
>>701
分かる分かるw
そしてバグを再現させるのは非プログラマに丸投げする俺
703:名前は開発中のものです。
09/07/15 11:25:55 aCtz8rQi
で少しずつ条件を変えてあたりをつけていく。
704:名前は開発中のものです。
09/07/15 20:48:39 vgHuQMIa
おまえら仕様書切らないから
テストも作れないし
そもそもバグなのか想定なのかも混乱するんだろ?
705:名前は開発中のものです。
09/07/15 21:06:50 SOTm+sdF
分け入っても分け入ってもバグの山
706:名前は開発中のものです。
09/07/15 21:09:53 MHxGaYOY
仕様書、製造終了してから書いた記憶しかないなぁ…
707:名前は開発中のものです。
09/07/15 23:03:43 MZkEPg1i
>>704
最終的にうまく動作するものが仕様です。
どだい、仕様書でバグが防げると思ってる法が異常。
仕様書の想定だろうが、結果駄目ならバグだろ!
708:名前は開発中のものです。
09/07/15 23:17:51 OJRObvUW
個人製作だし仕様書なんて全部脳内の香港式です
仕様の段階でバグ出すレベルの人はちょっとヤバイ。
709:名前は開発中のものです。
09/07/16 00:10:27 ZK0MxNzH
脳内でまとめようとして、てこずるものを
紙に書いてみたらあっさり解決ってのはよくあることだけどな。
710:名前は開発中のものです。
09/07/16 03:15:22 1/ar+JW7
そういえば話はずれるけど、「仕様を全てきっちり書いて、それを紙に印刷しておく
のが重要なんです!」と力説する新人が入った時を思い出した
711:名前は開発中のものです。
09/07/16 10:03:06 qgWixxR7
人それぞれで、
仕様書がなければダメになる人とそうでない人がいる。
始めた時は正しい方向に向かっていたが、
出来上がった時には違った方向を向いている、
世の中にはそんな人も多くいる。
チームで進めるとき、意思の統一が重要で
依頼しても、出来上がりが違うものになるのは困り者。
人それぞれなので、きちんとできるひともいるので、そのような人は不要と言われる
712:名前は開発中のものです。
09/07/16 10:53:13 glHWB671
もし、違うものが出来上がってきたら、
「言った、言わない」の問題になってしまうから
あらかじめ、ちゃんと紙にして保存しておくって事だろう。
できるできないの問題じゃないよ。
自分のため、相手のための保険みたいなもんだ。
713:名前は開発中のものです。
09/07/16 11:11:34 qgWixxR7
掛け捨て保険ではない。
チームで行う時の基盤になる、開発ドキュメントとして
取り扱い説明書として、保守業務の基準として必須のものである。
714:名前は開発中のものです。
09/07/16 11:30:46 Frg8+T60
チームでやるなら仕様書必須
作り方が違うだろ
URLリンク(marupeke296.com)
715:名前は開発中のものです。
09/07/16 13:48:32 JxCE3uCo
コメント見ただけで仕様が把握できるようなソースが書けるようになりたい
いつかは。
716:名前は開発中のものです。
09/07/16 16:20:01 MA5d2Bm1
コメント書かなくても把握できるソースが理想かな。
717:名前は開発中のものです。
09/07/16 16:29:44 K0RdyJ0x
どうも英語のコメントは読むのも書くのも苦手で……
718:名前は開発中のものです。
09/07/16 17:36:09 sfuED1R6
悪ノリではっちゃけたコメント書いてるのは俺だけではないはず
719:名前は開発中のものです。
09/07/16 21:20:58 0qzmxnba
>>715
ダウト
仕様はソースと答え合わせする為のもの
ソースみて内容がわかるのと、本来どうあるべきなのかは別問題
720:名前は開発中のものです。
09/07/16 22:04:34 sfuED1R6
そうか個人製作の場合ととチーム製作の場合と仕様書と仕様と仕様バグとバグを
はっきり切り分けないで話してるからこんなにカオスなのか
721:名前は開発中のものです。
09/07/17 09:45:51 iPNwCeP8
みんな自分の話してるだけだからな
722:名前は開発中のものです。
09/07/17 09:47:37 ZC/cxW1d
メンバ関数でモジュール化するだけだよ、基本的には
それにコメントは確かに大事だが
関数名をgetScreenFrameParSecondみたいにきちんと書けば、仕様が明らかにわかる
クラス・変数名も同じ
例えばiteratorをitとか省略して書くのはダメ
タイプ速度は速くなるが、後のコーディングで詰まるから、作業は全く速くなってない。むしろ遅くなる
省略しなければiteratorという言葉を知らない他人が見ても、ググれば意味がわかる
あとは、日本語で名前つける人がいるけど
ネットに和英辞書あるんだから使ってほしい
英語の勉強になるし国際化にも対応できる
723:名前は開発中のものです。
09/07/17 10:08:40 fic4arti
そこまで欧米コンプレックス持ってないし…。
国外にソース晒すほど立派なもん作れるなんてうぬぼれてない。
724:名前は開発中のものです。
09/07/17 10:48:52 XzHK2st6
自分で分かりやすいのが一番
725:名前は開発中のものです。
09/07/17 11:36:53 71PbqEZA
趣味の範囲内だし態々・・・
726:名前は開発中のものです。
09/07/17 14:37:53 AtGtaSaV
熊々翻訳しなきゃわからないレベルの英単語は使わないかな
727:名前は開発中のものです。
09/07/17 14:42:09 vX9OmGXP
FileHandle ofh ( FileName, ">" );
とかは問題ないと思うけどな。宣言のクラス名で大体分かるし。
宣言が遠すぎて分からんような関数ならその時点で問題だし。
728:名前は開発中のものです。
09/07/17 15:20:17 vX9OmGXP
というか、「ローカルスコープの」識別名は短いのが主流な気がするんだけど。
定番の良書とかでも普通みんなそうだし、Linuxカーネルみたいな大物ソースでも
そうだし。
結局、識別名だけで理解できる情報は限られるのも現実。そうでなければ、それこそ
アプリケーションハンガリアンなんかを全識別名に徹底すれば最高なのかもしれない
けど、実際は関数エントリにはしっかりした出入り仕様のコメントが欲しい訳で。
まぁ、スレ違いなんだけどね。
正直、D3DXのせいで、「扱いやすくする」という使命のラッパーライブラリの系統
は居場所を失ってるから、このスレの居場所も同様によく分からないんだよなぁ。
729:名前は開発中のものです。
09/07/17 15:37:38 /TZL4Vnl
∩___∩
| ノ ヽ
/ ● ● | クマ知ってるか。
| ( _●_) ミ 出雲地方では、木と岩と水の在る場所を「熊々しい谷」と呼ぶ。
彡、 |∪| 、`\ 「熊々しい」とは、神々しいの意味だ。
/ __ ヽノ /´> )
(___) / (_/
| /
| /\ \
| / ) )
∪ ( \
\_)
730:名前は開発中のものです。
09/07/17 22:02:14 Z3s3jxcY
>>722レベルの長文関数名を記述すると
引数がある場合とかに
複数行にわたってしまって
なんだか見づらくならない?
今まで見たソースだとgetScrFPS程度には略してるけど
おまえらどうなの?
731:名前は開発中のものです。
09/07/17 22:12:33 3aIuRMAB
略すと判んなくなる時以外は略してる。
732:名前は開発中のものです。
09/07/17 22:12:54 a1yK0hIN
目的や用途によって使い分けてる。
733:名前は開発中のものです。
09/07/17 22:29:41 PpX+kDe1
クラスの中に座標XとYをまとめてクラスか構造体にしておいて、他の関数などに渡すときに
ひとつのGetPos()って関数で渡すにはどうしたらいいかな?
考えてみたんだけど、どうしても一つでいろいろなところで使える方法がみつからないんだよ。
まだプログラム経験が短いもんで。
734:名前は開発中のものです。
09/07/17 22:47:07 a1yK0hIN
構造体を返せばいいと思うけど、そういうことではない?
735:名前は開発中のものです。
09/07/17 23:03:35 TRJ/ynqn
まあ状況によるけど。
基本Getは単一変数を返す方がいい。
内部の構造体のデータを返すのは間違っている。
その場合はとるのではなく、チェックしてもらう。
bool chk_XXXX (pos *dat); が正しい。
で、この関数はインラインであれば、スピード的には何の問題も無い。
考え方が逆。
736:名前は開発中のものです。
09/07/17 23:06:22 TRJ/ynqn
補足、クラス内のデータの処理はそのクラスの関数で行う!
これ基本中の基本
737:名前は開発中のものです。
09/07/17 23:31:36 cB4HhxMP
皆が何言ってるかさっぱりわかんないぜ!
でもゲームは作れてるぜ!
738:名前は開発中のものです。
09/07/17 23:36:29 iPNwCeP8
FPSはそれ自体で意味がわかるから使うけどScrは無いわ
739:名前は開発中のものです。
09/07/18 00:03:32 pCmtYAM2
class A があって xが public なメンバの場合 A.xでアクセスするのと
private の場合 getx(){return x;} でアクセスするのと速度変わらんのか
740:名前は開発中のものです。
09/07/18 08:04:35 QevxnE5g
>>739
詳しい事はしらんが、常識的な範囲でコンパイルを考えれば、
最適化が普通だったら遅くなる理由は無いと思う。
最適化をしないなら、クラスから関数のアドレスに飛んで、
そこで値:xを取得して、それをどっかに格納な分
遅くなるんだろうけど・・・。
741:名前は開発中のものです。
09/07/18 08:54:43 UXbVEGUE
>>740
ちょっと違う
getx(){return x;} がクラスの中に書かれ、そのクラスがヘッダーファイルなら。
インライン展開されるので
aa = getx(){return x;}
||
aa = A.x と同じ
最適化は関係ない
742:名前は開発中のものです。
09/07/18 08:56:36 UXbVEGUE
あ、ちょっとまて、C++のみの話な、他の言語は知らん
743:名前は開発中のものです。
09/07/18 10:41:55 PwgwIsF1
それはヘッダに直接定義書いてるからinline付いてるだけじゃね
ソース側で定義でもinlineつけて展開できるなら同じじゃないっけか
後、クラス内での処理はインラインしてくれるのが普通だったきがする
メンバ関数内で別のメンバ関数呼び出して処理とか
まー、>>736か
744:名前は開発中のものです。
09/07/18 14:09:33 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、って書く。で、
「この設計だと遅そうだしポインタ渡そう」って言われたら、実際どうなるか興味ある
んでベンチでも書いたり、ついでに↓みたいなのも一緒に見たりしながら相談する。
URLリンク(msdn.microsoft.com)(VS.80).aspx
745:名前は開発中のものです。
09/07/18 14:20:17 xlxZEQtn
>>744補足
スコープの外に「自動」インスタンスを返すなら、だな。
つーか、二つめと三つめは最初の質問のシチュエーションから逸脱してるな。すまん。
まぁでも、メンバ関数でもNRVOは重要なんで、仕組みは知っておいた方が。
746:名前は開発中のものです。
09/07/19 05:29:35 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:名前は開発中のものです。
09/07/19 05:51:18 EpiDWLJN
>>746
正直どこにつっこめばいいかわからないので
公式のサンプルを参考にすればいいとだけ言っておく
URLリンク(homepage2.nifty.com)
748:名前は開発中のものです。
09/07/19 11:01:02 7iXtFi1U
WaitTimerは使っちゃだめれす><
749:名前は開発中のものです。
09/07/19 21:11:12 mJh1WCZZ
フラッシュマン
750:名前は開発中のものです。
09/07/20 01:05:51 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:名前は開発中のものです。
09/07/20 01:09:47 pleKhZHB
最後のとこはelse if(waitTime<0)だた
752:名前は開発中のものです。
09/07/20 18:56:48 u2THICPq
ジャンプするたびに画像をロードしまくってどうする
753:名前は開発中のものです。
09/07/20 23:05:51 hrqPLvNB
>>750
これならどの環境でもキッチリ結果が出るね
カウンタ回すしかやったことないから参考になるわ
だけどアクションとかだと遅延おきてカクカクにならないかな
754:名前は開発中のものです。
09/07/22 14:20:11 23EfZ5Te
同じフォルダ内にあるTTFフォントを使って文字列描画したいんですけどそれはDXライブラリでできますか?
フォントのファイル名を指定して読み込みするような関数が見つからなくてどうすればいいか困ってるんですが
755:名前は開発中のものです。
09/07/23 01:22:02 w7s2/iav
なんかソレっぽいサンプルどっかで見かけたような気が……
756:名前は開発中のものです。
09/07/23 01:49:57 w7s2/iav
ごめん適当なこと言った
DXライブラリでは出来ないような気がする
でもフォントファイルを一時的に開くプログラムがあれば通常のフォントと同じように
名前の指定だけで使えるはず……
757:754
09/07/23 02:35:05 M1f3xhTA
ありがとう!!探してみて解決したよ!!
結果はWin32APIのAddFontResourceEx関数を使えば一時的にTTFファイルからフォントリストに登録できるみたい
第二引数に0x10(FR_PRIVATE)を渡せばそのプロセスだけで使えるようになるぽ
使い終えたらRemoveFontResourceExで開放する必要もあるみたい。登録時とまったく同じ引数で呼び出す必要あり
AddFontResourceEx("hoge.ttf", 0x10, 0); // これでhogeフォントを登録。DxLibのEnumFontNameでも表示されるはず。
RemoveFontResourceEx("hoge.ttf", 0x10, 0); // 削除。引数を↑と同じにしないといけないらしい
いくらDxLib関係でググっても見つからなかったので少々冗長気味に解説してみたよ
正直この機能はDxLibにラップされてても違和感無いと思うんだけど
758:名前は開発中のものです。
09/07/23 03:39:18 8ujD6dNo
確かに自動対応してもいいレベルではある
759:名前は開発中のものです。
09/07/23 21:34:58 PImKyCUU
暗転ってどうやってやってる?
760:名前は開発中のものです。
09/07/23 21:51:01 tLjhSV6z
普通に画像を表示して、その上にかぶせるように真っ黒な画像を少しずつ濃くしながら表示。
完全に濃くなったら、表示する画像を切り替える。
真っ黒な画像を少しずつ薄くしながら表示する。完全に薄くなったら、以後、真っ黒な画像は表示しない。
これでいいと思う。
761:名前は開発中のものです。
09/07/23 23:37:10 JVsH2uDi
SetDrawBlendModeとDrawBoxでやってるな。
762:名前は開発中のものです。
09/07/24 02:52:41 sonMl0Vt
これ一旦止めた音楽止めた場所から再開させることできないのか
763:名前は開発中のものです。
09/07/24 03:42:20 nwWosEk7
できるけど
Dxlib.h内を、サウンドハンドルの再生位置で検索
764:名前は開発中のものです。
09/07/24 04:08:03 sonMl0Vt
ありがとうございます
やってみました
PlaySoundMem でやってるときは GetSoundCurrentPosition で取得すればいいのかな
でやってみましたが GetSoundCurrentPosition がいくら再生してるときでも0しか返ってこないのですが
ちゃんと引数に正しい SoundHandle 入れてますよ
765:名前は開発中のものです。
09/07/24 04:20:10 nwWosEk7
ごめん、検証してなかった
PlaySoundMemのTopPositionFlagを0にすれば
取りあえずは途中から再生できるはず
766:名前は開発中のものです。
09/07/24 06:13:08 sonMl0Vt
ありがとうございました、できました
767:名前は開発中のものです。
09/07/24 08:59:47 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:名前は開発中のものです。
09/07/24 09:09:49 5C3gkZxn
ああ、気付きにくいかもしれないことを補足。
自作ヘッダから<string>とか<math.h>とか使いたい場合も、「必ず全ての*.cppの最初で
stdafx.hがインクルードされる」という規則だから、結局は自作ヘッダがインクルードされる
時点ではstdafx.hが既に読み込み済みになってる。
なので、自作ヘッダに#include <string>とか書く必要も無し。自作ヘッダで使いたい標準の
ライブラリなんかのincludeも、全部stdafx.hに逃がせばおk。
769:名前は開発中のものです。
09/07/24 17:40:08 JWiEj2kH
これは便利そうですね
デメリットとかはありますか?
770:名前は開発中のものです。
09/07/24 18:12:52 HmqJ54co
今の俺には何のことだかさっぱりだがメモっておく
771:名前は開発中のものです。
09/07/24 19:26:36 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:名前は開発中のものです。
09/07/25 15:25:58 3qZ+q5uI
当たり判定はこうすればいい。
プレイヤーキャラクターを移動させたければこうすればいい。
といった部品部品は作れるけど、いざゲーム自体を作ろうとなったら全然作れないんだ。
いったいどうしたらいいのかな・・・?
773:名前は開発中のものです。
09/07/25 15:36:28 hVdocGyY
その部品を組み立てればゲームになるはずなんだが
一体何が問題なんだ?
それを言わずして質問されてもわかるはずがない。
774:名前は開発中のものです。
09/07/25 15:37:45 tEWYFYw5
>>772
とりあえず目標を決めてはどうか。
ただし、あまり大作でも作れなきゃ意味がないので、
初期の携帯電話用ゲームや、初期のファミコン、インベーダゲーム、倉庫番あたりを目指す。
矢印キーだけ、せいぜいそこにボタン1個くらいで遊べるゲームが楽でいい。
目標が決まったら、それを「部品」に分解する。
うまく部品単位になればお前さんの勝利。
775:名前は開発中のものです。
09/07/25 17:05:50 OnXN/lFa
綺麗な部品作りの楽しさとゲーム作りの楽しさは、何というかちょうど90度くらい
ずれた方向性がある。両方うまい人はすごくいい。
最初の一歩はとにかく単純に、ゲーム内容どうでもいいから一本のゲームとして
成り立ってる物を作る、つーこと。極端な話、全部WinMain()に入ってても一向に
構わない。(綺麗な部品作りに慣れてるならそうはならないだろうが)
部品は必要性を実感してから作る方が最適になりやすい。いわゆるシーズじゃなく
ニーズで作る。先に需要を予測して部品を作る、ってのはほどほどにすべき。
で、「クソゲー作ってもなぁ」と思うなら、いっそ最初から真面目に本気ゲーを
作り始めてしまっても全然問題ない。
776:名前は開発中のものです。
09/07/26 08:48:42 Hw5xOpYa
個々の部品の作り方が分かっていても、それらを全部組み合わせて、うまく動くようにするのは結構大変。
特にシーンやリソースの管理が入ってくるとかなり面倒になる。
そういう点ではやっぱり最初は1面のみの単純なゲームから始めた方がいいね。
プログラムが大きくなればなるほどバグ取りも大変になるから、最初は小規模から始めた方がいい。
自分はいつも最初からあれこれ入れようとして墓穴を掘ってる。
777:名前は開発中のものです。
09/07/26 11:40:31 AWfgbmGQ
プログラムを書く能力とゲームを組み立てる能力は、全くの別物
紙にステータスを書いて遊ぶとか、人形をいじって遊ぶとか
そういうアナログな手法でイメージを立てて設計する
何も考えずにプログラムを先に書くのは意味がない。
ゲームを考える(妄想する)、ゲームを作る、ゲームを遊ぶ
この3つのどれが欠けてもうまくいかない
まず面白いシステムや世界観を考える
次にプログラム、シナリオ、絵、音楽などで形にする
最後に完成品を遊び倒して面白いゲームに近付ける
ゲームは工業製品だから、作り手の職人気質がもろに出るよ
778:名前は開発中のものです。
09/07/26 11:57:44 aBNM0ylQ
>>772は単に大枠の設計が分からないとかそういうことなんじゃね?
>>776のいうシーン管理とかそういう骨組みの構造とか
779:名前は開発中のものです。
09/07/26 23:48:51 AGlm2m1e
stdafx.hにいれた上で、そのソースに必要なヘッダはあえて書くソースに書くようにしてる
780:名前は開発中のものです。
09/07/27 00:01:10 GCep4g8b
俺は何も考えずにいきなりプログラム作るぞ。
特に最初のうちは、あんまり考えないほうがいいと思うんだけどな。
緻密に設計していくのは、ミニゲームを何本か完成させた後のほうがいいと思う。
781:名前は開発中のものです。
09/07/27 00:11:13 bEbQPsi9
俺は「これできるかな? ……できた。んじゃこれはできるかな……? よしできた」とかやってるうちに
肥大化してゲームになってる。
782:名前は開発中のものです。
09/07/27 00:16:38 VenKtjMK
俺は「これできるかな? ……できた。んじゃこれはできるかな……? よしできた」とかやってるうちに
肥大化してまとまらなくなってやめる。
783:名前は開発中のものです。
09/07/27 00:30:42 aQ/IFL1X
俺は「これできるかな? ……できない。んじゃこれはできるかな……? できない……」とかやってるうちに
肥大化することなく寝る。
784:名前は開発中のものです。
09/07/27 01:20:08 VJq6W4rL
>>781-783
フイタwwwww
785:名前は開発中のものです。
09/07/27 01:49:38 pfTBKVpb
>>781-783がそれぞれ昔の俺、少し昔の俺、今の俺な件
786:名前は開発中のものです。
09/07/27 04:39:26 GaH2TMCV
昔はコードが汚いだとか構造が嫌だとかの細かいことが気にならなかった
今はゲームが完成しない
787:名前は開発中のものです。
09/07/27 04:44:35 aJcGKYvD
習作はできるが完成はできん
788:名前は開発中のものです。
09/07/27 08:01:02 sP35fefq
> 「○ ○の作り方」という本を読んで「この本に××が足りない」と考え、
> そこで今度は××に冠する解説をよみ「これには△△が抜けている」という印象をもち、
> そしてなかなか自分のゲームが完成しない、というパターンに陥った人は少なくないでしょう。
> さまざまな技術書や解説書、入門書を読みつくし、最先端技術に精通しているはずなのに
> 自作アプリケーションがほとんど作れないというのは、決して珍しくありません。
789:名前は開発中のものです。
09/07/27 08:53:03 CBwVvngl
そういうのを「頭でっかち」というんだな。
790:名前は開発中のものです。
09/07/27 13:31:26 1REfJ+es
どこの引用なんだ
791:名前は開発中のものです。
09/07/27 17:02:26 cEG3tUqV
本を読めば作れると考えるのが間違い
792:名前は開発中のものです。
09/07/27 21:15:32 C0govEpu
昔どっかのゲームクリエイターが「やってみるのが一番勉強になる」的なこと言ってたから
俺はそれを胸に頑張ったよ…。
793:名前は開発中のものです。
09/07/27 23:14:17 aJcGKYvD
男は度胸
何でも試してみるもんさ
794:名前は開発中のものです。
09/07/27 23:41:51 1REfJ+es
女は豊胸?
795:名前は開発中のものです。
09/07/28 02:18:15 0RhUYUoP
股だな
796:名前は開発中のものです。
09/07/28 05:12:13 uYQPfFdp
DXライブラリPortable、次のバージョン来ないかな
3Dポリゴン描画したいです……
797:名前は開発中のものです。
09/07/28 12:23:42 YL4nqTsX
そういやDX3Dってどれくらいできたのかな?
798:名前は開発中のものです。
09/07/28 13:20:14 aQj264s2
>>797
逃げたんじゃないか?
大学中退するやつだし
799:名前は開発中のものです。
09/07/28 19:50:25 lbcOkIrb
DX3DってD3DXと紛らわしいな。
3D描画をDXライブラリみたいに単純化するのは無理。3D描画のフレームワークは
D3DXで十分。それ以上やるとライブラリの独自色が付く。
2DもD3DXSpriteで構わないし、ちょっと調べればテクスチャにαの付いた板ポリを
D3DXで描画する方法はいくらでも出てくるけど。
DirectX6はDreamcast向け、DirectX8はXbox向けに作り直されてる訳で、そのまま
でも十分行けるライブラリ。DXライブラリの最大の意義は、WinMainのすっきり感
だと思う。
800:名前は開発中のものです。
09/07/28 20:50:59 LTJXvZ7v
本家の名前の紛らわしさに比べたら…
DXライブラリでも使えよ!って言われて固有名詞だとは夢にも思わず
なかなか存在に気付けなかった俺
801:名前は開発中のものです。
09/07/28 20:52:30 bkreYxYW
3Dなんかいくら敷居を下げたところでDXライブラリしか使えないような子には扱えないよ
ゲームフレームワークみたいな方向に簡単にするなら別だけども
802:名前は開発中のものです。
09/07/28 21:36:50 C3k1GCCB
あの・・・
流れを断ち切った横レスなんですが、
C言語+dxlibで作ったプログラムをC++のクラスってのを使って
まとめようと思い、メインループを書いてみたんですが、
書き方があっているのかすごく不安なのでお聞きしたいと思いました。
もし、スレチならいいスレ教えて・・・
よし!見せてみろ!ならソース張る。
803:名前は開発中のものです。
09/07/28 21:37:39 lZJGMEL/
DXライブラリに親でも殺されたのか
804:名前は開発中のものです。
09/07/28 21:43:58 LTJXvZ7v
>>802
ヨシみせてみろ
805:802
09/07/28 21:52:18 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:名前は開発中のものです。
09/07/28 22:00:28 bkreYxYW
それだけならそんなにおかしいところはないと思う
細かいどうでもいいことを突っ込ませてもらうと,
FlameじゃなくてFrame
あと大文字一字の変数名はやめてくれ紛らわしい
807:801
09/07/28 22:09:21 C3k1GCCB
フレイム・・・フレーム・・・
一文字違いが大違いでした・・・
参考にした本(セガ本?)にそういう記述があったのでつい (Tの件は)
T* <=この変数を使う場合
T->A
T->B
とか、
for(int i=0;i<1000;i++){
T-> X[i]
}
みたいに変数の中身をwhileの中で更新しまくっても問題ないですか?