- 1 名前:名前は開発中のものです。 mailto:sage [2016/01/05(火) 23:44:29.77 ID:fkNSYSkc.net]
- Cを習得した程度のスキルでも、ゲームのグラフィックを比較的容易に描画する事のできる、
「DXライブラリ」に関するスレッドです。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 【公式】 homepage2.nifty.com/natupaji/DxLib/ 【関連スレ】 C/C++ゲーム製作総合スレッド Part7 [転載禁止](c)2ch.net peace.2ch.net/test/read.cgi/gamedev/1420939171/ ゲームプログラムなら俺に聞け32(c)2ch.net peace.2ch.net/test/read.cgi/tech/1441693570/ ●DXライブラリではなくDirectXの質問ならこっちへ 【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止](c)2ch.net peace.2ch.net/test/read.cgi/tech/1418438785/
- 151 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 17:01:06.63 ID:g4K5bJ5s.net]
- 関数の仕様と言うよりは、抽象度とか設計とかの話なのかな?
なんとなくは分かるけど誤解してるかもしれないんで 数行程度のサンプルソースを書いてくれると嬉しい
- 152 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 17:12:32.47 ID:GrYJvN1j.net]
- 個人的には後者の方が好き
状態が多いとバグの原因になる
- 153 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 18:47:26.76 ID:w4mjhhpa.net]
- >> 147
たしかに、「抽象度とか設計」の質問と言った方が適切かもしれません。失礼しました 具体的にいえば、以下のイメージです ■パターン1 if (ボタンが押されたら) { 画像A.setFadeIn(引数に透過速度などの更新情報); } 画像A.draw();(透明度の加減処理。 また透過度が100以外なら、DXライブラリのSetDrawBlendModeを使うかを判定。フェードインが終わったら、内部変数のフラグを立てる) if (画像A.IsFadeInComplete()) { // フェードイン終わった! }
- 154 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 18:48:30.96 ID:w4mjhhpa.net]
- ■パターン2
if (ボタンが押されたら) { グローバル変数B = true; } if (グローバル変数B) { 画像A.drawFadeIn(引数に透過速度などの更新情報。毎フレーム同じ情報を渡すのが違和感); if (画像A.IsFadeInComplete()) { // フェードイン終わった! } } else { 画像A.draw(); } 最初はパターン2でやっていたのですが、これだと例えば「回転とフェードインとかが同時にできない?」と思って、パターン1に変えました すると、今後はフェードインの更新情報を画像Aに持たせたためか、あるいは、draw関数内の条件分岐が増えたせいか、処理が重くなってしまいました この程度で重くなるのかも疑問ですが、そもそも両パターンともNGなのではと思い始めた次第です ゲーム系プログラミングのお約束が分かってないのが、一番の原因ですが…… >>148 ご教授ありがとうございます。 何がバグの原因になるとか全然分からないので、大変参考になりました
- 155 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 18:53:42.88 ID:w4mjhhpa.net]
- 132 133 の書き込みを読むべきでした すみません……
■パターン2 if (ボタンが押されたら) { グローバル変数B = true; } if (グローバル変数B) { 画像A.drawFadeIn(引数に透過速度などの更新情報。毎フレーム同じ情報を渡すのが違和感); if (画像A.IsFadeInComplete()) { // フェードイン終わった! } } else { 画像A.draw(); }
- 156 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 19:39:00.88 ID:g4K5bJ5s.net]
- グローバル変数を使うかどうかとか
複数の状態を同時に実行できない問題をどうするかとかは別として 自分なら2の方向かなあ
- 157 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 20:00:49.02 ID:oO1EoBtD.net]
- >>146,>>149-151
細かい点ですが、「フェードイン」とは、画像Aが透明な状態から徐々に濃く(明るく)なっていく処理をさしているのですか? ボタンを押さないとフェードイン処理が始まらないみたいなんですが、 そもそもボタンを押してないと、画像A.draw()で何を描画してるんですか? また画像A.IsFadeInComplete()が真になると、何が起こるんですか? この部分は問題を説明する上で、さんぷるにふくめるひつようがあるのですか? またなぜ151のパターン2で、わざわざグローバル変数Bをサンプルに含めているのがよくわかりません サンプルとしては、 if (ボタンが押されたら) { 画像A.drawFadeIn(引数に透過速度などの更新情報。毎フレーム同じ情報を渡すのが違和感); : でいいんじゃないですか 仕様がいまいちイメージできません
- 158 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 20:04:49.88 ID:GrYJvN1j.net]
- あーでもグローバルじゃなくてブラシクラス作ればいいかも
- 159 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 20:08:44.65 ID:oO1EoBtD.net]
- 質問の意図は
■パターン1 画像A.draw(ボタンが押されたか、引数に透過速度などの更新情報);//毎フレーム同じ情報を渡すのが違和感 ■パターン2 f (ボタンが押されたら) { 画像A.drawFadeIn(引数に透過速度などの更新情報); } else { 画像A.draw(); } でどっち? みたいな話かと思ったけど、ちがうのか・・・
- 160 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 20:41:41.19 ID:w4mjhhpa.net]
- >>153
ごめんなさい たしかにサンプルが不適切です この場合だとフェードインではなく、フェードアウトになります ボタン押したら、画像が消えていくみたいな 質問の意図に関しては 155で指摘されている通りです >>155 ありがとうございます グローバルではなく、staticなローカル変数、あるいはブラシクラスを検討してみます ブラシクラスとなると、画像インスタンスを受け取って、内部情報を更新するという意味かな
- 161 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 21:01:52.62 ID:w4mjhhpa.net]
- 思った以上に反応があって、ちょっと焦ってました
156の「>>155」は、「>>152」が正しい 154の「グローバル」の意味が把握できていないけど、たぶんグローバル変数Bのことじゃないよね 156の自分の書き込みは無茶苦茶。グローバル変数Bとブラシクラスは関係ない とりあえず方向性は見えてきたので、ありがとうございます
- 162 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 21:08:52.00 ID:oO1EoBtD.net]
- 流れがつかめませんが、解決したんですか
ちなみに>>155でいうと、自分はパターン2派。可読性が良くなると思うから。 画像A.のdrawFadeIn()とdraw()で重複するブロックが肥大化してきたら、その重複部分をinline関数に切り出してる しかし・・・ 確かに可読性が悪いとストレスの原因になるが、 可読性を確保する労力が新たなストレスと生むというジレンマ・・・
- 163 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 22:50:19.71 ID:w4mjhhpa.net]
- >>158
混乱させてしまったようで、申し訳ないです 155の意図をやっと把握しました(訂正に訂正を重ねてホンマ……) パターン1は、どこかでフェードインの命令要求を登録した後、draw関数を呼び出します draw関数内では、透過度の変更要求の確認、透過度の更新、および、DXライブラリ「SetDrawBlendMode」の呼び出しを行います 透過度の変更要求がない場合は、SetDrawBlendModeを使いません なので、通常描画もフェードイン描画も一律draw関数を呼びだすことになります パターン2は drawFadeIn とdraw を別関数にします フェードインするときは、drawFadeInを呼び出して、引数として透過度の更新情報を渡します 結論としては、皆さん「パターン2がマシ」と仰っているので、その路線で進めようと思います 描画処理専門のブラシクラスも含めて、検討してみます 可読性に関しては、最近、可読性を確保するためのストレスに負け始めてます 重要なのは重々承知ですが、やはり面倒…… 趣味なはずなのに、仕事と同様のストレスを感じる
- 164 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 23:01:1
]
- [ここ壊れてます]
- 165 名前:7.32 ID:oO1EoBtD.net mailto: >>159
フェードアウトとフェードインの区別が困難になるほど、なにやら複雑な夢(野望、殺意)を秘めているみたいですね お手柔らかにお願いします(笑) ロベールさんのサイトによると、 inline関数は必ずしもinline展開されないみたいだけど、 誰か環境ごとに厳密に検証した人いるのかな? 自分はVC++の判断を信じてる! [] - [ここ壊れてます]
- 166 名前:名前は開発中のものです。 mailto:sage [2016/12/19(月) 00:31:54.60 ID:HwJJ4Rji.net]
- 例えば「マリオが死ぬと画面がフェードアウトして画面が切り替わる」
…という処理があるとして ■パターン1 マリオの死亡処理のところに 具体的な切替演出の設定(この場合はフェードアウト)を書くことになる。 ■パターン2 マリオ死亡時にやることは 画面切替フラグを立てるだけで、死亡処理に集中することが出来る。 画面切替の演出には、画面がどんどん暗くなる「フェードアウト」だけでなく、 真っ白になったり(ホワイトアウト)、ワイプしたり色んな演出パターンが考えられる。 実際にやるかどうかは別としてね。 そうなると、画面切替処理は独立させておいたほうが取り回しが良くなるのではないか? というのがオイラの考える2のメリットかな。
- 167 名前:名前は開発中のものです。 mailto:sage [2016/12/19(月) 16:22:26.13 ID:9RjupL+U.net]
- 状態に対して××モードと名前をつけて
上手くハマるならそれを使えばいいよ
- 168 名前:名前は開発中のものです。 mailto:sage [2016/12/19(月) 23:36:24.22 ID:ABRexmh1.net]
- >>161
わかりやすい例え、ありがとう まさにそういう事例を想定していたので、とても参考になります >>162 了解です
- 169 名前:名前は開発中のものです。 mailto:sage [2017/01/08(日) 23:39:08.63 ID:3fqQn8Jq.net]
- 久しぶりにDXライブラリ使ってたんだけど、文字入力して変換しようとするとIMEの変換候補がゲームウィンドウの左下に表示される。
ちなみにGoogleIMEでは左下でMicrosoftIMEは右下。 昔触ったときは文字の入力した文字のすぐそばに表示されてた気がするんだけどWin10(Win8?)から仕様が変わったんだろうか。 ぐぐったらWin8でIMEウィンドウ自体が出ない不具合があってそれは解消されたようなんだが。
- 170 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 09:20:03.69 ID:JxeCTkK7.net]
- 文字入力といえば自作のアクションゲームで名前入力辞めマスタ
よーく考えるとユーザー自身しかしないだろうし
- 171 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 09:22:32.67 ID:JxeCTkK7.net]
- キーのログをとってmovieみたいに再現できる機能も省略
今なら動画をとろうと思えばキャプチャソフトを使えばよいし 楽になった分、今度こそ完成に近づくと良いけど
- 172 名前:106 mailto:sage [2017/01/17(火) 15:54:13.99 ID:aj0DNk7d.net]
- スレに残しておきたいと感じた情報を書いておきます
>>106で沸いた疑問を縦800ピクセルの画像で比較検証したところですが DrawRectGraphで一列ずつ描画するのと SetDrawAreaで描画できる範囲を一列ずつ変更しながら描画するのでは 比べるのがおこがましいくらい DrawRectGraphで一列ずつ描画する方が 軽かったという検証結果が出ました 12倍くらいの差がありましたので、10倍以上違うのは確実だと思います ここまで違うのならどんな環境でもDrawRectGraphの方が良いのは確実なんじゃないかと思います ラスタースクロールをシェーダ使わずに実装するならDrawRectGraphが良いです 以上、報告終わり
- 173 名前:名前は開発中のものです。 mailto:sage [2017/01/29(日) 19:37:06.79 ID:rdbqqXVO.net]
- >>167
SetDrawAreaを使うと連続描画が途切れるからね
- 174 名前:名前は開発中のものです。 mailto:sage [2017/01/30(月) 18:28:11.60 ID:2zIjyMmQ.net]
- Delayフレーム後にSoundHandleを指定の音量パン周波数で再生する
SoundEffect(int SoundHandle,int VolumePal,int PanPal,int FrequencyPal,int Delay) こんな関数を作りたいんだけど実装方法が思いつかない SetSoundCurrentTimeでマイナスの値を設定出来たら簡単なのに
- 175 名前:名前は開発中のものです。 mailto:sage [2017/02/16(木) 01:43:45.04 ID:vIVM03On.net]
- マイクから入力される音声のdBを
監視するアプリって作れますか?
- 176 名前:名前は開発中のものです。 [2017/02/26(日) 02:54:28.23 ID:NkbyLrdK.net]
- DX11対応の環境でサンプルプログラムをコンパイルし実行したらDX11で動いていましたが
この.exeをDX11非対応の環境で実行するとDX9などで動くんですか? 手元にDX11非対応の環境が無くて試せないんですが2Dゲーを作る分には特に気にしなくても大丈夫なんでしょうか
- 177 名前:名前は開発中のものです。 mailto:sage [2017/02/26(日) 02:56:31.45 ID:NkbyLrdK.net]
- sage忘れ失礼しました
- 178 名前:名前は開発中のものです。 mailto:sage [2017/02/26(日) 04:39:50.74 ID:cv+wlHl/.net]
- オリジナルシェーダ使ってなければ問題ないはず
- 179 名前:名前は開発中のものです。 mailto:sage [2017/02/26(日) 11:18:23.14 ID:SbF7UdV7.net]
- Android対応のDXライブラリが公開されたようだね
Unityやcocos2dと比べるとメリットがあまりないのがアレだけど (DX11対応みたいに中途半端になりそうなところがまたね……)
- 180 名前:名前は開発中のものです。 mailto:sage [2017/02/26(日) 11:24:07.56 ID:SbF7UdV7.net]
- >>171
DX11でつくるのなら DXライブラリは、DX11の機能のテッセレーションやジオメトリシェーダー コンピュートシェーダーなど対応していないからあまりオススメしないぞい
- 181 名前:名前は開発中のものです。 mailto:sage [2017/02/26(日) 18:26:14.24 ID:w1YArNR6.net]
- android対応dxライブラリマジやがw
ちょっとスマホゲー作りたくなってきた・・・
- 182 名前:名前は開発中のものです。 mailto:sage [2017/02/26(日) 23:50:04.99 ID:UgWHSXy5.net]
- ゲームエンジンで実機デバックしてたから
VS2015の実機デバックがそのまま使える DXライブラリのプログラムも実機でみれて楽しい
- 183 名前:名前は開発中のものです。 [2017/02/27(月) 17:14:55.41 ID:HzyfcOK5.net]
- Android対応まじだったw
前に誰かがcocos2dでやってたの使ってみたんだけど まともに動かんかったから公式で対応してくれるのはでかい 帰ったら自作ゲームを移植してみよう
- 184 名前:名前は開発中のものです。 mailto:sage [2017/02/27(月) 19:38:03.31 ID:yzmBThPX.net]
- 個人開発なのにそんなに手広くやって大丈夫なんだろか。
良い人である以上に人が良すぎてサポートで死にますよ。
- 185 名前:名前は開発中のものです。 mailto:sage [2017/02/27(月) 19:49:51.98 ID:LeUk6F53.net]
- OSSだしgithubで開発すれば良いのに
- 186 名前:名前は開発中のものです。 [2017/02/27(月) 19:50:11.47 ID:hCixZHbE.net]
- dxライブラリのあり方としての謎が深まる
- 187 名前:名前は開発中のものです。 mailto:sage [2017/02/28(火) 00:19:17.26 ID:VdUT2lLZ.net]
- つかVS2015がandroid対応していたことに驚き
- 188 名前:名前は開発中のものです。 mailto:sage [2017/02/28(火) 01:06:31.48 ID:kAgsABkj.net]
- 今MSはマルチプラットフォームに必死だからね
Win10でBash使えるようにしたりLinuxにVisual Studioのコードエディタを公開したりと 1番驚いたのはThe Linux FoundationにMSが入った事だな
- 189 名前:名前は開発中のものです。 mailto:sage [2017/02/28(火) 01:07:15.70 ID:kAgsABkj.net]
- ごめんスペースだと思ってコピペしたのが文字化けしてる
The Linux Foundationね
- 190 名前:名前は開発中のものです。 mailto:sage [2017/02/28(火) 01:27:32.13 ID:VdUT2lLZ.net]
- 試しにやってみたけど最後の実行が出来なかったorz
もう寝る
- 191 名前:名前は開発中のものです。 mailto:sage [2017/02/28(火) 14:20:17.58 ID:9MuOvNLS.net]
- Android版をタブレットのC4droidでやってみたけどライブラリの中でエラー吐くみたいだ
大量のエラー吐くからさっぱり分かんないや "ANative_Activity_onCreate"が" android_native_app_glue.h "と衝突して多重宣言しているとかなんとかから始まってBulletやOgg周りで参照エラーが出てる
- 192 名前:名前は開発中のものです。 mailto:sage [2017/03/05(日) 18:50:00.02 ID:WYpdMPcL.net]
- DrawLine関数の挙動がPCごとに違う?なんかサブのノーパソで動かすと下に1ドットずれる
両方Directxのバ
- 193 名前:ージョン11以降だからそこ辛味じゃないと思うんだけど… []
- [ここ壊れてます]
- 194 名前:名前は開発中のものです。 mailto:sage [2017/03/11(土) 14:58:07.56 ID:4brvAqUP.net]
- もう何年も前に、
ハードウェア描画は1ドットずれたりする場合があるだの 3Dのものを画面に映す(2Dに変換する)際に誤差が生じるだの 聞いたことあるけど、流石にそれは関係ないかしらね…
- 195 名前:名前は開発中のものです。 mailto:sage [2017/03/16(木) 07:40:17.58 ID:06c/uHW3.net]
- 座標の扱いはビデオカードごとに違うからね
古いオンボードだと0.5pxずれたりする
- 196 名前:名前は開発中のものです。 mailto:sage [2017/03/19(日) 15:23:34.43 ID:85gVo7Ly.net]
- 2dで影作るときってどうすればいいんだ
アルファ乗算の値下げながらDrawLineをずらして何本も描画していくのを思いついたけど絶対糞重くなるでしょ
- 197 名前:名前は開発中のものです。 mailto:sage [2017/03/19(日) 17:46:24.06 ID:McAdhrov.net]
- 影の形にこだわらなければいいんでないかい
- 198 名前:名前は開発中のものです。 mailto:sage [2017/03/19(日) 17:59:49.08 ID:iXKgNie2.net]
- 影ってどういう影なのか分からんけど
例えばスプライトのキャラに影つけるならキャラの形の白黒画像用意してDrawModiGraphで乗算合成とかじゃね
- 199 名前:名前は開発中のものです。 mailto:sage [2017/03/20(月) 14:37:04.24 ID:PJ3OOU/G.net]
- スプライト底辺に黒い楕円置くだけやろ
それでアクションやマップ作成に支障が出るなら 潔く影なんて捨てる
- 200 名前:名前は開発中のものです。 mailto:sage [2017/04/09(日) 22:25:04.02 ID:Fu+0leN1.net]
- マウスの入力についての質問です
マウスのサイドボタンの検出はDXライブラリではできないのでしょうか? 調べてみても、サイドボタンがXButton1とかXButton2と呼ばれていることしか得られませんでした こう記述すればできるとか、DXライブラリ以外の実装方法があるとかあれば教えてください よろしくお願いします
- 201 名前:名前は開発中のものです。 mailto:sage [2017/04/09(日) 22:43:19.29 ID:A8iwvjAh.net]
- GetMouseInput()じゃダメなの?
- 202 名前:名前は開発中のものです。 mailto:sage [2017/04/09(日) 22:53:28.69 ID:Fu+0leN1.net]
- >>195
公式リファレンスを見ながらGetMouseInput()の引数を全部試しましたが、どれを使っても検出されませんでした ブラウザでサイドボタンを使って戻る進むができてるので、自分のサイドボタンが壊れている可能性はないです
- 203 名前:名前は開発中のものです。 mailto:sage [2017/04/09(日) 23:58:01.43 ID:gIO/ILx4.net]
- >>196
ttp://dxlib.o.oo7.jp/function/dxfunc_input.html#R5N8 ここ見る限り、GetMouseInputで値取れないってことは 逆にマウスのサイドボタンがキーボードのフックで対処してるタイプかもしれない。 例えば、キーボードのBackSpaceで「戻る」、Shift+BackSpaceで「進む」を表現してるとか。 ttp://dxlib.o.oo7.jp/cgi/patiobbs/patio.cgi?mode=past&no=2247 後は関数自体の使い方に問題があるかもしれないので ここで管理人さんが掲示してる最初のソースコードを試してみるとか。 情報が古いので今も使えるかわからないけど。
- 204 名前:194です mailto:sage [2017/04/10(月) 00:31:27.44 ID:Yp/MHnmL.net]
- >>197
ふたつのURLを見て試してみましたが検出されませんでした さらにCheckHitKeyAll()も試してみましたが、これでもサイドボタンは検出されませんでした ふたつ目のURLのように、もしかしたら実装されていない機能なのかもしれないです DXライブラリ製作者さんの掲示板に質問・お願いしてみることにします >>195 >>197 さん、どうもありがとうございました
- 205 名前:194です mailto:sage [2017/04/11(火) 01:56:20.31 ID:upA/YOkc.net]
- サイドボタンの検出の件ですが、無事解決しました
自分と同じようなことで悩んでいる/いた方のために書き残しておきます 簡単に言うと、サイドボタンの検出をするにはDXライブラリをバージョンアップする必要があるようです 以下のやり取りを見ていただければ、詳しいことが得られると思います ttp://dxlib.o.oo7.jp/cgi/patiobbs/patio.cgi?mode=view&no=4080
- 206 名前:。回の質問に関わってくださった皆様、改めてありがとうございました []
- [ここ壊れてます]
- 207 名前:名前は開発中のものです。 mailto:sage [2017/04/12(水) 01:50:35.12 ID:TuryebQE.net]
- 白地に(アンチエイリアスかかった)黒のアイコンを表示してるんですが
これの白地を別の色にすると白地前提のアンチエイリアスが汚くなってしまいます。 白地に黒アイコンのものにアルファブレンドをかけると今度は黒が薄く見えなくなってしまう。。 Dxライブラリの知識ではないかもしれませんが、これを解決する手法のヒントなどありますでしょうか?
- 208 名前:名前は開発中のものです。 mailto:sage [2017/04/12(水) 02:02:34.21 ID:TuryebQE.net]
- ごめんなさい書いた直後に自己解決してしまった
やっぱりよく調べて書くべきですね・・・
- 209 名前:名前は開発中のものです。 mailto:sage [2017/04/14(金) 21:46:05.15 ID:bZxpbzr7.net]
- DXライブラリに関連してるかどうかわかりませんが
わからないことを質問してみます。 ファイナルファンタジー14(以下、FF14と略)などのプロが開発したゲームを拝見するとロード時間が短いように感じます 例えばDXライブラリを使って約14,000KBぐらいのMP3ファイルをロードしてメモリに読み込むようにコードを書くと MP3ファイルのロードが完了するまでにコンマ数秒のロード時間が発生します ですが、FF14のタイトル画面でしばらく放置するとプロローグムービーが開始されるわけですが、 内容を見る限り明らかに容量の多いムービーファイルをロードして再生してるように見えるのですが、 実際、FF14のゲームを起動してタイトル画面に移行するまでの時間は僅かです 私からの質問は、大容量のファイルをロードする場合に ロード時間を短く済ませるための技術です DXライブラリでゲーム開発をしてるのでDXライブラリを使用してのお知恵を拝借したい
- 210 名前:名前は開発中のものです。 mailto:sage [2017/04/14(金) 22:21:37.18 ID:7sRUbSV9.net]
- 効果音ではなく曲を全部メモリにロードするのは間違ってる
ファイルサイズの大きい曲や動画は読み込みながら再生するのが基本 そうじゃないと100GBの動画とかメモリに入りきらないようなものは再生できない
- 211 名前:名前は開発中のものです。 mailto:sage [2017/04/14(金) 22:38:34.80 ID:bZxpbzr7.net]
- なるほど、必ずしもメモリにロードしてから再生しなくてもいいという考え方なのか
直接HDDからファイルをメモリーにロードしながら再生(ストリーミング再生)するわけか、 俺は大容量のファイルを分割でメモリに読み込んで 1ループのロード時間を短くする方向で考えていた
- 212 名前:名前は開発中のものです。 mailto:sage [2017/04/14(金) 23:52:44.66 ID:7sRUbSV9.net]
- 分かりやすく例えると、oggとかmp4なんかはzipで圧縮したような形式だから
再生するために元のwavに解凍すると10倍〜100倍になる メモリにロードするってことは、この巨大化したのを入れるってことだから 効果音のような小さなものでない限りは避けるべき
- 213 名前:名前は開発中のものです。 mailto:sage [2017/04/15(土) 01:19:09.73 ID:RtlOPePd.net]
- ありがとう
おかげで疑問が解消されました
- 214 名前:名前は開発中のものです。 mailto:sage [2017/04/15(土) 03:44:15.65 ID:3FEYykSP.net]
- あとはシングルスレッドの場合はどうしてもロード時に固まってしまうだろうから、マルチスレッドでロードを行うようにするのはどうだろうか?
- 215 名前:名前は開発中のものです。 mailto:sage [2017/04/15(土) 04:40:43.98 ID:RtlOPePd.net]
- マルチスレッドということはC++11を扱うということですね
Core i7を乗せてるのでCore UPUに対応したゲーム開発も興味はあるが 技術的に敷居が少し高いので今はまだいいかな 最新のC++コンパイラも必要になるし ゲームのプレイヤーがCore i7 や Core i5のCPUを乗せてないと威力は発揮されない
- 216 名前:名前は開発中のものです。 mailto:age [2017/04/15(土) 09:19:30.20 ID:+pklgBp/.net]
- 短い場合(メモリー上にwave展開しない)
SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMPRESS ); 長い場合(ストリーミング再生) SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ); どちらか書く
- 217 名前:名前は開発中のものです。 mailto:sage [2017/04/15(土) 09:44:18.23 ID:+pklgBp/.net]
- jgame.blog.fc2.com/
あんたこのブログの人やろ頑張りや
- 218 名前:名前は開発中のものです。 mailto:sage [2017/04/15(土) 09:52:16.21 ID:PBMOYWDr.net]
- ちなみに画像や音声のマルチスレッド読み込みはDXライブラリ標準機能で
SetUseAsyncLoadFlag(TRUE)使えば簡単よ
- 219 名前:名前は開発中のものです。 mailto:sage [2017/04/15(土) 11:40:04.16 ID:3FEYykSP.net]
- C++11とか使ってませんが、ロード画面作るときにマルチスレッドを使いました。
あくまでロード時に凍るのを防ぐために使用するのでCPUがどうとかは無いですよ。 process.hをインクルードしてResumeThreadさせるだけで実装できます。
- 220 名前:名前は開発中のものです。 mailto:sage [2017/04/15(土) 13:07:47.39 ID:poy2AG7G.net]
- 何故だろう、急に挙動が変わった。
sizeが0を返すからファイルが見付からない訳じゃないと思うのだけど。 void* readbin( char *filename) { int size ,rsize ,h; char *ptr; if ( size = FileRead_size( filename ) == -1 ) errmsg( NOTREAD ,filename ); ptr = (char*)malloc(size+1); if ( h = FileRead_open( filename ) == 0 ) errmsg( NOTOPEN ,filename ); rsize=FileRead_read(ptr ,size ,h); printfDx( "%s : %d/%d\n" ,filename ,size ,rsize ); FileRead_close( h); return ptr; }
- 221 名前:名前は開発中のものです。 mailto:sage [2017/04/15(土) 13:25:19.21 ID:JeCVIRaX.net]
- > ptr = (char*)malloc(size+1);
この+1はなに? 本題とは関係ないけど
- 222 名前:名前は開発中のものです。 mailto:sage [2017/04/15(土) 14:44:24.56 ID:qT8WsIhy.net]
- DXLib 知らずに覗いてるだけでどう挙動が変わったかわからんので >>213 の疑問には答えられないが、
>>214 おそらくファイルのく中身は表示などに使う文字列だという前提だと、 文字列の終端は NULL で止める必要があるのでその 1byte 分を余計に確保している。 (今どきのコンパイラは malloc での確保と同時に \0 埋めをしてくれるのかもしれないけどちょっと危ないな。) readbin() という名前からして文字列と言っても中身はバイト列と推測できるので、 ファイルの中身には終端 NULL を入れずに記録しているんだろう。
- 223 名前:213 mailto:sage [2017/04/15(土) 15:14:07.66 ID:YQ+vHcvV.net]
- +1は苦し紛れにあーだこーだいじる過程でダメ元で付加してみたのでした。
末端に不定の1バイトが付加されるので無駄な容量食いではありますが、危険という認識はありませんでした。 早急に削除します。 そして、自己解決しました。if文の連結順序を誤解していました。何故今まで動いていたんだ・・・。 if ( size = FileRead_size( filename ) == -1 ) errmsg( NOTREAD ,filename ); if ( h = FileRead_open( filename ) == 0 ) errmsg( NOTOPEN ,filename ); ↑これは↓こうですね。 if ( (size = FileRead_size( filename )) == -1 ) errmsg( NOTREAD ,filename ); if ( (h = FileRead_open( filename )) == 0 ) errmsg( NOTOPEN ,filename ); お騒がせしました。
- 224 名前:名前は開発中のものです。 mailto:sage [2017/04/18(火) 20:45:54.94 ID:bJnkmQcY.net]
- ホラーだ
- 225 名前:名前は開発中のものです。 mailto:sage [2017/04/29(土) 01:27:41.32 ID:/YvMYhCO.net]
- DXライブラリはgifアニメーションを再生できないのでしょうか?
DXライブラリ以外ならgifアニメ再生できたりするのでしょうか? 「こう記述すればできる」など教えてください
- 226 名前:名前は開発中のものです。 mailto:sage [2017/04/29(土) 06:09:30.20 ID:SAAy66wJ.net]
- gifをそのまま読み込んで表示はできなかったはず
連番画像に変換するか、もしくは動画にするかだな
- 227 名前:名前は開発中のものです。 mailto:sage [2017/04/29(土) 16:48:35.10 ID:/YvMYhCO.net]
- >>219
割とむつかしい事しなきゃ動画像は表現できないんですね・・・ 爆発エフェクトとか魔法エフェクトとかgifで表現したかったんですが、少し億劫になってしまいました 回答ありがとうございました
- 228 名前:名前は開発中のものです。 mailto:sage [2017/04/29(土) 17:59:31.45 ID:xrI1QiYS.net]
- LoadDivGraph使えば連番画像が配列に入るから簡単やで
っていうか簡単なエフェクトなら回転拡大縮小やブレンドパラメータの変更で表現できるんじゃない?
- 229 名前:名前は開発中のものです。 mailto:sage [2017/04/29(土) 18:40:06.93 ID:EkJNcx6r.net]
- >>218
一応C#版ならサンプル転がってるね 規制でurl貼れないけど検索すればすぐ見つかる でも221が言うようにDivGraph系使った方が楽だと思う
- 230 名前:名前は開発中のものです。 mailto:sage [2017/05/05(金) 10:05:26.44 ID:NXBeyHLp.net]
- なるほど初期化とかのタイミングで一旦展開するのがエンジン的には普通なのか
- 231 名前:名前は開発中のものです。 mailto:sage [2017/05/05(金) 15:40:34.37 ID:yUv3bLae.net]
- 最初から専用形式化アニメGifくらいにしか出力できないツールとかでもない限り、
手間は大して変わらんだろうしな
- 232 名前:名前は開発中のものです。 mailto:sage [2017/05/07(日) 15:21:12.75 ID:If6RMgU7.net]
- 結局誰かが何処かで一所懸命動かしてるわけだしな
- 233 名前:名前は開発中のものです。 mailto:sage [2017/05/09(火) 08:34:24.56 ID:K1FQSBk+.net]
- アニメーション用の画像を一枚にまとめた後ってLoadDivGraphでもDrawRectGraphでもアニメーションにできるけど
どっちの方が軽いとかってあるのかな
- 234 名前:名前は開発中のものです。 mailto:sage [2017/05/09(火) 09:38:53.90 ID:2FI5hhgE.net]
- 内部的にはほぼ同じ処理だと思う
どちらも一度のドローコールでまとめて描画するから速度はほとんど変わらないはず
- 235 名前:名前は開発中のものです。 [2017/05/10(水) 11:42:59.61 ID:/rFUV6kx.net]
- FOR-NEXT 10億回ループまとめw追加&補正その4w
DarkGDK(Core i7 4770K).. 1.7秒 DarkBASIC(Core i7 4770K). 1.8秒 JavaScript(CeleronG1820) 2.3秒 DarkGDK(CeleronG1820).. 2.3秒 DarkBASIC(CeleronG1820). 2.5秒 AGK ver1.0(CeleronG1820).. 33.0秒 H.S.P. 3.4(CeleronG1820). 126.0秒 (*1) *New! JavaScript(PS4Slim). 130.0秒 (*2) EZ-BASIC(PlayStation2). 227.0秒 (*3) 99BASIC(Core i7 4770K). 330.0秒 99BASIC(CeleronG1820). 463.0秒 プチコン3号(new 3DS LL). 673.0秒 プチコンmkII(new 3DS LL) 20300.0秒 (*4) プチコンmkII(new 3DS LL) 20500.0秒 (*5) (*1) H.S.P.、簡易インタープリター言語 (*2) CPUリソース割り当てが極端に少ないか、サブCPU担当と予想される (*3) SCPH-90000、BASIC STUDIO パワフルゲーム工房、ループ分割 (*4) スケーリングあり、ループ回数を100分の1にして、計測結果に100を掛けたもの、ループ分割 (*5) スケーリングなし、ループ回数を100分の1にして、計測結果に100を掛けたもの、ループ分割
- 236 名前:名前は開発中のものです。 mailto:sage [2017/05/10(水) 15:05:35.39 ID:AO63hxX7.net]
- 最適化ですっ飛ばしてる可能性は?
- 237 名前:名前は開発中のものです。 mailto:sage [2017/05/12(金) 23:43:37.67 ID:6uV/zlUc.net]
- どうやら周回遅れの嵐がまた戻ってきたようだな
- 238 名前:名前は開発中のものです。 mailto:sage [2017/05/25(木) 10:49:09.36 ID:EtJgGmd+.net]
- DrawRotaGraphやDrawExtendGraphで画像を拡大するとかなりジャギジャギになってしまうんですけど拡縮のアルゴリズムを変更みたいなことはできないんでしょうかね?
- 239 名前:名前は開発中のものです。 mailto:sage [2017/05/25(木) 11:21:21.11 ID:yyfkJ8TD.net]
- SetDrawMode(DX_DRAWMODE_BILINEAR)
- 240 名前:名前は開発中のものです。 mailto:sage [2017/05/25(木) 12:32:57.53 ID:EtJgGmd+.net]
- >232
リファレンスで確認したらまさにそのことが書いてありますね… ありがとうございます
- 241 名前:名前は開発中のものです。 [2017/05/26(金) 00:14:22.05 ID:rlfOgZbA.net]
- >>232
定数がラベル化されてて覚えたくないっぽい感じでいいなw
- 242 名前:名前は開発中のものです。 [2017/05/26(金) 01:39:42.52 ID:L1fgx/JI.net]
- ちょっと何言ってるかわかりませんね
- 243 名前:名前は開発中のものです。 [2017/05/27(土) 18:30:23.12 ID:XdDfcHqh.net]
- 初心者なんですけど、メインループ内で音声ファイルをboolフラグ使って再生すると、
音声ファイルが再生終了するまで全体の動きが止まってしまうんですけどこれどうやったら回避できますかね?
- 244 名前:名前は開発中のものです。 [2017/05/27(土) 18:52:38.31 ID:XdDfcHqh.net]
- >>236
if (collision == true) { PlaySoundMem(Sound_Bar_Handle, DX_PLAYTYPE_NORMAL, TRUE); collision = false; StopSoundMem(Sound_Bar_Handle); } ちなみにこんな処理です
- 245 名前:名前は開発中のものです。 mailto:sage [2017/05/27(土) 20:33:09.58 ID:brkGgSz8.net]
- DX_PLAYTYPE_BACKじゃなかったっけ
- 246 名前:名前は開発中のものです。 [2017/05/27(土) 22:17:05.92 ID:XdDfcHqh.net]
- >>238
なんとまあ・・・ ありがとうございました リファレンスしっかり見てから質問するようにします!
- 247 名前:名前は開発中のものです。 mailto:sage [2017/05/29(月) 02:06:45.40 ID:p1cVfpaJ.net]
- ヒカル TV出演「年間5億は稼ぐ勢いですね」
https://www.youtube.com/watch?v=G7qL6ftpets 第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ! https://www.youtube.com/watch?v=asF2wQ2xhjY&t=61s ユーチューバーの儲けのカラクリを徹底検証! https://www.youtube.com/watch?v=FUSb4erJSXE&t=504s 【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開! https://www.youtube.com/watch?v=Y7DAQ0RKilM&t=326s 誰も言わないなら俺がYouTuberのギャラ相場を教えます https://www.youtube.com/watch?v=E4q-vaQh2EQ&t=118s YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法 https://www.youtube.com/watch?v=Fr0WXXZRMSQ 最高月収5000万円だとさ。年収じゃなくて「月収」な おまえらもyoutubeに動画投稿したほうがいい やろうと思えばスマホがあればできるぞ 最低2年はやらないとここまではいかないだろうけど才能とアイデアと 企画力と継続力があればが大儲けできる可能性がなくもない まだまだ他の職種に比べれば競争率は低いからオススメ 顔出したくないならラファエルみたいに仮面つければいい
- 248 名前:名前は開発中のものです。 mailto:sage [2017/06/08(木) 10:48:04.41 ID:emR6NVdG.net]
- スマホ版にもゲームパッドの関数がある
なんだこれ
- 249 名前:名前は開発中のものです。 mailto:sage [2017/06/08(木) 21:06:56.21 ID:dElL6uGO.net]
- スマホ用ゲームパッドで使うんだろ
- 250 名前:名前は開発中のものです。 mailto:sage [2017/06/09(金) 09:39:03.45 ID:DE3YMeBF.net]
- UnityやUE4がある今日、DXライブラリで作るメリットってなんだろう?
自分、DXライブラリで開発したいなと思い色々と調べていたんですが、調べれば調べるほど、UnityやUEが出てきてちょっと悩み中です。
- 251 名前:名前は開発中のものです。 mailto:sage [2017/06/09(金) 14:11:39.94 ID:k1bCPNPm.net]
- PCが貧弱でUnityやUEだと重い、ぐらいかな
今から勉強するならあまりメリットは無いと思う
|

|