トップページgamedev
985コメント286KB

DXライブラリ 総合スレッド その7

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001名前は開発中のものです。2010/10/04(月) 17:24:47ID:zBoueRHu
Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

【公式】
http://homepage2.nifty.com/natupaji/DxLib/

【過去スレ】
DXライブラリ 総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1197468399/
DXライブラリ 総合スレッド 2008
http://pc11.2ch.net/test/read.cgi/gamedev/1224923873/
DXライブラリ 総合スレッド その3
http://pc11.2ch.net/test/read.cgi/gamedev/1238429676/
DXライブラリ 総合スレッド その4
http://pc11.2ch.net/test/read.cgi/gamedev/1249822550/
DXライブラリ 総合スレッド その5
http://pc11.2ch.net/test/read.cgi/gamedev/1259912953/
DXライブラリ 総合スレッド その6
http://hibari.2ch.net/test/read.cgi/gamedev/1267108154/
0839名前は開発中のものです。2011/02/27(日) 09:19:22.82ID:OH7ge9Jj
DXライブラリとフレームワークについては興味あるなあ
まぁこれもDXライブラリに限らない話だからスレチかな
0840名前は開発中のものです。2011/02/27(日) 09:35:38.18ID:tW/E8A8B
良くも悪くもラッパーライブラリだしな、フレームワーク必須に近い
それなりの規模なゲームを作ろうとしたら自前実装だらけになる
0841名前は開発中のものです。2011/02/27(日) 09:46:08.08ID:0L5aKjyl
ゲームフレームワーク作るなら、DXライブラリで楽できる分なんて
作業全体の中では少ないから結局自分でやっても変わらん
0842名前は開発中のものです。2011/02/27(日) 10:13:30.78ID:TzpLKbBT
>>841
いや、割と結構な部分省けるべさ
レンダリングフレームワークを作る手間がまるまる消えるんだし
0843名前は開発中のものです。2011/02/27(日) 13:46:42.55ID:9Fl/vGOB
DXライブラリの上に自前フレームワークを作るのなら
DirectXの余計なことに頭を使わなくてすむ。
クラス設計とかだけを考えれば良いからすごい楽になる。

ってか楽になった。
俺はもうDeviceLostと格闘するのは嫌だわ・・・
0844名前は開発中のものです。2011/02/27(日) 15:10:27.18ID:aZ0j/EAR
>フレームワーク
ベースの部分を、DXライブラリとそうでないものとで切り替えられると良いんだろうけどな。
0845名前は開発中のものです。2011/03/02(水) 00:54:47.81ID:u6ffonYs
BGMのループポイントの話だけど、ループポイントの設定の仕方がミリ秒とサンプルとバイトの3つあるけど、
それぞれメリットデメリットってあるの?
細かさは

バイト>サンプル>ミリ秒

なのはいいとして、やっぱバイト単位とかのほうがミリ秒と違って再生環境によるズレが無いのかな?
バイトってなんかこうファイルを直接見てる感じがするからそんな気がするのよ。
もしそうじゃなくて「ミリ秒でずれるときはバイトでもずれる」とかなら俺的には
バイトのメリットが無いからもうミリ秒でいいやって話になるわけよ。
どうせ10ミリ秒ぐらいの違いじゃあわかんないし俺。

というか
ttp://izuministrator.com/ref/
によると
SetLoopPosSoundMem
でバイトでの指定ができるはずなんだけど、なぜかミリ秒指定と同じ動きになっちゃってるから
バイト指定できなくて困ってるのよね。

長文スマソ
0846名前は開発中のものです。2011/03/02(水) 21:23:00.01ID:J7GxD6/6
公式のリファレンスでは、現在SetLoopPosSoundMemはミリ秒指定用の関数になってるね

ミリ秒でもズレないからミリ秒でやったほうがいいと思うよ
コード見たわけじゃないけど、多分内部では計算して単位揃えて同じ動作で動いてると思うし

バイトやサンプル数だと、周波数とか変えたとき変更しなきゃなるし、メリットは殆ど無いって言っていい
0847名前は開発中のものです。2011/03/02(水) 23:38:04.82ID:EReXQxMM
なるほどありがとう。

しかしまぁ公式リファレンスは
int GetCurrentPositionSoundMem( int SoundHandle ) ;
の項目で
int SetCurrentPositionSoundMem( int SamplePosition, int SoundHandle ) ;
のと同じ説明書いてるし信用できないな。
とりあえず名前が違うのに同じ挙動の関数がある時点で、
どちらかはバイトのほうを実装しようとして間違えたんだと思うけど。
0848名前は開発中のものです。2011/03/02(水) 23:57:52.31ID:qyJBDqiQ
バイト指定なんてしても変なずれ方するだけだし最小単位はサンプルでいいと思うけどそれは置いといて
ソースみたところ、SetLoopTimePosSoundMemとSetLoopPosSoundMemの実装が同じコードになってる。多分バグじゃないかな。
メリットデメリットの話で言うなら、それぞれの関数は内部でSetLoopSamplePosSoundMemの実装を呼び出してるだけなので全く同じなはず。
0849名前は開発中のものです。2011/03/03(木) 16:24:34.69ID:Zh6pP09G
同じような内容で、引数が違う関数の場合、
片方が他方のラッパーなんだろうな〜と思ってソースを眺めてみると、実は違う場合があったりするよな…。
0850名前は開発中のものです。2011/03/03(木) 17:31:53.66ID:EV+fS59G
そこら辺揺れるのが非公式関数だからなー
そういうのは公式に質問したほうがいんじゃないかな
なんらかのリアクションあるだろうし
0851名前は開発中のものです。2011/03/03(木) 21:36:34.77ID:9izXx4AI
DXライブラリでも、ちゃんと作れば状態遷移を行って帰ってきても1バイトたりとも増えないの?
メニュー画面からゲーム画面に行って帰ってくるとメモリ使用量が増えてるんだけど。
ちゃんと各画面において終わる時にInitGraphとInitSoundMem呼んでるしのに。
ファイル読み込み関連はLoadGraphとLoadDivGraphとLoadSoundMemしか使ってないからこれで大丈夫のはずなんだが。
fopenも使ったけどちゃんとfcloseしてるし。mallocの類は全く使ってない。
0852名前は開発中のものです。2011/03/03(木) 21:45:58.98ID:SaQE7YU5
メモリ使用量って何を見て言ってるの?
タスクマネージャなんだったら、ウィンドウを一時的に最小化してみたらいいよ
タスクマネージャの数字を減らすのは、自称詳しいユーザーを安心させる程度の意味しかない
0853名前は開発中のものです。2011/03/03(木) 21:55:06.60ID:9izXx4AI
最小化すると正しい値が出るの?
やってみたけどやっぱ上がったものは上がったままだなぁ。
0854名前は開発中のものです。2011/03/03(木) 23:03:00.90ID:UieYMyVE
ループを進めて時間が経ったらメモリ増えなくなるかも知れない。
ある程度のメモリは即開放されずに内部に留められたりするものらしい
0855名前は開発中のものです。2011/03/03(木) 23:32:31.47ID:qrLZpjId
読み込んだファイルはOSが一時的にキャッシュ保存しているよ。
0856名前は開発中のものです。2011/03/03(木) 23:35:35.10ID:9izXx4AI
じゃ、じゃあやっぱ気にしなくていいってことかな……うん。
0857名前は開発中のものです。2011/03/03(木) 23:37:05.63ID:zB1jyOJI
状態遷移のたびに際限なく増えてるならメモリリークの可能性大

あともしVista以降だったらタスクマネージャにデフォルトで表示されてるプライベートワーキングセットには
DLL側のメモリの使用量は含まれてないよ
0858名前は開発中のものです。2011/03/03(木) 23:59:37.80ID:9izXx4AI
えー……じゃあやっぱ原因探さないとな。ありがとう。
0859名前は開発中のものです。2011/03/04(金) 00:05:04.17ID:ZZu9fnGE
>>858
何処を見て判断しているか説明しないと、色々出るだけだろ。何処見てるんだよ!
0860名前は開発中のものです。2011/03/04(金) 00:08:06.20ID:Gm+qWo11
いや、タスクマネージャ……
0861名前は開発中のものです。2011/03/04(金) 00:25:23.10ID:phAV7U6c
とりあえずゲームループに入って100秒くらい経ってもまだメモリ増えるならアウト
0862名前は開発中のものです。2011/03/04(金) 01:01:17.80ID:Gm+qWo11
や、やっぱり法則がわからない。
何事も、初めのうちは増えるんだよね。
例えば効果音で、初めのうちは鳴る度にメモリ増えるんだけど、
何度も鳴ってると増えなくなる。
画像の読み込み+表示でもそうみたい。
0863名前は開発中のものです。2011/03/04(金) 01:06:04.38ID:Gm+qWo11
また肝心な事言い忘れた。
そういうことだから、やっぱループし初めは初めて尽くしだからポンポン増えてくけど、
落ち着けば変わったことが起こらない限り増えない。
0864名前は開発中のものです。2011/03/04(金) 01:07:59.19ID:Gm+qWo11
重ね重ねごめんね。誤字

ループし初めは初めて尽くし→ループし始めは初めて尽くし
0865名前は開発中のものです。2011/03/04(金) 01:30:31.12ID:+Ujkj93Y
ずっと動かし続けてみたら?
数時間プレイし続けただけで落ちたらメモリリークだろうし
0866名前は開発中のものです。2011/03/04(金) 23:09:56.12ID:3Qrvh8YP
プログラマ諸兄方に教えて頂きたい。

正直、俺のヘボいプログラムを人に見せるのは恥ずかしいけど、
訊くは一時の恥、とサンプルを晒します。

ttp://www.dotup.org/uploda/www.dotup.org1396225.zip.html

あくまでサンプルで、適当にやってるところもあるけど、大体において俺はこんな形でゲーム作ってます。
ご覧の通り一応動きはするけど、プログラムの組み方は拙いです。

これをいわゆる普通なやり方に直すとするとどうなりますでしょうか。
特にキャラクターデータやグラフィックハンドルの管理をどうしてるのか、とかが知りたいです。

よろしくお願いします。
0867名前は開発中のものです。2011/03/04(金) 23:26:51.42ID:kgJhX4cx
で、ダウンロードパスは?
0868名前は開発中のものです。2011/03/05(土) 00:21:59.55ID:wFok8gdI
あ、すみません。書くの忘れてました。
DXlib です。
0869名前は開発中のものです。2011/03/05(土) 00:32:14.95ID:Yfm7rI7q
やり方に直すって、全部コード書けってことかい?
流石に面倒だぞ
ぱっと見たところ、クラスちゃんと使えよと思ったな
C++の言語仕様くらいはちゃんと勉強しな
あとキャラクタ管理にはリスト構造とか使えばいいと思うよ
0870名前は開発中のものです。2011/03/05(土) 01:28:05.42ID:1UObIsvi
拙いという割にはちゃんと細かい処理も関数に分けてて分かりやすいと思う
コメント多めなのも良い
クラスなんて構造体扱いでも全く構わないよ
全体的にわかりやすいベターCコードって印象
0871名前は開発中のものです。2011/03/05(土) 01:31:08.83ID:Yfm7rI7q
構造体扱いなら
class Hoge{
public:
};
なんてせずに
struct{
};
でいいだろ。
そもそも、C++的に書きたいのか、C言語的に書きたいのかってのを言わんと目指すコードが分からんよな。
0872名前は開発中のものです。2011/03/05(土) 01:31:35.11ID:Yfm7rI7q
struct Hoge{}; だったすまん
0873名前は開発中のものです。2011/03/05(土) 04:19:43.37ID:/y9kIpiy
>>866
コメントも多いし処理ごとにブロック化されているので
読みやすくて(保守しやすいので)良いと思う。

敢えて言えば、サンプルだからかもしれないけれど
敵のタイプや数はマジックナンバーを使わないほうがいいと思う。
ENEMY_DATA[100]も、#define ENEMY_NUMBERS 100 とかにして
まとめてヘッダに定義しておけば可読性もあがるし、敵の数を
変える必要があっても、他の部分(たとえば敵初期化時の
forループの所とか)も直さなくていいから、楽になると思う。
0874名前は開発中のものです。2011/03/05(土) 04:21:30.33ID:/y9kIpiy
>キャラクターデータやグラフィックハンドルの管理
C++で書くつもりなら、ゲーム内のオブジェクトについては
まず基底クラス作って、そこから各キャラを派生させて
敵や弾ごとにリストや、マネージャーとなるクラスで
管理しておけば処理や修正も楽だよ。

そうしておけば、サンプルのように描画時に敵のタイプで
switchしなくても、たとえば敵リスト->Draw(); みたいに
書くだけでOKだし、もし新キャラを後で追加したくなっても
Draw_rtn関数内は何も修正しなくてすむ。
同様に移動処理も、基底クラスのメンバに仮想関数として
Move()とか持たして、派生先の各キャラごとに実際の処理を
書いておけば、Move_rtn関数内では
敵リスト->Move(); とかしておくだけですむ。

でも最初にカッチリと複雑なものを作ろうとして、
いつまでたってもゲーム完成できない…というのは最悪なので
当面はこういう感じで書いていくのもいいと思う。
不便や必要を感じたら、その都度勉強したらいいし。

こういった話はDxLibの話とは関係ないし、
C++で書かれているゲーム開発用の入門書のサンプルにたいてい
載ってると思うので何冊か買ってみるといいかも。
0875名前は開発中のものです。2011/03/05(土) 13:47:42.01ID:lRq0e7jV
しかし管理人様はマジですげーぜ
0876名前は開発中のものです。2011/03/05(土) 16:58:19.71ID:4fF2MP2u
同意
0877名前は開発中のものです。2011/03/05(土) 21:00:41.90ID:+x8oBxgp
画像のハンドル=ポインタですか?
0878名前は開発中のものです。2011/03/05(土) 21:06:11.54ID:QynImjUh
違います
0879はじめまして。2011/03/06(日) 22:54:57.95ID:QYrw4Tbt
確認なのですが、DXLibの描画順序って、コードの順序ですよね?

しかし、まずフィールドモデル(mqo)を描画した後、
メタセコイアで透過PNGを貼りつけた板モデル(mqo)を描画すると
板が先に描画されたかのように表示されます。

具体的には、以下のように表示されます。
http://cdn-ak.f.st-hatena.com/images/fotolife/p/peroon/20110306/20110306223051.jpg?1299418311

どうすればよいのでしょうか?
0880はじめまして。2011/03/06(日) 23:00:32.76ID:QYrw4Tbt
すみません、ちょっと怪しい部分がありますので、
もう少し自分で調べてみます。
0881はじめまして。2011/03/06(日) 23:12:39.74ID:QYrw4Tbt
ミスでした。思い通りに描画できました。

(update()でも描画していたというオチでした。。w)
0882名前は開発中のものです。2011/03/07(月) 00:49:57.69ID:CZyikCNH
透過処理のポリゴンは大変なんですよ。
Zバッファーへの書込みをしなかったり、Zソートして描画しないといけなかったり。
>>879は、単にZバッファーに書込みしてるのでそれをOFFすれば、そのシーンだけは
正しく表示されるかな。
0883名前は開発中のものです。2011/03/07(月) 19:08:00.52ID:b7x4k2Cf
Zソートってみんなどうやってるの?
俺とりあえず表示する予定の全モデルの全メッシュを片っ端からキューに入れて
メッシュ座標の最大値と最小値の中点求めて
それのワールド座標求めてそれのスクリーン座標求めてそれのZでソートかけて描画してる
糞重たそうwwww
最近のPCスペック高いからぜんぜんわかんないけど
0884名前は開発中のものです。2011/03/07(月) 19:16:35.82ID:qzzE/e1x
PlayMovieでGIFアニメの再生が可能、と聞いたのですが
0885名前は開発中のものです。2011/03/07(月) 22:14:07.46ID:xxQTGPDS
なんかFPSが安定しないな〜って思って
vsync待ちする時間を1分測ってみたら
60fps目標でで20ミリ秒以上待つフレームが
0.3〜0.6%ほどあるんだけど
そういうもんなんかな?
BGMとゲーム内容を同期させたいから0.2秒くらいずれると
違和感感じるようになって困っちゃうんだよね
0886名前は開発中のものです。2011/03/07(月) 23:05:01.44ID:SO4RWHi7
>>885
どういうコード書いてるか知らんけど
自分は龍神録のコードのfps制御のとこだけコピペしたらすごい安定したよ
0887名前は開発中のものです。2011/03/08(火) 00:37:13.97ID:3MPvLyMj
>>886
簡単なテストコードなんだけどね〜
前回ScreenFlipした直後と
今回ScreenFlipした直後の間の時間を求めるだけの

自分の環境だけなのかどうか判断したいんで
ちょっと試してみてくれんかな?
ウィンドウモード時とフルスクリーンモード時の二つ
ソースも一応いれといた
http://www1.axfc.net/uploader/Sc/so/212454
パスはvsync

フルスクリーンの時のほうがタイムオーバーする回数がだいたい2倍多くなるんだよな〜
0888名前は開発中のものです。2011/03/08(火) 00:51:45.04ID:bFxplNfr
タイムオーバーカウントとやらは
ウィンドウ:0〜3回
フルスク:6〜12回
程度。
フルスクは立ち上がりの1秒くらいが不安定っぽいな
0889名前は開発中のものです。2011/03/08(火) 00:57:56.84ID:KY1+fYB9
関係ないかもしらんが俺の環境ではフルスクリーンだとなぜかVsync待ちすらしてないようでvsync_time: 0.005くらいが出まくってた。カウントは16。
0890名前は開発中のものです。2011/03/08(火) 22:22:52.93ID:3MPvLyMj
>>888
>>889
テストありがとう
ん〜、環境によってわりかし違うなぁ
どうすべ〜
0891名前は開発中のものです。2011/03/08(火) 22:26:55.30ID:8AuwhuEL
環境設定で垂直同期オフのタイマー待ちモードを選べるようにしたらいいんじゃないか
0892名前は開発中のものです。2011/03/08(火) 22:38:03.07ID:6A/P0SlX
似たような話で申し訳ないが、俺もちょっと気になる事が。

俺は垂直同期信号待ちを切ったプログラムを組んでる。
それとは別に、ウィンドウモードかフルスクリーンモードかを記録して、
プルグラム起動時にはその記録を読み込んで、どちらのモードで始めるか決まるようにしてる。

で、ここからが気になる事なんだけど。

フルスクリーンで起動した時は、まったくティアリングが出ないんだけど、
ウィンドウモードからフルスクリーンに切り替えた時は酷いティアリングが発生してしまう。
(フルスクリーンで起動して、一度ウィンドウモードにしてからまたフルスクリーンに戻しても同じ)

普通に考えたら垂直(略)待ちしてなければティアリングは発生して当たり前なんだから
フルスクリーン起動時の方が特殊なんだろうか??

他の人でこういう現象を経験した人っていますかね。
0893名前は開発中のものです。2011/03/08(火) 23:27:50.64ID:hpvVdE5K
>>886に同じ
0894名前は開発中のものです。2011/03/09(水) 00:22:43.32ID:rJmaFgi1
>>892
フルスクリーン → ウィンドウモード → フルスクリーン の時の動作が良くわからんなあ。
0895名前は開発中のものです。2011/03/09(水) 00:50:26.09ID:OL3/YmmT
>>892
その様な話を聞いた気がする。新しいので治っていたような…と曖昧な記憶があった。
0896名前は開発中のものです。2011/03/10(木) 05:50:27.58ID:6m0CA7fb
グラフィックの白い部分は濃度100%で、灰色の部分は濃度50%で描画したいんだけど、いい方法ないかな?

そうしたいグラフィックをhoge_a.bmpにして真っ白いhoge.bmpも用意してhoge.bmpのほうを描画するようにすればいいんだろうけど
あんまスマートじゃないよね。
0897名前は開発中のものです。2011/03/10(木) 06:16:14.89ID:FAQ2zmRE
それ加算合成じゃね?
0898名前は開発中のものです。2011/03/10(木) 07:04:03.90ID:6m0CA7fb
違うのよね。例えば描画しようとした場所が元々、色(255,128,0)だったら
白い所は色(255,255,255)になって灰色(128,128,128)の所は色(255,192,128)になって、黒いところは色(255,128,0)のままって感じ。
ようはアルファブレンドの濃度を画像から読み込みたいの。
DrawGraph系はそれがデフォで実現できるんだけど。
0899名前は開発中のものです。2011/03/10(木) 07:18:31.39ID:vOLR/zA1
素直に>>896に描いた通りに画像を用意するか、そういう透過度のPNG画像を用意するかだね
PictBearとかあればぐその通りのPNG生成できるし
0900名前は開発中のものです。2011/03/10(木) 07:24:22.95ID:6m0CA7fb
ああーPNGかぁ……そういえばそんなのもあったねぇ。
16色BMPしか使った事無かったからその発想は無かった。
0901名前は開発中のものです。2011/03/10(木) 07:25:05.24ID:6m0CA7fb
言い忘れた。
回答ありがとうございました。
0902名前は開発中のものです。2011/03/10(木) 07:26:03.94ID:vOLR/zA1
16色BMPっていつの時代だよw
0903名前は開発中のものです。2011/03/10(木) 07:37:10.25ID:6m0CA7fb
いやなんかこう、描いたまんまなのが保障されて信用できるっていうか。
(0,0,0)だけが透過されるってわかりやすいし。元々俺ドット絵しか描けないし。

でもPNGって色情報とその色が何ビット連続で続くかっていうデータ構造なんだっけか?
それなら見た目は変わらないだろうしそのほうがサイズ的にもいいんだよね。
いや前から気付いてたんだけどね、めんどくさいからずっとそのままでやっての、ごめん。
0904名前は開発中のものです。2011/03/10(木) 09:38:01.41ID:jQ8f/olW
PNGは基本的にはピクセルのデータをzip圧縮してるだけ
可逆圧縮だから絶対に全てのピクセルが描いたままの色になる
0905名前は開発中のものです。2011/03/10(木) 12:34:25.51ID:+yprSrry
俺も最初bmpでやってたけどpngにしたら
かなり表現したいものが楽で簡単に作れるようになった
おすすめ
0906名前は開発中のものです。2011/03/10(木) 12:35:03.98ID:+yprSrry
楽で簡単ってなんだよ…orz
0907名前は開発中のものです。2011/03/10(木) 19:59:55.15ID:6m0CA7fb
やったぁPNGでできたヨーありがと
0908名前は開発中のものです。2011/03/10(木) 20:13:25.51ID:FAQ2zmRE
PNGでドット絵というなら、pngoutっていうフリーのコンソールアプリケーションでPNGの最適化とかおすすめよ
別にしなくてもいいけど
0909名前は開発中のものです。2011/03/10(木) 20:33:30.41ID:6m0CA7fb
ということはデフォルトでは最適じゃないってこと?
まぁ情報ありがとう。
0910名前は開発中のものです。2011/03/10(木) 21:43:01.44ID:2JxcKgYY
圧縮の最適なパラメータ値を探し出すのは
わりと時間がかかるからね。
0911名前は開発中のものです。2011/03/10(木) 23:01:54.80ID:eX9JRndm
男は黙って32bitBMP
0912名前は開発中のものです。2011/03/11(金) 07:33:52.45ID:gK4E7Ao2
データーがでかすぎじゃん。
最近のゲームはDVD埋めるためにBMP使ってるとしか思えん
0913名前は開発中のものです。2011/03/11(金) 07:45:02.94ID:fDILOKgF
最近のゲームってBMPなのか?
違法コピー対策にデータ量水増ししてるという話は聞いたことあるけど
0914 [―{}@{}@{}-] 名前は開発中のものです。2011/03/11(金) 07:46:39.43ID:jcxEZYMy
でも結局実行するときには展開するわけじゃん。圧縮したまま表示できるわけじゃないし。メモリ使用量は変わらんのでしょ?展開処理が省かれる方がいいじゃん
0915名前は開発中のものです。2011/03/11(金) 08:26:21.44ID:3h44Ixvy
メモリやCPUの少ないPSとかの中期コンシューマ機はわからないけど、
そういった処理能力が十分にある最近のPCは「展開速度<読み込み速度」だと思うのよね
大きいファイルをHDDガリガリ言わせて読み込むよりは、小さい圧縮ファイルをちょいと読み込んで、
高速なメモリやCPUで展開した方が速度的には早いんじゃないかな
0916名前は開発中のものです。2011/03/11(金) 10:50:48.71ID:plaIhemI
そもそもそんなbmpとかpんg違うだけで変わってくるもんなんか
0917名前は開発中のものです。2011/03/11(金) 10:50:54.67ID:OccSvVJ3
SDカードからデータを読み込む時マップ移動でめっちゃ遅かったけど
圧縮してみたら物凄い早くなってびっくりした
0918名前は開発中のものです。2011/03/11(金) 10:56:30.82ID:LEs/Jeuf
そりゃHDDに比べて転送速度がかなり遅いのが多いからな
0919名前は開発中のものです。2011/03/11(金) 11:36:41.06ID:KcMscP0h
>>884
過去スレにそういう話が出てた。
14ヶ月ぐらい前のレスだったけど、多分
今も再生できると思う。


645:名前は開発中のものです。[sage]2010/01/18(月) 19:34:01 ID:YzUndEty

gifアニメ、
PlayMovie()で出来たはず。
0920名前は開発中のものです。2011/03/11(金) 21:37:47.82ID:plaIhemI
つい2か月前じゃんw
0921名前は開発中のものです。2011/03/11(金) 21:58:57.74ID:XN7O6btB
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
0922名前は開発中のものです。2011/03/11(金) 22:06:30.00ID:7H8Pgyin
>>890だけど
結局vsync待ちするのやめて
ティアリング発生覚悟で
高精度パフォーマンスカウンタでFPS制御することにしたわ
すげー安定した
ティアリングも思ったより気にならない
0923名前は開発中のものです。2011/03/11(金) 22:41:51.60ID:TNQZ9jw4
そういえばVistaか7かでOS側がティアリング防止してるなんて話も聞いたような気がする
垂直同期信号待ちとかもうする必要なさそうだね
0924名前は開発中のものです。2011/03/11(金) 22:44:33.33ID:7H8Pgyin
>>923
らしいね、オレはXPだから関係ないけどな〜
どういう仕組みでティアリング防止してるんだろ
0925名前は開発中のものです。2011/03/11(金) 22:50:03.08ID:TNQZ9jw4
ちょっと調べた感じだと、単純に1フレーム遅らせてるだけみたい
Vistaでマウスの位置に画像を表示するだけのプログラム動かすとちょっと遅れて付いて来てるような感じを覚えてるなそういえば
0926名前は開発中のものです。2011/03/11(金) 22:54:16.60ID:2Fw05PYB
DWMは画面全体をゲームの画面と同じように描画するんだよ
DXライブラリの言葉で説明すると、まず各ウィンドウをそれぞれ別々のグラフィック(テクスチャ)に描いて
それをDrawGraphで裏画面に描画した後、垂直同期待ちを行ってから表示する
0927名前は開発中のものです。2011/03/12(土) 11:21:42.70ID:9O79jOON
管理人さん無事みたいだな
0928名前は開発中のものです。2011/03/12(土) 11:26:31.82ID:f65tMTTN
おお、よかった
0929名前は開発中のものです。2011/03/12(土) 11:37:26.12ID:o3j8l5hp
よかたよかた
0930名前は開発中のものです。2011/03/12(土) 11:59:56.06ID:yD3YkCG3
ふう
0931名前は開発中のものです。2011/03/14(月) 22:40:22.44ID:gNx4XTy2
流れぶったぎったうえに初心者で申し訳ないんですが、質問させてください。

アクションゲームを作ろうと思っているんですが、
CheckHitKey関数でキー情報を取得→ベクトルで座標計算
という風にすると左キーと右キーを同時押しした時に
右と左に同時に座標が計算されて、キャラが静止してしまいます。
これを回避するにはどうすればいいでしょうか?
まだポインタも理解していない程なので理解力が低いかもしれませんが、
よろしくお願いします。
0932名前は開発中のものです。2011/03/14(月) 22:45:54.96ID:UnZDECUY
静止しちゃまずいのか?
どう動いて欲しいのかを書かない限り「どのコードも正しい」
0933名前は開発中のものです。2011/03/14(月) 22:55:43.30ID:gNx4XTy2
>>932
すいません、言葉足らずでした。
反対方向のキーを押した場合、
後から押した方のみを計算したいんです。
(右を押しながら左を押すと左に行くみたいな)
GetNowCount関数を使って時間差で比べようと思いましたが、
どうにも上手く書けなくて…
出来れば教えて頂くのは考え方だけで、
ソースは自分で頑張りたいと思います。
0934名前は開発中のものです。2011/03/14(月) 23:06:54.10ID:TbizatYE
前のフレームの状態を覚えておくんだよ
それを現在の状態と比較すれば、押されたキーや離されたキーがわかる
0935名前は開発中のものです。2011/03/14(月) 23:13:39.89ID:gNx4XTy2
>>934
アドバイスありがとうございます。
秒じゃなくてフレームじゃないと駄目だったんですね。
…そりゃそうか。
完成できるよう頑張ります!
0936 [―{}@{}@{}-] 名前は開発中のものです。2011/03/14(月) 23:21:23.20ID:E5S/TLVJ
while(1)
{
  old_left_key_state = left_key_state;
  old_right_key_state = right_key_state;

  if(CheckHitKey(LEFT_KEY)){ left_key_state = PUSH; }
  else{ left_key_state = RELEASE; }
  
  if(CheckHitKey(RIGHT_KEY)){ right_key_state = PUSH; }
  else{ right_key_state = RELEASE; }

  if(left_key_state == PUSH && right_key_state == RELEASE){ press_key = LEFT_KEY; }
  if(left_key_state == RELEASE && right_key_state == PUSH) { press_key = RIGHT_KEY; }
  if(left_key_state == RELEASE && right_key_state == RELEASE){ press_key = NONE; }

  if(left_key_state == PUSH && right_key_state == PUSH){
    if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
    if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }
  }
}
0937名前は開発中のものです。2011/03/14(月) 23:54:12.21ID:gNx4XTy2
>>936
コードありがとうございます。
自分で作るとか言っときながら、あっさり見てしまいました。
でも参考になりました!やっと悔いなく先に進めそうです。
0938名前は開発中のものです。2011/03/15(火) 00:03:07.27ID:X3tKRN+k
ttp://dixq.net/rp/2.html
これの値でかいほうにすりゃいんじゃね
0939名前は開発中のものです。2011/03/15(火) 03:26:20.84ID:DqTTW319
これ関係ないキーまで256回もチェックするのが気になるのだが
256回程度じゃ問題ないという考えなのか

あとその上の奴は4塊目
普通
else if(left_key_state == RELEASE && right_key_state == PUSH) { press_key = RIGHT_KEY; }
else if(left_key_state == RELEASE && right_key_state == RELEASE){ press_key = NONE; }
入れるもんじゃないのか

もしそうするとその次の
if(left_key_state == PUSH && right_key_state == PUSH) も else だけで済むでしょう

それとその後の
    if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
    if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }
だが
left_key_state == PUSH && 、right_key_state == PUSH && いるかね
こまけえこたあいいんだよ?
レス数が900を超えています。1000を超えると表示できなくなるよ。