ゲームプログラミング相談室
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001名無しさん@お腹いっぱい。
NGNG0002名無しさん@お腹いっぱい。
NGNGフルスクリーンでダブルバッファを用いたゲームを作っているのですが、
環境によってリフレッシュレートが変わり、ゲーム速度が変わるために困っております。
これを解決するために、まずゲーム開始時にリフレッシュレートを取得して
1フレームごとの移動量を計算しようと思っているのですが
肝心のリフレッシュレートを調べる方法がわかりません。
知っている方が居れば教えてください。
0003名無しさん@お腹いっぱい。
NGNG>1フレームごとの移動量を計算しようと思っているのですが
ここら辺がよく分からんけど
FlipのかわりにBltを使いタイマーでタイミングを取るってのじゃ駄目なのか?
0004名無しさん@お腹いっぱい。
NGNG難しく考えすぎ、タイマかパフォーマンスカウンタで制御すればいい
そういう資料もってないなら上記のキーワードで検索してくれ
0005名無しさん@お腹いっぱい。
NGNGメインループの中にカウンタを作って通過するたびに+1
タイマーを使って1秒過ぎるたびにカウンタの値を取って0に初期化
を繰り返せばOK
00062
NGNGタイマを使う方法も以前に試して見ましたが、どうもカクカクして使い物になりませんでした。
上の移動量を計算〜…ですが、仮にFPS=60のときxが1ずつ進むなら、
FPS=75の場合はxは0.8ずつ進むようにしたいということです。
00072>5
NGNGデバイスから現在のリフレッシュレートを取得するといった感じで。
0008名無しさん@お腹いっぱい。
NGNG最近はマトモになったのか?
>>6
キャラクターの座標を256倍とかして管理するんだよ
60FPSの時は +256、 75FPSの時は +256*60/75
で表示する時は 内部座標/256ね。これでスムーズに動くよ
0009名無しさん@お腹いっぱい。
NGNGy += vy * dy;
サンプルのDonutsのソース見てみるといいんでないかい。
方法の1つに過ぎないけどね。
>リフレッシュレートって昔はドライバーによって嘘返してきたりつかえなかったけど
>最近はマトモになったのか?
なってません。うちのGeForce2MXも返してこないし
Forced Refresh Rateすらちゃんと効きません。てめーNVIDIA!!!!
00109
NGNG鬱だ死のう。
0011名無しさん@お腹いっぱい。
NGNGどうせWindowsモードではSYNCできねーんだからさ。
無理するこたーねぇ、意外とティアリングなんて気になんねーぜ。
0012名無しさん@お腹いっぱい。
NGNG0013名無しさん@お腹いっぱい。
NGNGえっと、こちらとか↓
http://www1.odn.ne.jp/synsyr/prog_t1.html
0014名無しさん@お腹いっぱい。
NGNGDEVMODE devmode;
devmoce.dmBitsPerPel = 16;
devmoce.dmPelsWidth = 640;
devmoce.dmPelsHeight = 480;
devmoce.dmDisplayFrequency = 60;
devmode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY;
ChangeDisplaySettings( &devmode, 0 );
001514
NGNG逝ってきます。
0016名無しさん@お腹いっぱい。
NGNGそれってどの環境でも動作するんですか?
ChangeDisplaySettings()は動作が不安定だって聞いたことあるんですけど。
(2ちゃんで聞いたから、もしかすると嘘かもしれない)
0017名称未設定
NGNGみんなで動作試験してみるってのはどうだ?
0018名称未設定
NGNGDirectXできちんとリフレッシュレート変更できるようにしやがれ!
0019名無しさん@お腹いっぱい。
NGNGモニターの相性によっては画面うつらなくなることもある
そのへん考慮するのも良いプログラムの条件だろ
それとなんでリフレッシュレートにこだわるかな
0020名無しさん@お腹いっぱい。
NGNG確認用のexeを作って、どっかにUPして。
0021>19
NGNGそりゃ、同期映像と非同期映像は明らかに品質が違いすぎ、
完全な(時間軸の誤差ゼロの)同期映像を得る現実的な手段は
リフレッシュレートの変更しかないからです。
実は2、3ほど他の解法も考えてるけど、研究中なのでしばし待たれぃ。
#VSyncMAME萌え〜
0022名無しさん@お腹いっぱい。
NGNGゲームの映像は、アニメやCGと同様に1フレーム単位の芸術だから(3DCGもフレーム単位でいじくったりしてるのだ)その1フレームの時間がバラバラだと困るんスよ。
�冲を掛けるやり方は、実はある程度日常的な物理法則が働く場面にしか使えないんだけど、見過ごされがちなんだよなあ。
002322
NGNG0024名無しさん@お腹いっぱい。
NGNG0025名無しさん@お腹いっぱい。
NGNG2が質問でリフレッシュレートの設定でDirectXのVSyncの頻度が
変わるからゲームの速度がたもてないよーって質問があったんですよ
それならばタイマかパフォーマンスカウンタを使えば
前回の更新からどのくらいの「時間」が経過したかを計算できますから
モニターのリフレッシュレートにわずらわされることもなく
ゲームのフレームレートもウェイトをかけて調節可能ですし
3Dならば時間単位での計算をすればいいんでないかということ
だったんですが
リフレッシュレートとアニメーションのフレームは同一の単語だとは
知りませんでした
モニターのリフレッシュレートを無視した映像更新はノイズがでるから
だめってことでVSync待ちして更新するんだとおもってましたが
違いましたか
0026名無しさん@お腹いっぱい。
NGNGきょうび、プログラムが意識する必要は無いとおもうけど。
0027名無しさん@お腹いっぱい。
NGNG作るのにかかる時間が何十倍も違っちゃうからねぇ…
0028>26
NGNGていうか、Windowsユーザーが垂直同期取ってない映像に
慣れてしまっただけでしょう。
ゲーム機やアーケードのゲーマーには、
PCのゲーム動きがカクカクしていや〜んって嫌ってる人結構見かけますよ。
弾幕系2Dシューティングに至っては非同期だと完全にプレイに支障が出るし。
0029>27
NGNGまあ、確かにブラウン管が画面を1回走査する間に
フレームを1回確実に更新しないと
単なるティアリング防止にしかならないわけだけど。
0030名無しさん@お腹いっぱい。
NGNG意味通じてんじゃん(藁
0031名無しさん@お腹いっぱい。
NGNGFlip()使えばいいんでないの?
003231は >28 だ。
NGNG0033名無しさん@お腹いっぱい。
NGNGPCではVSyncの頻度は変更できるからVSyncはモニターの更新同期に使えってことで
ゲームのフレームレートなんかはタイマー使えってことです
ゲームの画像生成とモニターへの映像更新は別ってことで
それとタイマーにGetTickCountやSetTimerは使ってはだめです
0034名無しさん@お腹いっぱい。
NGNG論点は1つだと思ってない?
リフレッシュレートをフレームレートに一致させる話も出てるんだよ。
VSYNCを変える話はここでも出てるから関係無いわけないだろ。
あと、フレームレートが保証できる場合の話と保証できない場合の話も出てるし。
0035名無しさん@お腹いっぱい。
NGNGそうでしたか、すみません
0036名無しさん@お腹いっぱい。
NGNGなんで?
Windowsのメッセージループを通るたびにtimeGetTimeで時間を調べて
今すべきイベントをメッセージキューに投げる、ってわかりやすくて
よくない?
っていうか私の作ったゲームは全部これを使ってるよ。
0037名無しさん@お腹いっぱい。
NGNG003836
NGNG鬱だ。
0039名無しさん@お腹いっぱい。
NGNG……というところまではいいッスか? 分かります?>たぶんWindowsオンリーな方々
0040>31
NGNG/* ゲームループ */ while (true) { ... Flip(); }
はダメなんですよ。
0041名無しさん@お腹いっぱい。
NGNG>弾幕系2Dシューティングに至っては非同期だと完全にプレイに支障が出るし。
はっきり言って、VSYNCに同期してるゲームの方が支障おおアリ。
60Hzでスピード調整してるから85Hzのモードでは速くなっちゃったり、
逆に極端に遅くなっちゃったり、スピードは変わらないけど85Hzで
60回だけ更新するからカクカクしちゃったり。
VSYNCをON/OFFできる設定が付いてるゲームでは、絶対OFFに
した方がプレイしやすいもの。
004231>40
NGNGの回帰中に切り替えてくれる話なのだ。
0043>41
NGNG慣れてるんでいいけど。全部クソゲイツのせいだし。
>はっきり言って、VSYNCに同期してるゲームの方が支障おおアリ。
>60Hzでスピード調整してるから85Hzのモードでは速くなっちゃったり、
あたしは同じ60fpsで同期の場合と非同期の場合を比較してるのであって、
実行速度が変わっちゃっちゃあそりゃ問題外です。
>逆に極端に遅くなっちゃったり、スピードは変わらないけど85Hzで
>60回だけ更新するからカクカクしちゃったり。
そう。それは非同期なせいで支障が起きてるわけでしょ?
>VSYNCをON/OFFできる設定が付いてるゲームでは、絶対OFFに
>した方がプレイしやすいもの。
そのかわりティアリングが起きてますがな(これも非同期の支障)。
そこで、リフレッシュレートを60Hzにしてフレームの更新と同期できれば
すべて解決するわけでしょ? 理論的にも最高品質の映像が得られます。
0044>42
NGNGデモやリプレイなんかの問題やら、難題山ほど抱え込むことになると思う。
それこそDirectXのサンプルのDonutsのようなゲームにしか
通用しないでしょう。
結局ティアリング無視して60fpsくらいしか方策ないのかもね。
0045名無しさん@お腹いっぱい。
NGNGちなみに60と75と85の最小公倍数だ。
リフレッシュレート70Hzとか80Hzの人は死んでくれ(w
0046名無しさん@お腹いっぱい。
NGNG0047魁!名無しさん
NGNG・・・5100じゃないのか?>最小公倍数
0048名無しさん@お腹いっぱい。
NGNG間に合わなかった場合、そのままコマ落ちするんじゃないの?
プレイヤーからはゲームの進行が遅くなったように見えるように。
特に最近のネットゲームの場合、1/60secでデータの交換が終わる
わけはないので、どうしても非同期にせざるを得ないような気がする。
俺は素人なんで間違ってたらつっこんで。
0049名無しさん@お腹いっぱい。
NGNG>>60回だけ更新するからカクカクしちゃったり。
>
>そう。それは非同期なせいで支障が起きてるわけでしょ?
こういうのって、やっぱ、見ててわかるもんなんですか?
005049
NGNGたとえば、リフレッシュが80Hzで、フレームレートが最高60fps
までしか出せないような場合、リフレッシュ4サイクルに3フレーム
切りかえるくらいなら、リフレッシュを60Hzに落とすとか、じゃ
なかったら、フレームレート40fpsに落としてでも、2サイクル
に1フレームとした方が見てて気持悪くないヨ、っていうような
話ですか??
0051名無しさん@お腹いっぱい。
NGNG細かく言えば、いまのゲーム映像文法では絶対に分かる。
解決のためには、やっぱ、Vシンク60hz決め打ち法案を可決するか、
あらたなゲーム文法を開発するしかないね。
とにかく、ソフト内部のフレーム更新周波数とディスプレイの周波数が違う場合、
なれてくれば絶対にわかってしまう。
この辺が理解できないのは、やっぱ、Winゲーマーが洗脳されてるんだろうな。
0052名無しさん@お腹いっぱい。
NGNGゲーム映像文法というか、認知心理学の領域というか。(^^;
人間の目って時間が均等に割られていない動きにはかなり敏感です。
特に3D CGのような輪郭のはっきりした画像はね。
逆にいうと均等になっていて、blurがかかっている画像だったりすると
フレーム数が少なくても割とごまかせたりするんですけどね。
0053名無しさん@お腹いっぱい。
NGNG2001リンクエラーがどわーっと出てきます。
プロパティの設定で.libの設定はしたし、SDKへのパスは通しました。
VC++6.0 SP4
Win98
DirectX7.0a
タコな質問で住みません。
0054名称未設定
NGNG使えないのか?
0055名無しさん@お腹いっぱい。
NGNG使えないというか、絶対使っちゃダメ。(マジレス!)
0056名無しさん@お腹いっぱい。
NGNG>そこで、リフレッシュレートを60Hzにしてフレームの更新と同期できれば
>すべて解決するわけでしょ? 理論的にも最高品質の映像が得られます。
PCではVSYNC固定が不可能だから議論してるんじゃ〜ん。
今は120Hzとかが主流みたいだけど、今後はこの数値もどんどん
大きくなっていくだろうし、とにかくVSYNCに依存するような
アルゴリズムは危険なのだ。
0057名無しさん@お腹いっぱい。
NGNGVSyncとれないハードだったらどうすんだこいつら
「VSyncとれないんでこんなハードじゃゲームつくれませーん」て上司に泣き付くのか
こんなやつらばっかりか最近のプログラマって。理屈ばっかりならべて。
0058名無しさん@お腹いっぱい。
NGNG0059pipi
NGNGDirectXは使ってないのですが、フルスクリーンで表示することは
可能でしょうか?
006059>
NGNG006160
NGNG0062名無しさん@お腹いっぱい。
NGNGデフォルトのリフレッシュ・レート60.1Hzが保証されている模様。
さすがだぜメディアOS。
>>57,58
そりゃその通りだけどさ、これってはっきり言って
まともなリアルタイムゲーム作るには致命的な問題だぜ。
今日ゲーセンで改めてマーベルvsカプコン2とか見て確信したよオイラは。
皆でゲイツに訴えるという手もある気がするんだが、その辺どうなんかな。
0063名無しさん@お腹いっぱい。
NGNG今のモニタがタコな気がしてきたんだが、どうよ?
リフレッシュレートレスなモニタとか作れないのか?
毎秒n回画面を上から下に電子ビームで走査して……って、
冷静に考えてみると、これで動画として見えてるらしいのが不思議だ。
0064名無しさん@お腹いっぱい。
NGNG方法を教えてください。(土下座)
006545
NGNGかたじけない。その通りだ。
嗚呼嗚呼嗚呼最小公倍数の求め方忘れてるなんて鬱だ死のう
0066名無しさん@お腹いっぱい。
NGNG本気で言ってんの?
0067Be名無しさん
NGNGChangeDisplaySettingsで目的の解像度に変更して画面を覆うサイズの
ウインドウを作れば可能です
上の方で使うなって言われてますが 解像度変更だけならOK
ただしこの場合は DirectX みたいにかってに元の解像度に戻してくれないので
プログラム終了時に同じくChangeDisplaySettingsでもとに戻してね
0068名無しさん@お腹いっぱい。
NGNGあ、「フルスクリーン」か。
解像度変更と勘違いした。土下座損。
0069名無しさん@お腹いっぱい。
NGNGちゃんとtimeGetTime()使って調整しているよね?
0070>69
NGNG0071名無しさん@お腹いっぱい。
NGNG0072名無しさん@お腹いっぱい。
NGNG0073名無しさん@お腹いっぱい。
NGNG0074名無しさん@お腹いっぱい。
NGNG・CRTを使う限りVSYNC以外のタイミングでの
flipは映像にうねりが生じる。
PCの場合はこのVSYNCの間隔がハードウェア、
解像度によりまちまち。逆に専用機は固定に
できる。
例えばVSYNC間隔を1/60sec固定にし、全ての
描画が1/60secに間に合うのであれば問題は
ないはず。が、実際問題それはありえない。
格闘ゲームの場合、描画対象がほとんど固定の
ため、fpsの低下は少ないがもっと一般化された
3D空間の描画にはシーンによりかなりのfpsの
変動が発生する。描画対象が少ないときは
100fps、多いときは20〜30fpsってことはよく
ある。
0075名無しさん@お腹いっぱい。
NGNGなのでPC環境ではdt間隔をVSYNCと別のタイマー
で用意してflipをVSYNCのタイミングで行うことが
多いはず。(もちろんVSYNCのタイミングを外して
行うことも可能)ただし、この場合人間が見て
不自然さがないかどうかってことが問題になるの
かも。(十分速いPCであればそう問題は無いはず)
あと、FPS系(1人称シューティング)のゲームでは
少しでもfpsをかせぐ方がよいので、画面がうねって
でもfpsを上げるセッティングにするのが普通。
0076名無しさん@お腹いっぱい。
NGNGChangeDisplaySettingsについては吾輩も分からんので誰か調べてちょ。他の周波数ならともかく、勝手に60Hzに設定して問題のある環境があるとは思えないんだが、なんせWindowsだからね。結構恐い。
0077名無しさん@お腹いっぱい。
NGNG困ったちゃんなのは、ビデオカードの性能を云々する以前の段階で映像品質を大幅に向上させる手段が存在するのに、それが思いっきり見過ごされてることでしょう。ゲームだけでなく、DVDのフルスクリーン再生なんかも、モニタと非同期やったら全然意味ないやんって感じなんだけれども。
0078名無しさん@お腹いっぱい。
NGNG同期映像見たことないんちゃうかって危惧はありますね。エミュレータの話でアレですが、NESticleを動かせる人は、Settings>Vsyncをチェックして、FrameskipをAUTOではなく1に設定してみて下され。それで完全な同期60fpsが体験できるはず。
とりあえず、ゲームプログラミングスレの幕開けにふさわしい話題ではあった。
0079名無しさん@お腹いっぱい。
NGNGだれもタイマー使うときにVSync無視するっていってねーじゃん ちゃんと読めよ
>78
>同期映像見たことないんちゃうかって危惧はありますね。エミュレータの話でアレですが、NESticleを動かせる人は、Settings>Vsyncをチェックして、FrameskipをAUTOではなく1に設定してみて下され。それで完全な同期60fpsが体験できるはず。
>とりあえず、ゲームプログラミングスレの幕開けにふさわしい話題ではあった。
おまえが一番わかっていない
0080名無しさん@お腹いっぱい。
NGNG0081名称未設定
NGNG>ビデオカードの割り込み
PROGRAMMER'S GUIDE PC&PS/2 VIDEO SYSTEMSによると、
PC/AT互換機の仕様としては必須ではないようです。
VSYNCの検出はできないとまずいみたいですが。
0082名無しさん@お腹いっぱい。
NGNGんで結局どうやって計るのですか?
0083>79
NGNG0084>82
NGNG数秒間Flipのループを回して実測するしかないんじゃないかな。
メーカーロゴでも表示してる間にやりますかね。
Win環境だと59Hzとか61Hzとかはないわけだから、
ある程度判定に遊びを持たせといて。
0085名無しさん@お腹いっぱい。
NGNG>Forced Refresh RateかDirectX診断ツール>DirectDrawのリフレッシュ・レート上書き
ちなみにそこの設定、レジストリの
HKEY_LOCAL_MACHINE\Software\Microsoft\DirectDraw\ForceRefreshRate
に保存されてるぞ。こんなこと書いたらまだ潔癖なPC主義者に怒られそうだが(w
いや、当然のことながらユーザーに無断で書き換えたりはしないがね。
008676>>79,83
NGNG・パフォーマンスカウンタ→マルチメディアタイマ
・ティアリング無視で→(削除)
>>85
なんだ、それなら60Hzにする方法あるんじゃん(もちジョークよ)。
008779
NGNGパフォーマンスカウンタは存在しますし使われていますので気にしないで
QueryPerformanceCounterとQueryPerformanceFrequencyのセットを使って
マルチメディアタイマよりも高精度の時間計測が可能です
悪いのはすべて私 私が馬鹿でした♥
みんなリフレッシュレートを60Hzに設定すればなにも問題はないんだよね
60Hz以外に設定してるユーザーなんて糞 無視無視 ゲーム遊ぶ資格なし
ユーザーの用意された環境なんて糞くらえだ
もしゲーム中にリフレッシュレートの変更なんかしやがったら
ハードディスククラッシュの刑に決定
CPUに俺のゲーム以外の無用な負荷かけるアプリはプロセスkillだ
みんなこれからは安心して60Hz固定でゲームつくろうぜ
0088名無しさん@お腹いっぱい。
NGNGなんのために金突っ込んでCPUとビデオしょっ中
アップグレードしてると思ってんのよ。
0089名無しさん@お腹いっぱい。
NGNGどんなFPSでもいいんだけど、
まず、デザイン段階から、とにかくFPSを決め打ちしなきゃ
ダメなのよ。
でもって、ソフトの内部FPSと、ディスプレイ側のFPSが
一致しなきゃダメなのよ。
まあ、80Hz決め打ち、なんて奇特なゲームメーカーが現れる
ことを祈ったら?
0090名無しさん@お腹いっぱい。
NGNG0091名無しさん@お腹いっぱい。
NGNGべつに内部の更新回数とディスプレイに表示する回数が一致しなくてもいい
内部で10回更新して1回表示でもかまわない
そのときそれが必要でありそう決めておけばね ゲームにもよるけど
0092名無しさん@お腹いっぱい。
NGNG何のためにあるのか、なんでこいつが事実上使用不能なのか
DirectX開発者チームに詰問してみたい気はする。
009392
NGNG本当は問題あるのは分かってるけどハードベンダに強制できない……
なんてことはないよなあ。MSの政治力を考えれば。
0094名称未設定
NGNGやはりガイジンはティアリングとかあまり気にしないんだろうな。
Macゲーム開発者はリフレッシュレートにはうるさいぞ。
OS X公開ベータではVSYNC割り込みがまともにかからないらしくて騒いでるし。
0095名無しさん@お腹いっぱい。
NGNG0096名称未設定
NGNG>95
ありますよ。
でもiMacのおかげで、いまいち使えなくなっちゃいましたけど。
iMac以外は、CRTに問題なければ640*480*60Hzに設定できるんですけど
iMacの640*480モードは117Hz固定なんですわ・・・・・。
0097名無しさん@お腹いっぱい。
NGNGほら。こうゆう事があるから、リフレッシュレートに頼れないのよ。
今後発売される新ハードでまともに動かないかもしれないゲームなんて
作りたくないでしょ?
0098名無しさん@お腹いっぱい。
NGNG>リフレッシュレートレスなモニタとか作れないのか?
液晶モニタ。
0099名無しさん@お腹いっぱい。
NGNG>まず、デザイン段階から、とにかくFPSを決め打ちしなきゃダメなのよ。
2D時代の話ね。
3Dゲーはマシンのスピードに合わせてfpsが変化できるような
アルゴリズムにしましょう。
0100名無しさん@お腹いっぱい。
NGNGそうそうPC98のノートとかで初めて知ったときは
「いや〜んVSyncウェイトがきいてなーい」とかで人前で恥かいちゃったよ おぢさんは
0101名無しさん@お腹いっぱい。
NGNG117/2=58.5なんで、それほど問題なかったりします。
ちょっと遅くなる程度。
厳しいゲーマーの方ならわかるかも。
Apple、というかジョブズはゲームなんてどうでもいいと考えてるんで
先の事を考えてもどうしょうもないです。
PCでの話に戻しましょう。
0102>97
NGNGこういう事があるから、じゃなくってさ(ほらって言われても(^^;)。
そういう事が起こらないように、ゲーム開発者がハードベンダに
モニタとの完全同期の重要性を訴えるべきなんでしょうが。
「正しいWindowsアプリ」というお題目で妥協してちゃ、
いつまで経ってもユーザーに最高レベルの娯楽を提供できないじゃない。
0103>99
NGNG>アルゴリズムにしましょう。
ひょっとして、同期映像ならそれができないとか思ってます?
マシンパワーが十分にあれば60fpsで完全同期の滑らかな映像、
処理が間に合わなければVSYNC同期のままで
フレーム落ちってこともできるんですよ。
0104名無しさん@お腹いっぱい。
NGNGネットゲーしかやらないから垂直同期逝ってよし。
同期映像はコンシューマ機で好きなだけ堪能してください。
0105名無しさん@偽山岡
NGNGそこにある環境のなかでうまいこと表現してみせるのもゲームプログラマ
の腕の見せ所なんではないですか?
それとも自分のプログラムしやすい環境でないとゲームつくれませんか?
高い学費払って入学した専門学校ではそういったこと教えてないんですか?
高い金払って購入したゲームプログラム入門にはかいてませんか?
たしかに最高の素材で料理するのがベストなんだけど
そればっかりやってちゃ料理する側の工夫が失われないか?
その工夫を研究するスレッドとしてのゲームプログラム相談室
じゃ駄目ですか?
0106名無しさん@お腹いっぱい。
NGNG0107名無しさん@お腹いっぱい。
NGNG>ひょっとして、同期映像ならそれができないとか思ってます?
>>99はそうは思ってないと思うけど。
0108名無しさん@お腹いっぱい。
NGNG0109108
NGNG0110名無しさん@お腹いっぱい。
NGNGあなたの言う事もわかるんだけど、
できるものをできない状態にしているメーカーにも非はあるぞ。
だいたいDirectXって、環境に依存せずにゲームが作れるように
してくれるものだったはずなのに、余計混乱を招いてるし。
0111名無しさん@お腹いっぱい。
NGNGだからってここでうだうだ言ったところで何が解決するわけでもなし・・・
>だいたいDirectXって、環境に依存せずにゲームが作れるように
>してくれるものだったはずなのに、余計混乱を招いてるし。
そこまでMSを盲信できるあなたがうらやましい
0112名無しさん@お腹いっぱい。
NGNGだから、ハードではなくDirectXの問題なんだって。
Hardware T&Lやらvertex programやら
新しい仕様を続々と盛り込みまくりながら、
最も重要なところが何年も放置されたまま。
これって、"模範的な"Windowsプログラマが、文句も言わず
バカみたいに大人しく従ってるからじゃないかと思うんだが。
そりゃ今の環境では妥協策を採らざるを得ないのは事実だし
俺も仕事ではそうやってるけど、それだけじゃ
それこそ永久に何も進展しないじゃんか。
FC、PCE、MD、SFC、PS、SS、64、PS2、DC、アーケード基板、
MSX、X68000、Windows、この中で仲間ハズレはどれよ一体。
とりあえず"模範的な"Windowsプログラマに対して俺が思うのは、
Windowsローカルの不完全なやり方を、ゲームプログラミングの
王道でもあるかのように提示するのはやめて欲しい。
良かれ悪しかれDirectXは今のゲームプログラマの入り口なわけで
そこで1フレームの価値を軽視する連中が量産されている現状には
非常に危惧を覚える。ゲーマーとしても、開発する側としても。
この話題は確かに終了させるべきだと思うのでsage。
0113名無しさん@お腹いっぱい。
NGNG「1フレームの価値」の重要性って何?
これが伝わってこないのでどうでもいいことにこだわって
一生懸命主張してるように見える。
最後にこれだけ答えてちょうだい。
0114名無しさん@お腹いっぱい。
NGNGゲーム専用機の能力を期待しているからではないのかな?
逆に Windows(というか汎用 OS)の上で動かすべきアーキテクチャ
機能、アイデアを持ったゲームを考えるべきでは?
異なる物を同じ土俵で考えている姿のほうがみっともない。
0115名無しさん@お腹いっぱい。
NGNG簡単に実験出来るので試して下さい。
単に画面上に小領域を乱数で指定した回数(3〜15)だけ点滅させます。
その後回数を確認し、正解・間違いを内部で判定します。
この点滅周期も測定毎に変更します。
当然速くなると回数を数え間違います。50%を敷居値としましょう
色によっても違いますが、
点滅は認識してるけど、数えられないという領域があります。
人によってはわずか1秒に3回程度の点滅速度で数えられなくなります
音なら1秒10回でも数えられる人なのにですよ
0116名無しさん@お腹いっぱい。
NGNG別に盲信なんてしてねえよ。
なんであの書き込みから盲信と決めつけられるのかなあ。
理解に苦しむよ。
確かにここでうだうだ言ってても解決しないかもしれん。
でも発言を目にしてくれた人の中には、おおそうだったのかと
考えてくれる人がいるかもしれない。
俺の言う事が無駄だと思うなら、あなたのレスも無駄だから
せめて黙っててくれないかな? よろしくお願いします。
0117名無しさん@お腹いっぱい。
NGNG意味がわかんないの。説明して欲しいの。
数当てゲームみたいな感じ?
0118名称未設定
NGNG前向きな話をしようぜ。
煽りたいだけなら去れ。
0119魁!名無しさん
NGNG「人間の目なんて細かいことは分からないんだから、
fpsの多少のずれとかリフレッシュ・レートの違いとかには
そんなにこだわる必要なんてないんじゃない」ってことでは?
0120119
NGNGええい、好きなだけ煽ってくれ鬱だ氏脳…
0121計測君
NGNG固定できる・できないという情報を集約して、ビデオカードメーカーや
Microsoftに連絡するというのはどうだろうか。
我々技術者が動かないと、メーカーは動かない気がすんのよ。
0122名無しさん@お腹いっぱい。
NGNGゲームはありませんか?
リフレッシュレートの問題を巧みに解決していると
思われるソフトです。
0123名無しさん@お腹いっぱい。
NGNGどうなるもんなんでしょうか
って自分で調べろよ>おれ
0124名無しさん@お腹いっぱい。
NGNGリフレッシュレートの設定項目があるのってDirectXだけじゃない?
OpenGLにもSDLにもなかった気がするけど
0125名無しさん@お腹いっぱい。
NGNG早い話、パクりたいのねん。
0126名無しさん@お腹いっぱい。
NGNGconst_cast<unsigned char*>(reinterpret_cast<const unsigned char*>(static_cast<LPCTSTR>(str)))
みたいになってうざいです。
もっと、簡潔に記述する方法はないですか?
#それにしても、なんでODBC関連の関数は入力引数でも非constなんだ‥‥‥
0127名称未設定
NGNGOpenGL使って2Dゲーム作るのであれば
同じ問題はついてまわる。
0128>126
NGNGhoge(str)
defineがどうしてもイヤならインライン関数ででもどうぞ‥
つーか、いちいちそのていどでウザがんなさんな
0129126
NGNGマクロにせよ、インラインにせよ、この程度のことで三回もキャストしていることがうざいので。
0130名無しさん@お腹いっぱい。
NGNGタイプ量が多いわけでもあるまいに
気分やさんなんだからぁ、もぅ!
0131126
NGNGう〜む、ギコスレに書いたつもりだったんだがな。
鬱山車脳。
0132名無しさん@お腹いっぱい。
NGNGPCゲーム系の職業プログラマもいるんだろうな。
自分の理解できるやり方に固執し、
低脳なプログラミングしかできないのを環境が悪いせいにする。
国産PCゲームが腐るのは当然だな。
0133名無しさん@お腹いっぱい。
NGNGやめてよね。
0134名無しさん@お腹いっぱい。
NGNG0135126
NGNGだから、ODBC系の関数が文字列の入力引数にunsigned char*を要求してるんだって。
unsignedなのはまあいいとして、なんで非constなんだよ‥‥‥
#スレ違いなんで、下げます。
#ギコスレで仕切り直そうかな‥‥‥
0136名称未設定
NGNG逝ってよし
0137名無しさん@お腹いっぱい。
NGNG0138126
NGNGレスくれるのは嬉しいんですが、スレ違いなので下げてください。
>>137
GetBufferは嫌いだ。情報隠蔽の利点を打ち消してる。
それに、あくまで入力パラメータとして使いたいので、出力を前提に
した関数の使用は避けたいです。
0139名無しさん@お腹いっぱい。
NGNGLPDIRECTDRAW7 pDDraw;
LPDIRECTDRAWSURFACE7 pPrim;
LPDIRECTDRAWSURFACE7 pBack;
HRESULT hr;
DDSURFACEDESC2 ddsd;
DDSCAPS2 ddscaps;
hr = DirectDrawCreateEx( NULL,(VOID**) &pDDraw, IID_IDirectDraw7, NULL );
if(hr == DD_OK)
{
hr = pDDraw->SetCooperativeLevel(Handle,
DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
if(hr == DD_OK)
{
hr = pDDraw->SetDisplayMode(640, 480, 8,0,0);
if(hr == DD_OK)
{
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount = 1;
hr = pDDraw->CreateSurface(&ddsd, &pPrim, NULL);
if(hr == DD_OK)
{
ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
hr = pPrim->GetAttachedSurface(&ddscaps,&pBack);
if(hr == DD_OK)
{
return;
}
}
}
}
}
}
0140名無しさん@お腹いっぱい。
NGNG環境は?
ライブラリは追加した?
0141名無しさん@お腹いっぱい。
NGNG0142名称未設定
NGNGそれでいいと思う。
VSYNCの件については、各自宿題という事にしましょう。
MS関係者をご存知の方は、怒ってる連中いるぞとお伝えください。
そういえばこの件、Bioの人達はどう思ってんのかな???
0143名無しさん@お腹いっぱい。
NGNG私は、ちょっと恥ずかしい数字だったもので・・・
0144>142
NGNG0145名称未設定
NGNGいちいちうるせえって。
死ね。
0146名称未設定
NGNGキャラのタスクをバカスカ生成して
そのうちいくつかを消したい場合、どうするのが一番効率いいですかね?
0147↑
NGNGなにがききたいのかわからん
0148名称未設定
NGNG敵の弾だけ消すような処理がしたいという事です。
0149名無しさん@お腹いっぱい。
NGNG0150奈津美
NGNG(趣味で、クイズゲームを作り、CDかFDで友人に配りたい)
たとえば制限時間付きのクイズ3択のようなものを作り、正解率30%でまあまあ60%で普通90%以上でよく出来ましたなどと評価するゲームが、ONラインでよく見かけます。
それを、自作し、OFFラインで遊べるソフトを作ってみたいのですが、出来ればCDで焼いて、友人に配りたいのですが、初心者には無理でしょうか?
(要するにCGIやJAVAではないやつ)
普通のCDのゲームのように、Winならすぐ動くようなものは、やはり、マクロですか?
やはりゲームなんかを作るには開発ツールとかいるのでしょうか?
あくまでも趣味の範囲で作るくらいの簡単なものでいいのですがやり方が解かりません、どなたかヒントだけでも・・・
最初と最後に画像は入れたいのですが、後は文字だけです。
0151名無しさん@お腹いっぱい。
NGNGDOS時代からの言葉だろう
でテーブルで管理してると思うんだけど、
弾専用のテーブル作って、一括消去する
専用テーブルが駄目ならIDふって判定するしかないだろ
または逆に、全弾消去ってなフラグを作って
タスク側から判定する。毎ループ判定が入るから頭悪い
0152名無しさん@お腹いっぱい。
NGNG0153魁!名無しさん
NGNG例えば、キャラ生成、会話イベント発生、背景の演出開始など、
現れては消えて行く処理を「タスク生成」のよーな概念でくくることはある。
プログラマの趣味次第で、C++のTaskクラスの派生として作ったりとかな。
>148
普通のゲームは、描画関係の処理が全体の90%を占める。
キャラ生成などの内部処理は君にとって制作しやすい(効率よい)
方法を優先すべきだ。
0154名無しさん@お腹いっぱい。
NGNGマクロとか言ってるようなのでHTML+Appletくらいでいいんでないかな
Flashとかそっちの方はよくわからん
0155名無しさん@お腹いっぱい。
NGNGもしJAVAで何か作ったことがあるんでしたら
そのままJAVAで作成してもいいとおもいます もちろんオフラインでも動きます
趣味の範囲でちょこっと作るツールとしてけっこう有名なので
「Hot Soup Processor」というのがあるそうです
わたしはちょっと使ったことがないので詳しく説明できませんから
ここの公式ページで一度見てみたらどうでしょう
http://hp.vector.co.jp/authors/VA003112/hsp2.html
0156松屋のセット440円は無敵
NGNG敵弾を全部消すなら、敵弾のぶらさがってるノードに削除メッセージを送ります。
0157名無しさん@お腹いっぱい。
NGNG0158名無しさん@お腹いっぱい。
NGNGありがとうございます。その頭の悪い方法で実装してました。
自律して動くのを優先させたため、外部からは削除しにくくなってるんです。
テーブルは優先順位はありますが、敵と弾は共用しています。
0159150
NGNG有難う参考にします。
0160名無しさん@お腹いっぱい。
NGNGもう.. 終わっているよ。
0161松屋のセット440円は無敵
NGNG0162名無しさん@お腹いっぱい。
NGNG0163名無しさん@お腹いっぱい。
NGNG例えばキャラを1個出す時に、空いてるワークエリアを探したりしてねえだろうな?
0164松屋のセット440円は無敵
NGNGフラグメンテーション起こんないし、ゲーム向き。ムキムキッ。
ところで、セット440円まだやってたぞ。
終わったのはキムチのほうじゃない? うちの近所だけ?
0165名無しさん@お腹いっぱい。
NGNGいと思うけど…
ま、配列の要素でリスト作って、使わなくなったエリアをフリーリスト
に繋ぎ変えておくらいは昔やったけど、それでも10MHzのV30
くらいだと、たいして変らなかったなぁ。
0166名無しさん@お腹いっぱい。
NGNGなんかつまらんなあ。
0167名無しさん@お腹いっぱい。
NGNG>例えばキャラを1個出す時に、空いてるワークエリアを探したりしてねえだろうな?
探してまーす。
でも100程度の配列のサーチなんてギャバンの変身時間より短いって。
そうゆう事を気にする時代じゃないのよぉ。
0168名無しさん@お腹いっぱい。
NGNGて言うか野菜も食え
0169名無しさん@お腹いっぱい。
NGNG>ギャバンの変身時間より短いって
いいなあ、無駄な最適化している奴がいたら言ってやろう。
0170名無しさん@お腹いっぱい。
NGNG86系相当の3MHzとか、Z80と6502の合いの子みたいのとか。
不確定要素はなるべく排除したいので、僕はスタック積んでます。
0171名無しさん@お腹いっぱい。
NGNGオイオイ、ギャバンの蒸着くらい時間がかかるんだと、重いんじゃないのか。
せめてシャリバンの赤射蒸着の時間ぐらいには収めないとな。
0172名無しさん@お腹いっぱい。
NGNG具体的にどのくらいの長さだっけ?>ギャバン、シャリバン
0173名無しさん@お腹いっぱい。
NGNGオイオイ、勝手に話を変えるなよ。
「ギャバンの変身時間より短い」であって
「ギャバンの蒸着くらい時間がかかる」じゃないぞ。
だから既にシャリバン並かも知れない。
って言うか既にストップウオッチじゃ無理。
0174171
NGNGおっと、こりゃ申し訳ねえ。
比較対象が0.05秒では値がデカすぎるって意味で取ってくれれば嬉しいが。
60fpsだとすると1フレームは16.6ミリ秒なんで、1ミリ秒単位でも結構キビしい。
最初からストップウォッチとかの次元じゃないんだってば。
ちなみに蒸着が0.05秒で、赤射は1ミリ秒な。
0175でびふじん
NGNG更に関数のラッピングもしてくださらないかしら。
でないと、ワタクシにはDirect3Dは難しいんですの。
報酬はワイドショーで話題にする、という事で
ひとつよろしくお願いしますわ。
日曜こぃづかさんたら、要望が多いにも関わらず
取り組もうとなさらないんですのよ。幻滅してしまいますわ。
0176でびふじん
NGNG更に関数のラッピングもしてくださらないかしら。
でないと、ワタクシにはDirect3Dは難しいんですの。
報酬はワイドショーで話題にする、という事で
ひとつよろしくお願いしますわ。
日曜こぃづかさんたら、要望が多いにも関わらず
取り組もうとなさらないんですのよ。幻滅してしまいますわ。
0177名無しさん@お腹いっぱい。
NGNGそれとBio100%で言ったほうが早いんじゃないのかそれ
0178名無しさん@お腹いっぱい。
NGNG>ちなみに蒸着が0.05秒で、赤射は1ミリ秒な。
サンクス。また一つ賢くなった。
0179173
NGNGだからあわてなさんなって
60fpsで処理する必要はないかもしれんだろ。
個人的には15fpsで十分だと思いますわよ。
それ以上は「スゴイと言われる」だけ。
0180名無しさん@お腹いっぱい。
NGNGそれはゲーム次第だけどね...
2Dアクション物なら最低25fpsは欲しいね、やっぱり。
0181名無しさん@お腹いっぱい。
NGNGマシン後秘伝の書<懐かしいな、その本。まだあるよ。
0182>180
NGNG割とうまくアニメーションでき、
しかも皆が見慣れてる30fpsより滑らかなので
たぶん錯覚でそれ以上に滑らかに見えるらしい数字だ。
0184名無しさん@お腹いっぱい。
NGNG昔のBASICのゲーム並みだろう。
0185>176
NGNG0186名無しさん@お腹いっぱい。
NGNG世の中があなたみたいな人ばっかだと、オレたち少しは楽になるんだけど。
ひょっとしてアートディンクとかフロムの人ですカ?
0187179
NGNG0188名無しさん@お腹いっぱい。
NGNGアートディンクはともかく、フロムはわりとがんばってねーか?
KF系は首ひねっちまうけど、
AC系はPSもPS2でもよくできてると思うが。
まあ、スゴいってほどじゃないけど。
0189名無しさん@お腹いっぱい。
NGNG0190名無しさん@お腹いっぱい。
NGNG具体的にはどんな設計すりゃ良いでしょうねぇ。
>3Dゲーはマシンのスピードに合わせてfpsが変化できるようなアルゴリズムにしましょう。
いや、あおりじゃなくて、今実際悩んでいるもんで。
とりあえず前回のフレームにどんだけ時間かかったかを、計測しておいて、前進スピードが
60fpsのとき1.0f/flameだとしたら、Forward(1.0f*(60.0/delta))(Forwardは前進する処理の関数。
deltaはその瞬間のfps)ってなことをあらゆるところでやってやれば良いんだけど、それってめちゃめん
どいじゃないですか。うまい方法無いかなぁ、と。
0191名無しさん@お腹いっぱい。
NGNG打つ出し能。
0192名無しさん@お腹いっぱい。
NGNG60はきついけど30だとカクカクでいやーんな時に良いね。
0193名無しさん@お腹いっぱい。
NGNGコマとばしちゃんとやってれば。
実験した。
50切ると分かるようになってくる。
それなのに、ティアリングがどうとか言ってるやつ……
ぶつぶつ。
0194名無しさん@お腹いっぱい。
NGNG0195>193
NGNGそれだとたしかに大差ないです。同期見ないなら50や40あたりで十分かも。
逆に、非同期の60と同期の60の違いはシューターなら誰でも分かるでしょ。
0196名無しさん@お腹いっぱい。
NGNGですが60で作ったものを120や75で見ても違和感ありますか?
もちろんゲームの更新頻度は調整してですよ
>>193
ティアリングの事を言っているんではないと思いますよ
0197名無しさん@お腹いっぱい。
NGNGディスプレイは下のように書き換えてるだろ?
*** = 画面描画中
--- = スキャンポジション移動中(っていうのか?)
--------***--------***--------***----->
っで *** の現れる周期を VSYNC ってんだろ?
単純にタイマでやってると *** の時に書き換えちゃわないか?ってのが
いままでの VSYNC 争いなんじゃないの?
俺は素人なんでティアリングって言葉はしらんかったけど.
だからフレームレート云々はちょっとずれてんだよ.
たとえ 120fps 叩き出そうとも *** の間に画面書き換えちゃったらおしめぇなんだよ.
逆に 30fps でも --- の間に書き換えられれば綺麗な画面なんだってば.
じゃあ確実に --- の間に書き換えるためには?ときた時に一番確実なのは
昔からある VSYNC インタラプトじゃん,なんで使えるようになってね〜んだゴルァ.
ってのを 112 はずっといってんじゃないの?
ど〜よ? > 112
0198名無しさん@お腹いっぱい。
NGNGゴルァって言うな
それとディスプレイは ---*---*---*---*--->
- = 走査
* = ブランク
なんじゃないの? 違った?
モニタのトレースの終わりにVSyncと呼ばれているものが発生するから
ブランクの間に映像を更新すればティアリングは発生しないんじゃないの
通常では別に描画領域を用意して表示領域のトレース中に描画しておいて
VSyncが来てからブランクの間に表示領域と描画領域を切り替えるんでしょ
やっぱりリフレッシュレートとティアリングは関係ないよ
0199198
NGNGそれとVSyncは使えるよ
0200名無しさん@お腹いっぱい。
NGNGウィンドウモードだと大変。VSync 取れなくもないけど、
うまくいかないこと多い(VSyncきてからBltが間に合う保証はない)
オーバレイサーフェイスでflipできるやつもあるけど、
こんどは動作するハードが限られる(ColorKey 付き Overlay楽しい:)
0201名無しさん@お腹いっぱい。
NGNG0202名無しさん@お腹いっぱい。
NGNG画面の真ん中あたりまで走査した時にフリップしたらどうなる?
おまけ:
PC/AT互換機というか、VGA互換カードの規約上、VSync(というかVBLANK)の検出は必須だけど、
VBLANK割り込みは必須ではありません。
いろんなカードが出てた頃、DOSで試したけどできるやつとできないやつとあったよ。
今はどうか知らん。
検出できれば問題ないから、間違いでもない限りこの件で突っ込まないでね。
0203名無しさん@お腹いっぱい。
NGNG0204名無しさん@おっぱい。
NGNG0205名無番長
NGNG次のVSyncが来るまでウエイトがかかります。
0206名無しさん@おっぱい。
NGNGP2-400MHz+Win98で60fpsOverがでるのに、
Duron-600MHz+Win2000だと50-54fpsくらいしかでません。
いろんなマシンで調べてみましたがWin2000のPCは全体的に遅いです。
ボトルネックになっているところはDIBからBackサーフェスにBitBltしている部分で、
Win98だと3msくらいで済みますが、
Win2000だと10-20msくらいかかってしまいます。
Win2000でもWin98と同程度のパフォーマンスを出す方法はありませんか?
PixelFormat毎にアセンブラで書くしかないのかな・・・
0207名無番長
NGNG微妙に遅いよね、Win2000だと。あとWAVサウンドの終わりにプツって
音がするし、MIDIを開くのが異様に遅いし、問題多すぎ。
Win95シリーズはWinMEで終わりだから、今後の事を考えると
2000用に作りたいんだけどさ、どうにかならないもんだろうか。
市販ゲームも2000に対応してないのがほとんどだけど、このままじゃ
いけないと思うわけよ。どうよ?
0208名無しさん@お腹いっぱい。
NGNGどうもシステム・ビデオメモリ間の転送が遅いらしいって話があったよ。
アセンブラでもきびしいかも。
0209名無しさん@お腹いっぱい。
NGNG0210名無しさん@お腹いっぱい。
NGNG対応ゲームが増えるといいんだけど
0211197
NGNGあ,そっちの絵の方があってる.
その VSync は割り込みじゃなくってポーリングで検出できるって話?
なら同期描画はできるんだね.
0212名無しさん@お腹いっぱい。
NGNG対応させるのは誰の仕事になるんだろう・・・。
1:DirectX8を使えば、Windows9x/Meでも2000でも動く!
2:あいかわらず環境の違いを、ゲーム開発者が吸収せねばならない。
さあどっち!
0213198>>197
NGNGポーリングして信号検出をしています
検出してからページを切り替えるまで多少タイムラグはあるでしょうが
ほとんどの場合ブランク以内におさまると思いますし
同期した映像更新は可能だと私は思いますよ
0215名無しさん@お腹いっぱい。
NGNG別にアセンブラはいらないけど、ピクセルモードは一致させないと遅くなるよ
0216名無しさん@お腹いっぱい。
NGNG当然開発者の仕事でしょう。
DirectX以外にも、APIで95系とNT系で動作が違うものもあるし。
開発はNT系でやってテストは95系も含む、ってのが基本だな。
0217212
NGNGやはりそうなっちゃいますかね。
既存のものはあきらめるとしても、8で両対応にするために
余計な仕事が増えてない事を祈るのみです。
0218名無しさん@お腹いっぱい。
NGNG0219名無しさん@お腹いっぱい
NGNGDX8が動かないなら2000買ってやらんぞ!
0220名無しさん@お腹いっぱい。
NGNGちょっと質問なんだけど、加算半透明か、もしくは加重平均の半透明
を使って、コーヒーゼリーって表現できないですかね?
宝石でいうと黒曜石みたいなの。コーヒーゼリーの方がわかりやすいか。
あと、よくアニメである黒い光とかってどうやって表現したらよいでしょうか?
白い光は加算半透明でテクスチャ貼っつけるだけなんですが・・・。
0221名無しさん@お腹いっぱい。
NGNGオイオイ、黒い光ってどんなんだよ。
光を反射もしくは放射してないから黒いんじゃねーか。
ようするに減算混合をやりたいってことか?
http://www.platz.or.jp/~moal/game.html
に書いてあったような。
0222名無しさん@お腹いっぱい。
NGNG>オイオイ、黒い光ってどんなんだよ。
>光を反射もしくは放射してないから黒いんじゃねーか。
その表現がわからないから、コーヒーゼリーとか
なめたこといってたんですが、紹介してくれたところに書いてありました。
ありがとうございます。減算かなるほど。
0223名無しさん@お腹いっぱい。
NGNGEasyLinkLibraryは初心者にもオススメですか?
0224ポエマー
NGNG黒胡麻の油で灯したランプ。
梟が昼間に掲げて飛ぶらしい。
0225厨房
NGNG42.195kmフルマラソンのゲームをつくるとします。(シミュレートするだけでもOK)
選手の位置ってどう表すのがベストなんでしょうか?
位置というのは画面内で選手が表示される位置ではなく、コース全体から見た選手の位置です。
横5列までとか決めておき、その選手がどの列にいるかの情報と、あとは今いる場所
(走った距離)があればOKなんでしょうか?
0226名無しさん@お腹いっぱい。
NGNGどんなゲームだ?遊びかたが想像できない。さすが厨房。
0227>225
NGNG本物知らなかったら、シミュレートなんて出来ないよ。
0228225
NGNGけどシミュレートってのも捨ててください(笑 )
例えばレースゲームや競馬ゲームなんかでは、走っているキャラの位置情報
をそれぞれにどうやって持たせているんでしょうか?
0229名無しさん@お腹いっぱい。
NGNG気を悪くするかもしれないけど、もうちょっと簡単なゲームを
作ってみるとかして、経験積んでからでないと
解答しても理解できないと思う。
0230225
NGNGフルマラソンだと42.195*1000メートルなので、けっこうデカい数値に
なりますよね。こういうもんなんでしょうか。
でもきっと229がおっしゃってるように、厨房にはわからない別の方法で
やってるんでしょうね・・・
0231229
NGNG分割して管理するとか、そういう発想は出ませんか?
0232>228
NGNG「ベスト」なのかなんて決まりませんよ。
何か勘違いなされているのではないでしょうか?
0233(*
NGNG「遊び方」ってルールのこと?関係ないんじゃないの?
そういう意図での質問ではないみたいだし。
231の答えで充分だと思いますが。
0234>233
NGNGしかし遊び方というのは、演出であるとか
なにを楽しむのかということまで含むので
それによって何がベストなのかは変わってあたりまえ
0235名無しさん@お腹いっぱい。
NGNGランナーの位置はブロック番号とブロックの始点からの道のりの距離、道路の
端からの距離で管理するな。
0236名無しさん@お腹いっぱい。
NGNG練習もかねてまずAT互換機のDOSに移植してみたいと思います。
Winでできればいいんですが覚えることが多くいきなりできる自信がないので順を追ってやろうと思ってます。
それで、AT互換機の割り込みやポート等
ハードウェアについて参考になりそうな書籍やWebサイトをご存知なら教えていただけなでしょうか?
0237236
NGNG0238名無しさん@お腹いっぱい。
NGNG最終的にWindowsでやりたいなら、AT機のDOSの知識なんて
何の役にも立たないのでWindowsで勉強するのが良いのでは?
0239238
NGNG言えないが、98とAT機のDOSプログラムの違いなんて、いくつか
のI/Oポートの違いと画面周りだろう(音に関しては無視した
くなるくらい種類が多い)。
I/OポートはWindowsのシステムのプロパティ見れば判る。
画面周りはVGA BIOSかVESA BIOS EXTENSION(VBE)辺りをキーに
検索すれば何かヒットするかも。
Allegroだったかな?ゲーム作成のためのライブラリがあるので
それを利用するのも良い。
0240名無しさん@お腹いっぱい。
NGNG98のI/Oポートは1バイト飛ばしでアクセスする必要があったりして
結構めんどうだよ。
画面もVGA BIOSなんか無い。
#AT互換機もどきの98を除く
0241名無しさん@お腹いっぱい。
NGNGああ、昔やったなあ。Windows普及で無意味になったけど。
音以外は簡単に移植できる。BEEPだけなら別。
GRCG/EGCと、VGAのGCの使い方は違うので、描画まわりでちょっと悩むかもしれません。
確かGCには4プレーン同時読込み(逆だったか?)がないんで、
そこを直すくらいですけど。
うろ覚えの俺の話を聞くよりは、ここにそのものがありますんで
参考にされては? PC-98x1で開発されてるなら、これでじゅうぶんでしょう。
http://www.yo.rim.or.jp/~sawara/stg/index.html
0242241
NGNG●「THE Programmer's PC SOURCEBOOK」トム・ホーガン著 SE編集部訳編
ISBN4-915673-63-4 5200円 翔泳社
アスキーから出ていたPC-9800テクニカルデータブックのような本。
絶版のような気がする。
●「PC&PS/2 VIDEO SYSTEMSプログラマーズガイド」リチャード・ウイルトン著
SE編集部訳編 ISBN4-915673-49-9 6000円 翔泳社
MDA/CGAからVGAまでのビデオカードの扱い方や、ビデオBIOSの使い方、
基礎的なグラフィックのアルゴリズムまでカバーしている。
こっちも絶版かな?
サウンドについても書籍がありましたが、個人では買いませんでした。
書名とかも忘れてます。買っておけばよかったなー。
0243VBプログラマ(三級)
NGNGDirectXオブジェクトはオブジェクトを作成したスレッド以外の
スレッドから参照できるのでしょうか?
ちなみに、VC6を使用しています。
0244名無しさん@お腹いっぱい。
NGNG素直にDirectX使ったほうがいいと思うけど
0245名無しさん@お腹いっぱい。
NGNG0246名無しさん@お腹いっぱい。
NGNGVGAはニゴロだよ。16色はEGA。
0247名無しさん@お腹いっぱい。
NGNG236は読みましたか?
>246
EGAのは640*350*16色。
640*480*16色モードは、VGAにしかありません。
PC-9801のゲームを移植するならこのモードを使うしかない。
VGAには320*200*256色モードもあるけどね。
0248名無しさん@お腹いっぱい。
NGNGMCIで演奏させてるのですが、MIDIをファイルとしてではなく、
リソースとして持たせて演奏させる方法はないでしょうか?
ネット上はそれなりに検索してみたのですが、見つかりませんでした。
ファイルがたくさん散らかるのは嫌なので、できればMIDIもまとめてしまいたいのです。
0249名無しさん@お腹いっぱい。
NGNG持てば?
0250名無しさん@お腹いっぱい。
NGNG邪道ですが・・・
リソースとして取りこんだものを必要なときのみHDにコピーし演奏。
不用になったら削除。
0251248
NGNGありがとうございます。
それも考えたんですが、まともな方法があるなら知りたいと思いまして。
やはりMIDIはファイルで置いておくしかないんでしょうか。
0252名無しさん@お腹いっぱい。
NGNGほう、んで、そのプログラムは途中でPCをリセットするたび
MIDIファイルを残してくれると・・・
0253236
NGNGWin 上でやったほうがよいというのは確かにもっともだと思います。
興味という点でもDOSでやってみたくもありますが
もう一度考えてどうするか決めようと思います。
PC98と違うグラフィックチップでの描画動作がネックみたいです。
そのチップ名で検索してみます。
>>241
ええ、GDと処理が全然違うそうですね。
教えていただいたサイトではキャラの描画がどうも1ドットごとのようですね。
当時は話にならないくらい遅いから直接メモリに書込んでいたのにうーん、今のCPUなら確かに楽勝か。
これも参考にさせていただきます。
>>242
あ、テクニカルデータブックを98の参考にしてました。
その本がちょうどよさそうですね。
ありがとうございます。本屋と図書館あさってみるとします。
0254名無しさん@お腹いっぱい。
NGNGこれにきっちり対応してるソフトって、あんまりなさそうだが…
0255名無しさん@お腹いっぱい。
NGNGわかる奴は消すし。
注意書きにこういう形式のファイルが残るかもって書いておけばいいんじゃないかね。
0256名無しさん@お腹いっぱい。
NGNG限りリソースから直接扱うのは無理でしょ。
DirectXのスレッドなんで、DirectMusic使いなさい、と言っておこう。
0257名無しさん@お腹いっぱい。
NGNG>255
かなり強烈な理論だと思う。
ちなみに何MBまでなら許せる範囲?
0258名無しさん@お腹いっぱい。
NGNG途中でリセットって、そんなことを日常でやってたらどんどんファイルが壊れていくぞ
そんなことを考慮する必要性無し
0259名無しさん@お腹いっぱい。
NGNGしかし、世の中には限度をしらん連中というものがいるのだよ。
あるエロゲで圧縮した画像ファイルを1度Bmpファイルに直して
ロードするというなんとも奇妙な奴がいたのだよ、そんでそのソフトに
バグがあって決まって同じようなところで止まるのだね。
そのたびに始末されてないBmpファイルが溜まってって100MBに
なってたよ。
0260名無しさん@お腹いっぱい。
NGNG何てソフト? 同人?
そんなソフトは名前公開しちゃえ。
0261VCのオプティマイズは
NGNGDEBUG...30FPS
RELEASE...45FPS
こんなに変わるもんか・・・俺のコードがへぼいんかなぁ・・・
0262名無しさん@お腹いっぱい。
NGNGどちらかというと、限度を知らんのは作った奴だと思う…
0263( ´∀`)さん
NGNGデバッグコード(シンボルや置き換え)が無い分キャッシュの効率が上がるから
コードのヘボさ以外にも要素はあるよね。
アプリでは最適化OFFが鉄則だけど...
0264名無しさん@お腹いっぱい。
NGNG>アプリでは最適化OFFが鉄則だけど...
ローカルルールを鉄則にするな
0265名無しさん@お腹いっぱい。
NGNG0266名無しさん@お腹いっぱい。
NGNGFPS可変式でプログラムしてるの?
3Dゲーかな。
0267名無しさん@お腹いっぱい。
NGNG0268名無し!!!
NGNGMFC使うともっと変わるよ。あと、上位版の最適化
オプションもかなり効く。って、みんな使っているのは
上位版?
0269名無しさん@お腹いっぱい。
NGNG(゚д゚)ハァ?
0270>>268
NGNGProfessional Edition(通常版) と
Enterprise Edition(上位版) の
コンパイラに差があるの?俺知らなかったんだけど
Standard Edition(学習教材)の
最適化機能が省かれてるという話なら
それは全く別の問題だからパスな
0271名無しさん@お腹いっぱい。
NGNG速度・消費メモリ・ヒープの断片化その他で
問題になることがありましたら教えてください。
0272名無しさん@お腹いっぱい。
NGNG不用意に使った場合のコードサイズが最大の問題
0273名無しのエリー
NGNGやった場合とやらない場合ってどれくらい違うものなの?
0274VC6.0Pro>273
NGNGint i;
for(i=0;;i++){
dst[i] = src[i];
if(dst[i]=='\0') break;
}
}
最適化有り
?strcpy@@YAXPADPBD@Z PROC NEAR ; strcpy, COMDAT
; File C:\usr\vc\sample\strcpy\strcpy.cpp
; Line 5
mov edx, DWORD PTR _src$[esp-4]
mov eax, DWORD PTR _dst$[esp-4]
mov cl, BYTE PTR [edx]
; Line 6
test cl, cl
mov BYTE PTR [eax], cl
je SHORT $L280
sub edx, eax
$L270:
; Line 5
mov cl, BYTE PTR [edx+eax+1]
inc eax
; Line 6
test cl, cl
mov BYTE PTR [eax], cl
jne SHORT $L270
$L280:
; Line 9
ret 0
?strcpy@@YAXPADPBD@Z ENDP ; strcpy
最適化無し
?strcpy@@YAXPADPBD@Z PROC NEAR ; strcpy, COMDAT
; File c:\usr\vc\sample\strcpy\strcpy.cpp
; Line 2
push ebp
mov ebp, esp
sub esp, 68 ; 00000044H
push ebx
push esi
push edi
lea edi, DWORD PTR [ebp-68]
mov ecx, 17 ; 00000011H
mov eax, -858993460 ; ccccccccH
rep stosd
; Line 4
mov DWORD PTR _i$[ebp], 0
jmp SHORT $L270
$L271:
mov eax, DWORD PTR _i$[ebp]
add eax, 1
mov DWORD PTR _i$[ebp], eax
$L270:
; Line 5
mov ecx, DWORD PTR _dst$[ebp]
add ecx, DWORD PTR _i$[ebp]
mov edx, DWORD PTR _src$[ebp]
add edx, DWORD PTR _i$[ebp]
mov al, BYTE PTR [edx]
mov BYTE PTR [ecx], al
; Line 6
mov ecx, DWORD PTR _dst$[ebp]
add ecx, DWORD PTR _i$[ebp]
movsx edx, BYTE PTR [ecx]
test edx, edx
jne SHORT $L273
; Line 7
jmp SHORT $L272
$L273:
; Line 8
jmp SHORT $L271
$L272:
; Line 9
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0
?strcpy@@YAXPADPBD@Z ENDP ; strcpy
0275NANASHI
NGNGMFCってどのへんに使うの?
使ったこと無いからわからん・・・
>>271
自分はSTL使いまくりです。
一番良いなと思う部分は安全性ですかね。
ツールとか作る時はifstreamやsstream等のクラスも便利です。
問題点は>>272さんと同じ。テンプレートだから。
0276名無しさん@お腹いっぱい。
NGNGのはまぁ仕方が無いと思うけどね。
ただ、STLのソースに神経割くデバッグ作業ってのは
考えるだけで萎えてくるものがある。
#俺、あのソース読んでるとドッと疲れが溜まるんだよね
0277名無しさん@お腹いっぱい。
NGNGあとsstreamが便利ってのも分からない。
0278名無しさん@お腹いっぱい。
NGNGここにあるyaneGameSDK2ndはどう思いますか?
0279吾輩は名無しさんである
NGNGというか、どっかに読みやすいSTLがあれば済む話なのか?
0280名無しさん@お腹いっぱい。
NGNG私はstream関連のものよりvectorやlistやstringクラスが
最強でステキだと思いました。
STL嫌だよ派がいるみたいですがC言語で配列などを使って
やるよりゃよっぽどいい気がするのですが・・・。何が駄目なのでしょうか?
0281名無しさん@お腹いっぱい。
NGNGこの人さ、お話楽しいのはいいんだけどさ、たまにめちゃくちゃな
こと書いてない?例えばこの↓CB回ってめちゃくちゃじゃないか?
http://www.sun-inet.or.jp/~yaneurao/rsp/
yaneGameSDK2ndは、まあ、何も知らん人なら
参考程度で止めとけって、感じか?
ビデオボードと喧嘩する時代でもネ−べ。
もしどうしてもシステムメモリオンリーで逝くなら
アセンブラでMMX必須だし。それでもあんまりあれだけどな。
0282名無しさん@お腹いっぱい。
NGNGvector, list, stringなどは自作で実装してしまった方が
軽くてサイズも小さいです。この辺のクラスはライブラリ製作の
勉強には持ってこいですしね。
0283名無しさん@お腹いっぱい。
NGNGDirectMusicの話のところも、かなり勘違いが入っている上、
偉そうにSDKのソースを見ろと書いてあるので見てみると、
読み込んで再生するだけのクラスしか無い
あれじゃタイミングがどうこう以前に再生と停止しかできないじゃん
0284NANASHI
NGNGvectorの実装ってそんなに無駄あった?
どの辺が軽くなるのかな?
確かにクラス宣言自体は大きいけど・・・
うむぅ・・・パワーアップできるならやっときたいなぁ。
stringは他のクラスとの連携があるからあんま改造しようとは思えない。
0285名無しさん@お腹いっぱい。
NGNGうーん、勉強にもってこいっていっても、問題はみんなで使うライブラリに
自作のvector,list,stringなどを入れること自体が害だと思うんだよね。
別に軽いとかそういう問題じゃなくて、できるだけ自分で作る部分を少なくする
のが目的だからねぇ。自分で作ると思いもしなかったバグとか出るでしょ?必ず。
それに比べて、STLならバグがあったらもう他の人に報告されてるでしょ?
0286名無しさん@お腹いっぱい。
NGNGっていうか、listやstringのためだけにSTLをインクルードするのは
無駄があるって話じゃないの?特にゲームの場合は。
ウチの会社ではその辺の基本的なクラスは全部自社製だけどね。
デバッグもしやすいし。
0287名無しさん@お腹いっぱい。
NGNG>無駄があるって話じゃないの?
無駄があるって何が?STL呼ぶとなんかおきるの?
>全部自社製だけどね。
この開発費こそ無駄じゃねん?
0288名無しさん@お腹いっぱい。
NGNG現時点でこれ、重要だな。
はやくデバガ、進歩すれ (´ー`)ノ
0289名無しさん@お腹いっぱい。
NGNGここのスレも参照
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=966542861
0290名無しさん@お腹いっぱい。
NGNG0291名無しさん@お腹いっぱい。
NGNGstd::string並の性能と機能を実現して、きちんとテストケースを書いて、
デバッグまで含めたら... タイヘンだと思うんですけどねぇ。
0292名無しさん@お腹いっぱい。
NGNG他の部分も一通り作ってから、性能測定する。
遅いところの原因がSTLだったら、自作クラスで置き換えて行く。
というぐあいに進めようと思ってます。プロジェクト完了してないので
脳内で終わるか、実績になるかはまだ謎。
0293名無しさん@お腹いっぱい。
NGNGなるほど、キチだったのか・・・
>290
きみは間違い無く天才だ。まじで。
0294名無しさん@お腹いっぱい。
NGNG最近VC++6.0試したら早くなってるのに気付いた。
確か昔は、代入やアペンド演算で、既に保持しているバッファで
サイズ的に足りていようが足りていまいがおかまいなしにバッファを
再構築しており、reserve()は何の役にもたっていなかったはず。
今のやつはちゃんとしてるね。
for (i = 0; i < 100000; ++i)
s = "hello, world";
は、charバッファにstrcpyするのにくらべて速度的に
遜色が無かった(さすがに全く同等の速度は出ないが)。
0295吾輩は名無しさんである
NGNGというか、そもそもリアルタイムゲームにstringは使いたくないよう。
OS自体がリアルタイム用途じゃなければ(Windowsとか)
どうでもいいのかも知れないけれど。
0296吾輩は名無しさんである
NGNG>この開発費こそ無駄じゃねん?
用途が限定されてるから(ゲームのタスク管理とか)
STLほどガチガチに堅固かつ機能的でなくてもいいんですよ。
あんなものゼロから作ろうとしたらそりゃヤバイけど。
双方向リストのコンテナ程度、一瞬で作れるでそ?
というか、大抵の人は既に作成済み、
現場で運用済みな類のものだと思う。
0297名無しさん@お腹いっぱい。
NGNG自分で簡単な物をチョイと作ってそれで十分間に合ってるだろふつー。
0298名無しさん@お腹いっぱい。
NGNGそれが正論。
リアル厨房はもう反論せんでよろしい。
0299名無しさん@お腹いっぱい。
NGNG測り方がわからないんですけど・・・。
具体的には、どこがどのように遅いかが知りたいです。
例えば配列のサイズを変える時が遅いとか、値を入れるときが遅いとか
使っているだけですでに遅いとか、値を取り出すのも一苦労とか。
ただ遅いって言うのもプログラマとしてどうかと思うので、
その辺が知りたいっす。まず、測り方が解りません。
どこがどのように遅いのでしょうか。私が良く使うvectorクラス
辺りで説明してくれるとありがたいです。
0300>299
NGNGVCのプロファイラかQueryPerformanceFrequency/Counter使えば
計れるよ。項目はこんなモンかな
・項目の追加(拡張あり・なし)
・項目の読み取り(シーケンシャル・ランダム)
・項目の削除(シーケンシャル(先頭・末尾から)・ランダム)
0301名無しさん@お腹いっぱい。
NGNGこーいう感じでよろしいのでしょうか?ずれたらすみません。
//リンクでwinmm.libを呼んでいます
#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
#include <conio.h>
#include <vector>
using namespace std;
#define NUM 1000//00
void main()
{
vector <double> Giko;
double Mona[NUM];
double s;
int Begin,End;
//確保する
Giko.reserve(NUM);
Begin = timeGetTime();
for(int j=0;j<1000;j++){
for(int i=0;i<NUM;i++){
s = Giko[i];
//s = Mona[i];
}
}
End = timeGetTime();
printf("%d",End-Begin);
getch();
}
結果は
Debugで
NUMが100000のとき
Gikoが43921
Monaが 5975
Debugで
NUMが1000のとき
Gikoが396
Monaが 20
Releaseで
NUMが100000のとき
Gikoが10591
Monaが 5691
Releaseで
NUMが1000のとき
Gikoが67
Monaが25
という結果になりました。
ってか、STLホントにおっせー。
ってか、ホントかこれ?間違えてませんよね?
ちなみに環境は
Pentium2の400MHzでメモリ64MBです。
VisualC++6.0のStandardEditionです。
0302名無しさん@お腹いっぱい。
NGNGプロファイラ動かんよ?
俺んとこのVCバグってる?
0304名無しさん@お腹いっぱい。
NGNGこの情報によって
お客様の疑問/問題は解決しましたか?
●はい ○いいえ
送信
0305名無しさん@お腹いっぱい。
NGNGみんな「いいえ」を送信するよな? な?([Y]/y)■
0306名無しさん@お腹いっぱい。
NGNG0307名無しさん@お腹いっぱい。
NGNG何でもSTLだと思ってる奴。
0308名無しさん@お腹いっぱい。
NGNGDirectX 8.0 Full SDK , Last Updated: 11/9/2000
http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/001/508/msdncompositedoc.xml
さっそく導入した人いる?
0309名無しさん@お腹いっぱい。
NGNG他のMS製品よりはマシだろうけど。
0310名無しさん@お腹いっぱい。
NGNG0311人柱
NGNG忙しくていじってないが。
0312にゃにゃし
NGNGあんま調べてないんですけど、
Win2000だとtimeGettimeが10ms単位の精度しかないようなきがします。
この辺詳しい人いらっしゃったら、詳細きぼんぬ。
0313名無しさん@お腹いっぱい。
NGNGNT系はそう。QueryPerformanceCounter 使えば。
0314名無しさん@お腹いっぱい。
NGNG0315名無しさん@お腹いっぱい。
NGNG正解。
ただQueryPerformanceCounterのほうが俺的には好み。
0316にゃにゃし
NGNGもしかしてQueryPerformanceCounterって
0.1msとか検出できちゃったりしますか?
timeBeginPeriodはなんか使いにくそうですね。
0317名無しさん@お腹いっぱい。
NGNG(゚Д゚)・・・・?
もうただの甘えん坊さんだね
0318名無しさん@お腹いっぱい。
NGNG> 316 名前: にゃにゃし 投稿日: 2000/11/15(水) 01:43
こんだけ時間あったらフツーもう解決してるだろ。
プログラマならな。
0319にゃにゃし
NGNG0320名無しさん@お腹いっぱい。
NGNG縦長のキャラチップのサイズが32x64だとでかい気がします。
こういうのはどの程度がいいんでしょうか。
そのまんまでもいいんですけど気になって。
0321名無しさん@お腹いっぱい。
NGNG>>320のモニタ上でデカイ気がするなんて理由なら、逝ッテヨシ!
0322名無しさん@お腹いっぱい。
NGNGどんなゲームかによって違うだろうが。
作っててデカイと思えば小さくすればいいし、
小さいと思ったらでかくしろ。
センスのある人間は、すぐサイズが決まる・・・。
残念ながら俺にはなかった。
0323320
NGNG30x20ブロックくらいの画面にしたいかなと思ってました。
確かにこの辺のサイズは実際やってみなきゃわからないところがありますね。
0324にゃにゃし
NGNGこれってPC毎に分解能違うんですね。
0325名無しさん@お腹いっぱい。
NGNG#まだ引っ張るのかい?
0326名無しさん@お腹いっぱい。
NGNGこれだと比較的楽に組めそうなんで興味湧いてるんですが。
あとベータ版出てますがやっぱりそっちのほうがいいんでしょうか。
0327>326
NGNGInside Windows冬号 でも特集組んでる
らしいけど、実際どうなの?
0328名無しさん@お腹いっぱい。
NGNG自作のスクリプト言語を作っている人っていますよね?あれ私には非常に
理解しがたいんですが、実際のメリットとしてはどんなことがあるのでしょうか?
結局、使用者にはそのスクリプト言語を覚えてもらうわけだし、
バグが増えるし、なんだか2度デマにしか思えないような機能しか付いてない
のが多くて、利点がよく見えてきません。
誰か説明お願いします。
0329名無しさん@お腹いっぱい。
NGNG0330名無しさん@お腹いっぱい。
NGNG確かにバグは増えるかもしれんが、プログラムで最初から組むよりは簡単にできるはずだ。
プログラムを知らない奴でもそいつの作ったゲームシステムを
簡単に構築できればいいわけだから二度手間にはならんと思う。
ツクールシリーズでも内部で結局そういうもんを使ってると思うんだが。
GUIじゃないと駄目なんか?
たとえバグ持ちでもそのスクリプトの使い勝手がよければ
支持してくれる人達はいるだろうし、結局何やったってバグなんてありえる。
使い勝手悪けりゃ何の意味も無いが。
HSP みたいな言語は複雑なことはできんが便利だと思うぞ。
0331名無しさん@お腹いっぱい。
NGNGそれだけじゃ、あまり作る意味は見当たらないっすね。
まず、ツールで事足りるようなことが多いし、いまなら、
マウスでカチカチ+数値入力なんてものもサクッと作れるし。
結局なにやったって・・・ってレベルじゃないと思うんだよね。
このスクリプト言語で出るバグの量って・・・。
しかも、この打ったスクリプトをさらに自作コンパイラにかけるわけでしょ?
たったこれだけの手順が増えるだけで最悪なんだよね。
ほんの少し、関数の使い方を覚えてもらって、ただ、ひたすら、数字入力を
していただくわけにはいかないんでしょうか?
0332名無しさん@お腹いっぱい。
NGNGなんか、ツールを作って使うのも、ただひたすら数字入力も、バグの
量がスクリプト言語にくらべて少ないかどうか解らない気がするけど…
0333名無しさん@お腹いっぱい。
NGNGアドベンチャーやRPGだとスクリプト言語は必須じゃないか?
スクリプト言語を使用しないとすると、シナリオライターがワープロなり
テキストエディタで入力したシナリオを手作業でデータに変換するのか?
0334名無しさん@お腹いっぱい。
NGNGプログラムのバグ(こちらプログラマのミス)とを分離するためにはわりと使えます。
また、デザイナの意図どおりに画面演出をしたいときなども簡単なスクリプトを書いて
もらうことがよくあります。
簡単な構造のスクリプトはわざわざコンパイラを作るまでもなく
Cのプリプロセッサで処理できてしまうこともままあります。
331さんのいうようにひたすら数字を入力してもらう方法をとったこともあります。
約束事(入力者が覚えること)も少ないので、入力そのものは早くすんだのですが
数字そのものには意味がないので、間違いの発見がかえって大変になりました。
経験上、専用のスクリプトの方がスクリプトの記述者の意図がわかりやすいので
バグは少ないし、発見しやすくなるようです。
0335名無しさん@お腹いっぱい。
NGNG(orプログラム的な考え方に)長けているならスクリプトなど
使おうとは思わないなあ‥
スクリプトのバグはこっちの責任なんでこちらでなおします。
でも、ルールのバグはそっちの責任でなおしてくださいってな
かんじの結局プログラマの自衛手段なのかもしれん。
0336名無しさん@お腹いっぱい。
NGNGなるほどいろんな利点があるんですね。
このへんは開発者の好きで良いような感じですね。
後はプロジェクトに参加している人の腕次第でやり方を
かえればいいという感じですか。
0337名無しさん@お腹いっぱい。
NGNG0338スクリプトは・・・
NGNG(複雑なものはc++のプログラムと連携させるケド)
●格闘ゲームのキャラのアニメーションシーケンス
●アドベンチャーゲームのメッセージや画像の制御
で使ってます。
スクリプト使わない場合って、アニメーションシーケンスとか、
やっぱ構造体の配列とかでやるのでしょうか?
0339名無しさん@お腹いっぱい。
NGNGスクリプトじゃない=プログラムに直接
って考えは安易だと思わないか?
0340名無しさん@お腹いっぱい。
NGNGウォーシミュレーション系やったときは、CPU側のコマの意思決定の
部分はスクリプトで書いた。
そこから呼ばれるマップ評価はC++側の関数を使うのだけども
さらにそれが利用する各コマの重要度を決定する部分はまた別の
スクリプトにしたなぁ‥。
ゲームバランスとるのに後から書き換えたい部分はスクリプトで
速度を要求されるところは普通のプログラムでって使い分けが多いかな‥
0341名無しさん@お腹いっぱい。
NGNG1)並列的に動作するものをスマートに表現出来る
2)命令キャッシュが大きなCPU(いわゆるパソコン)では
コードで実現するより早くなる場合もありえる
3)スクリプトだと余計な事をさせなくていい。
またイベント駆動に慣れてない旧式プログラマにも仕事をしてもらえる
結論:
出来るだけモジュール化し、再利用性を向上させて仕事をするという思想
があれば自然な方向性であり、実際にやってみればその効率性は誰でも実
感出来るはず。 オブジェクト指向言語なら実行時型情報等のおかげで、
比較的実行コードとのインターフェースも容易だしね。
0342名無しさん@お腹いっぱい。
NGNGせめて、プログラムの掲示板では
「早い」と「速い」の区別をつけてくれ。
で、内容もなに言ってるのか、ようわからん。
0343名無しさん@お腹いっぱい。
NGNG後、こういうのやめてくんねー。
>出来るだけモジュール化し、再利用性を向上させて仕事をするという思想
>があれば自然な方向性であり、実際にやってみればその効率性は誰でも実
>感出来るはず。
実際やってみればとか自然な方向とか、実際やってみて
わかんねーから聞いてるのであって、自然とかやってみれば
なんていわれても意味がないんだよね。
それに1,2,3のどれもへんてこな理論だよ。
1,2も怪しいけど、3なんてツール作ってデータを
吐き出させたほうが余計なことはさせなくてすむんだよ。
約束事も減るしね。というのは334の人もいってたじゃないか。
0344341
NGNGやってみて実感出来なかったのならそれも意見という事でヨシっちゅう事でしょう
個人の意見は尊重しますです。
というかすりあわせしなきゃならないような話じゃないです。
私としてはやってみて341に書いたような感想を持った。ちゅうだけの事です
もっと言えば、クラスライブラリを作るのと同じくらいの手間と効果があるとね
0345341
NGNG0346>343
NGNG1)並列処理〜ってのはがへんてこなリクツかなぁ‥
私は、けっこう共感できます。
2)キャッシュ〜は、私はハード周りは専門外なのでパス。
実測したことはありませんが、体感的に速いと感じたことはないです。
スクリプトの仕様にもよるのかも‥
3)は「余計なこと」の解釈が違うのではないでしょうか。
入力者に(文法などの)余計な理解を強いるのがスクリプト。
入力者がこちらの思ってもみないような余計なことをしてしまうのが
数値などでツールで入れさせるタイプ。
と私は解釈しました。
使いやすい専用ツールを作るのって結構手間だったりするので、私は
あまり好きではないです。
0347名無しさん@お腹いっぱい。
NGNG>実際やってみてわかんねーから聞いてるのであって
下手糞な煽りだ。具体的な指摘が何処にも無い。
とりあえずそちらの出している質問の発言番号で
名乗ってくれないか?
0348魁!名無しさん
NGNGつーか、ゲームのオブジェクトのような「状態マシン」の動作の記述に
高レベルのスクリプトを利用するってのは
割と常識的な解だと思うのデスが。
>3なんてツール作ってデータを吐き出させたほうが
ツールでスクリプトが動けばもっといろいろできるじゃん。
とりあえず、Macromedia Directorの体験版でも試用してみれ。
0349348
NGNG0350名無しさん@お腹いっぱい。
NGNG一体どこが悪いのかよう分からんの
0351名無しさん@お腹いっぱい。
NGNGa)状態遷移
b)リアルタイムモニタ(コルーチン技術)
c)スクリプト
のどれかになると思う。
どれでやっても、実現出来る事に差は無いよ
サイズがでかくなってくると a)はとにかくデバックが難しい
(もちろん真のプログラマはそんな事気にしないみたいだが)
windowsだとb)はスタック領域の切替え制限があって自前で
実装するにはちょっと不安。(スレッドは超遅)
0352のま
NGNG「後で調整や仕様変更が入る可能性のある部分は全てスクリプト」
せっぱつまった所で企画の連中の調整や仕様変更に巻き込まれたら
地獄ゆえ。
ただし、スクリプトをツールで自動生成する場合も多々あり。
(ツールにバイナリデータを吐かせると、その場は楽だがデバッグ
がしにくいゆえ)
0353A
NGNGステータスウィンドウとかアイテムウィンドウ。
Windowsの窓のことじゃないよ。
ウィンドウを開く→アイテム→使う→テトラポット
テトラポットを使った!
しかし何も起こらなかった。
こんなの場合分けで一つ一つIF文とかでやるわけないし
ちょっとちょっと不思議でジュースも飲めないよっ
仲良く教えてね
0354A
NGNGただ聞くのも失礼と感じちゃうので思ってることを書くよ。
まずウィンドウを作るベースとなる基底クラスを作る。
このクラスにはウィンドウ内の文字を表示する関数、
枠を表示する関数とか最低限なものがあったりするのかな?
このクラスを派生させて、コマンド選択のウィンドウや
顔とかのグラフィックを表示するウィンドウを作る。
で、コマンドなんだけど、これもまたいろんなコマンドのベースとなる
基底クラスを作って、コマンドウィンドウにこのコマンドクラスを
参照させるメンバ変数をくっつけたりしたりしてなんか出来そうな
気がしないでもない。
コマンドクラスにはイベントクラスなんかを持たせてあげれば、
そのコマンドが押された瞬間に各々のイベント発生
(画面揺らすとかアイツの家に移動とかそんなん)を発動できる。
のか?知らん。
イベントクラスって普通staticで持たせるのがいいの?
C、C++言語を想定して書きました。
みんなぜったい答えてね。ヨーイドン
0355名無しさん@お腹いっぱい。
NGNGまず、自分の考えた通りに作ってみろ。
0356名無しさん@お腹いっぱい。
NGNGまあ、似たり寄ったり、そこまでわかってりゃ人に聞くこともねーべ。
あとは自分なりに色をつけていけばいいでしょ。
0357名無しさん@お腹いっぱい。
NGNGおっしゃるようにクラスの仕組みを使うのも
一つの手ですよ。趣味でやってるなら、後は
お好みで組んでいっても宜しいのでは。
0358357
NGNG↑は353,354氏へのリプライね
0359名無しさん@お腹いっぱい。
NGNGコマンドやイベントは、クラスじゃなくてメソッドなのでは?
0360名無しさん@お腹いっぱい。
NGNGデザインパターンの本を読んでみ。
0361名無しさん@お腹いっぱい。
NGNGウィンドウマネージャを造らなくちゃいけないってこと忘れてない?
実際作ってみればわかるけど、ほとんどの機能はWMが担うことになる
からコマンドクラスとか、イベントクラスとか必要ないよ。
パフォーマンスを無視できるんなら使ってもいいけど。
0362名無しさん@お腹いっぱい。
NGNGそんなもん一般論では語れない。
(つーか、イベントやコマンドをクラス化しても、そんなに負担にならない場合がほとんどだと思う)
0363名無しさん@お腹いっぱい。
NGNG0364名無しさん@お腹いっぱい。
NGNG0365名無しさん@お腹いっぱい。
NGNG0366354
NGNGで、ちょっと未来を考えてみた。
まず、staticでWMを作成。
そしてそれに登録するためのウィンドウ基底クラスを作成。
このクラスは表示すると表示しないだけの機能のみ。
その派生にシーン基底クラスを作成。
さらにその派生に各々のシーンクラス(タイトルとかゲームシーンね)を作成。
あとは別個にウィンドウ基底クラスの派生に、
テキストウィンドウクラス(枠と文字を表示するだけのクラス)、
コマンドウィンドウクラス(コマンド選択肢のあるウィンドウ)を作成。
WMで、一番優先度の高いウィンドウに表示権利とキー入力権利を渡させる。
で順に表示。
とここまではこんな感じでいいのかな?
でもコマンドとイベントってクラスにしなくてもできますか?
メソッドにするってことはそのウィンドウクラス専用に処理関数を
直接書くって感じ?
ここで疑問が。
「はい」「いいえ」のコマンド選択ウィンドウってどこに属するのかな。
この窓っていろんなとこで使い回ししたいんだけど、はいといいえで
選んだ結果を返すところってどこだろう。
staticにしたイベントクラス?
んなこたあない。
みんな意見をありがとう。
もっとちょうだいよ
0367名無しさん@お腹いっぱい。
NGNG処理内容をトータルに計算して、効率の良いクラスを作るのが腕の見せ所
0368名無しさん@お腹いっぱい。
NGNGnew演算子書き換えて、固定領域配列内の
空き領域リストからメモリを確保するのだ。
ObjectPoolパターンなんてのもあるが、記述量やたら増えるし
速度保証がないのも変わらないのでお勧めしない。
0369名無しさん@お腹いっぱい。
NGNG反発係数一覧表みたいなのどこかにありませんか?
あの物質によって違う奴なんですけど。
0370名無しさん@お腹いっぱい。
NGNGスにするといくつかの決まったインターフェイスを持つことになる。
でも最適化するときにはその決まったインターフェイスじゃ不十分な場
合が多い、そこでクラスのインターフェイスを変えることになるんだけど、
だったらWM書き換えるほうが合理的だ。
俺もクラスで書いてたこともあったが結局馬鹿馬鹿しくなることが多かった。
まあWindowsでゲーム作ってんならあまり関係ないかも
0371そこが2ch
NGNG354のターゲットマシンはそれでも全然平気なんだろうね。
クラス設計に凝ることが出来ない状況もあるはずだけど
誰もそこに言及しないよね。
0372371
NGNG静的にロードされる → 実体が最低でも一つロードされる
#共有LIBやDLLで突っ込まんでね
0373名無しさん@お腹いっぱい。
NGNGだったら、そういう状況をお前が言及してみろよ。
(どうせ、ほとんどの人間には参考にならん特殊な状況なんだろ)
0374名無しさん@お腹いっぱい。
NGNG0375371
NGNGそうムキになんなって。
以下、RPGを開発中という前提でその戦闘画面を例にあげる。
派手な演出をするために大量のデータが必要となり、これがメモリ
を圧迫したとする。(このような状況に遭遇したことがなければ、
それは幸福)
データ容量の圧縮だけでは限界があるということで、プログラムコ
ードに手を入れることになったとする。
.oの中で割合デカめのやつを的に絞り、そのソースを眺め始めると
、凝りに凝ったウィンドウクラスの一群に目がとまった。
戦闘画面やマップ画面、イベント画面など、全てのシーンのウィン
ドウシステムが、同じ基底を持つ派生クラスとして定義された代物
だった。
メモリダンプを見ると、戦闘画面中にも関わらずメモリ上には
街のNPCやらラスボスしか使わないようなコードがしっかりと
居座っていた。
設計変更の工数を見積もるとシャレにならない状況が見えたので
仕方なく画面のクオリティを落とすことになった。 〜終了〜
0376名無しさん@お腹いっぱい。
NGNG単なる設計の問題じゃないか。
0377354
NGNGできればそういう無駄な部分も極力省いて作る方向ではある。
風呂に入ってるときもエアコン切って入ってます。
ってそういうことじゃないんだけど、省エネは大事です。
今作ってみたところでは、常にシーンはひとつだけ。
RPGじゃないけど戦闘シーンがフィールドシーンの上に窓のように
重なって処理されてたりだとかは設計上しませんでした。
あくまでステータスやコマンド選択の窓のときだけ重ねてます。
なのでメモリ取ってない。といいなー。調べてないけど。
ちなみに血液型はO型です。
シーンクラス生成するごとにそこらへんにあるオブジェクトは
デフォルトの位置に戻っちゃう。
イベントのフラグで管理すればOKなのかな。
で、プレイヤーはどこに持たせるのがいいのかな。
マップ?シーン?メイン?
今はとりあえずシーンに。
適度に作ったら誕生日にプレゼントしてみます。
0378名無しさん@お腹いっぱい。
NGNGスーパーファミコンでゲームを作るスレだったんだな。
0379名無しさん@お腹いっぱい。
NGNGグラフィックパイプラインがネックになるんだから。
それにメモリ足りない以前にボス戦とかは別工程で見積もるよ。
Now Loading ってメッセージを読んだことあるだろ・・?
まっ、いいけどさ・・。
0380371
NGNGそうだよ。最低だろ?
#だから仮定になってるんだけどな
>354
勝手にRPGと仮定してゴメンな。
それと、354の設計方針が良いだの悪いだのとは
一言も書いてないので、その辺よろしく。
>378
いや、煽りにすらなってないよ。
×××領域を×××切り替えする
×××××ベースの開発環境を引き
合いに出してどうすんの
>379
>グラフィックパイプラインがネックになるんだから
(゚Д゚)ハァ?
何のネックの話してんだよ(藁
話スリ替えんてんじゃねー
0381名無しさん@お腹いっぱい。
NGNG宇津なので氏ぬ
0382名無しさん@お腹いっぱい。
NGNG結局、なんの説明もできないんだな。
ま、そんなもんか。。。
0383名無しさん@お腹いっぱい。
NGNG371は旧石器時代の人間ちゅーことで
=============================終了===============================
0384外野
NGNG2chプログラム板はこれほどにヌルいのですか?
0385名無しさん@お腹いっぱい。
NGNG今やPS,DC,PS2の時代である。もはやメモリ容量に悩まさ
れるような状況は考えられないことである。いったい何
時の話をしているのだ。
このような些末かつ稚拙な問題に悩まされていた時代は
遥か昔SFCの時代を最後に見たことも聴いたこともない。
我々は、いかに重厚長大なクラス設計を行なおうとも、
何の弊害に遭遇する心配もないのである。
0386354
NGNG個人的には楽しいよ。
ルパンより五右衛門の方が好きみたいな感じで。
使い回しもよく効くし。
なんかそう考えるとカプコンクラスとかマリオ64クラスとかありそう。
絵だけ変えるだけ。みたいな。
あれ?NGワード?
03872chの常識
NGNG2chは、妄想世界で組んだプログラムについて語ることを前提とします。
従って、いかなるハードウェアの制約も、2chプログラマの自由奔放な
お花畑設計思想を阻むことは許されません。
2chは、ハードウェアの性能をギリギリまで使い切ろうと努力する行為を
無益で野蛮で時代錯誤で化石に等しいものと結論付けます。また、こうし
た不毛な目的のために我々の洗練されたコーディングスタイルが曲げられ
るような事態は、断固これを拒否します。
0388名無しさん@お腹いっぱい。
NGNGDCやPS2は知らんが、PSはメモリきついぞ。
0389名無しさん@お腹いっぱい。
NGNGPS触ったことあればとてもじゃないけど
「もはやメモリ容量に悩まされるような状況は
考えられないことである」
なんて言えないですよね
どんなにメモリやハードディスクの容量を増やしても
CD-ROMがDVDになっても
人の欲望が尽きることはないから
容量に悩まされない時代なんて絶対に来ないと
思うけどね・・・
0390名無しさん@お腹いっぱい。
NGNGそりゃあんたおかしいって。371が話をもちだしたのは
速度がどうの、って話が発端で、いつのまにかメモリの
話にすりかえてるんだよ。
コードVMTの余裕すらもてないきついいまどきのコンシューマなんて
メモリ128KBですか?だいたいはワーク用のメモリでつぶしてるん
だから、その構造を検討しなおすべきで
クラスの使用すら排斥するその貧乏根性はまさに
ここがヘンだよ!っていいたくなるぜ。
クラス使わない分、変な変数つかって結局同じようなことになってる
ことが多いんだぜ?
ま、クラスつかわないことが良いならそれで再生産性、汎用性のない
コードをずっと書いてな(藁
0391390
NGNG0392名無しさん@お腹いっぱい。
NGNG私のところはPC用で、完全にOOPなんだけど。
0393名無しさん@お腹いっぱい。
NGNGやってるところはスーファミの時代からやってる。
(「完全なOOP」って、なんだか知らないけど)
0394名無しさん@お腹いっぱい。
NGNGどこにも排斥する書き込みは見当たらないんだけど。
371は実装を考慮しないような下手なクラス設計が
あり得ることを書いてるだけだろ。
んなことは飯食ってる人間なら当たり前だけど、
お花畑2chでは非常識な話だから叩かれてるんだよ。
0395名無しさん@お腹いっぱい。
NGNGオブジェクト指向には違いないというのは間違いですか?
一般的なOOPと違う場合もあるというだけでは?
0396名無しさん@お腹いっぱい。
NGNG>クラス設計に凝ることが出来ない状況もあるはずだけど
俺なら省メモリになるようなクラス設計をしますが。
凝ったクラス設計=リソース食いとは限らんでしょう。
0397>392
NGNGよほど頭の古い(すまん)連中を除いてほぼ移行済みちゃうかなあ。
無論、Windows上ほど堅実な使い方はしないことが多いですが。
#DCやPS2くらいメモリと処理速度があるとそうでもなさそう。
0398>>396
NGNG>凝ったクラス設計=リソース食いとは限らんでしょう。
これ自体は正論なんだけど
>>クラス設計に凝ることが出来ない状況もあるはずだけど
この引用文の回答としては、上祐テイスト
0399名無しさん@お腹いっぱい。
NGNG何を指してるのかよく分からん俺は2ちゃん厨房扱いなのか?
そうなのか?(*_*
0400名無しさん@お腹いっぱい。
NGNG締め切りは来週、もう3日間寝てない!ってな状況。
0401名無しさん@お腹いっぱい。
NGNGそんなことはありませんよ。それは被害妄想というものです。
むしろあなたは私達と同類、正真正銘2chの住人といえます。
あなたもこのお花畑が快適で仕方が無いのでしょう?
0402>400
NGNGもうプロジェクト終了って感じだ。
0403名無しさん@お腹いっぱい。
NGNGそういうところ結構あるよ。設計やってるやつらが
破綻レベルの遅れになってもいっこうに何も決められない
ような、アホばっかりの会社だと。
0404>403
NGNGそれウチだぁ
0405DPC
NGNGキー状態はどうやって取得するのがいいのでしょうか?
現在は一定間隔でGetAsyncKeyState()でキー状態を取得しようと
考えているのですが、それだと何か押すたびに警告音が出てしまいます。
どなたかセオリーなど、助言していただけませんでしょうか?
OSはWindowsでC++言語で作っています。
0406。>
NGNGゲームなら、それでも良いかもしれない。
0407名無しさん@お腹いっぱい。
NGNGおっ、その状態はウィンドウプロシージャを無視したね。
メッセージキューが処理されずにいっぱいだよっていってんだろ。
メッセージキューが解らんときはMSDN詠んでくれ。
0408名無しさん@お腹いっぱい。
NGNG> 考えているのですが、それだと何か押すたびに警告音が出てしまいます。
キー入力でダイアログのメッセージキューがいっぱいになっています。
ゲーム進行中でも、ウィンドウメッセージは処理しなくてはダメです。
ダイアログは最初に WM_INITDIALOG メッセージが飛んでくるので、
必要な初期化処理が完了したらおもむろに下のような無限ループに突っ込みます。
while( GetAsyncKeyState(VK_ESCAPE) )
{
// メッセージ処理部
MSG msg;
while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// CPU しばし休憩
Sleep(1);
// ゲームのメイン処理関数
GameMain();
}
ESC を押すとループを抜けるので、DestroyWindow でダイアログを破壊。
そのあとは WM_DESTROY で EndDialog を呼べばよいでしょう。
システムメニュー、IDOK やIDCANCEL の処理を
無効にしておかないと、勝手にダイアログを破壊されて
困ったことになりますから、そのへんは工夫が必要です。
(っていうか、素直にウィンドウ作りましょう)
0409408
NGNGああ鬱だ。。
0410DPC
NGNG作るのが楽だったのでダイアログにしましたが、
その先が大変そうなのでウインドウ作りなおしました。すんません。
教えていただいたようにメッセージループ周りを変更しましたら、
とってもいい感じに動くようになりました!!
本当にありがとうございます!!
0411うっぽん
NGNG::BitBltを使っているのですが、これより高速なBitBltを作成することは可能なのでしょうか?
とりあえず作ってみたら
8ms(::BitBlt) --- 32ms(自前BitBlt)
となってしまい。かなり鬱になりました。
自前ビットBltの実装はサーフェスをロックしてCopyMemoryで転送するようにしました。
いまのままだとフォーマット変換はしていないので画像は化けてます。
環境は
画面: 800*600*16bpp
Video : RivaTNT
CPU : PII400MHz 128MB Memory
です。
このあたり詳しい方よろしくお願いします。
0412名無しさん@お腹いっぱい。
NGNGVRAMとシステム、どちらにサーフェスつくってます?
0413名無しさん@お腹いっぱい。
NGNG0414名無しさん@お腹いっぱい。
NGNG知ったかこくな、ならねえよ
0415413
NGNG0416名無しさん@お腹いっぱい。
NGNGそう、残念ながらならないよね。32は32なんだよ。
>411
アセンブラ使うしかネー。
0417名無しさん@お腹いっぱい。
NGNGあと、知ってると思うけど、システムメモリから、VRAMへの転送は遅いよ。
0418名無しさん@お腹いっぱい。
NGNG<一人ボケツッコミ
0419名無しさん@お腹いっぱい。
NGNGだからよ。AGPって知ってるか?
CopyMemory使ってるところから一括転送がしたいんだろ?
だったら始めから何も考えずにDirectX使って
ビデオメモリに置けばいいじゃん。
別に画像いじらないんでしょう?
んで、DirectXについてるBltを使う。
そうすれば勝手にAGPがついてるマシンなら64Bitで
転送してくれるんだよ。
遅くなってるってことはDIBの関数がこの辺をやってくれてるん
じゃない?もしかして。
0421名無しさん@お腹いっぱい。
NGNGすまん、あふれてシステムメモリに置かれたときは。
0422名無しさん@お腹いっぱい。
NGNG0423名無しさん@お腹いっぱい。
NGNG411をもっかい良く読みな。
0424名無しさん@お腹いっぱい。
NGNGそりゃ組み方が悪いんだよ。
0425名無しさん@お腹いっぱい。
NGNGに置き換える
これより高速に転送されているならハードウェアのアクセラレーションが関わっている可能性が高い
ちなみにMMXに関して誤解している人物がいるようだが
rep-movesdよりMMXのレジスタを用いた転送が早くなることはない
0426425
NGNG0427名無しさん@お腹いっぱい。
NGNG知ったか度チェック
MOVQのパイプの種類はUV,U,V,NPのどれか
またMOVQ同士のペアリングは可能か不可能かとその理由を挙げよ
これを考えれば自分がどんな馬鹿を言っているか分かるだろう
0428名無しさん@お腹いっぱい。
NGNGMOVQは原則的にはUVだろ。メモリ、整数レジスタにアクセスする場合にはUのみ。
ペアリングはメモリ、整数レジスタにアクセスする場合には不可。
0429名無しさん@暇人
NGNG計測はtimeGetTimeを使用
mov eax,8MB/8
lp: movq mm0,[esi] movq [edi],mm0
add esi,8 add edi,8 dec eax jnz lp を16回
mov ecx,8MB/4 rep movsd を16回
結果 MOVQ→4.536[sec] MOVSD→3.937[sec]
0430名無しさん@お腹いっぱい。
NGNGmoveqとaddを交互にしてみろ。
0431うっぽん
NGNG問題点はCopyMemory(内部ではREP MOVESD)で転送したのと、
::BitBltで転送したもので4倍近い差が出てしまう所です。
::BitBltの逆アセのコードを見たことがないので、どういう実装になっているのか見当もつきません。
たとえ限界までアセンブラで最適化したとしても4倍の差が埋まるとは思えません。
処理内容的には単なるブロック転送なので、キャッシュヒットの効率化というのも難しいと思います。
ここから後は単なる推測なのですが、グラフィックカード上にSYSTEMメモリとビデオメモリ間の転送を
効率よく行う特殊な機能(ハードウェア?)があるのでは?と思ったのです。
結論的には黙って::BitBlt使っとけって事なんでしょうか・・・
0432名無しさん@お腹いっぱい。
NGNG0433名無しさん@お腹いっぱい。
NGNGだから、AGPだって逝ってんだろ!クルァ!
DMA転送だっけ?
0434名無しさん@お腹いっぱい。
NGNG知ったかこくな、ならねえよ
0435うっぽん
NGNGDirectDraw使う意味ないことに気付きました。
ハードウェアブリッドもつかってないし。
フルスクリーンのGDIベースでやった方が効率良いんだろうか?
とりあえずやってみよう・・・。
なんでこんな話題振ったかっていうと、
洋ゲーのスデンストライクっていうゲームが、
2MのVRAM+3Dハードウェア無し+1024*768の解像度
でばりばり動いているのを見てしまったからです。
(スペックから推測すればDIBを使ってるはず)
・・・まあいいやがんばろっと。
0436名無しさん@お腹いっぱい。
NGNGそのゲームのリンクくらい貼ってよ〜ん。気になっちゃう。
スデンストライクの「スデン」はSuddenの事?
0437名無しさん@お腹いっぱい。
NGNGなんで、そーゆー結論になっちゃうわけ?
その洋げーがどんなにすごくったって、同じようなもんを
高スペックのマシン用にDirect3D使って組んだって、
世間の評価は大して変わらないよ。だったら、ハードウェア使いこなして
楽に組んでその分余った労力をゲーム自体の作りこみに向けた方が
いいんでない?
だって、ウィンドウズ上でのゲームの作り方って結構特殊じゃん。
俺は「PCゲーム業界に骨を埋めるぜ!」ってゆーなら
止めはしないけど、「そのうち、コンシューマでも組みテ−な」
って考えるなら、もっと柔軟に考えようぜ。
DIBの関数使っちまったら、汎用性も何も無いじゃん。
そろそろテクスチャ使っても大丈夫でしょうって感じの時代なのに
なんで、そんなこだわるん?ちと教えて欲しいよ。
紙芝居エロゲならすまん。
低スペックのマシンでの動作が快適にならないのは当たり前だと
思うのよ。
0438名無しさん@お腹いっぱい。
NGNG後半の推測は当たっている場合もあります。
system→hardware 転送時にDMAを使うドライバは存在しますので。
また、これについてはAGPは必要条件でも何でもありません。単に
433がキティだったというだけの話です。
個人的な疑問ですが、OSのGUIへの依存度が少ないエンターテイン
メント系アプリがGDIに拘る技術的な理由があるとすれば、それは
何なんでしょうかね?日本の特殊なマーケット事情がどうだとか
いう戯言は横に置いといて。
0439うっぽん
NGNG自分も知り合いがやってるのを見ただけなので、
ちょっと解りません。ごめんなさい。
スデンはネタです。PCゲーム板の方ではそうなってるご様子なので。
>>437
PCゲームは趣味みたいなものです。
メモリをちくちくいぢりまわして画像を生成するのって楽しくありません?
αチャンネル付き画像の描画とかも可能ですし。
まあ自己満足の域は脱していませんね。
コンシューマーのゲーム作るのは食傷気味なのでいいです。
ちなみに私は、エロゲーは堪忍派です。
一段落付いたらGeForceでも買って、PixelShadeを用いた
自己満足3Dゲームでも作りたいですねぇ。
0440名無しさん@お腹いっぱい。
NGNG低スペックで快適に動くなら、それに超した事はないでしょ。
3Dカードに気を使ってるPCユーザーなんてまだまだごく一部だし、
HAL使わなくてもおもしろいゲームが作れるなら作って欲しいよ。
0441うっぽん
NGNG自分のアプリでGDI(DIB)に依存している部分は、デバッグ用のフォント描画の部分と、
最終的にバックサーフェスに転送するBitBltだけなので、GDI切ろうと思えば切れますよ。
前述の問題でかなり遅くなってしまうと思われますが。
0442名無しさん@お腹いっぱい。
NGNGなんだ趣味かよ。じゃあ話すことねーよ。
頑張ってな。
>440
はぁー、いつの時代の話やら・・・
(ただし、エロゲを除く)
0443名無しさん@お腹いっぱい。
NGNGHDDやメモリには金使っても、3Dアクセラレータなんか買わないか(藁
0444名無しさん@お腹いっぱい。
NGNG「ノートパソコン」の一語に尽きると思うなあ。
今店頭で売れてるPCは5割がノートみたいだし、
ノートでDirect3D HAL想定していいようになるのまだ先の話みたいだし。
0445名無しさん@お腹いっぱい。
NGNG悲しく同意
0446ノートPCで3D
NGNG3Dアクセラレータ搭載してるぞ。VRAM 4MBしかない機種もあるが。
今年になってからの話だから、去年までのノートPCは3Dは期待できないけどね。
そういう奴らには買い換えさせよう!
新インターフェースではDirectDrawがなくなって、2DもPSよろしくポリゴン描画
前提なのだし今後は仕方ない。
0447名無しさん@お腹いっぱい。
NGNGやったぜ!新世紀はすぐそこだ!
0448名無しさん@お腹いっぱい。
NGNGDirectX でフルスクリーンで動くソフト作って動かないとメールが来るときがあるがそう言う奴はノート使ってる。
液晶は氏ね!
0449名無しさん@お腹いっぱい。
NGNGそうゆう場合、ノートに普通のモニター繋いで表示したらどうなる?
0450名無しさん@お腹いっぱい。
NGNG違うとは思うけど、エラー処理がヌルいとかいうオチだったら嫌だな
0451名無しさん@お腹いっぱい。
NGNGなにか他の問題ではないのか?
0452名無しさん@お腹いっぱい。
NGNG0453名無しさん@お腹いっぱい。
NGNGどこをどうやると同じなのかようわかりませんが・・・
各軸それぞれについての回転角度のセット((a,b,c)みたいの)を
オイラー角と呼んで、その回転を表す行列表現を算出することができる
というはなしで混合のしようがないと思う。
0454452
NGNG>オイラー角と行列の相互変換
>こんなページは作りたくないけどしょーがない。
>なるべくオイラー角を使わないプログラムスタイルに取り組みましょう>3D初心者のみなさん
ってどう言う事?
0455名無しさん@お腹いっぱい。
NGNG0456C++勉強中
NGNG勉強がてら、ちょっとしたオープニングデモを作ろうと
思ったのですが時間ごとの管理?でちょっと詰まっています。
///////////// ループ開始
static int time = 0;
if( time < 60 ){
draw_text(); //60秒テキストを表示
}
else if( time < 80 ){
draw_title(); //次の20秒はタイトルを表示
}
else if(
・・・
}
time++;
///////////// ループ終了
こんな感じで時間ごとの表示の管理をしているのですが
time < 5000を越えたあたりで、さすがにスマートじゃないなと・・・
なにか良い方法ご存じの方、教えてください
0457名無しさん@お腹いっぱい。
NGNGstatic int time = 0;
static int stat = 0;
switch (stat){
case 0: draw_text(); if(++time>60){time=0; state++;} break;
case 1: draw_title(); if(++time>20){time=0; state++;} break;
}
な感じ?
0458456
NGNGうはぁ、ありがとうございます。これでループ一つに
50回もif判定しないですみそうです・・・。
> そのレベルに合わせたら
そんな殺生な(^^;
0459名無しさん@お腹いっぱい。
NGNGイベントの配列でも作って、順番に回せば?
0460456
NGNG回そうかとも思ったことがあったのですが・・・・。
これってデモ中に明確なイベントの区切りがないと駄目ですよね?
それとも登場キャラごとに配列を持たせちゃうのですか?
0461459
NGNGだいたいだけど、
class Event { public: DWORD time; virtual draw(); /*...*/ } ;
class TextEvent : public Event { public: draw(); }
class TitleEvent : public Event { public: draw(); }
っていうのを作って、
{
Event* array[2];
array[0] = new TextEvent;
array[1] = new TitleEvent;
for (int i = 0; i < sizeof(array)/sizeof(array[0]); i++) {
if (getcurtime() < array[i]->time)
array[i]->draw();
}
ということを言いたかったのよ。
0462459
NGNG0463456
NGNGおおっ、なにか色々、一気にインスパイアされました。
C++ってこういう使い方すればいいのですね。
基底クラスの配列作ってその時表示する派生イベントクラスだけ
登録し、イベントが終わったら外す、なんてのも出来そうですね。
オブジェクト指向の便利さの一端をかいま見たというか・・・、
457さん共々大感謝です。ありがとうございました。
0464名無しさん@お腹いっぱい。
NGNGその手の処理はスクリプトにすると楽だよ。
今のやり方だと、最初の60秒を50秒に直すと
それ以下のイベントタイマー全部修正するハメになるね。
0465名無しさん@お腹いっぱい。
NGNG0466名無しさん@お腹いっぱい。
NGNG0467459じゃないですが
NGNGC++の一般的な使い道、というかレーゾンデートルだと
思うんだが…みんななんだかんだいって、あんまりC++
知らない人多いんだねえ。
0468名無しサソ
NGNGオイラー角は、姿勢に対する値が一意に定まらないという
致命的な欠陥を持っているよ。それに、ピッチ角度が90度に
なったらジンバルロックという現象が起こって、一軸が無効
になってしまうから、色々細かく場合分けしてあげないといけない。
クォータニオンを使うといい、とはよく言われるけど自分は
使ってない。真面目に力学計算とかをする必要がなければ、
そのまま行列を姿勢表現に使うのが普通ではないのかな?ただ、
これも計算を繰り返すと座標の直交性が失われて行列がおかしく
なっていく(ジオメトリ崩壊という奴ね)から、何回かおきに
行列の正規化をする必要があるよ。
自分は別にプロでやっているわけではないので、この辺プロな
人のフォロー求む。
0469割り込み失礼
NGNG・・・音楽とタイミング取る度に40カ所以上修正してました。
根本から見直した今、おかげさまで結構いい感じです。
スクリプトやYACCとかはどんな物かすら見当つかないので・・・勉強
してきます。検索結果多すぎですが・・・・。キーワード、サンクスです。
>>467
勉強し始めの自分なんか参考になりませんよ。世間様はもっと上なはずです。
0470名無しさん@お腹いっぱい。
NGNG0471名無しさん@お腹いっぱい。
NGNGそうだけど、なれちゃえば頼った方が楽だね。
でもテキスト処理の基本とかないとつらいから、
始めは手で書いた方がいいかな。
0472名無しさん@お腹いっぱい。
NGNGどうしたらいいのですか?
ファイナルファンタジー3みたいなのを
つくりたいのですが。
みんな、どうやってプログラム言語覚えたの?
最初から、FF3作れないよね?
最初は、時計作ったりしていくの?
0473名無しさん@お腹いっぱい。
NGNG0474名無しさん@お腹いっぱい。
NGNG0475名無しさん@お腹いっぱい。
NGNG>最初は、時計作ったりしていくの?
笑えた。(ワラ
0476名無しさん@お腹いっぱい。
NGNGLv.1から順番にひとつずつ自力でパチモンを作っていきましょう。
Lv.1 ブロックくずし
Lv.2 テトリス
Lv.3 オセロ(CPUの思考ルーチンつき)
Lv.4 パックマン
Lv.5 インベーダー
Lv.6 マリオブラザーズ
Lv.7 スーパーマリオブラザーズ
...
FF3っすか。Lv.32くらいですかね?
0477名無しさん@お腹いっぱい。
NGNG敵の思考ルーチンの複雑度順。
Lv.1 ブロックくずし
Lv.2 テトリス
Lv.3 インベーダー
Lv.4 マリオブラザーズ
Lv.5 スーパーマリオブラザーズ
Lv.6 オセロ(CPUの思考ルーチンつき)
Lv.7 パックマン
FF3はデータ量が膨大&アウトプットが3Dなだけなので難易度
は大したことないでしょう。
0478名無しさん@お腹いっぱい。
NGNGブロック崩しは基本的には簡単だけど、ボールの反射の部分は実は考慮すべきパターンが
かなりいろいろあって面倒。適当に作っただけじゃかなりあちこちボロが出る。
面倒といったって、しょせんLv.2程度の面倒さだけどね。
インベーダーが「やらなくてはいけないことが全て目に見えている」という意味では一番シン
プルかもしれない。
追加希望
Lv.0 もぐらたたき
LV.0.5 TVゲームテニス
0479名無しさん@お腹いっぱい。
NGNG0480名無しさん@お腹いっぱい。
NGNGLv. -2 数あて
0481名無しさん@お腹いっぱい。
NGNG>は大したことないでしょう。
マップエディタやらシナリオスクリプトやらの設計・制作まで
考えないといけないから、そうでもないかも。
それでもLv.13くらいか?
0482名無しさん@お腹いっぱい。
NGNGやっぱり、ゲームプログラマーだったら、
それなりの3Dソフト(MayaやLightWaveなど)を
扱えるようにならないとまずいのかな?
まじレス求む。
0483VB厨房
NGNG個人によって、レベルの上下って差が出るんだな。。
ブロック崩しのソース希望(あればだけど、公開してたらほしいっす)
0484名無しさん@お腹いっぱい。
NGNG書いてもらえませんか?
腕試しをしてみたいので。
0485472
NGNGというのを、ダウンロードして、いろいろしてるの。
まずは、時計を作ったの。それから、windowの端まで行ったら
跳ね返るのを作ったの。
こんな調子で作っていこうっと。
もぐらただきって結構難しそうな感じ。
マウスを監視しておくのかなあ?
0486472
NGNG僕に出来るかなあ?
キー押したら、バー動いてるし、
ボールも動いてる。
2つもどうやって同時に動かすのだろう?
それに、ブロックの破壊も。
たくさんしないといけないけど、これを
クリアーしないと進めないな。
0487名無しさん@お腹いっぱい。
NGNG山ほどあるぞ。少年よ。
http://www.google.com/search?q=%83u%83%8D%83b%83N%95%F6%82%B5+%83%5C%81%5B%83X&hl=ja&lr=
0488VB厨房
NGNGすごくマイナーな言語?、Cをやれば、インプライズ社の
フリーだし、Cマガジン買ってね。
0489名無しさん@お腹いっぱい。
NGNG山ほどあるぞ。少年。
http://www.google.com/search?q=%83u%83%8D%83b%83N%95%F6%82%B5+%83%5C%81%5B%83X&hl=ja&lr=
0490名無しさん@お腹いっぱい。
NGNG0491VB厨房
NGNG0492名無しさん@お腹いっぱい。
NGNGまずオセロのマスに対応した縦横8*8の配列を用意する
その配列の要素に優先順位に応じた数値をセットする
例えば角や端には高い数値を逆に角の一つ前には小さい数値を
セットする
そしてそれぞれのマスに置いたらいくつのコマを裏返せるか
計算しそれぞれの要素に乗算していく
そして勝負が終盤に近づくにつれて
最初の優先順位の数値を均等化していく
その上で一番多い数値を持つ要素を探しだす
0493VB厨房
NGNG| |/( ゚∀゚ )\| ウワーイ
| | ∩∩ |
| アヒャヒャヒャ  ̄ ̄ ̄ ̄ アーヒャヒャヒャヒャ
ヽ(゚∀゚ )ノ 三 ( ゚∀゚)ノ
.( へ)── <( )─────────
/ く ( ゚∀゚ ) く し
/ ミ 〜( 〜) 彡
ノ ノ ウレシイナ
0494名無しさん@お腹いっぱい。
NGNG「探せばすぐ出てくるぞヴァカホゲ」
という意味もあるのだが。
…伝わっていないのか?
0495オセロの作り方
NGNG0496名無しさん@お腹いっぱい。
NGNGファイナルファンタジー作れてもやり方知らなきゃオセロは作れない。
0497名無しさん@お腹いっぱい。
NGNGネタか?
0498T.M.
NGNGRPGだってマップエディタ無しで作るのだって不可能じゃない。(後で死んでも知らん)
問題はどう効率良く作るかでしょ。
となるもう技術の問題じゃなくて知識の問題。
それこそ知ってるか知らないかだけ。
ゲーム作れたからって必ずしも能力(素質)が優れているとは限らない。
っていうか思考ルーチンと画像処理以外でなんかすることある?
0499名無しさん@お腹いっぱい。
NGNGでは、「技術の問題」になるのは例えばどんなケースだろう?
0500名無しさん@お腹いっぱい。
NGNG誰もやってないことをやる場合とかハードウエアの性能を極限まで
引き出す場合じゃないの。
最初のバーチャファイターとか88のシルフィードとか。
0501名無しさん@お腹いっぱい。
NGNGで終わるなら消防でも飯食ってけますな。
0502名無しさん@お腹いっぱい。
NGNG0503名無しさん@お腹いっぱい。
NGNGWindowsはコワイネ・・・
StretchDIBitsでGetLastError曰く
「不正なパラメータです」
だって。アハハハハ。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
if (::SetDIBitsToDevice(GetDC(),0,0,BI->biWidth,BI->biHeight,0,0,0,BI->biHeight,
lpBits,(BITMAPINFO*)BI,DIB_RGB_COLORS)==0) {
throw exception("ERROR.HOGE.");
}
※BIはBITMAPINFOHEADERね。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
これの何処に間違えてる所があるんじゃい!
しかもエラーの出る場所は起動毎に変わる。どういうことや!
DLLのバージョン違い?DirectXのバージョン違い?わからん・・・・
0504名無しさん@お腹いっぱい。
NGNGところで、あなたは何の話で盛り上がっているのですか?
0505名無しさん@お腹いっぱい。
NGNG解放してる?
0506503
NGNGGDIリソースの減少が原因でした。
GDIリソースなんて、すっかり忘れてました。
開発してるマシンはGDIリソースの残りが多めだったんでバグが出なかった模様。
今日は良い勉強になりました・・・
0507デフォルトの名無しさん
NGNG絵裸眼とですっきりしたデータ構造。
0509名無しさん@お腹いっぱい。
NGNG0510名無しさん@お腹いっぱい。
NGNG>「はい、作りました。プログラム動きました」
>で終わるなら消防でも飯食ってけますな。
おいおい。プログラマにそれ以外必要なんか?
まさか消防にプログラムはできてもデバッグはできないとか言い出すの?
企画は別の人間の仕事だし、なんだなんだ。何をいいたいんだ501は
0511デフォルトの名無しさん
NGNGなんだいきなり(笑)
0512デフォルトの名無しさん
NGNG0513名無しさん@お腹いっぱい。
NGNG金・・・
0514デフォルトの名無しさん
NGNG描画するのに毎回全部描き直すんでも「動く」は「動く」だからネ。
あとは売るソフトなら他人にサポートできないプログラマはカスじゃない?
作者しか使えないようなツールをシェアウェアで出してもね〜・・・
>>513
まさにその通りってレスだな(笑)
0515名無しさん@お腹いっぱい。
NGNGそんなレベルの低いことを誇って………アタリマエの事じゃん。
俺はかなしいよ
0516デフォルトの名無しさん
NGNGでもすくなくとも514は間違ったことは言ってない(ワラ
こんな使いずらいものシェアウェアで出して売れんのか?
ってソフトはよく見かけるし。
0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG大幅に話が脱線しているだけだから気にしない方がいいよ
0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNGまだ引きずるんだね
0522デフォルトの名無しさん
NGNG>こんな使いずらいものシェアウェアで出して売れんのか?
世の中の94%のシェアウェアがこれに該当します。
体験版ですでに買う気無し。
売りもんにするならせめてユーザーインターフェースのデザインぐらいは
力入れてくんねー。って感じか。
0523名無しさん@お腹いっぱい。
NGNG細かいな(w
0524519-522
NGNG0525デフォルトの名無しさん
NGNG522は俺なのに!?
お前は誰だ!?
別に意味も無くage
0526デフォルトの名無しさん
NGNG(高度警報音)
0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNG0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNG他に有名なのはelとかYaneSDKとかかな?
俺はWinGLしか使ったことないけど。
>>327
InsideWindowsってまだあったの? 季刊とかで復活してたのかな?
0531デフォルトの名無しさん
NGNGmaster.libじゃダメ?
master.libならPC-98もDOS/V機もほぼ同じに扱えるけど。
っつーかそれじゃわざわざDOS/V上でゲーム作る意味がないのか。
結局ダイレクトにWindowsプログラムに移行した方がいいんじゃないすか?
WinGLとか、YGSとか使って。
0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNG(,,#゚∀゚) _ ,,) アヒャヒャ
/ つ |
〃(@ ノ /U
U UU
0536>>530
NGNG/ ̄ ̄ ̄ ̄ ̄ ミ
/ ,――――-ミ
/ / / \ |
| / ,(・) (・) |
(6 つ |
| ___ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| /__/ / < なわけねぇだろ。今頃ネタに反応すんな
/| /\ \__________
0537472
NGNGHot Soup Processorは駄目なの?
どれが、一番分かりやすい?
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNG神経を逆撫でするような質問は止めてくれい。
0540デフォルトの名無しさん
NGNGWindowsで2Dアドベンチャーのシステムを作ってるんですが、方向性にいまいち自信がないので意見を聞かせてほしいです。
画面サイズは640*480で色数は16bit以上、ウィンドウ&フルスクリーンで動作、扱う画像は24bitBMPという状態でやっています。
以下にどういう感じで組んでいるのか書きます。
640*480*24bitのメモリに背景などのBMPを貼り付けていって、メモリ->DIBに転送してBltというふうにしています。
テキストの表示は一度BMPデータを作って、それをDIBに転送するようにしています。
テキストを消す場合はメモリ->DIBに転送という具合にしています。
ゲームのメイン部分はスクリプトの終わりが来るまで処理するという感じになっていて、
スクリプト解析部分からエフェクトやテキスト表示、キー待ちなどのときは関数に飛ばしています。
関数では
KWait(){
while(KEY == 0){
Vsync();
}
}
というかんじで独自にループ作っちゃって、VsyncのところでWindowsメッセージ処理とメモリ->DIB->Bltを行っています。
ゲーム終了とかの場合はVsyncがエラーで帰ってくるようになってます。
DirectDrawを使ったほうが良いとか、根本的にマズイとかありましたらご指摘いただけると幸いです。
よろしくお願いします。
0541デフォルトの名無しさん
NGNG画面をフルスクリーンに変更できるの?
0542禁断の名無しさん
NGNGデスクトップの解像度を変更して、その大きさと同じウインドウを
作るって方法になる。インチキフルスクリーンだね。
0543540
NGNGあと並列処理とかはタイマーでやってます。
ちょっと作り方が古い感じでマズイかなぁとおもってるんですが…。
0544デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNGとりあえず、フロントバッファのことなのか
全画面の誤変換なのかをはっきりしてください。
0547デフォルトの名無しさん
NGNG毎フレーム、バックバッファをすべて描き直すって意味でしょ?
それが普通です。
0548544
NGNGすびばせん。誤変換です。バックバッファの全更新ということです。
>>547
そういうもんなんですか? なんかめちゃくちゃ効率悪そうなんですが。
変更のある可能性のある領域だけを差分更新するほうがよくないですか?
プログラム的には全更新したほうが楽そうですけど。
0549デフォルトの名無しさん
NGNGメモリが人一倍働かないといけなくなります。
0550デフォルトの名無しさん
NGNG便利ですか?
(つまり、無理してもDirectXは憶えちまった方が便利でしょうか?)
ちなみに僕は趣味でRPGやSLGをちまちま作ろうと野望してるプログラム
初心者です。
(ようやくCの基礎の基礎がわかった。次はC++だーっ!)
(不躾な質問、すみすません)
0551デフォルトの名無しさん
NGNG>変更のある可能性のある領域だけを差分更新するほうがよくないですか?
いつの時代の話だ?(ワラ
0552デフォルトの名無しさん
NGNG背景が特に動かず、動き回るオブジェクトが少なければ差分更新は向いてるけど
今時のゲームのように画面中を大量のオブジェクトが
派手に動き回るような場合は全更新するしかないんじゃん?
0553544=548
NGNGたしかにそうですね。
背景のスクロールとか全画面エフェクトとか使うと、
差分更新なんて不可能ですもんね。やっぱ全画面更新しかないか。
そうか、自分の頭の中味が古かったのか。。。鬱だけど氏なない。
0554552
NGNG背景のスクロール程度なら差分更新でもいけそうだけど
プログラムが複雑になって大変そう。
BIO_100%のSuperDepth2-Finaltyなんかは確か
16ドット単位でしかハードウェア横スクロールができないPC-98で
8ドット単位横スクロールを実現してたんだけど、
表バッファと裏バッファを8ピクセルずらして描画しておいて、
裏バッファに2フレーム前の画面情報から消すべき箇所を背景で上書きして
新しいスプライトを描画して…、とかやってたらしい。
そんなプログラム考えたくないっす。
0555デフォルトの名無しさん
NGNGPCGを8*4ドットで分けてBG定義して4ドットスクロールさせてたな。
0556デフォルトの名無しさん
NGNGMSX2で8ドットより小さい単位のスクロールを実現している
スペースマンボウなんてクレイジーなゲームもありましたな。
0557デフォルトの名無しさん
NGNGCPU使用率を100%にしまうのはまずいですか?
0558デフォルトのみさきさん
NGNGよくわからないけど、嫌だって言っておくよ。
0559デフォルトの名無しさん
NGNG(瞬間的ならともかく)
な、なんで100%になるの?>557
どうせCDから音楽でも垂れ流しながら紙芝居の絵をめくるだけなんだろ?
プレイ中のユーザーの環境でも漁ろうとしてるのか?
0560デフォルトの名無しさん
NGNGおかげでオーバークロック機での動作が厳しくなって
フリーズすっぞーとかイヤ〜ンな苦情がきたりする。
0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNGOK。っていうか、出来る限り寝てて欲しい。
0563デフォルトの名無しさん
NGNGパフォーマンスに大した差はないってこと?
0564デフォルトの名無しさん
NGNGPentium以降は全更新が基本。
最近のゲームは3Dばっかりなんで、すでに全更新は常識。
3Dで差分更新ってすごく大変そう.....
0565デフォルトの名無しさん
NGNGはぁー。めちゃくちゃなデマが流れてるね。
某やね氏のHPでもみたのか?
>561
それが何を意味するのかわかっているの?
だいたいCPU使用率を100%って何で調べてんの?
sleep()入れたら100%いかなくなった?逝くでしょう。
だって無駄だもん。
0566デフォルトの名無しさん
NGNGsleep()でどうするんですの?
十秒ぐらい待ってみますのん?
せめてウェイトキューに入れるとか・・・
0567560
NGNGいや、やね氏のページは見てない。単に私の経験からなんですけども、
(Flipループなソフト公開したときに限って熱暴走の苦情が出る)
そういやちゃんと検証したことない。
正確なところ知ってるのなら教えてちょ。
0568デフォルトの名無しさん
NGNGそりゃシステムモニタでは。アレもあまり信用できないけど。
>sleep()入れたら100%いかなくなった?逝くでしょう。
他にめぼしいプロセスが動いてなければ、OSのカーネルが
CPUを休ませてくれるでしょ。そういう仕組みになってるし。
……って、そういうのとはまた違う話なのかしら。
なんかコンセンサス取ること希望。
0569名無しさん@お腹いっぱい。
NGNG>他にめぼしいプロセスが動いてなければ、OSのカーネルが
>CPUを休ませてくれるでしょ。そういう仕組みになってるし。
どこからの情報ですか?
出典を明らかにしてください
それが本当ならノートパソコンのパワーセーブは無駄な努力ですね
0570デフォルトの名無しさん
NGNG568もまた違う話かも、っていってるし、そんなに噛み付くなよ。
俺は出典出せないけど確かwin2kならそんな感じだったと思う。
それにしたって、常駐アプリとかあれば結局CPU使うんだから、
パワーセーブうんぬんは別の話だろ。
0571デフォルトの名無しさん
NGNG>>569
正しい挙動を教えてもらえませんか??
このまま見てると混乱してきそう・・・
0572デフォルトの名無しさん
NGNG>常駐アプリとかあれば結局CPU使うんだから、
パワーセーブの動作を分かってないでしょ?
0573デフォルトの名無しさん
NGNGそれとパワーセーブは全然別の話ではないでしょうか?
で、ゲームプログラムでSleepを使って無限ループさせるのはありだと思います。ただ、ちゃんと毎回PeekMessage()してイベントに反応してねってことで。
0574デフォルトの名無しさん
NGNGwhile(PeekMessage(...))
{
}
とかやってる奴だろ(藁
もっとCPUに優しいゲームループ作れよ。
やり方は教えないけど(w
0575デフォルトの名無しさん
NGNGwhile(PeekMessage(...))
{
}
とかやってる奴だろ(藁
もっとCPUに優しいゲームループ作れよ。
やり方は教えないけど(w
0576デフォルトの名無しさん
NGNG0577570
NGNGん、言い方が悪かったか?おれはCPUはどの道稼動するんだから
パワーセーブには意味があるっていいたかったんだが。
0578デフォルトの名無しさん
NGNGで、そのパワーセーブは何をやってるの?
CPUはどの道稼動してるんじゃないの?
0579デフォルトの名無しさん
NGNGCPUはいつも動いてるのになんで負荷かけると熱暴走するの、みたいな。
読んでないけど(ぉ
0580570
NGNGはあ?もしかしてCPUのパワーセーブの話じゃないのか?モニター?(笑)
それともスタンバイモードの別名?まあいいや、寝る。
0581561
NGNGひとつスレつくってそれが旗振り役になって
それまで眠るほうがいいかもしれないですね
0582デフォルトの名無しさん
NGNGちょっと時間がたってからきてみたり。
565でわかったようなこと逝ってるけど実は何もわかっていなかったり。
実際にみたことないんだよね。Sleep()いれてどうだったとか、この関数が
どんな動作をするものなのか。Win3.1の話をもってくるキチも出たりと。
ところでCPU使用率はやっぱりシステムモニタっていうプログラムなの?
だったら、Sleep()をプログラムにいれているらしい某やね氏のプログラムだって
プログラム実行中はずっと100%のままだよ。んでもってヘルプみてもさっぱりな
説明だからねぇ。結局Sleep()って何?ヘルプ読むと
「現在のスレッドを指定の時間だけ一時停止させます。」って書いてあるだけ
だしね。んで「このパラメーターがゼロのときは、現在のスレッドのタイム
スライスの残りが優先順位の同じ他の実行待ちスレッドに譲られます。以下略」
って何がなんだかさっぱりわけがわからない説明だよね。
んじゃSleep()に0の他に1とか2とかを入れたときはただ一時停止するだけ?
ゼロを入れたときの他の優先順位って何?わからないです?って、
それじゃただの無駄なんだよ。60Hzで動いていると考えて、ループ毎にSleep()
いれると16分の1も無駄に損してるんだし。せっかくアセンブラ使って頑張っても
こんな無駄があるんじゃもったいないじゃん。
ついでにいうとただ単にDirectX初期化して
メインループに入った時点でCPU使用率は100%になってんよ。
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG>いれると16分の1も無駄に損してるんだし。
すまん。Sleep()に1いれたとき。
0585デフォルトの名無しさん
NGNGそうだよ。だってどこにも書いてないもん。
0586デフォルトの名無しさん
NGNGSleep(0)なら再ディスパッチを行うだけでしょ。他に実行可能のスレッドが
なければ、そのまま帰ってくるから、100%になるわな。
Sleep(1)ならタイマを作ってタイマTreeに突っ込んでスレッドを眠らせて
再ディスパッチ。でタイムスライサがタイマTreeを見てExpireしたら
さっきのスレッドを実行可能状態ににして再ディスパッチ。
実行可能スレッドのうちさっきのスレッドのプライオリティが一番高かったら
さっきのスレッドのSleepファンクションが返ってくる。
どのスレッドも実行可能じゃないならOSのIdleコードが実行される。
OSのIdleコードにはOSとHALによってはhltが実行されるから消費電力は
若干軽減される。
0587デフォルトの名無しさん
NGNG>メインループに入った時点でCPU使用率は100%になってんよ。
そりゃメインループがおかしいです。
0588デフォルトの名無しさん
NGNGというか、みんなして何の議論をしているのかわからん。、
0589デフォルトの名無しさん
NGNGとなれば、FlipやWaitForVerticalBlankの実装がどうなってるかというと、
燃え上が〜れ〜〜燃え上が〜れ〜〜燃え上が〜れ〜CPU〜♪ちゅーか
ちょっと想像したくないような実装になってるんではあるまいか、と
愚考するのでございますが……。
0590デフォルトの名無しさん
NGNG熱暴走するゲームの作り方じゃないの?
0591デフォルトの名無しさん
NGNGつまり、平たく言うとSleep()使ったときと、
使わないときとではどう違うのでしょうか?んで、使わないときは
どんな障害があるのでしょうか?
>589
お前みたいにわけわけ分からんこというから混乱するんじゃ。
結局わからない奴の言うことはいつもそれだ。認識が俺と変わらん。
ちょっと黙っといて586のお言葉をまとうや。
0592586
NGNG結局すぐ返ってくるから、100%にはなってしまう。Sleep(1)のほうが
ちょっとIdleが走るからちょっと冷えるかなという程度。
589の指摘はあながち、的外れではない。結局ハードからの帰線割り込みを
とれない限りポーリングするしかない。画面書き換えが煩雑なアクション
ゲームの場合は100%になるのはいたしかたないのでは?
アドベンチャーゲームで100%になるのはちょっとインプリ変じゃない?
でもほんとに帰線割り込みとれないの?ちょっと調べてみるわ。
0593デフォルトの名無しさん
NGNGそんなこたあな、そのリソースとは別。ただ単に実行プログラムに
データを埋め込めるだけと思ってくれや。
0594デフォルトの名無しさん
NGNG0595586
NGNGただ、ポーリングして待つのはもったいないから、市販のゲーム
なんかはバックバッファ他にもう一個バッファを作って
待ってる間に書いておくんじゃないか?
まあ、イメージ的にはトリプルバッファに書いている間にちょこちょこと
帰線を調べて帰線期間中になったらバックバッファとフロントバッファを
スワップ。フロントバッファは次のトリプルバッファのキューに
入れる。こんな風じゃない?
0596デフォルトの名無しさん
NGNGうーむ。つまり「あまり気にせんでええ」ということしょうか?
>ちょっと調べてみるわ。
いや、多分無理どすえ。
たびたび詳しい解説ありがとうございました。
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNGキミ、実はなんにも分かってないだろ。
0599デフォルトの名無しさん
NGNGGetVerticalBlankStatusとちょこっとのidleとのループに
置き換えるのってどうなんかな。
0600561
NGNGguruguru を調べてみたのですが
sleep はあまり推奨されていないような感じで
Mutex, WaitForSingleObject のほうがよさそうな感じなんですが
そのほうがいいのでしょうか?
私は unix 使っていることが多いので Win32 のことはあまりわかりません。
>>ぐるぐる
http://developer.grup.com.tr/language/visualc/vcu12fi.htm
0601586
NGNGドライバに行っちゃうみたいだね。OS側が何やってるかはよーわからんが
とりあえず、ディスプレイドライバにBreakPoint張っとくと止まる。
で、DDKにあるサンプルのディスプレイドライバ(3DlabのPermedia2)を
見るみると。おーー回っとる回っとる。DDKもってる人はdd.cをみてね。
whileが3つくらい連続してる部分があるから。
でもこれはディスプレイドライバのインプリ次第だね。ハードが割り込みを
発生するように作ってあって、ドライバがちゃんと作ってあれば
WaitForVerticalBlankも100%にならずにちゃんと他の処理に実行を移すことは
可能。でもそういう風につくってあるドライバがあるとは思えない。
だってそういうふうにちゃんと作るとまず間違いなくベンチマークの
成績は下がるからね。
0602デフォルトの名無しさん
NGNG「Sleep()を使わないと熱暴走」するっていってるわけ?
1ループ毎でやってることが同じなわけだから熱暴走なんか関係
ないと考えちゃうよ。
んで、FlipやWaitForVerticalBlankが駄目だといっているの?
家のPCではこの関数が実行されたときにタイムとっても
0だよ。ちょっと考えてみるとこの命令(Flipなど)
って、もしかしてビデオボードに
「垂直同期が来たらフリップしてね」って命令を送るだけじゃないの?
んで、この命令からバックバッファへの描きこみはストップ。
プログラムは何事も無かったように進む。
んで、フリップが行われ、描きこみ可能になってから
ビデオボードはそれまで貯まっていた命令を実行。
ってんじゃないの?(ちがったらすまん)
結局、Sleep()かましてもシステムモニタの
結果は100%なのにどうやって判断しているわけ?
0603デフォルトの名無しさん
NGNG垂直帰線は無視すれば、一番CPUに優しそうですね。
0604デフォルトの名無しさん
NGNGやっぱその辺はビデオカードとかドライバに依るんじゃないでしょうか。
うちだとFlip使ったら次の垂直帰線まで完全にストップしますけど。
んでも、Sleep混ぜても100%? 他のスレッド動いてないのに?
それはいくらなんでもないだろうって思うんだけどなあ。
0605デフォルトの名無しさん
NGNGあるんだけどね。きゃつら、スーパーπ100万桁通った程度で
自分のマシンにゃ問題ないような態度取ってくるんだもん。
一応あたしの配布物では、ドキュメントにその辺注意書きしてる。
0606>602
NGNGこれの意味するところがよく分からんのですが・・・。
0607586
NGNGとりあえず、簡単な質問には答えておきましょう。
>>599
CPU負荷を減らすといった目的では有効でしょう。実際にWaitForVerticalBlank
で猛スピードでまわってるドライバもあることですし。でもちょっと取りこぼしが
怖いかな。Sleepって実際にその時間きっちりに返ってくることは保証されてない
ですからね。
>>600
ただ単に一定時間待つだけならSleepでいいです。全く問題点はありません。
WaitForXXXなどのシンクロ用のファンクションを使えっていうのは、
たとえば他のスレッドがフラグを立てるのを待つようなときに、
Sleep->Check->Sleepなんかでやるのはよくないよという意味でしょう。
0608デフォルトの名無しさん
NGNG例えば、ScriptReaderとかいうスクリプトを解析して
実行するクラスを作ります。
スクリプトには、noキャラを縦にx歩、横にy歩歩かせる、
MOVE no x y
とか言う風に書かれています。
しかし、これを解析して実行するときに、その対象のキャラの
ポインタやマップのポインタを取ってこなくてはなりません。
そんなとき、必要なキャラやメソッドのポインタをstaticで
全て宣言して操作するという方法は危険でしょうか?
個人的にはstaticのイメージがあんまり良くないのでできれば
使いたくありません。
が、それしか思い付かないのでもしその方法以外に良い方法が
ありましたら教えてください。
0609OOP(??)ビギナー
NGNGScriptReaderクラスを生成する時にマップやキャラクタークラスへの
ポインタを渡すとか。
class SciprReader
{
private Map *map;
private Character *chara;
ScriptReader( Map *_map, Character *_chara )
{
}
}
もっともっといい方法があると思います。
0610デフォルトの名無しさん
NGNGキャラをオブジェクトにして、移動するメソッドがあったら
いいんじゃない?
0611デフォルトの名無しさん
NGNGエンジンはすべてのキャラクタを管理する。
って感じで作るなあ、俺は。
0612608
NGNGさっそくスクリプトを解析するパーサークラス(CParser)、
解析したスクリプトを実行するクラス(CScript)を作りました。
今はシーンのコンストラクタでマップ、キャラの生成と初期化を
行なってます。
エンジンで全てキャラを管理するということは、マップもシーンも
エンジンに管理させるということになるのでしょうか?
>610
キャラオブジェクトの移動メソッドをstaticにしてスクリプトエンジン
で動かすって感じでしょか?
今のところそのような感じの方法で行こうかと思ってます。
>609
ありがとうございます。
それでやっていたんですが、渡す必要な情報が多くなってきて
引数がかなり増えてしまいました。
もうちょっと考えてみます。
現在の構成を簡単に言うと、
ゲームシーン生成→マップ、キャラ生成→各処理
っていう感じです。
0613600
NGNGあ、なるほどです。理解できました、ありがとうございます。
ちゃんと読んでいればわかる話なんですね。ごめんなさい。(汗)
あの、、すみませんが論点が多くなって混乱ぎみなので
もう少し質問していいでしょうか?
メッセージループはスレッドタイムまでぐるぐる回るので
sleep() でスレッドタイムを他に譲ることが有効、
それとも、メッセージループで DispatchMessage した時点で
スレッドタイムは終了するので必要ないのでしょうか?
メッセージループを切り離してゲームを独自スレッドで
処理するときは sleep() を使わないとぐるぐる回ってしまいますよね。
タイマー割り込みで同期したいところですけど、タイマーの割り込み
分解能が低いのでスレッドの割り当て時間に頼るほかないのでしょうか。
あと WaitForVerticalBlank の問題。
WaitForVerticalBlank で 100% ぐるぐる回ってるようなドライバは
スレッドでフレッシュレートのタイミング直前まで sleep で眠って
早めに起きて WaitForVerticalBlank すると無駄が少なくなるんでしょうか。
そうなると精度の悪い割り込みをしてるようなものですし
DirectX8 ではバックバッファと Flip タイミング処理がまとめられて
います。あまり考えないほうがいいということでしょうか?
WaitForVerticalBlank で 100% CPU 消費してもしなくても、環境依存
ということで。。
0614586
NGNGスレッドのコンテキストの切り替えはGetMessageの時に行われるはず。
GetMessageでメッセージキュー上に何もメッセージがない場合は
他のスレッドへディスパッチされます。で、次のメッセージがくるまで
そのスレッドは実行されることがないので、ゲームでは困ってしまうから
PeekMessageを替わりに使うわけです。PeekMessageを使ったメッセージループ
はうまく作らないとすぐぐるぐる回ってしまいます。そこで必要ならば
Sleepを実行して他のスレッドにディスパッチしたり、Idleを実行して
CPUを冷やすわけです。ただ冷やすという目的で使う意味はほとんどないとは思います。
>>スレッドでフレッシュレートのタイミング直前まで sleep で眠って
>>早めに起きて WaitForVerticalBlank すると無駄が少なくなるんでしょうか。
前にも書きましたとおり、Sleepで寝ればIdleが実行される確立が高くなるため
CPUの負荷を減らすという目的では有効です。ただWaitForVerticalBlank で
回ることが無駄か?というとそういうわけではないですよね。
私個人の意見では、ハードの性能とドライバを信じるしかないということです。
WaitForVerticalBlankで回ってしまうんであれば、それはそれで仕方がない
ことだと思います。小手先のテクニックで回避してもあまり効果はないでしょう。
ただ、WaitForVerticalBlankとFlipのどちらを使えばいいのかと考えるなら
優れたカードとドライバであれば、Flipコマンドをキューにいれて、すぐさま
返ってきてバックバッファへの書き込みは継続できるはずですので
そちらを使うべきでしょう。
0615586
NGNG多分常識でしょうし、私はゲームプログラミングからは10年ほど前に
引退した身ですので穴はたくさんあるでしょう。皆さんで指摘しましょう。
1.とりあえずPeekMessageのループで回っておく。でちゃんとOSのメッセージ
は処理しましょう。逝ったきり返れないゲームは嫌われます。
2.キャラクタのオブジェクトにはつぎに動けるまでのTickCountを持たせる。
で、そのTickCountをキーにBTreeにしておき、ソート順で取り出せたり、
挿入できるようにしておく。
3.ループの中で以前移動をおこなった時点でのTickCountと現時点での
TickCountの差分を取り、その差分よりキャラクタのオブジェクト中にある
移動できるまでのTickCountが小さかったらキャラクタを移動。ソートされて
いるので、すべてをスキャンする必要はない。
新たなTickCountを補正して書き込み、Treeの中へ挿入。
4.背景、キャラクタオブジェクトをバックバッファへ描画。
フリップ。キャラクタの移動へ戻る。
こんな風にすればリフレッシュレートに関係なくキャラクタのスピードは
一定で、キャラごとに速度を変えることも出来ますし、
マシンのスピードが上がれば、キャラのスピードは変わらずなめらかに
動くようになります。優れたドライバであれば垂直同期を待たずに
キャラの移動ルーチンが実行できるのでスピードアップします。
垂直同期をキーにスピードを調整するのは好ましくありません。
0616586
NGNGでいいんじゃないでしょうか。
もし処理が軽くて、1垂直同期間で処理が終わることが確実で、
WaitForVerticalBlankもFlipも回ってしまうハードウェアを使っている。
でもCPU100%にしたくない。
こんな場合は、DirectDrawにGetScanLineというAPIがありますので
これが使えないでしょうか?
まずゲームが起動した時点で、ScanLineが10位になるまで待って、
Sleep(10)なりを発行して返ってきた時点でもう一度ScanLineを
取得してSleep(10)でどれくらいLineが描画されたか記録しておく。
キャラクタの描画が終わった時点でGetScanLineを実行して現在何ライン目を
描画してるかを取得し、全ラインを描画するまでの時間を起動時に
取得した値から計算してそれより、少し小さめな値でSleepで待つ。
Sleepから帰ってきたらFlipなりWaitForVerticalBlankを実行。
もし垂直帰線を取りこぼすようならSleepの値を補正して少しづつ
小さな値にするようにする。
こうすれば、垂直帰線を待つほとんどの時間を他のスレッドやIdle
スレッドに渡すことができますし、取りこぼしもかなりの割合で
防ぐことが出来ると思います。
実際に動くかどうかは試していませんので、参考までに。
0617613
NGNGありがとうございます。浅学者ですので大変勉強になります。
614-616 読ませていただきました。
ゲームを全力で処理するタイプなんですね。
フリップするときに処理が終わり、待つ状態になるのでしょうか。
615 の手法でちょっと入力のタイミングが疑問になりました。
入力はどのような手法を取られるのかわからないので仮定なのですが
シングルスレッドで全力でポーリングするとすると処理の程度により
入力回数が変わってきませんでしょうか。
描画処理が重いとシングルスレッドでは入力をポーリングする
時間が少なくなり、操作が重く感じるような。。うーん。。。
(CPUが高速なら、問題ないと思います)
もしかして誤読してたり、 DirectInput のヘルプを読めば解決できるんでしょうか。
すくなくとも私の知識はかなり心もとないので勉強してきます。(^-^;)
0618デフォルトの名無しさん
NGNG正確さに欠ける。
指定した時間より絶対に遅くなる。(特にSleep時間が短いとき)
所詮Windowsはゲームには向かないっていうか〜
そんなことよりDirectX用の専用OSを作ってWindowsと切りかえられるようにしろよ。
もちろんシングルタスクのOS。一応DirectXAPIで擬似スレッド(Windowsも擬似だけど)は作れるようにしとく。
メモリも仮想記憶はなしの直接アドレッシング。
完全なゲームOSって感じ〜。
だれかゲイチュにメールして頼んでよ〜。
0619ゲイチュ
NGNGよしわかった貴様にはXBoxをくれてやる
0620ゲイチュ
NGNGよしわかった貴様にはとっても素敵でナイスなXBoxをくれてやる
0621デフォルトの名無しさん
NGNGそれがX-BOXになるんじゃないか?
0622デフォルトの名無しさん
NGNG音声やら映像やら扱う機会増えたしぃ。
0623ゲイシ
NGNGよしわかった貴様にはとっても素敵でナイスなWinCEをくれてやる
(つかドリキャス)
0624デフォルトの名無しさん
NGNG(System.iniの[386Enh]でMinTimeslice=3とかすると変更可能)
なんでこれでFlipループなゲームとか動くんだろ?
0625624
NGNGCPUキャッシュがクリアされるなんてイヤな話も耳にしたのだけれど
真相はタコに、いや、イカに? 誰か教えてちょ。
0626デフォルトの名無しさん
NGNG20msごとにタスクスイッチが起こるっていっても、
そのゲーム以外にCPUパワーを必要とするアプリを裏で動かしてなければ
すぐ戻ってくるだろ。
0627デフォルトの名無しさん
NGNG戻ってくるのは最低20ms後になるんじゃないでしょうか。
0628626
NGNGでも普通リアルタイムゲームやってる裏でMP3エンコードしたりするか?
0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNG誰がどんな勘違いしてるのか具体的に示してもらえません?
なんつーか、前から(って2度目か)かなり不快なんだけど。
0631デフォルトの名無しさん
NGNGようわからんけど
やっぱり、「Sleep()いれないと熱暴走する」ってところじゃん?
これどう考えても変だよ。だいたいやつのアプリってなんで
アドベンチャーゲームごときが30FPSで動いてるの?だっせぇ。
って感じだからじゃん。
要するにただ叩きたいだけってところも入ってるんだよ。
0632デフォルトの名無しさん
NGNG>やっぱり、「Sleep()いれないと熱暴走する」ってところじゃん?
>これどう考えても変だよ。
どこが変なの? Windowsはアイドル時にCPU休ませるように動いてるから、
負荷かけると熱くなって飛びやすくなるってのは既に説明されてますけど。
(DOSは常にぶん回し状態だから熱暴走しやすいってのも
自作やってる人にはジョーシキだよな)
それとも、そもそもマルチタスクOSの仕組み理解してないとか?
>だいたいやつのアプリってなんで
>アドベンチャーゲームごときが30FPSで動いてるの?だっせぇ。
どこがダサいの? PCは知らんけどコンシューマじゃ当たり前に
見かけるし、特に変だとは思わないけど。
>要するにただ叩きたいだけってところも入ってるんだよ。
他人事みたいに言ってるけど、要するにキミのことなんだね。
0633632
NGNG熱暴走しやすいマシンの存在を知らないのかも知れないな。
0634デフォルトの名無しさん
NGNGあーでたねぇ。
勝手にCPUクロック弄って不安定にしてる馬鹿とかも
サポートしてるわけね。人がいいね。だいたいそれで
止まっちまうのって作っている俺らのせいなの?馬鹿じゃねぇの。
サポートしてらんねぇよ。結局、対象機種の限定が甘いから
低スペックなマシンと高スペックのマシンのどっちにとっても
しょぼくしか仕上がらないんだよ。
あと、30FPS?やっぱりだっせぇ。アドベンチャーゲームだよ。
わかってるの?それにあの組み方じゃどんなに優れたマシンでも
コマ落ち必須に組んであるでしょ?それがだせぇ。
コンシューマで組んであるゲームは30FPSで動いていても
その分派手だけど、奴のはただしょぼいだけ。
だいたいPCで30FPSだと画面が汚いの気になるでしょ。
もう一度いうとアドベンチャーゲームなの。わかる?
画面が綺麗なら綺麗なほどいいのはいうまでもないでしょ。
なんでゲームスピードの方なんて優先してんの?優先するべきは
見た目でしょう。ユーザーの目に綺麗に見えなきゃ意味が無いの。
0635629
NGNG俺が勘違いって言ったのは
>>624の
>Win98系OSのタイムスライスの頻度、デフォルトでは20msなんだってさ。
>なんでこれでFlipループなゲームとか動くんだろ?
についてだよ。
やねうらおも大ヴァカなこと抜かしてたよな。
要約すると「タイムスライスの頻度が20msだったらどんなゲームでも50fps以上出るわけがない、だからタイムスライスは1msで発生しているのだ。」って話。
どこにあったか忘れたけど以前RSP叩きスレで叩かれてたな。
624の言ってることは基本的にそれと一緒。
20msごとに再ディスパッチが行われても他に特に処理すべきプロセスがなければCPU使用権は一瞬でゲームの方に戻ってくるんだよ。そうでなきゃ1つのプロセスがCPUを100%使用したりできるわけないだろ?
2度目って何のことかわからないが、俺がこのスレでこの話を書いたのは始めてだ。
で、それとは別で
>>632
バカか?
CPU使用率が100%になっただけで熱暴走するマシンを作る方が悪いんだろ?
じゃあそういうマシンを組む奴は、MP3エンコーダやらDVD2AVIみたいなCPU使用率100%に達させるようなアプリは使わないわけか? 何のためのオーバークロック?
オーバークロックしてCPU使用率50%以下で動かすマシンと、定格クロックでCPU使用率100%まで使うマシン、どっちが速いんでしょうね?(藁
まあ俺は無限ループ+sleep()使わずに、少しでも環境に優しいマルチメディアタイマ使うけどな。
0636629
NGNGhttp://mentai.2ch.net/test/read.cgi?bbs=prog&key=966542861
0637デフォルトの名無しさん
NGNGできるなら対処するよ。
ユーザサポートに来るバカ電話が減るから。
0638デフォルトの名無しさん
NGNG0639デフォルトの名無しさん
NGNGそれだ!
ユーザーサポートの対応は俺の仕事じゃねーから別にいいな。
0640デフォルトの名無しさん
NGNG御意。まあ、629は市販ソフト開発者の苦労を知らないんだろうな。
0641デフォルトの名無しさん
NGNG30fps云々、元ネタが分からんので一体何に怒ってるのか分からん。
教えてくれ。このスレの皆がやねうらおストーカーだと思うんじゃないぞ。
0642>635
NGNGオーバークロックのためのオーバークロックに決まってるじゃない(笑)。
またの名をベンチマークのためのオーバークロック。
ま、世間のなんちゃってオーバークロッカーを一度観察してみなさいって。
彼ら、3DMark2000が1回通ればそれでよしみたいなとこがあるんだけど
当然ながらゲームはそういうベンチマークソフトより
ずっと長時間動かすわけですよ。you see?
0643デフォルトの名無しさん
NGNGオーバークロッカーのサポートどうするなんて
くだらない話はどうでもいいけど。
DirectX8になってからずいぶん構造が変わっちゃたじゃん。
んで、MSもしょぼいビデオボードはもう知らん。としたわけ
だけどこれから対象機種ってどのくらいにする?ってこと
を聞きたいんだけど、どうやって調べればいいですかね?
2Dオンリーで組む必要ってまだあるんですかね?
イース2エタとかFF8ってなんか結構売れましたよね。
3Dエフェクト使ってるし。そりゃサポート態勢なんかも
違うのはわかるけど、たくさん売るには一体どのくらいのスペックが
基準なんでしょうね?
0644デフォルトの名無しさん
NGNG「スペックどのくらいを対象にしてゲーム作ります?」
っていう質問なんですが?どうでしょうか?
もちろん作るものによって違うと思いますが、どういうもの
作るならどうとかこういうもの作るならこうとか。あるとうれしいです。
0645デフォルトの名無しさん
NGNG3DMark2000が1回しか通らない(2回目は通らない)環境で常用すんな。
そんな奴らサポートしてたらキリがないだろ。
夏場に1時間MP3エンコードしてから使え。
0646642
NGNG0647デフォルトの名無しさん
NGNG昔はBASICの入門書みたいなのでいろいろゲームが載ってる本があったけど最近みかけないので・・。
0648デフォルトの名無しさん
NGNGこーゆうの理由にしてへんてこなマシンまでサポートしようとする
奴ってよくいるけどさぁ。それいつまでやるき?
もしかしていままでグライド専用へぼカードのバンシーとかも
苦労してサポートしてたわけ?垂直同期がとれないのまであるん
だってね。ご苦労様。でもさぁ、そんなマシンサポートして
苦情電話が減るのはわかったけど。そんなところに力入れてて
そのゲームって苦労の割に本当に売れてるの?
イース2エタ−ナルってどうやらバンシーだと正常に動かないらしいね。
だけど結構売れたよね。何を基準にそんなへぼマシンなんて
サポートしてるのか聞いてみたいけどね。
最終的にはDIBなんちゃって関数を使ってDirectXを使わないように
なるの?それだと今度はWin2000でマシンによっては動作へぼへぼ
だってね。でもDirectX9からは2000おんりーだから、
やっぱりへぼへぼなものができるんだね。さて、これからどうするの?
0649デフォルトの名無しさん
NGNG遊びのレシピっていう本があったけど、もう3年くらい前の本です。
ボーランド言語向けに書かれています。
どうでもいいけど著者の奥さんゲーメストの常連投稿者だった。
0650デフォルトの名無しさん
NGNGそんなもん商業上の判断ってやつだろ。
キミはキミのポリシーで最新の環境向けに作ってりゃそれでいいじゃん。
とりあえず、WindowsMeとWindows2000に載ってるのはDirectX7だから
うちの作るソフトはしばらくの間DirectX7前提になるはずだ。
0651650
NGNGWindows95/98の頃にPCを購入して、今もゲームを遊んでるような連中は
既にDirectXの最新版をインストールする程度のことは
できるようになっているだろうという計算もある。
まあ、これがオレの会社の判断だ。
0652デフォルトの名無しさん
NGNGビデオボードの対象はいくら?
0653デフォルトの名無しさん
NGNGパレットをいぢるのが楽そうですけど、16bit専用で作ってるからやりたくないし、かといってリアルタイムで色調変換するのは重すぎですよね。
0654デフォルトの名無しさん
NGNGDirectX8でなきゃ使えない機能を使う必要がある場合のみ、8で開発すればいい。
極端な話、2DゲームならDirectX3でもかまわないはず。
0655名無しさんi486
NGNG昔imgicoというソフトを使ってたのですが
最新バージョンでは何故か上手く行ってくれません。
0656デフォルトの名無しさん
NGNG遊びのレシピ探してみます。(^^)
古本屋かネットオークションあたりを。
0657デフォルトの名無しさん
NGNGDirect3Dでマップの上に半透明ポリゴンを載せる。
冗談のフリして実は現実的かもしんない回答。
0658650
NGNGRiva128からTNTあたりかな。
GeForce2MXにするのはフリーソフトや同人ソフトでもない限り
早すぎっぽいですな。
0659名無しでGO!
NGNG0660デフォルトの名無しさん
NGNGまだ、4MBのもんをサポートするのか?
4MBの次って8MBってあまり聞かないから16MBだよね。
これってすごく違うじゃん?だからやっぱり4MB向けに作る
ってことだよね?16MBぐらいいけばプレステぐらいのことできるのに、
うーん、やっぱりこの変が壁だなぁ。やっぱり4MBのもの使ってる
奴って多いのかなぁ?早く捨てて欲しいなぁ。
Riva128は2D描画は化け物みたいに速かったけどね。
0661デフォルトの名無しさん
NGNGhttp://www.gdmag.com/ 逝っとけ。雑誌。
0662デフォルトの名無しさん
NGNGドラクエみたいにするだけなら、別に重くないだろ。
単になんパターンかマップチップ用意しておいて、
変更のタイミングになったら表示するチップを摩り替えるだけ。
画面全体に色調変更掛ける必要ない。
0663デフォルトの名無しさん
NGNGどこで売ってます?
0664デフォルトの名無しさん
NGNG速度が問題じゃないなら、半透明ポリを乗せる方が画面がきれいに変化させられる
じゃないですか。どっちもやってみるのが良いんじゃないかな。
0665661
NGNGgdmag.com でバックナンバーも取り寄せ可能。
簡単に支払いを済ますにはクレジットカードが必要。
秋葉原のザ・コンピュータ館の輸入雑誌のコーナーで
以前見かけたことがある。探してみて。ただし、一冊1500円は
したはずなので覚悟が必要。本来は $5.95 だ。
gdmag.com で年間購読したほうが圧倒的に安いので、
迷わず Subscribe を選ぼう。
0666デフォルトの名無しさん
NGNGだから sage なのか。
0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNGバックナンバーはCD-ROM版がおとく。
そろそろNo.3も出そうなので、とりあえず年間購読のみが吉。
0669デフォルトの名無しさん
NGNG購入すると良い。しかし、良い記事が多いのでCD-ROM版を
いきなり購入しても絶対に損はしないだろう。
0670デフォルトの名無しさん
NGNGつーか、日本まで送ってもらうとなかなかのお値段だね
0671653
NGNG>>657 >>659 >>662 >>664
あらかじめ時間毎のパターンを用意しておく方法も考えましたけど、
結構パターン数が多いんで、メモリ喰いそうだし、フェーディングみたいなこともしたいので、リアルタイムに色調変換かけることにしました。
さすがに重いですね。FPSが10くらい落ちました。
とりあえず奇麗に動いてるし、最近のマシンはパワーあるからこれでも問題ないかな。画面解像度も320×240程度だし(汗
0672デフォルトの名無しさん
NGNGはっきり言ってもうDirectXなんて使いたくねーってのが本音です。
というわけでDirectXにかわる技術でおすすめの物ってどんなものがありますか?
0673デフォルトの名無しさん
NGNG0674デフォルトの名無しさん
NGNGはぁ?なんでこの程度でMS批判なんてしてるの?
ずいぶん楽になったじゃん。
初心者でもとっかかりやすくなってるじゃん。
プロだったらもうちょっと意地をみせろよ。
8になってからの批判って、大抵は前のバージョンとの
互換性がどうこうだと思うけど。こんなの大したことないじゃん。
MSに限らずよくあることだよ。だいたい実装レベルでの互換性を
まじめに要求するなよ。どうせ無理なんだから。
互換性の問題をはずすと8になってようやく自然な形になって
くれた。と言う感じだけどな。
0675デフォルトの名無しさん
NGNGOpenGLの世界へようこそ!(^^)
0676デフォルトの名無しさん
NGNG娯楽分野はこうでなくちゃ。
0677デフォルトの名無しさん
NGNG2D をないがしろにされている気がしてちょっと嫌。
0678デフォルトの名無しさん
NGNGいや、それは別にいいだろ?
だって、ちょっと3Dの機能使っちまった時点でちょっとも糞も無いし。
2DオンリーならDirectX5で十分。あえて6とか7とか8にする意味が無い。
正常に動いてるものにわざわざバグいれたってしょうがね−だろ。
ノートPCのサポートのためにDirectX自体使ってないようなところもある
ぐらいなんだから、方針としては2Dは別にいいんじゃないかなってとこ
じゃん。だって2Dオンリーで8に何を求める?
0679デフォルトの名無しさん
NGNGフルカラーでも8bitパレットが使えればいいのにね。
0680デフォルトの名無しさん
NGNGはいはい
画面周りだけの話で済むならそれで十分結構なんじゃございませんか。
0681デフォルトの名無しさん
NGNGん?画面モードが16bit以上でも、パレット処理を
したい絵だけは8bitサーフェス上に置けば済むじゃん
そういう話じゃないのか?
0682679
NGNGそうなんですか。当方DirectXはよく知らんもんで勘違いしてましたスマソ。
0683デフォルトの名無しさん
NGNGえ?そんなことできるの?
やっぱり、ハードウェアでサポートしてなきゃ駄目なんじゃない?
そこの辺はどうなってますでしょうか?
0684デフォルトの名無しさん
NGNG泣きが入ると思うが。
0685デフォルトの名無しさん
NGNGである必要があるかどうかは別にして
ハードウェアパレットをサポートしてるカードもあるのか?
0686681
NGNGHEL使いなら別に平気なんだけどね
D3DHALドライバ限定の話ならやっぱ辛いでしょ
0687デフォルトの名無しさん
NGNG>HEL〜以下略
HELなんて遅くて使い物にならねーよ。無いのといっしょ。
むしろエラーでも返して素直に止まってくれた方がよっぽどマシだろ?
0688デフォルトの名無しさん
NGNGHELに依存しないビデオカードって少なくないか?
ゲーム用のビデオカードならともかく普通のPCのビデオカードなら少なからずHELに頼っていると思うが・・・
0689デフォルトの名無しさん
NGNGそりゃ、サウンドなどの描画まわり以外の部分なら別だが
普通HEL使うと格段に遅くなるので、まず使ってないように
思うのだが。使ってるとしたら例えば何?
0690デフォルトの名無しさん
NGNGジオメトリ、ライティング演算全般
0691デフォルトの名無しさん
NGNGこれHELっていうの?
ライティングなんてハードウェアでサポートしてるもんなんてあるの?
俺はHELって「普通はハードでやるんだけどこのマシンには
なんだか機能が付いてないみたいだね、んじゃしょうがねーから
こっちでやるわ」っていうものだと思ってたんだけど。
0692ボログラマー
NGNG>これHELっていうの?
言う。当然。
>ハードウェアでサポートしてるもんなんてあるの
マジで聞いてるのか?いつの時代からタイムトリップしてきたんだ?
アンタはshi3zの屁本から読んだ方がいいよ、マジで。
0693デフォルトの名無しさん
NGNG嘘?本当?HELっていうの?
俺はてっきりMMXなんとかとかRGBなんとかとか
RAMPなんとかっていうもののことかと思ったよ。
それとライティングの計算ってハードウェアだったんだ。
DirectXに丸投げしてたからわからなかったよ。
てっきりDirectXの方でやってくれてるのかと思ったよ。
だって、ハードウェアの機能調べるところでライトってないじゃん。
もしかして、建物の影になったところは光が届かないとかゆうことも
やってくれるの?
0694デフォルトの名無しさん
NGNG0695ボログラマー
NGNG「教えて君」か、貴様は。ちょっとくらいは自分で調べろ。
検索単語は、「GeForce」「RADEON」それと694の「TnL」辺りか?
トランスレートもライティングも昔は対応ハードが無かったから、HELだっただけ。
シャドウイングはしらん。DCに乗っかってるPowerVR2はやってくれる、と聞いたが・・・。
どうでも良いのでsage。
0696デフォルトの名無しさん
NGNG分りません、詳しい方教えていただけませんか?
各タイヤで路面と当り判定や抵抗を取ってそれを合成した物を車の挙動と
するのカナとも思いましたが、よくわかりませんでした。
説明のあるホームページでもかまいませんので教えていただけませんでしょうか。
0697デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNGそこまでやってるレースゲームは少ないよ。
もうすこし大雑把でいいんじゃない?
0700名無しさんi486
NGNG0701デフォルトの名無しさん
NGNGreference rasterizer でしょ
0702デフォルトの名無しさん
NGNG定期age
0703デフォルトの名無しさん
NGNG0704デフォルトの名無しさん
NGNG誤解が誤解を生んで意思の疎通ができてないっつーか。
HELはトランスフォーム(レートじゃねぇよ)&ライティングもラスタライズも全部ソフトウェア。
HALはTLはソフトウェアだがラスタライズはハードウェア。
TnLHALはTLもラスタライズもハードウェア。
ただしTnLHALって言葉はDirectX8では無くなっていて、HALにまとまってますな。
HELとかHALとかはそもそもMSが決めたデバイスの種別で、
ジオメトリがCPU処理だろうがハードウェア処理だろうが、
D3Dの定めたハードウェラスタライザのさえ実装していればとにかくHAL。
HELなら全部ソフトウェア。
HALの実装方法の1つとして”ジオメトリはCPU処理”ってのがあるんであって、
”ジオメトリはHELで処理”なんて言葉はちょっと意味がおかしい。
いや、まー言いたいことはわかるんだけどね。
言葉の使い方で誤解生んでるんじゃないかと思ったので。
でもジオメトリを実装してるハードがあることぐらいは知っとけ>>691
0705デフォルトの名無しさん
NGNG解説サンクス。
と、いうことはライティングの計算式って
ハードにやらせるにはDirectXのものを使うしかないってこと?
(いやまあ、いまのところ自分でやる気は無いけどさ)
0706デフォルトの名無しさん
NGNG人を歩かせたいのですがXZ平面での移動量と標高データで
高さをわりだして位置を決めるやり方だと高い山に登るとき
足が速くなってしまうのですが、他に何かいいやり方って
ないでしょうか?ちなみにポリゴンの頂点はXZ平面でみると
等間隔に並べてあります。Yの標高とはその頂点の高さを表して
います。
0707デフォルトの名無しさん
NGNG同じコトあちこちで聞かないようにね
http://piza.2ch.net/test/read.cgi?bbs=tech&key=981706268&st=31&to=31&nofirst=true
0708デフォルトの名無しさん
NGNGおや?この文章(706)をかいたのは俺なのだが
ここにコピペをしたのは俺じゃないぞ。
まあ、でも向こうでは終了をされてしまったので
こっちでもお願いします。向こうでは高校数学からやり直せって
言われましたが、これ結構難しいと思います。あのFF9だって
これができずに高い山を歩いたときは倍速ぐらいで歩いてましたし。
というわけでよろしくお願いします。
0709デフォルトの名無しさん
NGNG(゚Д゚)・・・・。
0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNG傾きの反対を足し算するのだ!
0712デフォルトの名無しさん
NGNG(;´д`)
0713デフォルトの名無しさん
NGNG移動方向のベクトル X 速度 X 時間
これなら動く速度は一定だね!
0714デフォルトの名無しさん
NGNG告白。
俺 高2のリアルドキュソなんだけど、これ難しくないと思うよ。
0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNGやってみろよ。たぶんできないから。
俺も初めは楽勝だと思ってたら意外に難しいんだよこれがよ。
0717デフォルトの名無しさん
NGNG713 に答えが書いてあると思うが、これがどうして難しいのか説明してくれ。でないとみんな答えようがないぞ。
0718リアルドキュソの名無しさん
NGNGじゃあ手伝ってあげるからさ、もう少しちゃんと細かい所も記述しなよ。
(1)その"高さデータ"の定義はどうなってるの?
各要素(格子)の値のバイト数。
各要素の値と高さの関係。
隣り合う各要素と距離の関係。
(2)高さデータを元にどのように地面を生成してるの?
何かの曲面の方程式のパラメータなのか
ただ単に直線で結んで三角形の構造体とするのか
(2)地面をどのようにして描いてるの?
ピクセル毎に描くのか
ポリゴンで描くのか
(3)物体と地面の交差判定の精度はどの程度要るの?
(4)移動する物体の速度はどの程度を想定するの?
(5)速度の精度はどの程度要るの?
あとさ、仮のハンドル名ぐらい決めなよ。読み難いっての
これからは 708 って名乗っとけよ
0719708
NGNGおお、すまん。
(1)と(2)を同時に答えると、地面の生成はXZ平面に
等間隔(碁盤の目を想像してくれ)に並べた点を結んでやっている。
碁盤の目の1つのマスにつき三角形ポリゴン2つ。
この地形を真上から見ると碁盤の目に見える。
そのときの標高Yは適当に決められるようにしている。
描画はポリゴンで一括して描画。
XZの値があれば標高Yは三角形の平面より出せる。
(3)(4)(5)の精度に関してはそんなにいらない。
っていうか歩いているように見えればOK。
現在はXとZの値を使ってキャラを動かしていて、XZの値を
使って標高Yを求めている。という感じです。しかし、これだと
登り坂では急激に速度が速くなったりするというわけです。
こんなところでどうでしょうか?
0720デフォルトの名無しさん
NGNGVC + DirectX(draw,3D)でインラインアセンブラを使うメリットはありますか?
VCの最適化で十分のような気がしますが・・・
0721708
NGNG速度ベクトルで方向を決めるにもどうすればいいのかわからない
というところでしょうか。
仮にまっすぐ前を向いて歩いていったとして坂があったとします。
ここで速度ベクトルをどう向ければいいのかわからないんですよ。
普通に考えれば山の坂にそって速度ベクトルを向ければいいと
思いますが、それってどうやって出すのという感じです。
三角形の平面じゃそこだけしか出ないし、複数の三角形が
またがっていたら、そこの部分ってどうやって扱うのとか。
平面から山に行くところとか下り坂から上り坂へつなぐところとか。
0722デフォルトの名無しさん
NGNG>VCの最適化で十分のような気がしますが・・・
うん。じゃあ十分ってことでいいんじゃねーの?
0723デフォルトの名無しさん
NGNGX と Z の値をつねに一定の量で増減させているのなら無理だろ。
そうでなければ単に正規化した方向ベクトルをもってれいば ok
に思える。なにがまずいわけ?
0724デフォルトの名無しさん
NGNGあ、マップの単位はキャラクターの歩幅よりずっと小さいわけ?
0725デフォルトの名無しさん
NGNGθは平面と斜面の間の角度。
算出方法くらい自分で考えてね。
0726デフォルトの名無しさん
NGNG「ちなみにやり手なら、君の書いたプログラムより50%は速くできる」
と言っておく。
0727デフォルトの名無しさん
NGNG50%???大袈裟すぎ。
「相当なドキュソが書いたプログラムより」でしょ?
0728デフォルトの名無しさん
NGNGはやってくれんだろ。
0729デフォルトの名無しさん
NGNGその辺はスキル次第じゃない?
俺にはないけど(泣 がんばれ!>俺
で、実際アセンブラってどのくらい役に立つんだろう・・・
俺もIM使ってるけどできるだけは速くしたい。
すごくできるツレに聞いたら、素人がインラインアセンブラ使ったら
逆に遅くなるって言ってた。
ちなみに今の俺が使ったら間違いなく遅くなるとも言われた。(ワラ泣
0730デフォルトの名無しさん
NGNGVCのコンパイラって結構、優秀って聞いた。
0731722
NGNGキミに敵意は無いから、まぁ落ち着けよ。な。
俺は単に720に「自分で確認して納得したならそれでいい」
と云ってるに過ぎないんだよ。
何でも他人の判断を仰ぎ、他人の判断を鵜呑みにする奴は
最低だと思ってる人間なのよ俺は。そこんとこ読んでくれ
0732デフォルトの名無しさん
NGNGアセンブラ入門 - x86
http://hp.vector.co.jp/authors/VA000124/assembler/assembler00.html
アセンブラでの高速化 - x86
http://www.csl.sony.co.jp/person/fnami/asm.htm
DOS/V int10h 私的リファレンス
http://hp.vector.co.jp/authors/VA003720/lpproj/int10h/int10h.htm
0733722
NGNG0734デフォルトの名無しさん
NGNG>何でも他人の判断を仰ぎ、他人の判断を鵜呑みにする奴は
>最低だと思ってる人間なのよ俺は
……。わるかったよ。
ちなみに、「他人の意見を仰ぎ、他人の判断を鵜呑みじゃなくて参考に自分で判断する」だ。
自分で調べるよ。
0735デフォルトの名無しさん
NGNG宇治社中 鳳凰楼 - 3Dプログラミング初歩
http://www.cc.rim.or.jp/~devilman/
山亀本舗
http://www.yamagame.com/
BBX - DirectX関係も
http://www8.freeweb.ne.jp/computer/bbx/
Creation College
http://www.campus.ne.jp/~ishigami/CREATION/
MEGADEMO mod otaku
http://demo.and.or.jp/
本音のプログラムリンク - ゲーム・3D系のサイトを(自分勝手に)評価
http://www.geocities.co.jp/Playtown-Dice/8140/
The Hornet Archive (e)
http://www.hornet.org/
Gamedev.net (e)
http://www.gamedev.net/
http://www.gamedev.net/gamedev.asp
OrangeJuice (e)
http://ojuice.planet-d.net/
MagicSoftware (e)
http://www.magic-software.com/
nVIDIA (e)
http://www.nvidia.com/Developer
0736デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNG0738リアルドキュソの名無しさん
NGNG<地面を上から見た図>
z[m]
.↑
.|
2 .+----+----+
.|\ .|\ .|
.| .\| .\|
1 .+----+----+
.|\ B.|\ .D.|
.| A.\| C \|
--o----+----+---→x[m]
0 1 2
(※ A,B,C,D は三角形の呼称)
図中の各頂点に対応するy成分
0.0, 0.1, 0.0
0.1, 0.2, 0.1
0.0, 0.1, 0.0
0739リアルドキュソの名無しさん
NGNG(a)物体の初期座標 P0 = ( x0, y0, z0 )
(b)物体が1コマの間に移動する 距離 Δd
(d)物体の1コマ後の座標 P1 = ( x1, y1, z1 )
(c)物体の移動目標座標 P2 = ( x2, y2, z2 )
(e)物体は各三角形の面分上を移動する
(f)物体は点として扱う
<与条件>
x0=0.1[m]
z0=0.1[m]
Δd= 2.0 [m]
x2=2.0 [m]
z2=1.0 [m]
0740リアルドキュソの名無しさん
NGNG点P0, 点P2 を求めよ。
<問2>
1コマの間に物体が通ると思われる三角形を列挙せよ。
<問3>
y軸に平行で 点 P0, P2 を面上にもつ 平面Sを求めよ。
<問4>
問2で列挙した各三角形について
平面Sと交わる線分とその長さを求めよ
0741リアルドキュソの名無しさん
NGNG以上が、高校程度の数学を使ったコテコテな解決手段の
一つだと思うけど。
0742デフォルトの名無しさん
NGNGXとZの移動量を一定にしてるわけじゃなくて、
マップの頂点のXとZの間隔を一定にしてるんだよ。キャラの移動は関係無し。
っていうか正規化した方向ベクトルでやったとして本当にできるのか?
方向ベクトルは必ず傾斜に依存するんだぞ。しかも、その傾斜はポリゴン単位で
しか決まってないし、なにより一回の移動で複数またぐときもある。
>>724
そう、そういうときもある。し、そうでないときもある。
>>725
>θは平面と斜面の間の角度。
>算出方法くらい自分で考えてね。
おい、これ2Dのお話かい。角度なんて出せないから悩んでいるんだろ。
っていうか頼むから方向ベクトルや角度っていうならその出し方を考えてくれ
すんなりは出せないから、マップの傾斜はポリゴン一つ一つで違うんだよ。
2Dで45度の傾斜を登るには、確かにX成分とY成分にそれぞれしかるべき
値を足せばいいけど3DだとXZ平面上はプレイヤーが逝きたい方向になるが
XYやZY方向は傾斜の角度が必要になるじゃん。それで移動するとき
傾斜の違う三角形を複数またがなきゃいけないわけだよ。これがまた。
0743リアルドキュソの名無しさん
NGNGほらほら、またハンドル名忘れてるよ
0744デフォルトの名無しさん
NGNG高校レベルの数学、物理のできない奴で
ゲームプログラマになるってゆうバカはなんとかならんかね
0745708
NGNGんで、
>>740
おお、なるほど。できそうな感じですな。
とりあえず、組んでみます。
ありがとうございました。
0746デフォルトの名無しさん
NGNGのはずだ。内積って言葉を知っているか?
ついでにベクトルvがあるポリゴンの法線nで屈折させられたら
v' = v - n*(|v|*n・(v/|v|)
後はv'を単位化して|v|を掛ければ求まるんじゃねえの?
複数のポリゴンを又ぐ場合は自分で考えな。面倒なだけで難しく
は無い。
0747デフォルトの名無しさん
NGNG高2の学生さんがせっかく問題考えてくれたんだから
ここで解いてあげなよ。
ヒントもらったらさっさとバックレないように。
0748708
NGNGすぐにはできねー。
っていうか解くもなにも738から740の解説で
解決してるじゃん。
ってゆうかすげー難しいし複雑だよ。
0749708
NGNGっていうか移動にどう使えばいいのかわからねーって。
0750デフォルトの名無しさん
NGNG0751リアルドキュソ名無しです
NGNG大おまけして1時間。午前零時20分まで待つよ。
リアルドキューソの俺が解けるんだからつべこべ言わないこと。
分からない箇所があるなら素直に告戒しましょう。
時間過ぎたら俺寝るよ。
0753リアルドキュソ名無し
NGNGベクトルの“おりなす”角度って、初めて聞いたよ。
やはり人間模様みたいなものがあるのかな
大人の事情って複雑だね
0754マセ勉強中
NGNGMathematicaのスレ行ったんですけど
誰もいない
0755デフォルトの名無しさん
NGNGなんだかよくわからんがバカにされているみたいで参ったな。
0756デフォルトの名無しさん
NGNG0757708
NGNGそんな制限時間決められてもできん物はできん。
<問2>と<問4>がわからない。
っていうか4は2がわかればわかりそうかな。
2の三角形の列挙ってどうやってやるのでしょうか?
0758リアルドキュソ
NGNGあーごめん。列挙ってのはただ並べたてることで
「コレとコレとコノ三角形」みたいな話で。
0759708
NGNGそりゃわかるんだけど。
その選択方法はどうやってやるのでしょうか?
0760リアルドキュソ
NGNG問4で、マップ上の全ての三角形と平面Sの
交わる線分を求めてたらキリが無いので
計算する三角形を絞り込めっていう意図。
0761リアルドキュソ
NGNG滅茶苦茶ベタなやり方だと、例えば
上の図のzx平面上で
P0'=(x0,0,z0)
P1'=(x1',0,z1')
ただし |P1'-P0'|=v
という関係を満たすx1',z1'をまず求めて、この線分P0'_P1'と交わる
zx平面上の三角形の写像 を探せば、それが通りうる三角形になるし。
0762リアルドキュソ(訂正)
NGNG0763708
NGNG直線が通るところの三角形を求めるのは少し面倒だな。
まあ、そういう感じでやろうとは思うが、
ちょっと明日(今日?)、用があるんでこればっかりやってられんので
また、あしたの夜ぐらいにくるわ、とりあえず今日は
回線切っとく。常時接続ってわけにはいかねーんだわ。
今日はありがとうございました。
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNG0766デフォルトの名無しさん
NGNG何歳なの?
0767デフォルトの名無しさん
NGNGλ_λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( `ー´) < もういいんじゃネーノ?
/ ;つ \__________
(人_つ_つ
0768708
NGNG実は21歳の専門学生だったりするんだよ。
リアルドキュソさんみたいな人がたまにいてビビルよね。
本当に高校生かよって感じのすごさだよね。
んで、やっぱり三角形の列挙が上手くいかないわけよ。
難しいねぇ。
ってこれと他のやり方として、友人から提案があったね。
P0からΔdだけ水平にのばした点をPaとして、その場所の標高の座標をPahとして
P0Pahの方向にΔdだけ向けてそこをPbとして、その場所の標高の座標を
次の移動場所にすると計算はめちゃくちゃいい加減だけどそれっぽく見えるという
感じになったが、どうか。やっぱりちゃんとやらなきゃ駄目?
っていうかやっぱり三角形の列挙がわからんです、はい。
これ範囲を限定して線分で一括して全部調べるしかないと思うのだが。
0769デフォルトの名無しさん
NGNGゲームプログラミングに手を出してみようかと思っています
direct xがいいかと思うのですがどうやら8が出たようなのですが
7から始めるよりは8から始めた方がよいですよね?
おすすめの本とか有ったら教えてもらえませんか?
また、ある程度自由度は低くてもいいから
比較的楽にゲームを作れるdirect xの代わりのような物って
有りませんか?知っている方いらしたらどうか教えてください
0770デフォルトの名無しさん
NGNGClick & Create
0771デフォルトの名無しさん
NGNG1. 公式サイトからDirectX 8 SDKの日本語版ヘルプをダウンロード。
2. ヘルプの概念の説明を一通り読んでみる(全部分からなくても可)。
3. チュートリアルを追っかけてみる。
4. サンプルプログラムのソースを眺めてみる。
5. ウェブでいろいろ検索しまくる。
とりあえずこんな手順を踏むべし。
紙の媒体はいらないっすよ。いい本ないし、お金がもったいない。
SDKについてくるやつだけで本何冊分もの情報があるので、
それだけで十分イケます。
>比較的楽にゲームを作れるdirect xの代わりのような物って
>有りませんか?知っている方いらしたらどうか教えてください
HSPを挙げるのがお約束なのかなあ。
でもせっかくCやC++教わったんだからDirectXからでいいんじゃない?
0772デフォルトの名無しさん
NGNG2Dゲーム用限定なら色々あるぞ。
■独自スクリプト系
YaneuraoGameScript
HSP
■C++ライブラリ系
YaneuraoGameSDK
EL
WinGL
あたりが有名どこ?
0773デフォルトの名無しさん
NGNG>DirectX8
鬱だ氏のう板にも関連情報アリ
http://piza.2ch.net/test/read.cgi?bbs=tech&key=966655286&ls=50
工学社がI/O別冊のDirextX8本の宣伝
http://piza.2ch.net/test/read.cgi?bbs=tech&key=966655286&st=240&to=240&nofirst=true
0774デフォルトの名無しさん
NGNG全部お勧めできない。
まず、時代から完全に外れてるし、ライブラリを使うということは意外と
マニュアルがしっかり完備されていないと、他の人の思考を一回自分の中に
取りこんで消化しなければならないからその人と合わない場合は逆に
難しい。上記のライブラリとDirectXをいきなり使うのとどっちが難しいかと
いうと「どうとも言えない」というのが答え。人のライブラリを
使ってしまって本当にわからないときは製作者本人に聞くしかないというのが
情けないところ、DirectXはみんな触っていて共通の知識なのでいろんな人に
聞けるのがいいところ。人のライブラリを使うとその製作者の信者みたいなのが
いて思考が限定されてしまうのが一番痛い。
上で挙げてある「やねうらお」って人のは使っても専門学生の卒業作品ぐらいの
物しか作れない。だけど、いろんなPCで動く。趣味で作るならこれでなくても
いいし、ハードを使って3Dゲームを作ってもいいと思う。ただし、その場合は
やね氏のライブラリみたいにどのPCでも動くという保証は消える。
0775リアルドキューソー(テスト期間中)
NGNG返事遅れてごめん。
>友人から提案
それで全然平気だと思う。
0776708
NGNGいえいえ、付き合ってくれてありがとう。
テスト頑張ってくれ。あ、これのレスはいらんです。
0777名無しさん@LV2001
NGNGなんかいい方法ないですかね?
できれば視野180度*2枚とかでできるといいんだけど仮に上手く2枚が
つながったとしても法線をつかってテクスチャ座標を取り出すいい方法が
思いつかないです。
0778デフォルトの名無しさん
NGNGそんなあなたに Dual Paraboloid Environment Mapping
http://www.nvidia.com/Marketing/Developer/DevRel.nsf/pages/CC7AC3BDE13B51B78825681F0003F1DD
0779769
NGNGdirect x8とHSPというのを調べることにしました
0780769
NGNGdirect x8と HSPについて調べてみることにしました
0781デフォルトの名無しさん
NGNGこっち向きの180度分だけでいいんじゃないでしょうか?
0782デフォルトの名無しさん
NGNG跳ね返ったベクトルが向こうを向くこともあるのでやっぱり360度必要かと。
0783デフォルトの名無しさん
NGNGゲームのBGMをMP3で鳴らしたいのですが、ACMで丸々デコードしてからだと変換に時間がかかってしまいますよね。
フレーム単位でのデコードってできるのでしょうか?
今、一括ででしかできなくて困っています
http://www.ish.ic.kanagawa-it.ac.jp/%7Esyugo/mp3.html
ここをみる限りはできそうなかんじなのですが…。
現状は1フレームだとデコードをせず、
2フレームだとデコードはするけど後ろのほうに正常なデータがはいっているという感じです。
どこから正常なのかは不定っぽいです。
できればよきアドバイスをおねがいします。
0784デフォルトの名無しさん
NGNGMP3をBGMで使いたいなら迷わずxaudio。
http://www.xaudio.com/
0785デフォルトの名無しさん
NGNGリターンキーを一瞬押してセーブ用ファイル選択ダイアログを出した瞬間に、
ダイアログがそのままリターンキーに反応してしまうので悩んでいます
ようするに一回しかリターンを押してないのに二回押したような感じに
なってしまうのですよ。こんな症状になった人いますか?
解決策とかあれば教えてもらえませんか。。。
0786デフォルトの名無しさん
NGNGダイアログ出すのって DirectInput 使ってる?
普通に WM_KEYDOWN を拾ってみれば?
0787デフォルトの名無しさん
NGNGYaneGameSDK2のStreamSound関連を読め
0788デフォルトの名無しさん
NGNGDirect3Dで、プリミティブって言うのはポリゴンと同じ意味ですか?
日本語ヘルプ読んでも英語ヘルプ読んでも細かい意味がつかめない・・・。
0789787
NGNG0790788=789
NGNG0791デフォルトの名無しさん
NGNGなんでもいいので、primitiveなモデルや描画単位のことを
各自勝手にプリミティブと呼称してるんではないでしょうか。
0792デフォルトの名無しさん
NGNG0793デフォルトの名無しさん
NGNG辞書引けよ。
0794デフォルトの名無しさん
NGNGxaudioは、ライセンスがねぇ…。
0795785
NGNGさっそくDirectInputで取得したリターンキーで開いてたのを
WM_KEYDOWNに変えたところ2連続で押される症状を
回避することができました。ありがとうございました〜
0796788=789
NGNG792 != 788です。
791さん、お答えありがとね。
0797788=789
NGNG>多くの場合、3D プリミティブはポリゴンである。ポリゴンとは、少なくとも 3 つの頂点が結ばれた閉じた 3D 図形である。最も単純なポリゴンは三角形である。
との記述を見つけました(☆o☆)
よく調べないで(いや、調べたんだけど(汗))聞いちゃってごめんなさい。
0798デフォルトの名無しさん
NGNG具体的には、1フレーム中に描画処理が終わりそうにない時は描画処理をすっとばす処理なんですけど。
自分でも考えては見たんですが、いまいちスマートなやり方が浮かばないんで。
聞くだけじゃなんなんで、とりあえず自分の考えた方法を。
まず1フレームの描画にかかった時間を計測して、秒間30フレームのゲームなら、1000/30ms以上かかっていたら、次のフレームでは描画処理を行わない・・・というような感じなんですけど、いまいちスマートじゃない気がするんです。
0799デフォルトの名無しさん
NGNGほっといてもタイムオーバーで描画されないって!
杞憂だよキユー!
0800デフォルトの名無しさん
NGNGものを描画すればスキップなんて考えなくても自動的に
スキップされているようになるのでOK。
0801デフォルトの名無しさん
NGNG0802>>801
NGNG0803デフォルトの名無しさん
NGNGネタ?
0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNGネタにマジレスしてるイタイ802(ワラ
0806デフォルトの名無しさん
NGNG801もネタとは限らないと思う。
(例えばDirectX3.0でコンパイル可能なソースを)DirectX8.0環境でビルドするとそれはDirectX8.0のランタイムがある環境じゃないとダメなのか? って意味にとれないかな?
0807デフォルトの名無しさん
NGNGなんかカッコイイ装丁の本があったので手にとってみたら
……うあー、バリバリの非リアルタイム系やんけ。
よく見たら「アドベンチャーゲームプログラミング 美少女ゲームの作り方」と
著者同じやし(笑)。
0808デフォルトの名無しさん
NGNGマジ?
イベントドリブンがメインなヤツってこと?
0809デフォルトの名無しさん
NGNGMFC使ってるし
0810デフォルトの名無しさん
NGNGそれでそのタイトルは…なんだかなぁ。
まぁ、書店なら内容見てからかうだろうけど。うーん。
まあ、「アドベンチャー(以下略)」の方は内容のまんまだろうからよいとして。
0811デフォルトの名無しさん
NGNG「ゲームクリエイターズバイブル」を猛烈にプッシュする。
10000円近くするけど。
プログラマ以外にもよませれ。
0812デフォルトの名無しさん
NGNG>MFC使ってるし
いや、それ関係ないだろ。しっかりしろよ。
>>808
正解。
装丁のハッタリセンスは抜群、中身サッパリ。
このギャップには流石に腰が砕けましたぜ。
0813名無しさん@お腹いっぱい。
NGNGちくしょー
0814デフォルトの名無しさん
NGNGMFCを使わない場合、ツールとか作るときはどうしてんの?
0815デフォルトの名無しさん
NGNG0816デフォルトの名無しさん
NGNG確かに装丁はかっこいいよな、あれ。ちょっと惚れたぜ。
0817デフォルトの名無しさん
NGNGVCLを使うよ(藁
0818MUTT-RAY
NGNGツールはUI部分をC++Builderで作って、表示部分は
FormのDCに対してゲームの方と同じライブラリだね。
ま、俺DirectX使わないからだけど…。
(CreateDIBSection()とStretchDIBits()なアレ)
0819デフォルトの名無しさん
NGNG当方、Delphiで同じことやってます(藁
0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNG0822デフォルトの名無しさん
NGNGDIBSectionに変えた方が良いですか?
0823デフォルトの名無しさん
NGNGVCLのソースは遙か昔に見ただけだから・・・。
0824デフォルトの名無しさん
NGNG本屋に置いてないから立ち読みできないの…。
0825デフォルトの名無しさん
NGNG1個1個点打って回転拡大縮小αブレンドだぜ〜、とかやろうとするとめちゃめちゃ遅いことに気づくはず。
結局はDIBSectionのラッパーを自作する羽目になるよ。
短形をBltするだけなら別にTBitmapでいいかもしれんけど。
0826825
NGNGPixles[x, y]プロパティが遅いのは言わずもがな。
肝心の(自力描画用に用意されていると思われる)ScanLine[Index]プロパティがかなり重いということ。
特に、ループ内で使ってみると激烈に重さが体感できる。
0828デフォルトの名無しさん
NGNGカチューシャで>>814=815 の815が蒼くならないので気が付いた(T_T)
鬱駄・・・。
0829デフォルトの名無しさん
NGNG0830822
NGNGDIBSectionのラッパーを作成します。
0831飲む打つ買うさん
NGNGそういうのはやはり素材集とか買ったり、ソフトで自分で音作ったり
しなけりゃならんのですよね?
どこかでダウンロードできるとこないっすかねぇ・・・。
0832デフォルトの名無しさん
NGNG私はここでお世話になってます。
http://www2.neweb.ne.jp/wc/fujikin/
お礼にバナクリでもしてあげましょう。
0833デフォルトの名無しさん
NGNGmod落としてきてサンプルをパクる。
0834デフォルトの名無しさん
NGNGなるほど、そういう手があるのね…。
0836デフォルトの名無しさん
NGNGttp://www.mars.dti.ne.jp/~odaki/mod/index.html
0837デフォルトの名無しさん
NGNG初回だけScanLine[y]とScanLine[y-1]の差を
取って、使い回すとまあまあ。
0838825
NGNGやはり、差分求めるのをやった方がおられましたかあ。自分もやりました。
その後エスカレートして、ScanLineと同等のことを高速にやろうと
リサイズ時にあらかじめScanLine[i]をHeight分テーブル化とか(藁
で、かえって面倒なことになってしまって、結局、自作してしまったのれす。
0839837
NGNGそうだねぇ。でもエロゲーならこれで十分。
ってお里がばれるか。
0840デフォルトの名無しさん
NGNGhttp://www5.freeweb.ne.jp/computer/hotate/
0841デフォルトの名無しさん
NGNGレベルとしては低い。コンシュマーでは底辺だね。
でも情報を提供しているのは偉い。
0842優しい名無しさん1
NGNG0843デフォルトの名無しさん
NGNGで、実際にそれらの勉強をして、実際に何か作ってみたのかい?
YES→ もう少し詳しく書いてみると返答しやすいね。
NO → お続きはこのスレ(↓)でどうぞ。お似合いかと。
http://cheese.2ch.net/test/read.cgi?bbs=ghard&key=981212093&ls=100
0844優しい名無しさん1
NGNGあと、読んだらあまりにも厳しい。WEB系で、色々、趣味で作った方が楽しめそう。
0845デフォルトの名無しさん
NGNGNO ならレスは不要。好きに生きな。
0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNG>レベルとしては低い。コンシュマーでは底辺だね。
まぁまぁ。あんたの吠えたい気持ちもよく分かるが
とりあえず他所でやりなよ。ここ相談室だぞ。
0848841ぢゃないよ
NGNG0849not 847
NGNG訳知り顔で批評の真似するだけなら学生でもできるしな。
吠えてるだけと取られても仕方ねーべ。
0850not 840
NGNGじゃあさ、質問変えて「これからゲームプログラミングを勉強
しようって人間が、入門用として読むのには適してる?」だと、
どうよ。
入門用なら高度な技術を駆使していなくても、基本的な考え方
を押さえてあって、その後で必要になる情報へのポインタを示
してあれば十分だよね。
0851どうでもいいが
NGNG逆にジサクジエーンの臭いがして嫌だ。
0852デフォルトの名無しさん
NGNG841をいじるのはもうその辺にしとこうな。荒れる予感がするし。
自分で役に立つと思ったものはどんどん活用すればいいのさ。だろ?
0853デフォルトの名無しさん
NGNG852の意見も同意だが、あえて最短距離で行きたいというのであれば
もっといい人に教えてもらえってのが答えだね。プログラムって初めに
教わった人の影響がでやすいから。でも、それだとネットだけだと難しい
かなぁ。ネットだと自分に都合の良い情報だけを選んでしまうからね。
0854デフォルトの名無しさん
NGNG0855デフォルトの名無しさん
NGNGhttp://www8.freeweb.ne.jp/computer/bbx/cgi-bin/bbx.cgi?log=14&vew=6966
ここ↑でレスを書いている人の言っていることがいまいち不明です。
一体、衝突後の動きの何が問題だといっているのでしょうか?
衝突後にどんな処理をするものとして話しているのかいまいちわかりません。
0856デフォルトの名無しさん
NGNGどうやらそのまま押してもいけないらしい。
アドレスをコピーしてから貼り付けでGo!
0857デフォルトの名無しさん
NGNG正論。
煽り・自作自演・厨房がいてこそ2chだろ
0858デフォルトの名無しさん
NGNG意味のわからん質問はいつものことです。
ようはそれっぽく見せる手軽な方法はないかという
都合のいい質問をしてるわけなので、ほっときましょう。
0859デフォルトの名無しさん
NGNGま、どうでもいいじゃねーか。とりあえずマターリしとけ
0860デフォルトの名無しさん
NGNG検索で探してもろくな所が出てこない。
どっか良いとこないですか?
0861デフォルトの名無しさん
NGNG良質な思考ルーチンはそれだけで売り物になるからね。
まず、自分の思考をそのままプログラムにしてみたらどうか。
0862デフォルトの名無しさん
NGNG0863デフォルトの名無しさん
NGNG特にキミな。
0864デフォルトの名無しさん
NGNGこれってなんとか解消できないんでせうか?
やるとしたらCD2WAVみたいなことなデジタル再生をやるしかないのかなぁ。
0865864
NGNG0866デフォルトの名無しさん
NGNGどっかでみたと思ったら、この板の過去ログにそのまんまのスレがあった。
http://piza.2ch.net/test/read.cgi?bbs=tech&key=980791374
思考ルーチンの情報もこのスレで一応出てるね。
http://www.at-m.or.jp/~onitama/junk/mahjong.txt
0867デフォルトの名無しさん
NGNG今ならCD-DAよりもストリームでせう。
MP3とかOgg Vorbis(重いけど)とか。
0868864
NGNG自分の経験から行くとMP3でも十分重いですけど(藁
0869デフォルトの名無しさん
NGNGhttp://www.ohmsha.co.jp/data/books/contents/4-274-06405-0.htm
0870DirectX!
NGNGMain.obj : error LNK2001: 外部シンボル "_DirectDrawCreate@12" は未解決です
上記のようなエラーが出てしまいます。
また、MIDI再生の時も同じようなエラーが出てしまいます。
どうすればよいのですか?教えていただけないでしょうか?
0871age
NGNG0872デフォルトの名無しさん
NGNGライブラリの結合忘れ
0873デフォルトの名無しさん
NGNGD3DLIGHT8に移動先の座標を入れて、d3dDevice->SetLight()を呼ぶでいいんでしょうか?
0874デフォルトの名無しさん
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=966655286
0875デフォルトの名無しさん
NGNG・ライセンスが関連がうざくない
・もちろん商用利用でもライセンスフリー
・動作が軽い
・ソースコードが公開されている
わがまま?
0876デフォルトの名無しさん
NGNG0877873
NGNGえ〜1はDirectXって言ってるのに・・
0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNGはいはい、キミの時代はもう終わったんだよ。
0880デフォルトの名無しさん
NGNGゲームループについての質問です。今、マルチメディアタイマーを使い、
例えば1/60秒ごとに座標などの更新、および描画処理を行っております。
もし処理が1/60秒を越えた場合には、次回の処理を倍にして対処してます。
>>603さんがおっしゃられているような感じだと思います。
ところが他の人のコードなどをみると私のやり方と違う方法をとってる
ことが多いのです(更新処理のみ1/60秒ごとに行うことを保証し、残りの
時間を描画にあてる方法など)
そこで、私のやり方のデメリットをずばり指摘していただけませんでしょうか?
0881名無しさん@LV2001
NGNGそれでいいんで無い?
0882デフォルトの名無しさん
NGNG突然処理が飛んだように見えることかなぁ。
そこら辺うまく作らないと、アクションゲームなんかはプレイヤーぶちキレるよ。
0883デフォルトの名無しさん
NGNG毎回そのやり方に疑問を感じるんだけどさ。
ワンフレーム(っていうか内部処理+描画処理の時間?)で
かかった時間ってちゃんと計算できてるの?
60分の1秒を綺麗に判定する方法ってないでしょ?
あと、そのやり方だといっそのこと垂直同期信号は
無視しちゃった方が綺麗にいかないか?
っていうか専用スレでやれよ。ここ↓
http://piza.2ch.net/test/read.cgi?bbs=tech&key=972165437
0884デフォルトの名無しさん
NGNGフリーソフトでMP3をデコードするだけなら無料だったと思います。
シェアウェア等の営利目的でMP3デコードを行う場合は有料、
フリー・シェア関係なく、MP3エンコードを行う場合は有料、
という事だったと…。
間違ってたら誰か訂正お願いします。
0885875
NGNGども。やっぱその辺が問題ですね。
Oggは今のところ負荷が気になるし・・・。
生wavはデカすぎますし・・・。
ストリーム系でBGM再生するとしたら、意外に選択肢が少なくなりますね・・・。
0886880
NGNG単純にゲームループってどんなのが良いのですかという話です。
初心者スレの方が良かったかな。
例えばこういうのってなんか無駄なだけな気がするのですが、どんな利点があるのでしょう?
while( 1 ){
if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE )){
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else{ //描画処理 }
while( X秒毎 ){ //更新処理 }
}
でも、とりあえず処理飛びさえうまく作れば今のやり方で大丈夫そうなので
安心しました。レス下さった方々、ありがとうございます。
0887デフォルトの名無しさん
NGNG0888デフォルトの名無しさん
NGNG最後のwhileはマズイだろ
0890デフォルトの名無しさん
NGNGうーんと、どの辺が無駄?
必要最低限な気がするけど(最後のwhie以外)
0891この業界から逃出した男
NGNGそれだと、描画処理だけ何回もやって、
whileの条件があったときだけ更新処理するってプログラムになるのかな?
while( 1 ){
if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE )){
TranslateMessage( &msg );
DispatchMessage( &msg );
}
//描画処理
for( ; 次の更新時間にならない ; ){sleep(4)};ヾ(・_・;
//更新処理
}
ってやった方がよさそうなのかな。
でも、これと同じ処理を書いてるとしたらすまぬ。
0892887
NGNGPM_REMOVEだろ。
あと、最初のwhileはループごとに式の評価が入る可能性があるから
for(;;)にすべき
0893この業界から逃出した男
NGNGが、気が付かなかった...
全然駄目駄目じゃん 俺。
鬱だ死のう。
0894デフォルトの名無しさん
NGNG0895デフォルトの名無しさん
NGNGif(msg.message == WM_QUIT)
break;
を入れておけば
0896デフォルトの名無しさん
NGNG0897886
NGNG描画がすぐ済むときは、更新が済んでないのに再描画してしまう所です、で
>>891
なるほどー、こうすればビジーループは避けられますね。勉強になります。
つたない情報からくみ取っていただき感謝です(^^;
>>892
while( isLooping )みたいのなんです、元々は。重ね重ねすいません。
入力や画面切り替えなどを考慮するとイベント処理は必須かと思っての
PM_NOREMOVEだったのですが…。やはりWindowのゲームであっても、一定時間
毎にキー状態を調べる様なやり方の方が良い(速い)のでしょうか?
とりあえず経過時間の差分を利用して>>891さんのやり方を使うか、
或いはタイムプロシージャ使う方法(何故かあまりみませんね)でいこうと
思います。レス下さった皆様ありがとうございました。
0898デフォルトの名無しさん
NGNG宇宙人か?
0899デフォルトの名無しさん
NGNG0900デフォルトの名無しさん
NGNGヴァカか?
メッセージキューからメッセージ削除されないから、
永久に同じメッセージ取得しつづけるだろ?
while( isLooping ){
if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE )){
if(!GetMessage( &msg, NULL, 0, 0))
break;
TranslateMessage( &msg );
DispatchMessage( &msg );
}
//描画処理
for( ; 次の更新時間にならない ; ){sleep(4)};ヾ(・_・;
//更新処理
}
0901886
NGNG#define FRAME_INTERVAL 16
//すでに1/60秒じゃないけど
bool is_looping = TRUE;
unsigned update_time = GetTickCount();
while( is_looping ){
if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) ){ //PM_REMOVE?
if( !GetMessage( &msg, NULL, 0, 0 ) ){
looping = false;
break;
}
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else{ //描画処理 }
while( update_time > GetTickCount() ){
sleep(4);//ヾ(・_・
}
//更新処理
update_time += FRAME_INTERVAL;
}
明日試してみます
0902900
NGNGメッセージループ部に手をつけるなよ。
既存のもの(ウェブからでもDirextXサンプルからでも)だけ使ってろ
0903886
NGNG>>900
トホホ、すいません。今度から省略せずちゃんと書きます
要するに>>901のやりかたとタイムプロシージャ使う方法
どっちが良いかを訊きたかっただけなんです。>>891の時点では
0904886
NGNGうーん考えてみれば>>901だと一定時間毎に行われるべき
更新処理の保証が失われますねぇ。while並べるのも嫌だし
素直にタイマー使っておくが良か・・・
ところで新スレ立てましょうか?ちょっと責任感じますので。
0905886
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=985540361
私のおヴァカな質問は持ち越さない方向でお願いします。念のため。
それにしても、鬱だなぁ……
0906887=900
NGNG#define FRAME_INTERVAL 16;
bool isLooping = true;
DWORD gate_time = 0; // 1回目は問答無用で更新
MSG msg;
while(isLooping)
{
DWORD tick = timeGetTime();
if( PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) )
{
if(msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
if(tick > gate_time)
{
tick(); // 更新
gate_time = tick + FRAME_INTERVAL;
}
RenderVisuals(); // 描画
}
}
0907この業界から逃出した男
NGNGヾ(・_・
一応、おいおい って突っ込みの顔文字のつもりです。
sleep(4) なんていい加減なウェイトの取り方してる時点で
突っ込まれるかと思って。
0908886
NGNG>>906さん
ゲーム作ってみようと、私が最初にパクってきた(^^;のがこれに似たコード
でした。確かSteps云々というサイト様からです。これだと無駄な処理
しちゃう場合もあるので別の方法無いかな?ってのがそもそもの発端でした。
次にtimeSetEvent()を使う方法にしてみました。最初、デモみたいの作っ
てるうちは上手くいってたのです。しかし実際ゲームとしてキー操作とか
加えていくと、タイムコールバック関数の方で重い処理した場合に
キーメッセージをすぐに拾えなくなってしまいました。
(>>897でキー状態を調べる云々の事を訊いたのはこのためです)
そういえば、別スレッド作ってループ回す(yaneSDKで使われているようなの?)
ような話は出なかったですね。
いずれにせよ勉強不足、おまけにスレ違いのようですのでこの話題は終了で。
(もし私にレスいただけるなら、この旧スレにsageでお願いします)
900さんや業界から逃出した男さんを始め、レスくれた方々ありがとうございました
レス数が900を超えています。1000を超えると表示できなくなるよ。