[過去ログ]
DXライブラリ 総合スレッド その19 [無断転載禁止]©2ch.net (1002レス)
DXライブラリ 総合スレッド その19 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
91: 名前は開発中のものです。 [sage] 2016/08/13(土) 05:15:02.85 ID:smt/5o17 単位は人それぞれだけど、精度を下げりゃ描画が甘くなるのはそりゃ当然よ http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/91
92: 名前は開発中のものです。 [sage] 2016/08/13(土) 08:56:44.42 ID:kHkMVs63 Zバッファのビット深度を変更する関数があったような デフォは16bitだから32bitとかにしてみては http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/92
93: 名前は開発中のものです。 [sage] 2016/08/13(土) 09:38:49.80 ID:cO1Dtflu >>90 俺も以前同じようなことで悩んだわ Near Clipは破綻しない程度に大きな値をとる必要があるとのこと 俺の場合は1メートル〜数万キロのレンジで幅が広すぎて単位をどう弄ろうがZバッファの深度を深くしようがダメだったんで、 ここで教えてもらった「ワールド空間を複数の距離レンジに区切ってそれぞれを描画し最後に合成する」手法で切り抜けた おかげでカメラが物体から5メートルまで寄ろうが1万キロ離れようがあまり問題はなくなった ただし代償として描画処理の負荷は上がったけど・・・ >>92 SetZBufferBitDepthでZバッファの深度を変えられる でも確か24ビットまでじゃなかったかな? http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/93
94: 90 [sage] 2016/08/13(土) 10:22:48.53 ID:MTyr6UWS >>91-93 レスありがとうございます SetZBufferBitDepthは簡単なのですぐに試してみます 「ワールド空間を複数の距離レンジに区切ってそれぞれを描画し最後に合成する」手法は ちょっと簡単にはできなさそうですが、プロのゲームっぽいですね。すごい http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/94
95: 名前は開発中のものです。 [sage] 2016/08/13(土) 13:32:29.62 ID:cO1Dtflu >>94 方法さえ教えてもらえればそんなややこしい実装じゃなかったよ 1. まずMakeScreen関数で合成用のサブ画面を作る 2. SetDrawScreen関数で作成したサブ画面を描画対象にしてその後カメラのパラメータを設定 3. SetCameraNearFar関数でカメラから一番遠いクリップ領域を指定 4. ワールド空間の物体を描画 5. SetDrawScreen関数で裏画面を描画対象にする 6. DrawGraph関数で合成用サブ画面に描いたグラフィックを裏画面に投下処理つきで描画 7. 2〜6をクリップ領域を1つずつ手前に近づけながらforループで必要回数だけ繰り返す 8. ScreenFlip関数で裏画面と表画面を切り替える みたいな感じ 継ぎ目がちょっと気になるという欠点があるらしいけど、俺の作ったプログラムでは大して問題にはならなかった http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/95
96: 名前は開発中のものです。 [sage] 2016/08/13(土) 17:10:08.44 ID:MTyr6UWS >>95 ありがとうございます。実装できる気がしてきました http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/96
97: 名前は開発中のものです。 [sage] 2016/08/23(火) 06:56:44.62 ID:8oK85pQf すいません。 初歩的なことを教えて下さい。 DXライブラリを3.12aから3.16d(最新版)に昨日上げたのですが、以下の様なエラーが出ます。 エラー 1 error LNK1104: ファイル 'DxDrawFunc_vs2012_x86_d.lib' を開くことができません。 丁度ドライブが一杯になったのでそれでファイル欠損起こしたのかと、整理して落としなおして 再インストールしても変わりません。 消さないでいた3.12aに戻せば正常にコンパイルできます。 どんなポカミスが考えられるでしょうか。 http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/97
98: 名前は開発中のものです。 [sage] 2016/08/23(火) 08:00:58.44 ID:ZkV35hFb DXライブラリのフォルダの下を 'DxDrawFunc_vs2012_x86_d.lib' で検索して、 そのフォルダがプロジェクトのプロパティの「リンカー」の中の 「追加のライブラリディレクトリ」に設定されているか確認してみたか? 設定してなかったら設定する http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/98
99: 97 [sage] 2016/08/23(火) 10:52:44.72 ID:8oK85pQf ありがとうございます。 おっしゃるとおりでした。 C/C++全般のインクルードディレクトリだけ変更してリンカ全般の追加を変更していなかったのが原因でした。 これで総て正常終了できました。 ありがとうございました。 http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/99
100: 97 [sage] 2016/09/16(金) 19:48:32.55 ID:/GVguODS DrawBox()って思った以上にコスト高なのね。 エディタ作っているのですが、マウスで指定範囲を決定するのに半透明のFilling=TRUEで サイズが{400,200}程度になると追いついて来ないし。うちの環境だと。 まあ範囲が分かれば良いだけなので、非透明のFilling=FALSEにしましたが。 機能の根幹に必要な命令じゃなくて良かった・・・。 http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/100
101: 名前は開発中のものです。 [sage] 2016/09/16(金) 20:42:39.00 ID:arX7j3iZ ハードウェアで描画してないだけちゃうの? http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/101
102: 100 [sage] 2016/09/17(土) 02:14:24.29 ID:bU3etqlH >>101 SetUse3DFlag()指定しなければデフォで使ってくれないの? TRUEで明示してみたけどやっぱ重かった。 http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/102
103: 名前は開発中のものです。 [sage] 2016/09/18(日) 05:02:11.08 ID:/gg7FKD1 画面全体塗りつぶすのに毎フレーム使ったりするし重いわけないと思うがなぁ 最新版では試してないけど http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/103
104: 100 [sage] 2016/09/22(木) 22:23:47.41 ID:j/yM3Z13 >>103 すいません、DXライブラリは無罪でした。 コード読み直していたら、離れた所から12回ループでDrawBox()してからScreenFlip()しておりました。 そりゃ感覚とは結果が違うのも当たり前で。 大変失礼しました・・・。 http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/104
105: 名前は開発中のものです。 [sage] 2016/09/23(金) 11:02:39.00 ID:grmg4z9F ∧∧ ヽ(・ω・)/ ズコー \(.\ ノ 、ハ,,、  ̄ まぁ原因判明してよかったね http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/105
106: 名前は開発中のものです。 [sage] 2016/09/26(月) 22:11:34.39 ID:gS8npJwc スーファミっぽくラスタースクロールの波うつようなあのぐにゃぐにゃした表現をしたいんだけれども DrawRectGraphで一列ずつ描画するのと SetDrawAreaで描画できる範囲を一列ずつ変更しながら描画するのと どっちが早いんだろう http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/106
107: 名前は開発中のものです。 [sage] 2016/09/27(火) 07:34:39.52 ID:6RU/4Se1 どっちもクソ遅そうな気が…… ラスタースクロールのシェーダー書くのがいいが、 シェーダーはDXライブラリではちょっと敷居が高くてプログラム難しそうなのな ボーンを仕込んだポリゴンの板に画面の画像を貼り付けて、 ボーンでラスタースクロールふうにアニメーションさせるのが楽な気がする http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/107
108: 名前は開発中のものです。 [sage] 2016/09/27(火) 12:29:31.97 ID:kk2kAC73 10年前のPCで動くSTG(弾は500発程度)で、640*480程度なら上から一行ずつ描画でも特に処理落ちしなかった DrawRectGraph使った 今のハードなら余裕だと思う http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/108
109: 名前は開発中のものです。 [sage] 2016/10/04(火) 20:15:50.94 ID:rnDdxDqG SetLoopAreaTimePosSoundMem() この関数めっちゃ便利なんだけどググっても全くヒットしなかったんだが、いつ頃からあるんだろ? ループ開始位置と終了位置をms単位で指定できるから音声ファイルを編集する必要がなくなった 無加工のファイルでもこっちの好みでループ範囲を指定できるから 音楽ファイルはこの素材屋からDLしてねってreadmeに書いておけば配布するファイルサイズも小さく出来る あと軽く検証しただけだけど再生中に指定しなおしても有効だったから FF6のラスボス戦みたいに イントロ‐Aメロ‐繋ぎ‐Bメロ‐繋ぎ‐Cメロ〜 みたいになってるファイルで 最初はAメロをループ、条件を満たしたら繋ぎを経由してBメロループに移行〜みたいな演出も簡単に出来る http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/109
110: 名前は開発中のものです。 [sage] 2016/10/04(火) 21:56:37.68 ID:HgclvPkb そんなのあったのか 最後まで行ったら途中から再生、ってのは 結構前からあったの覚えてるんだが http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/110
111: 名前は開発中のものです。 [] 2016/10/15(土) 11:32:13.14 ID:NMxKtSgQ 試してないけど アンドロイドでも 動くように なってたのね知らなかった 何処まで、動くのかな? http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/111
112: 名前は開発中のものです。 [sage] 2016/10/16(日) 19:58:12.00 ID:ZsomXKa1 あらかじめ大きめのサイズの空っぽの画像をMakeScreenで用意しておくことの有用性に今頃気付いたぜ これとDerivationGraphのコンビで作り直したらぐっと軽くなった http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/112
113: 名前は開発中のものです。 [sage] 2016/10/16(日) 21:02:14.27 ID:ldA8bGPF テクスチャ切り替えはコスト大きいからね http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/113
114: 名前は開発中のものです。 [sage] 2016/10/23(日) 23:02:40.45 ID:t2BOiWAY >>109 使ってみたら、ほんとにスゴイですね。 時代がCDDAやストリーミング再生になってもう無限ループは無理なのかなーとか思っていたのだけど。 ただWAVEで成功したのでそのデータをMP3にしたら、上手く繋がらなくなっちゃった。 もう少しデータの作り方工夫すれば上手く行くのだろうけど。 http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/114
115: 名前は開発中のものです。 [sage] 2016/10/24(月) 06:53:24.03 ID:YwSDnTaO >>114 MP3はこの関数に限らずループの時に違和感が出ると言われてるから たぶんMP3の仕様の問題もあると思う ogg形式では上手くいったよ ただ変換の時にビットレートを固定したファイルでしか検証してないから 可変ビットレートの方法で圧縮されたoggファイルで上手くいくかは未検証 http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/115
116: 名前は開発中のものです。 [sage] 2016/10/24(月) 12:40:43.17 ID:GmlKA2wN MP3は権利の問題があるから他の使えって言われてた時期があったね http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/116
117: 名前は開発中のものです。 [sage] 2016/10/24(月) 13:10:36.88 ID:Y2gOrRK8 権利よりも仕様が問題だな MP3は無音が挿入されたり余計なことされる場合が多いからゲームに使うようなもんじゃない 他の環境では手抜き実装でWindowsの再生機能に丸投げできるメリットがあるが、DXライブラリなら関係ないし http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/117
118: 名前は開発中のものです。 [sage] 2016/10/24(月) 23:43:54.13 ID:UrCtC7CV ループできないからだったか、昔は DXライブラリではogg使うなとかもあったね http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/118
119: 名前は開発中のものです。 [sage] 2016/10/27(木) 13:49:28.51 ID:1Lorx2LL 昔は BGMにはmp3, 効果音にはwav だったでしょ http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/119
120: 名前は開発中のものです。 [sage] 2016/10/27(木) 15:57:58.01 ID:HwaxCMEV 116の言う通りmp3はライセンス関係が危ないということで避けられoggが推奨されていた 仕様よりもこっちのほうが重大問題 ゲーム制作関係でmp3推奨というのは聞いたことがない http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/120
121: 名前は開発中のものです。 [sage] 2016/10/27(木) 17:43:02.40 ID:rFz+rXeH MP3登場時にはoggなんてなかったから Wavよりファイルサイズの小さいMP3を推奨する風潮はあったと思うけど http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/121
122: 名前は開発中のものです。 [sage] 2016/10/27(木) 18:10:43.67 ID:HwaxCMEV ogg普及前はソフトウェアMIDIが多かった もしmp3が主流だったと思う人がいたら、その人のいた界隈はライセンス関係の意識が薄かったんだよ まぁ00年代前半まではそういう時期でもあったけど http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/122
123: 名前は開発中のものです。 [sage] 2016/10/27(木) 20:01:09.28 ID:lueiMAyc 市販のゲームで5000本以上販売が課金の条件だったから、フリーゲームや小規模同人では普通に使われてたよ http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/123
124: 名前は開発中のものです。 [sage] 2016/10/27(木) 20:28:51.91 ID:BuMiN4CL 制作中のゲームにはキャラの髪型や服や装備や小物を変えるキャラメイキング(着替え)の機能があって、 今はひとつのMV1ファイルにまとめておき、フレーム表示/非表示で切り替えてるのですが、 だんだんアイテムが増えてきてファイルが大きくなってしまったので 別の方法をとりたいのですが、 キャラメイキングや着替えを実装するのに何かいい方法ありませんか? 髪型や服や装備や小物ごとにXファイルでバラバラにしておいて、Xファイルをテキスト結合するのが 楽なのではないかと思っていますが、もっと良い方法ありませんか? http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/124
125: 名前は開発中のものです。 [sage] 2016/10/31(月) 19:03:23.01 ID:X+KVjoNa DXライブラリのユーザーが作ってるのって 2Dゲーと3Dゲーのどっちが多いんだろ? 俺は3Dには手が出せてないんだけど http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/125
126: 名前は開発中のものです。 [sage] 2016/10/31(月) 19:10:44.78 ID:8dsRDt6U 2D http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/126
127: 名前は開発中のものです。 [sage] 2016/11/01(火) 22:09:07.08 ID:kJ7Uoghc 3Dは海外のゲームエンジンが無料化されてしまったので、 3Dゲーム制作者はそっちへ行ってしまった気がする 2Dだとどれもあんまり変わらない気がするが http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/127
128: 名前は開発中のものです。 [sage] 2016/11/01(火) 22:26:25.51 ID:+8ot24fl 2Dも描画しかないDXライブラリよりもオブジェクト管理出来たりするエンジンに流れている気がする http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/128
129: 名前は開発中のものです。 [sage] 2016/11/02(水) 07:20:39.55 ID:/aW+4m+D 全部コードに直書きする形でならなんとか自分の思う通りに作れるようになったとは思うんだけど さすがに会話イベント一個追加したり、マップに壺一個追加しただけで再コンパイルする必要がある状況って なんというか我ながらアホだよね この状況を卒業するには何を勉強したらいいのかアドバイスください 作ってるのは2DRPGで、主にNPCのイベント内容をコードの外に出すにはどうやればいいかで躓いてます とりあえず思いついてるやり方は セリフ表示とか効果音を鳴らすとかのイベント処理を担っている関数に番号振って引数の数を紐付けしておいて イベントの内容を全部、関数の番号、引数の数、引数の数値…って数字だけのデータにして そのデータを読み込んで、どの関数を呼び出し引数にはどんな数値を入れるかを判断して実行する関数を作り イベントの内容を全部数値に置き換える方法なんですけど http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/129
130: 名前は開発中のものです。 [sage] 2016/11/02(水) 08:13:58.60 ID:8LrVjVrS >>129 自分でも気付いてる通り、基本原則はコードとリソースを分離すること。 テキストファイルの読み込みと解析が出来るなら 単純なシナリオファイル(会話+αくらい)のローダくらいなら比較的簡単。 まあそれ以上に複雑なことをやるなら、素直に 既存のスクリプト言語の組み込み用ライブラリを頼ったほうが良いと思うけどね。 次点としては、ソースファイルの構成を見直して、最低限のビルドでも済むようにすること。 各クラスの書き方、各ファイルの依存関係なんかを整頓することで、 ちょっと修正したくらいなら、長時間のビルドを要さなくなる。 http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/130
131: 名前は開発中のものです。 [sage] 2016/11/02(水) 13:45:37.24 ID:/aW+4m+D 大体の方向性はこんな感じでいいんだということであれば進めていきたいんですが 躊躇している理由が2つあります 基本的に作り始める時に クラスとかポインタとかよくわかんないけどとりあえずやってみるべ!と始めたので 配列と構造体だけで設計されてて、実は今でもクラスのことはよくわかっていません だけどキー入力を把握すことと、変数の操作と、画像と音を自分の望む形で望むタイミングに表示再生出来るなら 自分の作りたいゲームは作ることが出来るはずだ!という考えの下で強引に作り続け 変数の値に合わせて画像や音の状態を制御する関数を作って、それを毎フレームScreenFlipの前に呼び出している なんていう作りになってしまってます キャラクターに歩行アニメーションや特殊なポーズをとらせたりするのも BGMを変更するのも効果音を鳴らすのも、HPMPの増減やアイテムの入手なども picture[ kyaraDATA[kyaraid].pictureID ].pattern=8; SEplayflag[seID]=1; BGMID=BattleBGMID; とか kyaraHP[kyaraid]+=1000; itemstorage[itemid]++; とか ほとんどこういう形でイベントを組み立ててるんですよね…… ちなみにこの変数全部グローバル変数です この単純な変数操作を外に出のに、変数全部に番号振ってやる以外に方法が思いつかず その数が数だけにちょっと躊躇っているのです それに if(itemstorage[itemid]<99){ itemstorage[itemid]++; takarabakoOpenFlag[takaraID]=1; }else{ JISAKU_serihu(1,"これ以上持てない",0);//最初の引数がしゃべるキャラ、最後のは吹き出しの形のタイプ指定 } みたいに作ってるイベントの条件分岐の部分の外部への出力方法が思いつかないっていう問題点もあります なんかこう、こんな低レベルな人間にもできる上手いやり方ありませんかね? http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/131
132: 名前は開発中のものです。 [sage] 2016/11/02(水) 15:10:54.49 ID:C/+BZRXz 2chは行頭の半角スペースやタブは無視する http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/132
133: 名前は開発中のものです。 [sage] 2016/11/02(水) 15:11:48.53 ID:C/+BZRXz 途中で書き込んでしまったけど、そういうわけでコード書くときは全角スペース使って見やすく書いて http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/133
134: 名前は開発中のものです。 [sage] 2016/11/02(水) 15:50:25.87 ID:/aW+4m+D if(itemstorage[itemid]<99){ itemstorage[itemid]++; takarabakoOpenFlag[takaraID]=1; }else{ JISAKU_serihu(1,"これ以上持てない",0);//最初の引数がしゃべるキャラ、最後のは吹き出しの形のタイプ指定 } 複数行にまたがってる部分はここだけです 後は本当に変数に代入してるだけというか… http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/134
135: 名前は開発中のものです。 [sage] 2016/11/02(水) 15:53:23.25 ID:22j5AZ4g >>131 データにしやすいパターンやお約束のイベントだけをデータベース化して 特殊処理はそのままハードコートでいいんじゃねぇの 「これをデータ化したら本当に効率化されるのだろうか」と考えて 非効率になりそうだったらハードコートのまま そんなことよりもっとプレイヤーから見て喜んでもらえることに意識を集中したほうがいい http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/135
136: 名前は開発中のものです。 [sage] 2016/11/02(水) 17:31:46.86 ID:mreiywNQ  あ この板Unicode参照出来なかった? http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/136
137: 名前は開発中のものです。 [sage] 2016/11/02(水) 17:32:02.03 ID:mreiywNQ 無理か VIPなら出来るのに http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/137
138: 名前は開発中のものです。 [sage] 2016/11/09(水) 13:59:08.62 ID:DtsDG8yY 3Dゲームでマウスをクリックした位置にある3Dモデルをできるだけ高速に取得したいのですが、 何かいい方法はありますか? コリジョン(衝突判定)関数がありますが、当たり判定用のメッシュを用意しないといけないようなので ちょっと手間がかかりすぎるのでできればもっと手軽な別の方法がいいですが http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/138
139: 名前は開発中のものです。 [sage] 2016/11/10(木) 02:38:50.44 ID:woNsYOXh 他に方法無いやろ http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/139
140: 名前は開発中のものです。 [] 2016/11/22(火) 19:00:44.40 ID:4Lu6ZO/B ちょっとウンコしてくる http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/140
141: 名前は開発中のものです。 [sage] 2016/11/22(火) 19:35:51.98 ID:amdDwmR+ Convert Mouse Location To World Spaceでライントレースしか分からない http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/141
142: 名前は開発中のものです。 [sage] 2016/11/22(火) 19:38:26.07 ID:amdDwmR+ >>141 ue4スレと間違った http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/142
143: 名前は開発中のものです。 [] 2016/12/10(土) 02:51:28.41 ID:H338C5QI しまった!お尻ふいてなかった http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/143
144: 名前は開発中のものです。 [sage] 2016/12/10(土) 21:12:58.27 ID:ijDtE922 >>138 画面描画には直接利用しないテクスチャに取得対象モデルをレンダリングしておいて判定するとか http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/144
145: 名前は開発中のものです。 [sage] 2016/12/10(土) 21:14:24.90 ID:ijDtE922 とおもったら1月前かよ http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/145
146: 名前は開発中のものです。 [sage] 2016/12/18(日) 01:11:06.45 ID:w4mjhhpa 初歩的なことですが、 画像を描画する際の関数の仕様について迷っています 例えば、描画系の関数をできるだけ少なくして、内部変数によってDXライブラリの描画関数を呼び分けるのがいいのか、 あるいは、描画系の関数を目的別に用意して、画面側で使い分けるのがいいか フェードインの機能の場合、 前者なら「setModeFadeInの後、drawする」 後者なら、「drawとfadeInをそもそも別関数にする」 個人的には前者が正解のような気がしているのですが、 そもそも発想自体が間違っているのでしょうか? 御存知の方いれば、ご教授頂けると嬉しいです http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/146
147: 名前は開発中のものです。 [sage] 2016/12/18(日) 17:01:06.63 ID:g4K5bJ5s 関数の仕様と言うよりは、抽象度とか設計とかの話なのかな? なんとなくは分かるけど誤解してるかもしれないんで 数行程度のサンプルソースを書いてくれると嬉しい http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/147
148: 名前は開発中のものです。 [sage] 2016/12/18(日) 17:12:32.47 ID:GrYJvN1j 個人的には後者の方が好き 状態が多いとバグの原因になる http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/148
149: 名前は開発中のものです。 [sage] 2016/12/18(日) 18:47:26.76 ID:w4mjhhpa >> 147 たしかに、「抽象度とか設計」の質問と言った方が適切かもしれません。失礼しました 具体的にいえば、以下のイメージです ■パターン1 if (ボタンが押されたら) { 画像A.setFadeIn(引数に透過速度などの更新情報); } 画像A.draw();(透明度の加減処理。 また透過度が100以外なら、DXライブラリのSetDrawBlendModeを使うかを判定。フェードインが終わったら、内部変数のフラグを立てる) if (画像A.IsFadeInComplete()) { // フェードイン終わった! } http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/149
150: 名前は開発中のものです。 [sage] 2016/12/18(日) 18:48:30.96 ID:w4mjhhpa ■パターン2 if (ボタンが押されたら) { グローバル変数B = true; } if (グローバル変数B) { 画像A.drawFadeIn(引数に透過速度などの更新情報。毎フレーム同じ情報を渡すのが違和感); if (画像A.IsFadeInComplete()) { // フェードイン終わった! } } else { 画像A.draw(); } 最初はパターン2でやっていたのですが、これだと例えば「回転とフェードインとかが同時にできない?」と思って、パターン1に変えました すると、今後はフェードインの更新情報を画像Aに持たせたためか、あるいは、draw関数内の条件分岐が増えたせいか、処理が重くなってしまいました この程度で重くなるのかも疑問ですが、そもそも両パターンともNGなのではと思い始めた次第です ゲーム系プログラミングのお約束が分かってないのが、一番の原因ですが…… >>148 ご教授ありがとうございます。 何がバグの原因になるとか全然分からないので、大変参考になりました http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/150
151: 名前は開発中のものです。 [sage] 2016/12/18(日) 18:53:42.88 ID:w4mjhhpa 132 133 の書き込みを読むべきでした すみません…… ■パターン2 if (ボタンが押されたら) { グローバル変数B = true; } if (グローバル変数B) { 画像A.drawFadeIn(引数に透過速度などの更新情報。毎フレーム同じ情報を渡すのが違和感); if (画像A.IsFadeInComplete()) { // フェードイン終わった! } } else { 画像A.draw(); } http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/151
152: 名前は開発中のものです。 [sage] 2016/12/18(日) 19:39:00.88 ID:g4K5bJ5s グローバル変数を使うかどうかとか 複数の状態を同時に実行できない問題をどうするかとかは別として 自分なら2の方向かなあ http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/152
153: 名前は開発中のものです。 [sage] 2016/12/18(日) 20:00:49.02 ID:oO1EoBtD >>146,>>149-151 細かい点ですが、「フェードイン」とは、画像Aが透明な状態から徐々に濃く(明るく)なっていく処理をさしているのですか? ボタンを押さないとフェードイン処理が始まらないみたいなんですが、 そもそもボタンを押してないと、画像A.draw()で何を描画してるんですか? また画像A.IsFadeInComplete()が真になると、何が起こるんですか? この部分は問題を説明する上で、さんぷるにふくめるひつようがあるのですか? またなぜ151のパターン2で、わざわざグローバル変数Bをサンプルに含めているのがよくわかりません サンプルとしては、 if (ボタンが押されたら) { 画像A.drawFadeIn(引数に透過速度などの更新情報。毎フレーム同じ情報を渡すのが違和感); : でいいんじゃないですか 仕様がいまいちイメージできません http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/153
154: 名前は開発中のものです。 [sage] 2016/12/18(日) 20:04:49.88 ID:GrYJvN1j あーでもグローバルじゃなくてブラシクラス作ればいいかも http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/154
155: 名前は開発中のものです。 [sage] 2016/12/18(日) 20:08:44.65 ID:oO1EoBtD 質問の意図は ■パターン1 画像A.draw(ボタンが押されたか、引数に透過速度などの更新情報);//毎フレーム同じ情報を渡すのが違和感 ■パターン2 f (ボタンが押されたら) { 画像A.drawFadeIn(引数に透過速度などの更新情報); } else { 画像A.draw(); } でどっち? みたいな話かと思ったけど、ちがうのか・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/155
156: 名前は開発中のものです。 [sage] 2016/12/18(日) 20:41:41.19 ID:w4mjhhpa >>153 ごめんなさい たしかにサンプルが不適切です この場合だとフェードインではなく、フェードアウトになります ボタン押したら、画像が消えていくみたいな 質問の意図に関しては 155で指摘されている通りです >>155 ありがとうございます グローバルではなく、staticなローカル変数、あるいはブラシクラスを検討してみます ブラシクラスとなると、画像インスタンスを受け取って、内部情報を更新するという意味かな http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/156
157: 名前は開発中のものです。 [sage] 2016/12/18(日) 21:01:52.62 ID:w4mjhhpa 思った以上に反応があって、ちょっと焦ってました 156の「>>155」は、「>>152」が正しい 154の「グローバル」の意味が把握できていないけど、たぶんグローバル変数Bのことじゃないよね 156の自分の書き込みは無茶苦茶。グローバル変数Bとブラシクラスは関係ない とりあえず方向性は見えてきたので、ありがとうございます http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/157
158: 名前は開発中のものです。 [sage] 2016/12/18(日) 21:08:52.00 ID:oO1EoBtD 流れがつかめませんが、解決したんですか ちなみに>>155でいうと、自分はパターン2派。可読性が良くなると思うから。 画像A.のdrawFadeIn()とdraw()で重複するブロックが肥大化してきたら、その重複部分をinline関数に切り出してる しかし・・・ 確かに可読性が悪いとストレスの原因になるが、 可読性を確保する労力が新たなストレスと生むというジレンマ・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/158
159: 名前は開発中のものです。 [sage] 2016/12/18(日) 22:50:19.71 ID:w4mjhhpa >>158 混乱させてしまったようで、申し訳ないです 155の意図をやっと把握しました(訂正に訂正を重ねてホンマ……) パターン1は、どこかでフェードインの命令要求を登録した後、draw関数を呼び出します draw関数内では、透過度の変更要求の確認、透過度の更新、および、DXライブラリ「SetDrawBlendMode」の呼び出しを行います 透過度の変更要求がない場合は、SetDrawBlendModeを使いません なので、通常描画もフェードイン描画も一律draw関数を呼びだすことになります パターン2は drawFadeIn とdraw を別関数にします フェードインするときは、drawFadeInを呼び出して、引数として透過度の更新情報を渡します 結論としては、皆さん「パターン2がマシ」と仰っているので、その路線で進めようと思います 描画処理専門のブラシクラスも含めて、検討してみます 可読性に関しては、最近、可読性を確保するためのストレスに負け始めてます 重要なのは重々承知ですが、やはり面倒…… 趣味なはずなのに、仕事と同様のストレスを感じる http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/159
160: 名前は開発中のものです。 [sage] 2016/12/18(日) 23:01:17.32 ID:oO1EoBtD >>159 フェードアウトとフェードインの区別が困難になるほど、なにやら複雑な夢(野望、殺意)を秘めているみたいですね お手柔らかにお願いします(笑) ロベールさんのサイトによると、 inline関数は必ずしもinline展開されないみたいだけど、 誰か環境ごとに厳密に検証した人いるのかな? 自分はVC++の判断を信じてる! http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/160
161: 名前は開発中のものです。 [sage] 2016/12/19(月) 00:31:54.60 ID:HwJJ4Rji 例えば「マリオが死ぬと画面がフェードアウトして画面が切り替わる」 …という処理があるとして ■パターン1 マリオの死亡処理のところに 具体的な切替演出の設定(この場合はフェードアウト)を書くことになる。 ■パターン2 マリオ死亡時にやることは 画面切替フラグを立てるだけで、死亡処理に集中することが出来る。 画面切替の演出には、画面がどんどん暗くなる「フェードアウト」だけでなく、 真っ白になったり(ホワイトアウト)、ワイプしたり色んな演出パターンが考えられる。 実際にやるかどうかは別としてね。 そうなると、画面切替処理は独立させておいたほうが取り回しが良くなるのではないか? というのがオイラの考える2のメリットかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/161
162: 名前は開発中のものです。 [sage] 2016/12/19(月) 16:22:26.13 ID:9RjupL+U 状態に対して××モードと名前をつけて 上手くハマるならそれを使えばいいよ http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/162
163: 名前は開発中のものです。 [sage] 2016/12/19(月) 23:36:24.22 ID:ABRexmh1 >>161 わかりやすい例え、ありがとう まさにそういう事例を想定していたので、とても参考になります >>162 了解です http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/163
164: 名前は開発中のものです。 [sage] 2017/01/08(日) 23:39:08.63 ID:3fqQn8Jq 久しぶりにDXライブラリ使ってたんだけど、文字入力して変換しようとするとIMEの変換候補がゲームウィンドウの左下に表示される。 ちなみにGoogleIMEでは左下でMicrosoftIMEは右下。 昔触ったときは文字の入力した文字のすぐそばに表示されてた気がするんだけどWin10(Win8?)から仕様が変わったんだろうか。 ぐぐったらWin8でIMEウィンドウ自体が出ない不具合があってそれは解消されたようなんだが。 http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/164
165: 名前は開発中のものです。 [sage] 2017/01/13(金) 09:20:03.69 ID:JxeCTkK7 文字入力といえば自作のアクションゲームで名前入力辞めマスタ よーく考えるとユーザー自身しかしないだろうし http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/165
166: 名前は開発中のものです。 [sage] 2017/01/13(金) 09:22:32.67 ID:JxeCTkK7 キーのログをとってmovieみたいに再現できる機能も省略 今なら動画をとろうと思えばキャプチャソフトを使えばよいし 楽になった分、今度こそ完成に近づくと良いけど http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/166
167: 106 [sage] 2017/01/17(火) 15:54:13.99 ID:aj0DNk7d スレに残しておきたいと感じた情報を書いておきます >>106で沸いた疑問を縦800ピクセルの画像で比較検証したところですが DrawRectGraphで一列ずつ描画するのと SetDrawAreaで描画できる範囲を一列ずつ変更しながら描画するのでは 比べるのがおこがましいくらい DrawRectGraphで一列ずつ描画する方が 軽かったという検証結果が出ました 12倍くらいの差がありましたので、10倍以上違うのは確実だと思います ここまで違うのならどんな環境でもDrawRectGraphの方が良いのは確実なんじゃないかと思います ラスタースクロールをシェーダ使わずに実装するならDrawRectGraphが良いです 以上、報告終わり http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/167
168: 名前は開発中のものです。 [sage] 2017/01/29(日) 19:37:06.79 ID:rdbqqXVO >>167 SetDrawAreaを使うと連続描画が途切れるからね http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/168
169: 名前は開発中のものです。 [sage] 2017/01/30(月) 18:28:11.60 ID:2zIjyMmQ Delayフレーム後にSoundHandleを指定の音量パン周波数で再生する SoundEffect(int SoundHandle,int VolumePal,int PanPal,int FrequencyPal,int Delay) こんな関数を作りたいんだけど実装方法が思いつかない SetSoundCurrentTimeでマイナスの値を設定出来たら簡単なのに http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/169
170: 名前は開発中のものです。 [sage] 2017/02/16(木) 01:43:45.04 ID:vIVM03On マイクから入力される音声のdBを 監視するアプリって作れますか? http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/170
171: 名前は開発中のものです。 [] 2017/02/26(日) 02:54:28.23 ID:NkbyLrdK DX11対応の環境でサンプルプログラムをコンパイルし実行したらDX11で動いていましたが この.exeをDX11非対応の環境で実行するとDX9などで動くんですか? 手元にDX11非対応の環境が無くて試せないんですが2Dゲーを作る分には特に気にしなくても大丈夫なんでしょうか http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/171
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 831 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.018s