[過去ログ] DXライブラリ 総合スレッド その19 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
129
(1): 2016/11/02(水)07:20 ID:/aW+4m+D(1/3) AAS
全部コードに直書きする形でならなんとか自分の思う通りに作れるようになったとは思うんだけど
さすがに会話イベント一個追加したり、マップに壺一個追加しただけで再コンパイルする必要がある状況って
なんというか我ながらアホだよね

この状況を卒業するには何を勉強したらいいのかアドバイスください
作ってるのは2DRPGで、主にNPCのイベント内容をコードの外に出すにはどうやればいいかで躓いてます

とりあえず思いついてるやり方は
セリフ表示とか効果音を鳴らすとかのイベント処理を担っている関数に番号振って引数の数を紐付けしておいて
省3
130: 2016/11/02(水)08:13 ID:8LrVjVrS(1) AAS
>>129
自分でも気付いてる通り、基本原則はコードとリソースを分離すること。

テキストファイルの読み込みと解析が出来るなら
単純なシナリオファイル(会話+αくらい)のローダくらいなら比較的簡単。
まあそれ以上に複雑なことをやるなら、素直に
既存のスクリプト言語の組み込み用ライブラリを頼ったほうが良いと思うけどね。

次点としては、ソースファイルの構成を見直して、最低限のビルドでも済むようにすること。
省2
131
(1): 2016/11/02(水)13:45 ID:/aW+4m+D(2/3) AAS
大体の方向性はこんな感じでいいんだということであれば進めていきたいんですが
躊躇している理由が2つあります

基本的に作り始める時に
クラスとかポインタとかよくわかんないけどとりあえずやってみるべ!と始めたので
配列と構造体だけで設計されてて、実は今でもクラスのことはよくわかっていません
だけどキー入力を把握すことと、変数の操作と、画像と音を自分の望む形で望むタイミングに表示再生出来るなら
自分の作りたいゲームは作ることが出来るはずだ!という考えの下で強引に作り続け
省21
132: 2016/11/02(水)15:10 ID:C/+BZRXz(1/2) AAS
2chは行頭の半角スペースやタブは無視する
133: 2016/11/02(水)15:11 ID:C/+BZRXz(2/2) AAS
途中で書き込んでしまったけど、そういうわけでコード書くときは全角スペース使って見やすく書いて
134: 2016/11/02(水)15:50 ID:/aW+4m+D(3/3) AAS
if(itemstorage[itemid]<99){
  itemstorage[itemid]++;
  takarabakoOpenFlag[takaraID]=1;
}else{
  JISAKU_serihu(1,"これ以上持てない",0);//最初の引数がしゃべるキャラ、最後のは吹き出しの形のタイプ指定
}
複数行にまたがってる部分はここだけです
省1
135: 2016/11/02(水)15:53 ID:22j5AZ4g(1) AAS
>>131
データにしやすいパターンやお約束のイベントだけをデータベース化して
特殊処理はそのままハードコートでいいんじゃねぇの
「これをデータ化したら本当に効率化されるのだろうか」と考えて
非効率になりそうだったらハードコートのまま
そんなことよりもっとプレイヤーから見て喜んでもらえることに意識を集中したほうがいい
136: 2016/11/02(水)17:31 ID:mreiywNQ(1/2) AAS
&#160;あ
この板Unicode参照出来なかった?
137: 2016/11/02(水)17:32 ID:mreiywNQ(2/2) AAS
無理か
VIPなら出来るのに
138
(1): 2016/11/09(水)13:59 ID:DtsDG8yY(1) AAS
3Dゲームでマウスをクリックした位置にある3Dモデルをできるだけ高速に取得したいのですが、
何かいい方法はありますか?
コリジョン(衝突判定)関数がありますが、当たり判定用のメッシュを用意しないといけないようなので
ちょっと手間がかかりすぎるのでできればもっと手軽な別の方法がいいですが
139: 2016/11/10(木)02:38 ID:woNsYOXh(1) AAS
他に方法無いやろ
140: 2016/11/22(火)19:00 ID:4Lu6ZO/B(1) AAS
ちょっとウンコしてくる
141
(1): 2016/11/22(火)19:35 ID:amdDwmR+(1/2) AAS
Convert Mouse Location To World Spaceでライントレースしか分からない
142: 2016/11/22(火)19:38 ID:amdDwmR+(2/2) AAS
>>141
ue4スレと間違った
143: 2016/12/10(土)02:51 ID:H338C5QI(1) AAS
しまった!お尻ふいてなかった
144: 2016/12/10(土)21:12 ID:ijDtE922(1/2) AAS
>>138
画面描画には直接利用しないテクスチャに取得対象モデルをレンダリングしておいて判定するとか
145: 2016/12/10(土)21:14 ID:ijDtE922(2/2) AAS
とおもったら1月前かよ
146
(1): 2016/12/18(日)01:11 ID:w4mjhhpa(1/7) AAS
初歩的なことですが、
画像を描画する際の関数の仕様について迷っています

例えば、描画系の関数をできるだけ少なくして、内部変数によってDXライブラリの描画関数を呼び分けるのがいいのか、
あるいは、描画系の関数を目的別に用意して、画面側で使い分けるのがいいか

フェードインの機能の場合、
前者なら「setModeFadeInの後、drawする」
後者なら、「drawとfadeInをそもそも別関数にする」
省3
147: 2016/12/18(日)17:01 ID:g4K5bJ5s(1/2) AAS
関数の仕様と言うよりは、抽象度とか設計とかの話なのかな?

なんとなくは分かるけど誤解してるかもしれないんで
数行程度のサンプルソースを書いてくれると嬉しい
148
(1): 2016/12/18(日)17:12 ID:GrYJvN1j(1/2) AAS
個人的には後者の方が好き
状態が多いとバグの原因になる
149
(1): 2016/12/18(日)18:47 ID:w4mjhhpa(2/7) AAS
>> 147
たしかに、「抽象度とか設計」の質問と言った方が適切かもしれません。失礼しました
具体的にいえば、以下のイメージです

■パターン1
if (ボタンが押されたら) {
画像A.setFadeIn(引数に透過速度などの更新情報);
}
省4
150
(1): 2016/12/18(日)18:48 ID:w4mjhhpa(3/7) AAS
■パターン2
if (ボタンが押されたら) {
グローバル変数B = true;
}

if (グローバル変数B) {
画像A.drawFadeIn(引数に透過速度などの更新情報。毎フレーム同じ情報を渡すのが違和感);

if (画像A.IsFadeInComplete()) {
省12
151
(1): 2016/12/18(日)18:53 ID:w4mjhhpa(4/7) AAS
132 133 の書き込みを読むべきでした すみません……

■パターン2
if (ボタンが押されたら) {
  グローバル変数B = true;
}

if (グローバル変数B) {
  画像A.drawFadeIn(引数に透過速度などの更新情報。毎フレーム同じ情報を渡すのが違和感);
省6
152
(1): 2016/12/18(日)19:39 ID:g4K5bJ5s(2/2) AAS
グローバル変数を使うかどうかとか
複数の状態を同時に実行できない問題をどうするかとかは別として
自分なら2の方向かなあ
153
(1): 2016/12/18(日)20:00 ID:oO1EoBtD(1/4) AAS
>>146>>149-151
細かい点ですが、「フェードイン」とは、画像Aが透明な状態から徐々に濃く(明るく)なっていく処理をさしているのですか?
ボタンを押さないとフェードイン処理が始まらないみたいなんですが、
そもそもボタンを押してないと、画像A.draw()で何を描画してるんですか?

また画像A.IsFadeInComplete()が真になると、何が起こるんですか?
この部分は問題を説明する上で、さんぷるにふくめるひつようがあるのですか?

またなぜ151のパターン2で、わざわざグローバル変数Bをサンプルに含めているのがよくわかりません
省6
154: 2016/12/18(日)20:04 ID:GrYJvN1j(2/2) AAS
あーでもグローバルじゃなくてブラシクラス作ればいいかも
155
(3): 2016/12/18(日)20:08 ID:oO1EoBtD(2/4) AAS
質問の意図は

■パターン1
画像A.draw(ボタンが押されたか、引数に透過速度などの更新情報);//毎フレーム同じ情報を渡すのが違和感

■パターン2
f (ボタンが押されたら) {
  画像A.drawFadeIn(引数に透過速度などの更新情報);
} else {
省4
156: 2016/12/18(日)20:41 ID:w4mjhhpa(5/7) AAS
>>153
ごめんなさい たしかにサンプルが不適切です
この場合だとフェードインではなく、フェードアウトになります
ボタン押したら、画像が消えていくみたいな
質問の意図に関しては 155で指摘されている通りです

>>155
ありがとうございます
省2
157: 2016/12/18(日)21:01 ID:w4mjhhpa(6/7) AAS
思った以上に反応があって、ちょっと焦ってました
156の「>>155」は、「>>152」が正しい

154の「グローバル」の意味が把握できていないけど、たぶんグローバル変数Bのことじゃないよね
156の自分の書き込みは無茶苦茶。グローバル変数Bとブラシクラスは関係ない

とりあえず方向性は見えてきたので、ありがとうございます
158
(1): 2016/12/18(日)21:08 ID:oO1EoBtD(3/4) AAS
流れがつかめませんが、解決したんですか

ちなみに>>155でいうと、自分はパターン2派。可読性が良くなると思うから。
画像A.のdrawFadeIn()とdraw()で重複するブロックが肥大化してきたら、その重複部分をinline関数に切り出してる

しかし・・・
確かに可読性が悪いとストレスの原因になるが、
可読性を確保する労力が新たなストレスと生むというジレンマ・・・
159
(1): 2016/12/18(日)22:50 ID:w4mjhhpa(7/7) AAS
>>158
混乱させてしまったようで、申し訳ないです
155の意図をやっと把握しました(訂正に訂正を重ねてホンマ……)

パターン1は、どこかでフェードインの命令要求を登録した後、draw関数を呼び出します
draw関数内では、透過度の変更要求の確認、透過度の更新、および、DXライブラリ「SetDrawBlendMode」の呼び出しを行います
透過度の変更要求がない場合は、SetDrawBlendModeを使いません
なので、通常描画もフェードイン描画も一律draw関数を呼びだすことになります
省7
160: 2016/12/18(日)23:01 ID:oO1EoBtD(4/4) AAS
>>159
フェードアウトとフェードインの区別が困難になるほど、なにやら複雑な夢(野望、殺意)を秘めているみたいですね
お手柔らかにお願いします(笑)

ロベールさんのサイトによると、
inline関数は必ずしもinline展開されないみたいだけど、
誰か環境ごとに厳密に検証した人いるのかな?
自分はVC++の判断を信じてる!
161
(1): 2016/12/19(月)00:31 ID:HwJJ4Rji(1) AAS
例えば「マリオが死ぬと画面がフェードアウトして画面が切り替わる」
…という処理があるとして

■パターン1
マリオの死亡処理のところに
具体的な切替演出の設定(この場合はフェードアウト)を書くことになる。

■パターン2
マリオ死亡時にやることは
省6
162
(1): 2016/12/19(月)16:22 ID:9RjupL+U(1) AAS
状態に対して××モードと名前をつけて
上手くハマるならそれを使えばいいよ
163: 2016/12/19(月)23:36 ID:ABRexmh1(1) AAS
>>161
わかりやすい例え、ありがとう
まさにそういう事例を想定していたので、とても参考になります

>>162
了解です
164: 2017/01/08(日)23:39 ID:3fqQn8Jq(1) AAS
久しぶりにDXライブラリ使ってたんだけど、文字入力して変換しようとするとIMEの変換候補がゲームウィンドウの左下に表示される。
ちなみにGoogleIMEでは左下でMicrosoftIMEは右下。
昔触ったときは文字の入力した文字のすぐそばに表示されてた気がするんだけどWin10(Win8?)から仕様が変わったんだろうか。
ぐぐったらWin8でIMEウィンドウ自体が出ない不具合があってそれは解消されたようなんだが。
165: 2017/01/13(金)09:20 ID:JxeCTkK7(1/2) AAS
文字入力といえば自作のアクションゲームで名前入力辞めマスタ
よーく考えるとユーザー自身しかしないだろうし
166: 2017/01/13(金)09:22 ID:JxeCTkK7(2/2) AAS
キーのログをとってmovieみたいに再現できる機能も省略
今なら動画をとろうと思えばキャプチャソフトを使えばよいし

楽になった分、今度こそ完成に近づくと良いけど
167
(1): 106 2017/01/17(火)15:54 ID:aj0DNk7d(1) AAS
スレに残しておきたいと感じた情報を書いておきます

>>106で沸いた疑問を縦800ピクセルの画像で比較検証したところですが
DrawRectGraphで一列ずつ描画するのと
SetDrawAreaで描画できる範囲を一列ずつ変更しながら描画するのでは

比べるのがおこがましいくらい
DrawRectGraphで一列ずつ描画する方が
軽かったという検証結果が出ました
省4
168: 2017/01/29(日)19:37 ID:rdbqqXVO(1) AAS
>>167
SetDrawAreaを使うと連続描画が途切れるからね
169: 2017/01/30(月)18:28 ID:2zIjyMmQ(1) AAS
Delayフレーム後にSoundHandleを指定の音量パン周波数で再生する
SoundEffect(int SoundHandle,int VolumePal,int PanPal,int FrequencyPal,int Delay)

こんな関数を作りたいんだけど実装方法が思いつかない
SetSoundCurrentTimeでマイナスの値を設定出来たら簡単なのに
170: 2017/02/16(木)01:43 ID:vIVM03On(1) AAS
マイクから入力される音声のdBを
監視するアプリって作れますか?
171
(1): 2017/02/26(日)02:54 ID:NkbyLrdK(1/2) AAS
DX11対応の環境でサンプルプログラムをコンパイルし実行したらDX11で動いていましたが
この.exeをDX11非対応の環境で実行するとDX9などで動くんですか?

手元にDX11非対応の環境が無くて試せないんですが2Dゲーを作る分には特に気にしなくても大丈夫なんでしょうか
172: 2017/02/26(日)02:56 ID:NkbyLrdK(2/2) AAS
sage忘れ失礼しました
173: 2017/02/26(日)04:39 ID:cv+wlHl/(1) AAS
オリジナルシェーダ使ってなければ問題ないはず
174: 2017/02/26(日)11:18 ID:SbF7UdV7(1/2) AAS
Android対応のDXライブラリが公開されたようだね
Unityやcocos2dと比べるとメリットがあまりないのがアレだけど
(DX11対応みたいに中途半端になりそうなところがまたね……)
175: 2017/02/26(日)11:24 ID:SbF7UdV7(2/2) AAS
>>171
DX11でつくるのなら
DXライブラリは、DX11の機能のテッセレーションやジオメトリシェーダー
コンピュートシェーダーなど対応していないからあまりオススメしないぞい
176: 2017/02/26(日)18:26 ID:w1YArNR6(1) AAS
android対応dxライブラリマジやがw
ちょっとスマホゲー作りたくなってきた・・・
177: 2017/02/26(日)23:50 ID:UgWHSXy5(1) AAS
ゲームエンジンで実機デバックしてたから
VS2015の実機デバックがそのまま使える
DXライブラリのプログラムも実機でみれて楽しい
178: 2017/02/27(月)17:14 ID:HzyfcOK5(1) AAS
Android対応まじだったw
前に誰かがcocos2dでやってたの使ってみたんだけど
まともに動かんかったから公式で対応してくれるのはでかい
帰ったら自作ゲームを移植してみよう
179: 2017/02/27(月)19:38 ID:yzmBThPX(1) AAS
個人開発なのにそんなに手広くやって大丈夫なんだろか。
良い人である以上に人が良すぎてサポートで死にますよ。
180: 2017/02/27(月)19:49 ID:LeUk6F53(1) AAS
OSSだしgithubで開発すれば良いのに
181: 2017/02/27(月)19:50 ID:hCixZHbE(1) AAS
dxライブラリのあり方としての謎が深まる
182: 2017/02/28(火)00:19 ID:VdUT2lLZ(1/2) AAS
つかVS2015がandroid対応していたことに驚き
183: 2017/02/28(火)01:06 ID:kAgsABkj(1/2) AAS
今MSはマルチプラットフォームに必死だからね
Win10でBash使えるようにしたりLinuxにVisual Studioのコードエディタを公開したりと

1番驚いたのはThe&#160;Linux&#160;FoundationにMSが入った事だな
184: 2017/02/28(火)01:07 ID:kAgsABkj(2/2) AAS
ごめんスペースだと思ってコピペしたのが文字化けしてる
The Linux Foundationね
185: 2017/02/28(火)01:27 ID:VdUT2lLZ(2/2) AAS
試しにやってみたけど最後の実行が出来なかったorz
もう寝る
186: 2017/02/28(火)14:20 ID:9MuOvNLS(1) AAS
Android版をタブレットのC4droidでやってみたけどライブラリの中でエラー吐くみたいだ
大量のエラー吐くからさっぱり分かんないや
"ANative_Activity_onCreate"が" android_native_app_glue.h "と衝突して多重宣言しているとかなんとかから始まってBulletやOgg周りで参照エラーが出てる
187: 2017/03/05(日)18:50 ID:WYpdMPcL(1) AAS
DrawLine関数の挙動がPCごとに違う?なんかサブのノーパソで動かすと下に1ドットずれる
両方Directxのバージョン11以降だからそこ辛味じゃないと思うんだけど…
188: 2017/03/11(土)14:58 ID:4brvAqUP(1) AAS
もう何年も前に、
ハードウェア描画は1ドットずれたりする場合があるだの
3Dのものを画面に映す(2Dに変換する)際に誤差が生じるだの
聞いたことあるけど、流石にそれは関係ないかしらね…
189: 2017/03/16(木)07:40 ID:06c/uHW3(1) AAS
座標の扱いはビデオカードごとに違うからね
古いオンボードだと0.5pxずれたりする
190: 2017/03/19(日)15:23 ID:85gVo7Ly(1) AAS
2dで影作るときってどうすればいいんだ
アルファ乗算の値下げながらDrawLineをずらして何本も描画していくのを思いついたけど絶対糞重くなるでしょ
191: 2017/03/19(日)17:46 ID:McAdhrov(1) AAS
影の形にこだわらなければいいんでないかい
192: 2017/03/19(日)17:59 ID:iXKgNie2(1) AAS
影ってどういう影なのか分からんけど
例えばスプライトのキャラに影つけるならキャラの形の白黒画像用意してDrawModiGraphで乗算合成とかじゃね
193: 2017/03/20(月)14:37 ID:PJ3OOU/G(1) AAS
スプライト底辺に黒い楕円置くだけやろ
それでアクションやマップ作成に支障が出るなら
潔く影なんて捨てる
194: 2017/04/09(日)22:25 ID:Fu+0leN1(1/2) AAS
マウスの入力についての質問です

マウスのサイドボタンの検出はDXライブラリではできないのでしょうか?
調べてみても、サイドボタンがXButton1とかXButton2と呼ばれていることしか得られませんでした

こう記述すればできるとか、DXライブラリ以外の実装方法があるとかあれば教えてください
よろしくお願いします
195
(2): 2017/04/09(日)22:43 ID:A8iwvjAh(1) AAS
GetMouseInput()じゃダメなの?
196
(1): 2017/04/09(日)22:53 ID:Fu+0leN1(2/2) AAS
>>195
公式リファレンスを見ながらGetMouseInput()の引数を全部試しましたが、どれを使っても検出されませんでした
ブラウザでサイドボタンを使って戻る進むができてるので、自分のサイドボタンが壊れている可能性はないです
197
(1): 2017/04/09(日)23:58 ID:gIO/ILx4(1) AAS
>>196
外部リンク[html]:dxlib.o.oo7.jp
ここ見る限り、GetMouseInputで値取れないってことは
逆にマウスのサイドボタンがキーボードのフックで対処してるタイプかもしれない。
例えば、キーボードのBackSpaceで「戻る」、Shift+BackSpaceで「進む」を表現してるとか。

外部リンク[cgi]:dxlib.o.oo7.jp
後は関数自体の使い方に問題があるかもしれないので
省2
198: 194です 2017/04/10(月)00:31 ID:Yp/MHnmL(1) AAS
>>197
ふたつのURLを見て試してみましたが検出されませんでした
さらにCheckHitKeyAll()も試してみましたが、これでもサイドボタンは検出されませんでした

ふたつ目のURLのように、もしかしたら実装されていない機能なのかもしれないです
DXライブラリ製作者さんの掲示板に質問・お願いしてみることにします

>>195 >>197 さん、どうもありがとうございました
199: 194です 2017/04/11(火)01:56 ID:upA/YOkc(1) AAS
サイドボタンの検出の件ですが、無事解決しました
自分と同じようなことで悩んでいる/いた方のために書き残しておきます

簡単に言うと、サイドボタンの検出をするにはDXライブラリをバージョンアップする必要があるようです
以下のやり取りを見ていただければ、詳しいことが得られると思います

外部リンク[cgi]:dxlib.o.oo7.jp

今回の質問に関わってくださった皆様、改めてありがとうございました
200: 2017/04/12(水)01:50 ID:TuryebQE(1/2) AAS
白地に(アンチエイリアスかかった)黒のアイコンを表示してるんですが
これの白地を別の色にすると白地前提のアンチエイリアスが汚くなってしまいます。
白地に黒アイコンのものにアルファブレンドをかけると今度は黒が薄く見えなくなってしまう。。
Dxライブラリの知識ではないかもしれませんが、これを解決する手法のヒントなどありますでしょうか?
201: 2017/04/12(水)02:02 ID:TuryebQE(2/2) AAS
ごめんなさい書いた直後に自己解決してしまった
やっぱりよく調べて書くべきですね・・・
202: 2017/04/14(金)21:46 ID:bZxpbzr7(1/2) AAS
DXライブラリに関連してるかどうかわかりませんが
わからないことを質問してみます。

ファイナルファンタジー14(以下、FF14と略)などのプロが開発したゲームを拝見するとロード時間が短いように感じます
例えばDXライブラリを使って約14,000KBぐらいのMP3ファイルをロードしてメモリに読み込むようにコードを書くと
MP3ファイルのロードが完了するまでにコンマ数秒のロード時間が発生します

ですが、FF14のタイトル画面でしばらく放置するとプロローグムービーが開始されるわけですが、
内容を見る限り明らかに容量の多いムービーファイルをロードして再生してるように見えるのですが、
省4
203: 2017/04/14(金)22:21 ID:7sRUbSV9(1/2) AAS
効果音ではなく曲を全部メモリにロードするのは間違ってる
ファイルサイズの大きい曲や動画は読み込みながら再生するのが基本
そうじゃないと100GBの動画とかメモリに入りきらないようなものは再生できない
204: 2017/04/14(金)22:38 ID:bZxpbzr7(2/2) AAS
なるほど、必ずしもメモリにロードしてから再生しなくてもいいという考え方なのか
直接HDDからファイルをメモリーにロードしながら再生(ストリーミング再生)するわけか、
俺は大容量のファイルを分割でメモリに読み込んで
1ループのロード時間を短くする方向で考えていた
205: 2017/04/14(金)23:52 ID:7sRUbSV9(2/2) AAS
分かりやすく例えると、oggとかmp4なんかはzipで圧縮したような形式だから
再生するために元のwavに解凍すると10倍〜100倍になる
メモリにロードするってことは、この巨大化したのを入れるってことだから
効果音のような小さなものでない限りは避けるべき
206: 2017/04/15(土)01:19 ID:RtlOPePd(1/2) AAS
ありがとう
おかげで疑問が解消されました
207: 2017/04/15(土)03:44 ID:3FEYykSP(1/2) AAS
あとはシングルスレッドの場合はどうしてもロード時に固まってしまうだろうから、マルチスレッドでロードを行うようにするのはどうだろうか?
208: 2017/04/15(土)04:40 ID:RtlOPePd(2/2) AAS
マルチスレッドということはC++11を扱うということですね
Core i7を乗せてるのでCore UPUに対応したゲーム開発も興味はあるが
技術的に敷居が少し高いので今はまだいいかな
最新のC++コンパイラも必要になるし
ゲームのプレイヤーがCore i7 や Core i5のCPUを乗せてないと威力は発揮されない
209: [age] 2017/04/15(土)09:19 ID:+pklgBp/(1/2) AAS
短い場合(メモリー上にwave展開しない)
SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMPRESS );
長い場合(ストリーミング再生)
SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE );
どちらか書く
1-
あと 793 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.029s