- 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/
- 70 名前:名前は開発中のものです。 mailto:sage [2016/05/11(水) 22:20:44.58 ID:bMgn9LMw.net]
- ttp://gameprogrammingpatterns.com/game-loop.html#play-catch-up
- 71 名前:名前は開発中のものです。 [2016/06/07(火) 01:07:55.74 ID:hB66gw1M.net]
- 垂直同期でやってるけど何故かFPSが59.9が多いんだよな
偶に60いくんだけど。龍神録のFPS管理は何故か57FPSになる
- 72 名前:名前は開発中のものです。 mailto:sage [2016/06/07(火) 11:13:02.03 ID:AssHyOle.net]
- もともとNTSCの垂直同期って59.94Hzだけど
今のは完全に60Pなんかね
- 73 名前:名前は開発中のものです。 mailto:sage [2016/06/07(火) 20:41:15.55 ID:wUcW1H+O.net]
- 龍神録のところのプログラムって、垂直同期とタイマー待機を同時にやってた気がする
どっちかだけにするといいはず
- 74 名前:名前は開発中のものです。 [2016/06/08(水) 16:24:56.19 ID:uqtESUHJ.net]
- >>70
だからか、東方だと60FPSが多いからなんでだと思ってた >>71 龍神録のタイマー待機関数をSleepからWaitTimerにしたらいくらかマシになったけど なぜか垂直同期を切ってFPS制御するより垂直同期とFPS制御を同時にやった方が軽くなった
- 75 名前:名前は開発中のものです。 mailto:sage [2016/06/21(火) 16:36:29.41 ID:bN0TQeIa.net]
- LoadGraph等で同じ画像を複数回読み込んだときは、やはり同じ画像が複数個分メモリに展開されるのだろうか?
- 76 名前:名前は開発中のものです。 mailto:sage [2016/06/21(火) 18:42:57.95 ID:YpRlukE1.net]
- うん
- 77 名前:名前は開発中のものです。 mailto:sage [2016/06/21(火) 19:13:04.10 ID:2iYzZ5We.net]
- 画像を改変したりして複数いるなら1回読み込んで、コピーするべき
HDD等からの読み込みは遅いから
- 78 名前:名前は開発中のものです。 mailto:sage [2016/07/20(水) 18:57:39.10 ID:/hGHlgJA.net]
- 垂直同期切ってもウィンドウモードだと60fpsになっちゃうんだけどこれどうにかならない?
- 79 名前:名前は開発中のものです。 mailto:sage [2016/07/21(木) 02:55:43.25 ID:cqeRkCwh.net]
- 垂直同期切れてないんじゃない?
- 80 名前:名前は開発中のものです。 mailto:sage [2016/08/03(水) 16:59:01.47 ID:X+OZY+Fp.net]
- 仮想関数の呼び出しが遅い
最初はDXlibと関係あるのかなーと思ったけどC++の仕様っぽい みんなも気をつけろ
- 81 名前:名前は開発中のものです。 mailto:sage [2016/08/04(木) 02:17:02.01 ID:SwoLOy80.net]
- 自分も聞いたことあるけど、それがクリティカルになるって、
他のところがボトルネックになってたりしない? あとは最適化オプションとかで何とかなりそうではあるが
- 82 名前:名前は開発中のものです。 mailto:sage [2016/08/04(木) 18:34:57.87 ID:BM0zlQCD.net]
- 関数の呼び出し速度が気になるようじゃ元々が問題だと思うんだけど
実際に通常関数を呼ぶのと速度的にはどれくらいの差なんだろう
- 83 名前:名前は開発中のものです。 mailto:sage [2016/08/05(金) 17:45:28.67 ID:GXDTbL61.net]
- 3Dモデルのボーンをプログラムで動かすときに、
・ボーンをワールド座標の特定の場所を向
- 84 名前:くようにしたい(カメラの注視のようにボーンを一点に向けたい)
・ボーンをワールド座標の特定の角度にしたい。例えば、ボーンを水平な角度にしたい を行いたいのですが、 ボーンを動かすのは MV1SetFrameUserLocalMatrix でローカルの変換行列を指定する方法しかないですが どうやればできますか? [] - [ここ壊れてます]
- 85 名前:名前は開発中のものです。 mailto:sage [2016/08/07(日) 21:54:52.11 ID:0nKMuJM/.net]
- プログラムをステップ実行したときに
DXライブラリのソースにステップインするにはどうやればできますか? Visual Studio 2013使ってます
- 86 名前:名前は開発中のものです。 mailto:sage [2016/08/07(日) 22:00:00.73 ID:0nKMuJM/.net]
- ちなみにDXライブラリのソースにステップインしたい理由は
エラーコードが-1しかなくて、何が原因かわからなくて調べるためです たまに挙動不審になったときの調査もしたいです
- 87 名前:名前は開発中のものです。 mailto:sage [2016/08/07(日) 22:44:42.94 ID:0nKMuJM/.net]
- >>82は解決しました。簡単にできましたww
- 88 名前:名前は開発中のものです。 mailto:sage [2016/08/08(月) 00:03:13.72 ID:nCWjYGMh.net]
- 自己解決した時は、どんなに簡単であってもその方法をだな
- 89 名前:名前は開発中のものです。 mailto:sage [2016/08/08(月) 09:58:38.04 ID:A5U2Nxs1.net]
- その方法も何もDXライブラリのソース公開されているからlibファイルの代わりにソースをプロジェクトに追加するだけやん
- 90 名前:名前は開発中のものです。 mailto:sage [2016/08/08(月) 10:00:13.35 ID:z9kN9Vnb.net]
- pdbを置くだけでしょ
ステップインしたらその時にソースの場所聞いてくるわ
- 91 名前:名前は開発中のものです。 mailto:sage [2016/08/08(月) 10:03:39.19 ID:YjIAwMDj.net]
- という風に、人によってやり方違うので
どんなに簡単でも手順は書いておいたほうが それが質問した人の礼儀かと レスしようとして自分とこで検証して回答しようとしたら 自己解決しましたの一言でしまってたりすること多いしねえ
- 92 名前:名前は開発中のものです。 mailto:sage [2016/08/08(月) 10:12:41.36 ID:A5U2Nxs1.net]
- pdbって使い道あったのか
いつも使い道分からずに放置してたわ
- 93 名前:名前は開発中のものです。 mailto:sage [2016/08/12(金) 09:00:00.33 ID:j8xGV0qx.net]
- DXライブラリは3Dモデルの大きさをセンチメートルで管理するのがいいのか?
メートルで管理してカメラの Near Clip を小さくするとアウトラインやZTestがおかしくなる
- 94 名前:名前は開発中のものです。 mailto:sage [2016/08/13(土) 05:15:02.85 ID:smt/5o17.net]
- 単位は人それぞれだけど、精度を下げりゃ描画が甘くなるのはそりゃ当然よ
- 95 名前:名前は開発中のものです。 mailto:sage [2016/08/13(土) 08:56:44.42 ID:kHkMVs63.net]
- Zバッファのビット深度を変更する関数があったような
デフォは16bitだから32bitとかにしてみては
- 96 名前:名前は開発中のものです。 mailto:sage [2016/08/13(土) 09:38:49.80 ID:cO1Dtflu.net]
- >>90
俺も以前同じようなことで悩んだわ Near Clipは破綻しない程度に大きな値をとる必要があるとのこと 俺の場合は1メートル〜数万キロのレンジで幅が広すぎて単位をどう弄ろうがZバッファの深度を深くしようがダメだったんで、 ここで教えてもらった「ワールド空間を複数の距離レンジに区切ってそれぞれを描画し最後に合成する」手法で切り抜けた おかげでカメラが物体から5メートルまで寄ろうが1万キロ離れようがあまり問題はなくなった ただし代償として描画処理の負荷は上がったけど・・・ >>92 SetZBufferBitDepthでZバッファの深度を変えられる でも確か24ビットまでじゃなかったかな?
- 97 名前:90 mailto:sage [2016/08/13(土) 10:22:48.53 ID:MTyr6UWS.net]
- >>91-93
レスありがとうございます SetZBufferBitDepthは簡単なのですぐに試してみます 「ワールド空間を複数の距離レンジに区切ってそれぞれを描画し最後に合成する」手法は ちょっと簡単にはできなさそうですが、プロのゲームっぽいですね。すごい
- 98 名前:名前は開発中のものです。 mailto:sage [2016/08/13(土) 13:32:29.62 ID:cO1Dtflu.net]
- >>94
方法さえ教えてもらえればそんなややこしい実装じゃなかったよ 1. まずMakeScreen関数で合成用のサブ画面を作る 2. SetDrawScreen関数で作成したサブ画面を描画対象にしてその後カメラのパラメータを設定 3. SetCameraNearFar関数でカメラから一番遠いクリップ領域を指定 4. ワールド空間の物体を描画 5. SetDrawScreen関数で裏画面を描画対象にする 6. DrawGraph関数で合成用サブ画面に描いたグラフィックを裏画面に投下処理つきで描画 7. 2〜6をクリップ領域を1つずつ手前に近づけながらforループで必要回数だけ繰り返す 8. ScreenFlip関数で裏画面と表画面を切り替える みたいな感じ 継ぎ目がちょっと気になるという欠点があるらしいけど、俺の作ったプログラムでは大して問題にはならなかった
- 99 名前:名前は開発中のものです。 mailto:sage [2016/08/13(土) 17:10:08.44 ID:MTyr6UWS.net]
- >>95
ありがとうございます。実装できる気がしてきました
- 100 名前:名前は開発中のものです。 mailto:sage [2016/08/23(火) 06:56:44.62 ID:8oK85pQf.net]
- すいません。 初歩的なことを教えて下さい。
DXライブラリを3.12aから3.16d(最新版)に昨日上げたのですが、以下の様なエラーが出ます。 エラー 1 error LNK1104: ファイル 'DxDrawFunc_vs2012_x86_d.lib' を開くことができません。 丁度ドライブが一杯になったのでそれでファイル欠損起こしたのかと、整理して落としなおして 再インストールしても変わりません。 消さないでいた3.12aに戻せば正常にコンパイルできます。 どんなポカミスが考えられるでしょうか。
- 101 名前:名前は開発中のものです。 mailto:sage [2016/08/23(火) 08:00:58.44 ID:ZkV35hFb.net]
- DXライブラリのフォルダの下を 'DxDrawFunc_vs2012_x86_d.lib' で検索して、
そのフォルダがプロジェクトのプロパティの「リンカー」の中の 「追加のライブラリディレクトリ」に設定されているか確認してみたか? 設定してなかったら設定する
- 102 名前:97 mailto:sage [2016/08/23(火) 10:52:44.72 ID:8oK85pQf.net]
- ありがとうございます。
おっしゃるとおりでした。 C/C++全般のインクルードディレクトリだけ変更してリンカ全般の追加を変更していなかったのが原因でした。 これで総て正常終了できました。 ありがとうございました。
- 103 名前:97 mailto:sage [2016/09/16(金) 19:48:32.55 ID:/GVguODS.net]
- DrawBox()って思った以上にコスト高なのね。
エディタ作っているのですが、マウスで指定範囲を決定するのに半透明のFilling=TRUEで サイズが{400,200}程度になると追いついて来ないし。うちの環境だと。 まあ範囲が分かれば良いだけなので、非透明のFilling=FALSEにしましたが。 機能の根幹に必要な命令じゃなくて良かった・・・。
- 104 名前:名前は開発中のものです。 mailto:sage [2016/09/16(金) 20:42:39.00 ID:arX7j3iZ.net]
- ハードウェアで描画してないだけちゃうの?
- 105 名前:100 mailto:sage [2016/09/17(土) 02:14:24.29 ID:bU3etqlH.net]
- >>101
SetUse3DFlag()指定しなければデフォで使ってくれないの? TRUEで明示してみたけどやっぱ重かった。
- 106 名前:名前は開発中のものです。 mailto:sage [2016/09/18(日) 05:02:11.08 ID:/gg7FKD1.net]
- 画面全体塗りつぶすのに毎フレーム使ったりするし重いわけないと思うがなぁ
最新版では試してないけど
- 107 名前:100 mailto:sage [2016/09/22(木) 22:23:47.41 ID:j/yM3Z13.net]
- >>103
すいません、DXライブラリは無罪でした。 コード読み直していたら、離れた所から12回ループでDrawBox()してからScreenFlip()しておりました。 そりゃ感覚とは結果が違うのも当たり前で。 大変失礼しました・・・。
- 108 名前:名前は開発中のものです。 mailto:sage [2016/09/23(金) 11:02:39.00 ID:grmg4z9F.net]
- ∧∧
ヽ(・ω・)/ ズコー \(.\ ノ 、ハ,,、  ̄ まぁ原因判明してよかったね
- 109 名前:名前は開発中のものです。 mailto:sage [2016/09/26(月) 22:11:34.39 ID:gS8npJwc.net]
- スーファミっぽくラスタースクロールの波うつようなあのぐにゃぐにゃした表現をしたいんだけれども
DrawRectGraphで一列ずつ描画するのと SetDrawAreaで描画できる範囲を一列ずつ変更しながら描画するのと どっちが早いんだろう
- 110 名前:名前は開発中のものです。 mailto:sage [2016/09/27(火) 07:34:39.52 ID:6RU/4Se1.net]
- どっちもクソ遅そうな気が……
ラスタースクロールのシェーダー書くのがいいが、 シェーダーはDXライブラリではちょっと敷居が高くてプログラム難しそうなのな ボーンを仕込んだポリゴンの板に画面の画像を貼り付けて、 ボーンでラスタースクロールふうにアニメーションさせるのが楽な気がする
- 111 名前:名前は開発中のものです。 mailto:sage [2016/09/27(火) 12:29:31.97 ID:kk2kAC73.net]
- 10年前のPCで動くSTG(弾は500発程度)で、640*480程度なら上から一行ずつ描画でも特に処理落ちしなかった
DrawRectGraph使った 今のハードなら余裕だと思う
- 112 名前:名前は開発中のものです。 mailto:sage [2016/10/04(火) 20:15:50.94 ID:rnDdxDqG.net]
- SetLoopAreaTimePosSoundMem()
この関数めっちゃ便利なんだけどググっても全くヒットしなかったんだが、いつ頃からあるんだろ? ループ開始位置と終了位置をms単位で指定できるから音声ファイルを編集する必要がなくなった 無加工のファイルでもこっちの好みでループ範囲を指定できるから 音楽ファイルはこの素材屋からDLしてねってreadmeに書いておけば配布するファイルサイズも小さく出来る あと軽く検証しただけだけど再生中に指定しなおしても有効だったから FF6のラスボス戦みたいに イントロ‐Aメロ‐繋ぎ‐Bメロ‐繋ぎ‐Cメロ〜 みたいになってるファイルで 最初はAメロをループ、条件を満たしたら繋ぎを経由してBメロループに移行〜みたいな演出も簡単に出来る
- 113 名前:名前は開発中のものです。 mailto:sage [2016/10/04(火) 21:56:37.68 ID:HgclvPkb.net]
- そんなのあったのか
最後まで行ったら途中から再生、ってのは 結構前からあったの覚えてるんだが
- 114 名前:名前は開発中のものです。 [2016/10/15(土) 11:32:13.14 ID:NMxKtSgQ.net]
- 試してないけど
アンドロイドでも 動くように なってたのね知らなかった 何処まで、動くのかな?
- 115 名前:名前は開発中のものです。 mailto:sage [2016/10/16(日) 19:58:12.00 ID:ZsomXKa1.net]
- あらかじめ大きめのサイズの空っぽの画像をMakeScreenで用意しておくことの有用性に今頃気付いたぜ
これとDerivationGraphのコンビで作り直したらぐっと軽くなった
- 116 名前:名前は開発中のものです。 mailto:sage [2016/10/16(日) 21:02:14.27 ID:ldA8bGPF.net]
- テクスチャ切り替えはコスト大きいからね
- 117 名前:名前は開発中のものです。 mailto:sage [2016/10/23(日) 23:02:40.45 ID:t2BOiWAY.net]
- >>109
使ってみたら、ほんとにスゴイですね。 時代がCDDAやストリーミング再生になってもう無限ループは無理なのかなーとか思っていたのだけど。 ただWAVEで成功したのでそのデータをMP3にしたら、上手く繋がらなくなっちゃった。 もう少しデータの作り方工夫すれば上手く行くのだろうけど。
- 118 名前:名前は開発中のものです。 mailto:sage [2016/10/24(月) 06:53:24.03 ID:YwSDnTaO.net]
- >>114
MP3はこの関数に限らずループの時に違和感が出ると言われてるから たぶんMP3の仕様の問題もあると思う ogg形式では上手くいったよ ただ変換の時にビットレートを固定したファイルでしか検証してないから 可変ビットレートの方法で圧縮されたoggファイルで上手くいくかは未検証
- 119 名前:名前は開発中のものです。 mailto:sage [2016/10/24(月) 12:40:43.17 ID:GmlKA2wN.net]
- MP3は権利の問題があるから他の使えって言われてた時期があったね
- 120 名前:名前は開発中のものです。 mailto:sage [2016/10/24(月) 13:10:36.88 ID:Y2gOrRK8.net]
- 権利よりも仕様が問題だな
MP3は無音が挿入されたり余計なことされる場合が多いからゲームに使うようなもんじゃない 他の環境では手抜き実装でWindowsの再生機能に丸投げできるメリットがあるが、DXライブラリなら関係ないし
- 121 名前:名前は開発中のものです。 mailto:sage [2016/10/24(月) 23:43:54.13 ID:UrCtC7CV.net]
- ループできないからだったか、昔は
DXライブラリではogg使うなとかもあったね
- 122 名前:名前は開発中のものです。 mailto:sage [2016/10/27(木) 13:49:28.51 ID:1Lorx2LL.net]
- 昔は BGMにはmp3, 効果音にはwav だったでしょ
- 123 名前:名前は開発中のものです。 mailto:sage [2016/10/27(木) 15:57:58.01 ID:HwaxCMEV.net]
- 116の言う通りmp3はライセンス関係が危ないということで避けられoggが推奨されていた
仕様よりもこっちのほうが重大問題 ゲーム制作関係でmp3推奨というのは聞いたことがない
- 124 名前:名前は開発中のものです。 mailto:sage [2016/10/27(木) 17:43:02.40 ID:rFz+rXeH.net]
- MP3登場時にはoggなんてなかったから
Wavよりファイルサイズの小さいMP3を推奨する風潮はあったと思うけど
- 125 名前:名前は開発中のものです。 mailto:sage [2016/10/27(木) 18:10:43.67 ID:HwaxCMEV.net]
- ogg普及前はソフトウェアMIDIが多かった
もしmp3が主流だったと思う人がいたら、その人のいた界隈はライセンス関係の意識が薄かったんだよ まぁ00年代前半まではそういう時期でもあったけど
- 126 名前:名前は開発中のものです。 mailto:sage [2016/10/27(木) 20:01:09.28 ID:lueiMAyc.net]
- 市販のゲームで5000本以上販売が課金の条件だったから、フリーゲームや小規模同人では普通に使われてたよ
- 127 名前:名前は開発中のものです。 mailto:sage [2016/10/27(木) 20:28:51.91 ID:BuMiN4CL.net]
- 制作中のゲームにはキャラの髪型や服や装備や小物を変えるキャラメイキング(着替え)の機能があって、
今はひとつのMV1ファイルにまとめておき、フレーム表示/非表示で切り替えてるのですが、 だんだんアイテムが増えてきてファイルが大きくなってしまったので 別の方法をとりたいのですが、 キャラメイキングや着替えを実装するのに何かいい方法ありませんか? 髪型や服や装備や小物ごとにXファイルでバラバラにしておいて、Xファイルをテキスト結合するのが 楽なのではないかと思っていますが、もっと良い方法ありませんか?
- 128 名前:名前は開発中のものです。 mailto:sage [2016/10/31(月) 19:03:23.01 ID:X+KVjoNa.net]
- DXライブラリのユーザーが作ってるのって
2Dゲーと3Dゲーのどっちが多いんだろ? 俺は3Dには手が出せてないんだけど
- 129 名前:名前は開発中のものです。 mailto:sage [2016/10/31(月) 19:10:44.78 ID:8dsRDt6U.net]
- 2D
- 130 名前:名前は開発中のものです。 mailto:sage [2016/11/01(火) 22:09:07.08 ID:kJ7Uoghc.net]
- 3Dは海外のゲームエンジンが無料化されてしまったので、
3Dゲーム制作者はそっちへ行ってしまった気がする 2Dだとどれもあんまり変わらない気がするが
- 131 名前:名前は開発中のものです。 mailto:sage [2016/11/01(火) 22:26:25.51 ID:+8ot24fl.net]
- 2Dも描画しかないDXライブラリよりもオブジェクト管理出来たりするエンジンに流れている気がする
- 132 名前:名前は開発中のものです。 mailto:sage [2016/11/02(水) 07:20:39.55 ID:/aW+4m+D.net]
- 全部コードに直書きする形でならなんとか自分の思う通りに作れるようになったとは思うんだけど
さすがに会話イベント一個追加したり、マップに壺一個追加しただけで再コンパイルする必要がある状況って なんというか我ながらアホだよね この状況を卒業するには何を勉強したらいいのかアドバイスください 作ってるのは2DRPGで、主にNPCのイベント内容をコードの外に出すにはどうやればいいかで躓いてます とりあえず思いついてるやり方は セリフ表示とか効果音を鳴らすとかのイベント処理を担っている関数に番号振って引数の数を紐付けしておいて イベントの内容を全部、関数の番号、引数の数、引数の数値…って数字だけのデータにして そのデータを読み込んで、どの関数を呼び出し引数にはどんな数値を入れるかを判断して実行する関数を作り イベントの内容を全部数値に置き換える方法なんですけど
- 133 名前:名前は開発中のものです。 mailto:sage [2016/11/02(水) 08:13:58.60 ID:8LrVjVrS.net]
- >>129
自分でも気付いてる通り、基本原則はコードとリソースを分離すること。 テキストファイルの読み込み
- 134 名前:ニ解析が出来るなら
単純なシナリオファイル(会話+αくらい)のローダくらいなら比較的簡単。 まあそれ以上に複雑なことをやるなら、素直に 既存のスクリプト言語の組み込み用ライブラリを頼ったほうが良いと思うけどね。 次点としては、ソースファイルの構成を見直して、最低限のビルドでも済むようにすること。 各クラスの書き方、各ファイルの依存関係なんかを整頓することで、 ちょっと修正したくらいなら、長時間のビルドを要さなくなる。 [] - [ここ壊れてます]
- 135 名前:名前は開発中のものです。 mailto:sage [2016/11/02(水) 13:45:37.24 ID:/aW+4m+D.net]
- 大体の方向性はこんな感じでいいんだということであれば進めていきたいんですが
躊躇している理由が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);//最初の引数がしゃべるキャラ、最後のは吹き出しの形のタイプ指定 } みたいに作ってるイベントの条件分岐の部分の外部への出力方法が思いつかないっていう問題点もあります なんかこう、こんな低レベルな人間にもできる上手いやり方ありませんかね?
- 136 名前:名前は開発中のものです。 mailto:sage [2016/11/02(水) 15:10:54.49 ID:C/+BZRXz.net]
- 2chは行頭の半角スペースやタブは無視する
- 137 名前:名前は開発中のものです。 mailto:sage [2016/11/02(水) 15:11:48.53 ID:C/+BZRXz.net]
- 途中で書き込んでしまったけど、そういうわけでコード書くときは全角スペース使って見やすく書いて
- 138 名前:名前は開発中のものです。 mailto:sage [2016/11/02(水) 15:50:25.87 ID:/aW+4m+D.net]
- if(itemstorage[itemid]<99){
itemstorage[itemid]++; takarabakoOpenFlag[takaraID]=1; }else{ JISAKU_serihu(1,"これ以上持てない",0);//最初の引数がしゃべるキャラ、最後のは吹き出しの形のタイプ指定 } 複数行にまたがってる部分はここだけです 後は本当に変数に代入してるだけというか…
- 139 名前:名前は開発中のものです。 mailto:sage [2016/11/02(水) 15:53:23.25 ID:22j5AZ4g.net]
- >>131
データにしやすいパターンやお約束のイベントだけをデータベース化して 特殊処理はそのままハードコートでいいんじゃねぇの 「これをデータ化したら本当に効率化されるのだろうか」と考えて 非効率になりそうだったらハードコートのまま そんなことよりもっとプレイヤーから見て喜んでもらえることに意識を集中したほうがいい
- 140 名前:名前は開発中のものです。 mailto:sage [2016/11/02(水) 17:31:46.86 ID:mreiywNQ.net]
-  あ
この板Unicode参照出来なかった?
- 141 名前:名前は開発中のものです。 mailto:sage [2016/11/02(水) 17:32:02.03 ID:mreiywNQ.net]
- 無理か
VIPなら出来るのに
- 142 名前:名前は開発中のものです。 mailto:sage [2016/11/09(水) 13:59:08.62 ID:DtsDG8yY.net]
- 3Dゲームでマウスをクリックした位置にある3Dモデルをできるだけ高速に取得したいのですが、
何かいい方法はありますか? コリジョン(衝突判定)関数がありますが、当たり判定用のメッシュを用意しないといけないようなので ちょっと手間がかかりすぎるのでできればもっと手軽な別の方法がいいですが
- 143 名前:名前は開発中のものです。 mailto:sage [2016/11/10(木) 02:38:50.44 ID:woNsYOXh.net]
- 他に方法無いやろ
- 144 名前:名前は開発中のものです。 [2016/11/22(火) 19:00:44.40 ID:4Lu6ZO/B.net]
- ちょっとウンコしてくる
- 145 名前:名前は開発中のものです。 mailto:sage [2016/11/22(火) 19:35:51.98 ID:amdDwmR+.net]
- Convert Mouse Location To World Spaceでライントレースしか分からない
- 146 名前:名前は開発中のものです。 mailto:sage [2016/11/22(火) 19:38:26.07 ID:amdDwmR+.net]
- >>141
ue4スレと間違った
- 147 名前:名前は開発中のものです。 [2016/12/10(土) 02:51:28.41 ID:H338C5QI.net]
- しまった!お尻ふいてなかった
- 148 名前:名前は開発中のものです。 mailto:sage [2016/12/10(土) 21:12:58.27 ID:ijDtE922.net]
- >>138
画面描画には直接利用しないテクスチャに取得対象モデルをレンダリングしておいて判定するとか
- 149 名前:名前は開発中のものです。 mailto:sage [2016/12/10(土) 21:14:24.90 ID:ijDtE922.net]
- とおもったら1月前かよ
- 150 名前:名前は開発中のものです。 mailto:sage [2016/12/18(日) 01:11:06.45 ID:w4mjhhpa.net]
- 初歩的なことですが、
画像を描画する際の関数の仕様について迷っています 例えば、描画系の関数をできるだけ少なくして、内部変数によってDXライブラリの描画関数を呼び分けるのがいいのか、 あるいは、描画系の関数を目的別に用意して、画面側で使い分けるのがいいか フェードインの機能の場合、 前者なら「setModeFadeInの後、drawする」 後者なら、「drawとfadeInをそもそも別関数にする」 個人的には前者が正解のような気がしているのですが、 そもそも発想自体が間違っているのでしょうか? 御存知の方いれば、ご教授頂けると嬉しいです
- 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]
- 文字入力といえば自作のアクションゲームで名前入力辞めマスタ
よーく考えるとユーザー自身しかしないだろうし
|

|