トップページgamedev
818コメント302KB

Windowsゲームプログラミング 質問スレ

■ このスレッドは過去ログ倉庫に格納されています
0001うゆ ◆vvvK3Fcqdg 2008/11/06(木) 21:28:45ID:lNn2skuQ
※回答する人も、質問する人も必ず読んでください

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する香具師 】
・ どんな事で躓いているのか明確にしる。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書け。
0484名前は開発中のものです。2009/12/31(木) 07:05:16ID:zxA2fJ4G
>>483
単に上書きコピーするだけじゃないの?
アーカイブ内のファイルを置き換えたいというなら、バラしてコピーして作り直す。
1ファイルのバイナリ差分でアップデートしたいというなら、XsDFみたいなツールを
使うか、同等のものを自分でつくればOK。
0485名前は開発中のものです。2009/12/31(木) 17:15:48ID:RQA0U+Bj
失礼します。質問よろしいでしょうか?

たとえば画面内において、それぞれ異なるIDを有したボールかなにかが飛び交っているものとします。
その状況でいずれかのボールをクリックした場合、それを識別するにはどのような方法があるでしょうか?
またボールが静止しているとした場合には、どのような手段を用いるのが賢いでしょうか?

いまだコーディングは開始しておらず、自分で組めるだろう範囲を考えながら仕様を確定している段階です。
当初クリック判定は座標から判別すればいいだろうと考えていましたが、上述のような状況に直面して考え直しています。
GUIプログラミングは初心者なのでサイトを見てノウハウを学ばせていただこうと思いましたが、
調べ方が悪いのでしょうか、基礎的な部分を解説してくださるサイトが見つからず、質問させていただいた次第です。

言語はC#を想定していますが、可能ならば言語依存の少ない方法を教示していただけると嬉しいです。
お忙しい時期でしょうが、よろしくお願い致します。
0486名前は開発中のものです。2009/12/31(木) 17:21:12ID:XywEK1j8
座標で判断すればいいだろ。
なにが問題だと言うんだ?
0487名前は開発中のものです。2009/12/31(木) 17:52:22ID:RQA0U+Bj
>>486
ボールにカーソルを合わせると変色するなどといった場合も、
foreach 全オブジェクト if X座標判定 and Y座標判定
のような処理を行っているのでしょうか?

だいぶ前に別スレにて「普通はそんな非効率的なことはしない」と聞いていたので、
何かしら別の方法があるかと思っていて、しかしながら他の方法が想像つかなかったので質問したのですが、
上記発言の解釈が間違ってたんでしょうか……。それでしたら申し訳ないです。

素早いお返事ありがとうございました。
0488名前は開発中のものです。2009/12/31(木) 22:29:14ID:g+v1XGwf
初心者すぎて基礎から勉強しないと話にならないお
0489名前は開発中のものです。2010/01/01(金) 01:28:27ID:+rsZCvF1
>>487
全オブジェクトっていう言い方が気になるが、概念的にはそれでいいんでないの?
何らかのイベントでマウスの座標を取得、その後その座標をつかって、オブジェクト毎でヒットテストするってことでしょ。
それ以外にやり方あるのかな?
0490名前は開発中のものです。2010/01/01(金) 19:30:22ID:iY6VPf2L
>>488
すみません……。GUIは本当に手探りです。
自分でもあちこち探したりしているんですが、何かいい教材あれば教えてくださると嬉しいです。

>>489
ありがとうございます。
自分もそれ以外にひらめかないのですが、上述の通り別なやり方があるとだけ聞かされたんで。
多分何かしら齟齬があったんでしょうね。お手数おかけいたしました。
0491名前は開発中のものです。2010/01/01(金) 19:48:54ID:+HYk+utg
いや、GUIはというがそれ以外も初心者なんだろう?
どうでもいいから手を動かそうぜ
0492名前は開発中のものです。2010/01/07(木) 23:25:49ID:dh68R4A/
画像の表示って大抵はファイル名で指定するよね?
でも、独自のファイル形式にしたい(BMPに付加情報をつけたもの)
すると、ファイル名の指定の関数が使えない、たすけて
0493名前は開発中のものです。2010/01/07(木) 23:27:49ID:ds4UNTST
ファイルを読み込んで自分でメモリー上で展開しろ。
0494名前は開発中のものです。2010/01/07(木) 23:37:33ID:dh68R4A/
>>493
ありがとうございます
バイナリで開いて全て点で打つならできそうなのですが、
効率の面で問題がある気がしまして。
ともかくやってみます
0495名前は開発中のものです。2010/01/07(木) 23:46:35ID:TMdG719d
SetPixel()遅い
0496名前は開発中のものです。2010/01/08(金) 00:13:08ID:l0tohAlf
>>495
ありがとうございます
ピクセルを後から操作する気はないのですが、おかげさまで道が開けてきました
ImageFromStreamとかなんとかで配列をデータにできるとかなんとか。
いい感じで脳が限界です
0497名前は開発中のものです。2010/01/15(金) 14:16:35ID:fJ32mWjV
WDDM のバージョンを調べたいのですが、
DXDIAG の szDriverModelLocalized を見る以外に方法はないでしょうか?
レジストリや WMI で探してみたのですが見つからなくて…。
0498名前は開発中のものです。2010/02/04(木) 23:22:36ID:tPmHG2jz
合計5000ポリゴンある地面の上に複数のキャラクターを立たせたいのですが
そうなるとどのポリゴンの上に乗っているかの情報が必要になるんですが

全てのキャラクターが毎フレーム5000ポリゴンとの当たり判定を取るとプログラムが非常に遅くなります
処理を劇的に軽くする何かいい方法はないでしょうか?
0499名前は開発中のものです。2010/02/05(金) 00:50:33ID:CKGSeD5Z
>>498
区画分けするとか、判定用にもっと粗い地面情報で判定するとか。
500ポリゴンごと10区画にわけたら、判定回数は5000回から510回になるし、
判定用の地面として500ポリゴンにしたら、500回になるし。後者の方が実装は楽だな。
前者だと、準備とか修正とかめんどくさそう。でも、前者の方が効果は高いな。100区画にわければ、
150回だもんな。
0500名前は開発中のものです。2010/02/05(金) 02:03:11ID:EsUZ2cV5
>>490
区画にわける所までは思いついたのですが
どうしてもどこがどの区画か判断する方法がわからないのです
0501名前は開発中のものです。2010/02/05(金) 07:09:32ID:Rnn3z8ra
>>全てのキャラクターが毎フレーム5000ポリゴンとの当たり判定を取るとプログラムが非常に遅くなります
これは今どうやってるの?
0502名前は開発中のものです。2010/02/05(金) 09:51:06ID:p/uDgxLQ
>>501
ポリゴンのY軸を考慮せずに外積で内外判定を取り
その後に三点測量からその地点のYを算出する形です
0503名前は開発中のものです。2010/02/05(金) 15:53:15ID:HPolpgOh
>>500
例えば5mごとの区画に区切って、その5mの立方体に少しでも入る地形のポリゴンを
その区画のリストに追加する。
判定するときは座標を5mで割るだけで区画は求まるので、その区画のリスト中の
ポリゴンと判定する。
ただし、キャラクタが区画を跨いでいる場合もあるので、隣接する8区画を調べる必要がある。
0504名前は開発中のものです。2010/02/05(金) 23:36:57ID:Rnn3z8ra
5000個に番号付けて、XZ平面で区画判定して、十分な数だけ当たり判定しる。
十分な数はあらかじめデータ作らないとな。
0505名前は開発中のものです。2010/02/06(土) 04:48:59ID:vgWfgHJE
ついでにモートン順序についても知っておこう
0506名前は開発中のものです。2010/02/06(土) 12:38:36ID:4uNGm9uD
横からだがトン
久々に感動したわ
0507名前は開発中のものです。2010/02/08(月) 19:45:10ID:I67IEebw
判定対象のX軸があり得ないぐらい離れていたら判定しない、っていう方法は楽。
でもまあ、結果として総当たりにはなるか。
普通にやるよりちょっとだけ軽い程度。
0508名前は開発中のものです。2010/02/08(月) 20:12:23ID:HSg0yq3Q
けっきょく総当りだしちっとも軽くなんねえよ?
ただまぁその話を汲むとして(>>498の話とは全く関係なくなるけど)
2次元のAABB判定を考えるとき、フィールドが縦横のどちらに広いかで
XとYの判定順序を変えると、判定回数は減らせるわな
0509名前は開発中のものです。2010/02/08(月) 20:29:52ID:AbjdKSeP
バカな507に騙されてやらかすと、全部が近くにあるという状況で酷い目に遭うな。
0510名前は開発中のものです。2010/02/08(月) 21:17:35ID:TFUWga5H
>5000ポリゴンとの当たり判定を取るとプログラムが非常に遅くなります

5000位で遅くなるわけがない、コードにミスがあるだろ
0511名前は開発中のものです。2010/02/08(月) 22:42:47ID:yaKOf+tK
>>510
レミングみたいなのが何百匹もいたら重くなるんじゃない?
0512名前は開発中のものです。2010/02/08(月) 23:45:29ID:TFUWga5H
三十匹くらいかな
0513名前は開発中のものです。2010/02/15(月) 05:51:28ID:iDG/RoSA
超、初心者なんだけども練習がてら
数当てゲーム
15パズル
リバーシ(オセロ風)
テトリス
ブロック崩し
「パックマン」
補講:敵のアルゴリズム(AI)?
横スクロールアクション
STGを作れ
SLGを作れ
FF風RPG/DQ風RPG
簡単な3Dゲーム
を、python,c,c++,c#と段階的に練習してみようと思うんだがどうだろうか
0514名前は開発中のものです。2010/02/15(月) 06:25:39ID:7pi/323z
>>513
横スクロールアクションの方が、地形の扱いや重力の扱い等の要素が多い分
STGよりはやることが多い。

SLGというのが非リアルタイムの大戦略的な物なら、かなり簡単な部類。
FF風RPG/DQ風RPGなんてSTGとかより簡単。
この辺はバランスを取りつつ膨大なデータを作るのが大変なだけ。

3Dに行く前に、回転有りの2Dを経験した方がいい。
ナムコのアサルトやキャメルトライ等。

パックマンのあたりで、スクロール無しのアクション系でもやった方がいいかも。
0515名前は開発中のものです。2010/02/15(月) 06:26:05ID:RFVAWStO
>>513
「どうだろうか」とはどういう意味?
やってみたら良いんじゃないでしょうか。としか答えられないけど・・・
まあ、初心者なのに12ジャンル×4言語=48個は多すぎじゃないか?
とりあえず言語は一つに絞った方がいいよ。
0516名前は開発中のものです。2010/02/15(月) 07:17:04ID:cbly0qco
初心者にC++はないわ
0517えいいち ◆GRGSIBERIA 2010/02/15(月) 07:45:05ID:4ZhNq4Tf
>>513
難しさだったら
Python << C# < C < C++
だと個人的には思う。
でも、Pythonはどちらかと言うと、C++を使うのが面倒くさいマ向け言語だから、
言葉通りの超初心者だったらオススメしない。
最初からCでやったほうが他の言語に移行しやすい。

C++で本格的にやりたいのなら、まずはC++でクラス設計の基本を押さえつつ、
Pythonで一度組んでみることがお勧め。
1クラス1ヘッダーなんて理不尽なファイル構成にならないためにも、
モジュール単位でコードを組む方法を身につけたほうがいいから。

>>515
各言語1個ずつやるってことではないんでないのかい?
0518名前は開発中のものです。2010/02/15(月) 08:21:29ID:cbly0qco
言語1つ覚えるだけでも大変で各言語1個ずつやるなんて考える余裕なんてないでしょましてや超初心者に
0519名前は開発中のものです。2010/02/15(月) 17:16:13ID:Cd1wbsad
C++を使えるようになれる自信があるならC++でやっとけ
もしプログラマになる可能性があるならC++は必須
趣味で考えたゲームが実現できればいいだけなら、
その目標のゲームを作ることができる一番簡単な言語を選ぶ
0520名前は開発中のものです。2010/02/15(月) 17:36:44ID:cbly0qco
超初心者がC++に手を出すのはやめといた方が・・・
やるんなら取りあえずCまともに使えるようになってからでも遅くはないと思うがなあ
0521名前は開発中のものです。2010/02/15(月) 17:43:22ID:Nxk5kWkJ
段階的にやるって言ってるんだし、まずはスクリプト言語で作って
移植していくのでいいかと
0522名前は開発中のものです。2010/02/15(月) 17:57:52ID:n4qXt3PM
言語外の部分に伏兵が多い品。
0523名前は開発中のものです。2010/02/17(水) 23:06:07ID:B+oI5OUV
今仕事でJavaやっててこの後、C++かC#でDirectX使ってゲーム作成してみたいけど
C++とC#で実行速度に違いは顕著に出るんですか

0524名前は開発中のものです。2010/02/18(木) 03:59:59ID:S5tbEoCa
>>523
C++でもある程度のスペックが必要だし、ボトルネックになるのは描画部分なのであまり気にしなくていいと思いますよ。
ベンチマーク結果もあるみたいなので参考までに。
ttp://www.shudo.net/jit/perf/
ttp://reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-performance.html
0525名前は開発中のものです。2010/02/18(木) 22:03:52ID:w01VKSPN
>>523
レースゲームで物理エンジン組むなり、
SLGで何万人もの動きをシミュレートするなりするなら話は別だが、
そうでもない限り気にするような違いは出ないと思う。
0526名前は開発中のものです。2010/02/21(日) 04:38:17ID:2l2wvu6L
ロード画面のことで質問があります。

「Now Loading」とだけ表示し、ロードが終わったらタイトル画面などに切り替える場合だと

Draw("NowLoading");
image1 = LoadFile("image1.bmp");  //ファイル読み込み
....
bgm5 = LoadFile("bgm5.ogg");    //ここまで
state = new Title;  //状態遷移

といった具合になると思うのですが
ファイルを読み込みながら、読み込んだ割合を表示するというのはどういう風に書かれているのですか?
思いついたのはファイル一覧をテーブルにして

i = 0;
while(i < FILE_MAX){
  for(; i < FILE_MAX; i++){
    file[i] = LoadFile(filename[i]);
    if(3秒経過した) break;
  }
  Draw("Loading %dパーセント", i*100/FILE_MAX);
}

みたいなのだけど、まさかこんな事やってないだろうと思っているのですが…
0527名前は開発中のものです。2010/02/21(日) 07:28:08ID:i9ENpozX
>>526
その方法で問題無いよ。
ただし、1ファイルの読み込みに3秒以上時間がかかったときに処理落ちしてしまう。
この場合はマルチスレッドにして読み込みと表示を別スレッドにするのが一般的じゃないかな。
それ以前に読み込みを高速化させるべきだとは思うけど・・・
0528名前は開発中のものです。2010/02/21(日) 20:28:55ID:2l2wvu6L
>>527
有難うございました
0529名前は開発中のものです。2010/02/22(月) 12:37:06ID:dzJGwHVS
メッセージボックスを使わずに(新しいウインドウを出さない)テキストフィールド
を作成するのって可能なんでしょうか?画面にそのままキーボード入力できる箇所を作りたいのですが
0530名前は開発中のものです。2010/02/22(月) 14:47:05ID:GzvshjVK
環境による
通常のWindowsアプリならウィンドウに直接テキストボックス貼り付ければいいけど
Directなんとかでやってるなら、SDKのサンプル見てみるといいかも
0531名前は開発中のものです。2010/02/22(月) 15:07:58ID:FbIcwD45
ウインドウメッセージからテキストの追加削除を行い描画する。
キーやクリックにあわせてカーソルを移動させる。

大して難しい処理じゃない。
0532名前は開発中のものです。2010/02/22(月) 17:25:48ID:dzJGwHVS
>>530
>>531
DirectXのサンプルにテキストボックスを扱ったものがありましたが、色々と
インクルードしなければなりませんでした。
531に書いてあるようにキーに合わせてフォントを描画方法でやりたいと思います。
ありがとうございました。
0533名前は開発中のものです。2010/02/23(火) 12:09:49ID:IDzEfXiX
WSAAsyncSelectのFD_ACCEPTは最初のクライアントからの接続要求のみ呼び出されて、
それ以降の他のクライアントからの接続では呼び出されないのですか?
2人目以降のクライアントはクライアント側のFD_CONNECTしか呼び出されていませんでした。
0534名前は開発中のものです。2010/02/23(火) 12:36:31ID:IDzEfXiX
すみません。
2人目以降もFD_ACCEPTが呼ばれるようでした。
お手数おかけしました
0535名前は開発中のものです。2010/02/26(金) 16:14:12ID:vSXVLwvV
ゲームでよくあるデータの保存と読み込みってどういう仕組みになってるんですかね?
保存
保存したい変数を文字列で格納→何らかのアルゴリズムで暗号化→ファイル出力

読み込み
保存したファイル読み込み→暗号データから文字列に復元→変数に代入

というかんじでしょうか・・
テキストファイルをそのまま出力してもプレイヤーに読み取られてしまうと思うので




0536名前は開発中のものです。2010/02/26(金) 18:10:11ID:k8Nclp+o
>>535
そんな感じです。
0537名前は開発中のものです。2010/02/26(金) 19:45:39ID:lcr+uN2q
>>535
文字列にする必要はないけどね。
バイト列の方が扱いやすいし、人間にも読まれにくい。
まぁ、バイト列でもそのまま出力すると、簡単に解析されてしまうが。

XORかけて、チェックサムでも入れとけば十分。
0538名前は開発中のものです。2010/02/27(土) 04:37:55ID:pMMukQvt
バージョンうpによるセーブデータの互換性も考慮したいなら少しまんこい
0539名前は開発中のものです。2010/02/27(土) 11:03:05ID:lavVPI3c
どうも有難うございます
参考にさせて頂きます
0540名前は開発中のものです。2010/03/03(水) 00:33:50ID:wPHsfoXn
てst
0541名前は開発中のものです。2010/03/06(土) 21:44:25ID:cKzvkmmp
プログラムというよりかはアルゴリズムの質問になってしまうと思うんですが、
パネポンみたいなパズルゲームのせり上がりの処理って
どういう風に考えればよいのでしょうか?
0542名前は開発中のものです。2010/03/06(土) 22:05:07ID:oMl4iNGE
普通に考えて、2次元配列のブロックを
描画では端数だけ上げて、1ブロック分上がったら
配列を前段繰り上げるようにすればいいと思うけど。

反問するけど、仮にせり上がりがなかったとして
どんな風に実装するつもりなんだ?
0543名前は開発中のものです。2010/03/06(土) 22:21:04ID:cKzvkmmp
ありがとうございます、かなり単純なことみたいですね…

何に対しての実装かちょっとわからないんですが、
ゲームの仕様ってことだったらパネポンと大して変わらないもの
を試しに作ってみたい思った次第です。
0544名前は開発中のものです。2010/03/06(土) 22:32:15ID:JczPuVwf
>かなり単純なこと
逆だバカ

やりたい事を難しく考え杉
0545名前は開発中のものです。2010/03/07(日) 03:26:35ID:uh/knnrz
VisualC++2008ExpressEditionについて質問です

出力したEXEでは画像が読み込まれるのですが、
F5やデバッグ開始ボタンだと画像の読み込みに失敗してしまいます。

これってビルドしたEXEを出力してるディレクトリに使いたい画像とかおくだけじゃだめなんですね
何を設定すればいいんでしょうか

一昨日からプログラムを始めたのでコンパイラそのものの仕様がよーわからんとです。
関連付け?カレントディレクトリ設定?と考えたのですがいまいちヒットしないので助力願います
0546名前は開発中のものです。2010/03/07(日) 03:34:34ID:uh/knnrz
書き込んだら冷静になって、自己解決しました
なぜかEXEを基準にかんがえてたのでDebugフォルダに画像などを用意してたとです・・・
プロジェクトやソースそのもの位置でいいのですね

お騒がせしましたorzスレ汚しごめんなさい
0547名前は開発中のものです。2010/03/08(月) 12:39:39ID:0nKKs+l0
カレントディレクトリは実行する人の都合で好きに変えられるから
どうしてもEXEの場所がいいなら、APIでEXEの場所調べてそこ使った方がいいぞ
0548名前は開発中のものです。2010/03/08(月) 15:10:42ID:OwcKYY2B
>>23
0549名前は開発中のものです。2010/03/10(水) 22:52:00ID:fado/aIt
プログラムを組んだ事の無い人間なんですが、
SLGを作ろうと考えてます。

2Dで3D処理は無しで考えてるのですが、
C++とHSPで作るとしたら、どちらが良いでしょうか?
長所と短所が有ったら教えて下さい。
0550名前は開発中のものです。2010/03/10(水) 23:06:19ID:cS7N9VCd
C++はかなり難しいと思うので初心者が手を出すとかなり時間が掛かるんじゃないかなあ
これやる位ならCから始めた方がいいかも
HSPは初心者向きの言語って言われてるからC++よりはこっちの方がいいんじゃないか
0551名前は開発中のものです。2010/03/11(木) 09:51:57ID:ar5ZJEPB
なぜHSPを挙げたのでしょうか。教えてください
0552名前は開発中のものです。2010/03/11(木) 13:24:30ID:I816Pm6U
車の運転免許取るときに、エンジンの構造の勉強からはじまったら嫌だろ。
最初は興味もあるだろうが、ブレーキ、ギア、クラッチ・・・とか延々と続くとやってられない。

目的が運転なら、オートマ車で
アクセル踏んだら進む、ハンドル切ったら曲がる、ブレーキ踏んだら止まる、
とか必要な部分だけをさくっと覚えて、
運転をしたくないか?

つーことで、ゲームを作るのに必要な最低限の機能が備わっている
HSPを覚えた方が良いから進めてるんだと思うぞ。

C++は何でも出来るけど、なぜ何でも出来るかを理解しないと、
何でも出来ないという所があるからお勧めしないんだと思うぞ。

0553名前は開発中のものです。2010/03/11(木) 14:38:37ID:ar5ZJEPB
それならツクール薦めりゃいんじゃん
0554名前は開発中のものです。2010/03/11(木) 14:42:19ID:VLD8tp4g
SLGツクールってどんなのがあるよ?
0555名前は開発中のものです。2010/03/11(木) 16:22:38ID:0Tgz6gC5
ていうかC++とHSPのどちらかと聞かれたからHSP挙げたまでで
より簡単だというんならそりゃツクールとかあるだろうよ
ただツクール金掛かるのが嫌だな
05565492010/03/11(木) 21:57:21ID:UxZwAiXZ
>>550
アドバイスありがとうございます。
>>552
更にわかりやすく、噛み砕いた説明ありがとうございます。

SLGツクール系は、買って合わなかったらやだな〜って事で
除外してました。

答えてくれた方々、ありがとうございました。
0557名前は開発中のものです。2010/03/15(月) 21:07:36ID:q4e6j4OO
>>549
参考スレ

初心者専用スレ「シミュレーションゲーム」を作らない?2
http://pc11.2ch.net/test/read.cgi/gamedev/1172141181/
0558名前は開発中のものです。2010/03/30(火) 23:55:58ID:i144vM1o
個人でFFTみたいなゲームを作ろうとおもうのですが
どんなソフトがあれば作れるでしょうか。
当方ズブの素人です。visual studio2008は持っています。
趣味で何年かかけて作ろうとおもっています。
後、初心者でゲーム作るならこの本読んどけってのもあれば
教えていただけるとありがたいです。
ご助力お願いします。
0559名前は開発中のものです。2010/03/31(水) 00:34:25ID:/1s1VCU/
逆に聞きたいんだけど、それ以外に何が必要だと思うの?
0560名前は開発中のものです。2010/04/03(土) 01:35:28ID:6drkN7Tj
再描画と安定したFPSについての質問です。
C#でGDIのゲームを作っているのですが、
Vista (32bit) まではヌルヌルだったのに、
7 (64bit) に変えたら微妙にコマ落ちするようになりました。
重くなったわけではなく、0.5秒ごとに割り込みが掛かっている感じでカクつくんです。

スレッドやプロセスの優先度を上げても変わらないし、
そもそもフレーム処理時間は安定して一定時間に終わっているようなのです。

Vista -> 7 で、なにかGDI周りの挙動に変更が入ったりしたのでしょうか?
0561名前は開発中のものです。2010/04/03(土) 07:11:45ID:ML07Lysw
分解能
0562名前は開発中のものです。2010/04/11(日) 21:47:05ID:Ko/6dSa+
ようやく規制が切れた

>>560
Windows7は全く使ったことのない俺だが、

>そもそもフレーム処理時間は安定して一定時間に終わっているようなのです。
ってことは描画に遅延が入っているか、GDIの描画先がオフスクリーンバッファで
それが表面に更新されていないかだろうね

1フレームの描画が終わったらGdiFlushを呼んでるか、HDCを開放しているか
くらいしか思い浮かばん
05635602010/04/12(月) 10:16:43ID:6QZI5wHp
>>561
ループで描画しているので分解能は関係ないんです。
QueryPerformanceCounter使ってるし。

>>562
おっしゃるとおり、GDIレイヤで遅延しているように見えます。
でもGdiFlushなども使ってみましたがダメでした。。。
0564名前は開発中のものです。2010/04/12(月) 16:29:39ID:Ub/aw0v4
7からはgdiはレガシーになった云々、ハードウェアアクセラレーションが云々。
0565名前は開発中のものです。2010/04/12(月) 22:16:40ID:ohJzuPYP
>>563
最終出力を自分のプロセスで行えない場合、システムに余力がないと更新が滞ることもあるな
全てのCPU使用率が常時50%以下になってるか確認してみるとか
05665602010/04/12(月) 22:49:05ID:6QZI5wHp
>>564
Direct2Dでごり押ししてみないと真相は不明でしょうか・・・。
GDIが全体的に遅くなるのなら理解できるんですが、
0.5秒という長すぎる間隔でカクつくのが腑に落ちないっす。
DWMがアンチティアリングをしているせいかとも思うんですが、確認するすべも思いつきません。。
05675602010/04/12(月) 22:50:32ID:6QZI5wHp
>>565
常時1%〜4%です。
タスクマネージャで確認するレベルですが。
0568名前は開発中のものです。2010/04/13(火) 00:32:26ID:mniTafWA
>>560
#これで、結局バックグラウンドでインデクシングが
#発生しているだけだったら笑える。ディスクアクセスしてない?

ところでそのループは描画しているウィンドウを生成したスレッドで動作してるの?
05695602010/04/13(火) 01:43:29ID:nmFp0o6d
>>568
ウインドウを生成したスレッドでしています。
何もしていない状態でもかくつきます。


いろいろ試してみたら、やはりDWMのアンチティアリングが影響しているようです。
0.5秒間隔のカクつきはV-sync待ちとのタイミングが最悪な時なのかも?
Aeroを切ったり、CreateWindowのスタイルパラメタを変更しても挙動が変わることが分かりました。
一番安定したのはAero状態のD2DでV-sync待ちで描画したとき。

正直大混乱中。よくわかんねーっす。。。
0570名前は開発中のものです。2010/04/13(火) 11:00:59ID:mniTafWA
>>569
Aero off と on で動作が違うと言えば、例えば::InvalidateRect()で、第3引数のbEraseをFALSEにすると
Aero off の時クライアント領域が更新されないことがあったりしたな。
ただこれはVISTAも同じだから、7だけおかしいと言うことだと関係ないかも知れないが。

GDIを利用して作成していると言うことだけど、どっかで更新をOSに任せてたりしないか?
一度全部明示的にアップデートしてみるといいよ。
0571名前は開発中のものです。2010/04/15(木) 22:39:37ID:oS8V8JHF
3Dのゲームを開発しています。

キャラクターが毎フレーム移動するんですが
その際に前回いた座標と今回いた座標を結んだベクトルを計算し、
壁などのポリゴンを通過したら押し戻すという処理をしています。
しかしポリゴンに対して直角(90度)に進めば押し戻されるのですが
10度くらいの角度で進むといずれはめり込み、
計算の誤差のようなもので通り抜けてしまいます。

こういう場合はどうしたら意図した動きになるでしょうか?
普通壁にめり込まない処理というものはベクトルで処理をするものではないのでしょうか?
0572名前は開発中のものです。2010/04/15(木) 22:56:32ID:oS8V8JHF
age
0573名前は開発中のものです。2010/04/16(金) 08:49:10ID:E7soBA+n
スレタイも読めない池沼さんはお帰りくださいね
0574名前は開発中のものです。2010/04/16(金) 15:39:17ID:tfuXF2uQ
>>571
移動してから次フレームで衝突判定するんじゃなくて
移動させて衝突判定させて移動量減らしてから移動確定
0575名前は開発中のものです。2010/04/17(土) 18:34:27ID:YPPhHYQE
>>574
その方法をとっているのですが上手くいきません
ベクトルとポリゴンは諦めて
球とポリゴンの当たり判定にしたいのですが
参考URLなどご存知ないでしょうか?
0576名前は開発中のものです。2010/04/17(土) 20:49:33ID:g85Nq5+3
DL版のMSDNが2GBもあるってどういうことだよ
おとす気が失せるな・・・
0577名前は開発中のものです。2010/05/02(日) 13:48:47ID:qwH1pwxC
_CrtSetDbgFlagがメモリリーク検出してくれないんだけど
心当たりある?
WinMainの最初で呼んでんだけど.
0578名前は開発中のものです。2010/05/02(日) 21:18:23ID:Fty9ttWn
>>577
デバッガで起動してないとか
0579名前は開発中のものです。2010/05/03(月) 00:13:29ID:G8fNhcut
してます...

別に仕様変更で,最近機能がなくなったとかじゃないですよね...?
0580名前は開発中のものです。2010/05/03(月) 00:24:48ID:G8fNhcut
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>

int main()
{
_CrtSetDbgFlag(
_CRTDBG_ALLOC_MEM_DF //メモリリークチェック用のヒープ使用
| _CRTDBG_LEAK_CHECK_DF //プログラム終了時にメモリリークチェック
);

int* p_int = new int();

return 0;
}

このプログラムでエラーメッセージがでません.
ちなみに,当方VCですが,メッセージは
出力ウィンドウでの確認で間違いないでしょうか?
0581名前は開発中のものです。2010/05/03(月) 17:53:02ID:F+lE+L/N
試しにやってみたら上のコードでメモリリーク検出されたよ

以下、出たメッセージ >>
Detected memory leaks!
Dumping objects ->
{59} normal block at 0x008F4D40, 4 bytes long.
Data: < > 00 00 00 00
Object dump complete.
<<ここまで

_CrtSetDbgFlag()をコメントアウトすると出なくなるからちゃんと機能してるみたい
環境はwin7 64bit VS2008で、win32コンソールアプリケーション
コンパイルの設定は、プリコンパイル済みヘッダを使用しない、にした以外はデフォルトのまま
0582名前は開発中のものです。2010/05/04(火) 04:57:17ID:2vXYcehC
SFCの奇々怪界〜謎の黒マント〜の丸パクリゲーを作りたいんですけども、
ゲーム製作に関する技術が0の状態です
プログラミングもまったく技術がありません
このゲームを作るのに向いているプログラミング言語がありましたら教えてください
勉強しようと思います
私のPCのOSはwin7です
windows系列で動作するゲームにしたいです
0583名前は開発中のものです。2010/05/04(火) 06:05:40ID:2vXYcehC
ちなみにwin7の64bitです
32でも64でも動くものにしたいです
■ このスレッドは過去ログ倉庫に格納されています