1 名前:名前は開発中のものです。 mailto:sage [2011/07/17(日) 21:01:09.54 ID:J1CqPxml] Cを習得した程度のスキルでも、 GUIのゲームを比較的容易に作成する事を可能にする、 「DXライブラリ」に関するスレッドです。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 【公式】 homepage2.nifty.com/natupaji/DxLib/ 【過去スレ】 DXライブラリ 総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1197468399/ DXライブラリ 総合スレッド 2008 pc11.2ch.net/test/read.cgi/gamedev/1224923873/ DXライブラリ 総合スレッド その3 pc11.2ch.net/test/read.cgi/gamedev/1238429676/ DXライブラリ 総合スレッド その4 pc11.2ch.net/test/read.cgi/gamedev/1249822550/ DXライブラリ 総合スレッド その5 pc11.2ch.net/test/read.cgi/gamedev/1259912953/ DXライブラリ 総合スレッド その6 hibari.2ch.net/test/read.cgi/gamedev/1267108154/ DXライブラリ 総合スレッド その7 hibari.2ch.net/test/read.cgi/gamedev/1286180687/ DXライブラリ 総合スレッド その8 hibari.2ch.net/test/read.cgi/gamedev/1301818631/
47 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 07:39:11.76 ID:sgB+gdY/] そのロダjpg以外は消されるっぽいな
48 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 08:02:09.86 ID:+q3Ivu8t] ところでDXライブラリが昨日更新された件 homepage2.nifty.com/natupaji/DxLib/dxlog.html 関数がまた幾つか追加されてるね。 つーか > フルスクリーンアンチエイリアスを使うための関数 > SetFullSceneAntiAliasingMode を追加。 フルシーン アンチエイリアシング (Direct3D 9) msdn.microsoft.com/ja-jp/library/bb173422%28v=vs.85%29.aspx ↑ こっちの間違いじゃないかな?
49 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 08:06:26.68 ID:+q3Ivu8t] しかもダウソできねー 404 Not Found@nifty
50 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 08:07:57.77 ID:+q3Ivu8t] 連投スマソ dxlib.o.oo7.jp/DxLib/DxLib_VC3_05e.exe にしたらできた。 リンクが修正されてないだけだった。
51 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 08:43:54.24 ID:+q3Ivu8t] またまたスマソ。どうやら最新版はバグってるようだね。3.05に戻したわ。
52 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 08:51:17.86 ID:QhWO/sGe] Sceneの読み方知らんでスクリーンと書いたなんていう落ちなんじゃ ところでDXlibでサッカーゲーム方面てどうなの? 女子優勝を見てふと気になったんだが
53 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 08:52:21.21 ID:+q3Ivu8t] またまたまたスマソ。 DxLib_VC3_05d.exe も落とせたので試してみたがバグってたわ。 で、DxLib_VC3_05.exe(俺としては安定版) が落とせない模様。 ローカルに保存してるから問題ないけどね。 現象はウィンドウを非アクティブにしただけで落ちる。 ちゃんと原因追ってないし俺の環境だけかもしれんからとりあえず放置するw
54 名前:名前は開発中のものです。 [2011/07/18(月) 09:19:35.15 ID:B35aRr/g] >>53 >現象はウィンドウを非アクティブにしただけで落ちる。 とりあえず今俺が作ってるプログラムでもやってみたけど、別に落ちなかったよ。 ただ、昨日も(前スレに)書き込んだように、 今まで出来てた事ができなくなってるせいで落ちた可能性はあるんじゃないかな。
55 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 10:26:57.13 ID:+q3Ivu8t] >>54 dクス。 printfDx関数が悪いみたい。 とりあえず再現コードと環境書いて良しとしますわww ↓ codepad.org/pwhkNEDT
56 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 13:22:59.68 ID:YqLXuDXm] このスレでDXライブラリの話題が流れてる・・・だと!?
57 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 13:37:56.70 ID:Ze+SWbq9] winXP,VC++2008,3.05e軽量版の組み合わせだが今のところ問題なし >>55 のも落ちないよ
58 名前:名前は開発中のものです。 [2011/07/18(月) 15:34:52.58 ID:8Mxjg/u/] 俺も55の試してみたけど別に落ちないね。 XPで、BCC。
59 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 16:02:31.68 ID:N3hWgd0m] >>33 boostのシリアライズ使ってる xmlで入出力やってるけど最終的にはバイナリかな
60 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 16:27:00.25 ID:yhK/I0ji] >>33 お手製バイナリ入出力のみ。
61 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 17:44:02.33 ID:rWgZZvtf] tset
62 名前:名前は開発中のものです。 mailto:sage [2011/07/18(月) 20:01:12.02 ID:+Rj03r8W] >>52 別のスレで何年かサッカーゲーム作ってる人はいるよ 俺がもっとも尊敬する個人製作ゲームプログラマの一人
63 名前:名前は開発中のものです。 [2011/07/19(火) 02:01:03.43 ID:GHPcOYFF] やっぱ何年も続けることはすごいことなのか 今作ってるの諦めてしまいそうだな
64 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 02:02:31.46 ID:7gtAkdk2] 何年かかっても完成してない、とも言えるけど、本当に趣味でやってるんだろうなぁ 仕事帰りにちまちま進めてたり 楽しそう
65 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 02:05:07.46 ID:cCNbrd8E] SQLiteか、それいいな データ作る方のコードも楽そうだし このスレ見る利点の一つはこういう知らない部分の世界の一部がチラチラ見えることだな
66 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 02:07:56.39 ID:jELmaont] 3年目に突入した俺が通りますよっと 早々に挫折するか長期戦になるかはほんの微妙な匙加減なんだと思った
67 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 05:42:45.81 ID:8jeveRjH] 構想3年、中抜け2年10ヶ月! とかは普通にある
68 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 06:41:26.36 ID:OqV36zim] >>63 浪人を誉めているようなもんだぞww
69 名前:名前は開発中のものです。 [2011/07/19(火) 07:20:12.70 ID:BGzT95YL] 諦めるのでも続けるのでもなく、さっさと完成させてしまえばいい。 俺もDXライブラリ使い始めて最初のゲームは2年かかったけど、 実際はもっと作りこみたかったのを、切りのいいところで完成とした。 そして次のゲームに取り掛かったら今度は10ヶ月で完成した。 今製作中のは8ヶ月で完成が目標。 ドット絵の作成とか、どうしても時間を短縮できない部分はあるけど、 プログラム部分に関しては蓄積されていくから、完成させればさせるほど楽になってくる。
70 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 07:45:08.94 ID:b6EN4oAS] つパイロットプログラム
71 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 07:54:27.33 ID:kDyIkFAT] >>69 そういう所まですら行ってないで飽きちゃう人が多いと思う ・RPGならDQ3基準でアリアハンとレーベとアリアハン大陸まで作った。ダンジョンは未実装 ・ACTならスーパーマリオを作った。1−1は出来た。完成。 ・シューティングゲームを作った。道中で敵がちょろちょろでる。ボスが出る。1面で完成 ・某ソースを丸コピして弾幕シューティングを作った。一部アレンジした。ゲームを完成させた マップ作りやら敵の出現配置の段階で投げる人が爆増しそう 行動パターンを決めたりするプログラミングまでは頑張るが その後のデータ入力とバランス調整で飽きるという 正直ここでプログラミングを語っている人なら、絵とBGMの工数は度外視という前提条件(ネットで入手可能な素材で済ませる)なら 2〜3ヶ月で作れるだろ。本当に語っている通りの技術力や経験があるのなら・・・ PS2やPS3クラスの市販品レベルを目指しているのなら話は別だけど
72 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 08:03:58.03 ID:OqV36zim] RPGやSLGは中盤からUIやレイアウトと言った道筋ははっきりして バグも出にくいがひたすら作業な部分で萎える ACTはステージ作成 プログラマーがSTGを好むのがよく分かるw
73 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 11:57:35.77 ID:8jeveRjH] システムとツール用意するから誰かゲーム作ってよ!って症状は割と見かけるなw
74 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 12:38:05.54 ID:wD6kHH4M] 既製素材を使うなら、STGだったら半月で1面くらいは作れるね けど、面白いSTGを作ろうと思ったら・・・お察しw 誤魔化しきかないだけに製作センスが非常に問われるジャンルだと思う >>73 ゲーム部分作るからシステムとツールと素材作ってよ!って方が多いと思うw
75 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 12:42:54.32 ID:FU3SnXXK] 某STGを作った時の話だが、スプライト管理とかの基礎から作り始めて、タイトル、1面、ボスという基本的な流れまで作るのに1日、 そこから完成させるまで5年かかった かなり中抜けはあるけどそれでも実質2年以上は確実にかかってる 最初の一行をゲーム作りだと思ってるプログラマが多いのが完成まで持っていけない原因じゃないかな ゲームの内容にもよるけど、敵配置や調整はその数倍〜数百倍手間が掛かる あと機能を実装しているときは周りからスゲースゲー言ってもらえるけど、 調整段階になると今度は不満ばかりを聞くことになるのでモチベーションが落ちがちになりやすい
76 名前:名前は開発中のものです。 [2011/07/19(火) 13:36:07.23 ID:GHPcOYFF] デバッグ中にいきなり透明度30%くらいのひびの入ったブルースクリーンが出るんだが これはいったい何なんだ ある時間になると発生し、ある敵を倒すと直る
77 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 13:38:03.53 ID:JRPTQBTk] せめてSS位だせよ
78 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 14:04:04.25 ID:asO+sKKz] 俺ならその「ある敵」とやらの描画コード周りを確認する。
79 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 14:43:22.10 ID:d+X1uW+C] BSODってわけじゃないよね? なんで画面が青みがかることをわざわざブルースクリーンなんて表現するの?
80 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 15:09:15.81 ID:8jeveRjH] >>74 俺、内部用ツールとかだけずっと作ってたいw 顧客に出るような処理は正直やりたくない
81 名前: 忍法帖【Lv=1,xxxP】 mailto:sage [2011/07/19(火) 18:48:43.17 ID:KNy7X+y1] ひびの入ったブルースクリーンってどんなのだ
82 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 20:30:24.26 ID:utrGvKTj] STGの敵や弾ごとの挙動の管理がゴチャゴチャしてめんどくさすぎて、 C++のソースを書きだすGUIツールを開発してしまっている
83 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 20:35:39.86 ID:mEYpvFPj] >>82 そして次にGUIツールを自動で操作するためのソフトを作るんですね 分かります
84 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 21:02:29.69 ID:kDyIkFAT] >GUIツールを開発してしまっている その画面をうp ソースでもないし、開発ツールなんだから作りが質素でも恥ずかしく無いと思うの 本当に存在するならだけどwww
85 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 21:08:27.59 ID:SLNwahkb] うpさせてどうするのさ。 当人には何のメリットもないと思うんだが。
86 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 21:09:00.38 ID:utrGvKTj] >>84 なぜ疑われてるんだw ただテキストを書きだすだけのツールじゃないかw ちなみに開発したんじゃなくて開発中って意味だよ
87 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 21:15:34.98 ID:6h4jmI30] >>83 それに近いことは一回やったことあるな 手順が決まってるGUI操作を特定座標の色の変化で分岐してマウス移動とクリックをするだけの単純なやつだけど ある程度パターンが決まってるから、変えたいとこだけ事前に数値入れとけば開始ボタン1クリックで終わるからかなり楽になった
88 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 21:19:16.42 ID:OqV36zim] >>87 はわかりやすいなマクロ操作プログラムみたいなもんか >>86 はどういうツールか俺も見てみたい テキストを書き出すというがどういう処理をさせるツールなのか
89 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 21:23:22.35 ID:mEYpvFPj] >>86 じゃないけど、スクリプトだと自由度低いから直接コードを吐かせるってだけなんじゃないかなと想像 考えてみたら俺もエクセルのVBAで似たようなことやってたわw
90 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 21:48:32.19 ID:OqV36zim] >>89 イマイチわからん 敵の名前 絵 弾絵 弾幕パターン HP みたいなRPGのモンスター設定をGUIで設定 CSV等のリストに追加みたいなツールってのは想像しやすいが ソースで吐き出すとなるとデータじゃない別のなにかって事だよな
91 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 22:00:43.95 ID:mEYpvFPj] >>90 例えばGUIで「弾速4.0pixel/frame、自機狙い、角度間隔20度の3way」って指定すると Speed = 4.0; BaseAngle = AimPlayer; for( int i = -20 ; i <= 20 ; i += 20 ) { Angle = BaseAngle + i; CreateBullet( Speed, Angle ); } みたいなコードを吐いてくれるってことじゃない?
92 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 22:00:59.04 ID:YPhNnB7U] 俺もエクセルVBAで列挙体とか出力できるようにしてあるわ RPGとか作ってるとこういうのはシャレにならないくらい面倒だからなw
93 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 22:01:45.86 ID:mEYpvFPj] おっと、2行目は BaseAngle = AimPlayer(); かな 実際にはもっと色々と引数が必要だろうけど
94 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 22:04:30.96 ID:utrGvKTj] >>90 書きだす先がCSVじゃなくてCPPってだけ プログラム自体が、弾や敵の挙動はそれぞれ関数ポインタで、配列になった関数を呼んでるだけなんで、 その中身を記述するだけ だいたい>>91 であってる 数値の設定やコマンドだけじゃなく、ソースの直書きも間に挟めるようにする予定 で、整理しやすいようにグループ分けとかできるようになってる
95 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 22:32:50.62 ID:kDyIkFAT] >>91 実際にそういうのを1キャラずつソースとして出力&個別設定するの? STGはあまり興味ないから勝手がわからないけど パラメーター 弾パラメーター 敵A 123456789 0(自機狙い等の種別),40,20,,3 って処理しているもんだと思っていた
96 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 22:51:03.42 ID:xPJ+GTxa] SetWindowSizeChangeEnableFlag に true を渡して画面サイズを途中で変更したり SetWindowSizeExtendRate に 1 以外の値を渡して画面サイズを変更すると アンチエイリアスが利かなくなってしまいます。 何とかきかせる方法はないでしょうか? 環境はwin7です。XPの時は大丈夫だったと思うのですが…
97 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 22:52:33.20 ID:OqV36zim] 汎用性ばかり高めるとソースコードは減るが処理は重くなる 自機狙いなの? 弾速は? 角度は? 発射数は? の値で弾パターンを生成するのではなく 計算後の物を弾幕1として登録 そして弾幕1で呼び出すという処理が必要になってくると理解してみた だからソースとして吐き出すと
98 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 23:00:22.91 ID:mEYpvFPj] >>95 >>97 も言ってるんだけど、スクリプト処理って上手くやらないと結構処理が重くなる STGはジャンルの特性上「低性能なPCでもいかにフレームレートをキープするか」ってのが重要になるから、 処理速度に関しては結構カツカツに組まなきゃならなかったりするw そして汎用性を高めると柔軟性(特殊性)に乏しくなるってのもあるしね スクリプトを併用するにしても、コード直書きできるようにはしたいところ
99 名前:名前は開発中のものです。 mailto:sage [2011/07/19(火) 23:40:45.06 ID:xPJ+GTxa] ドライバ依存のようでした。流れ読まずにサーセン
100 名前:名前は開発中のものです。 [2011/07/20(水) 00:01:27.30 ID:zx/NMNX+] でもシューティングでも弾によって色々な動きが欲しいし(火炎放射気、ミサイル、レーザーとか) 単純に一つの関数で済まそうとすることはなかなかできないんじゃないか? 俺は基本的な要素のデータベースみたいなのは作っておいて あとは一つずつ関数を作っちゃうな
101 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 00:12:51.56 ID:LJdX4cyX] 俺の場合、関数化するのは「よく使うパターン」くらいかなあ nWAYとか反射弾とか 基本的には敵の動きから攻撃パターンまで全部コード直接書いてるw 行数で言ったら数万だけど、手間的には案外大したこと無かったりするし 書くよりも、あとで手直しするときに解読する方が大変w
102 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 00:17:18.22 ID:w+LKMFg6] >>100 火炎放射、ミサイル、レーザー、単発 まずはその種別毎に分岐 同時に何発撃つか、またその角度。弾即。 全て1つの関数で処理するか 末端の攻撃方法を1として攻撃方法1〜1000で関数として扱うのか 前者は1つの関数で何種類のも微妙な違いの弾を用意可能 後者は弾毎に関数を用意しないと駄目 どこまで処理に汎用性を持たせるかだな 弾という時点で分岐をさせるのか 火炎放射から分岐させるのか 火炎放射の発射数から分岐させるのか 角度弾速まで固定化された末端で関数として扱うのか
103 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 00:19:41.02 ID:Uv/sL0og] 割と真面目な話をすると、ここら辺はコーディングじゃなくてSTGの腕前の影響をまともに受けると思う STGの腕があればどこを共通化してどこを差別化するかってのが容易に見当つくから
104 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 00:31:13.59 ID:vUGfpdFc] 理想は種類で細分化された関数用意して最上位で関数ポインタで同一インターフェースに纏めるのかな C++活かすなら関数ポインタ部分を継承やテンプレート関数になるんだろうけど。 外部入力でコード自動生成はテンプレート処理と同等。
105 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 00:32:20.16 ID:UXx1Rwux] 素直にクラスで継承使おうぜ、というと前スレ後半みたいに荒れるのかなぁ
106 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 00:35:33.60 ID:LJdX4cyX] 継承でいいんじゃなかろうか。まぁ継承使わなくてもちょっとコードが汚くなるだけで組めるは組めると思うけど MoveとAttackをそれぞれ関数ポインタとして持たせて、クラス毎にオーバーライドしてる
107 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 00:38:30.14 ID:w+LKMFg6] >>105 そうはならないと思う そうやって作っている>問題ない>そのうち問題があるから今すぐ改善しろ! で荒れたが 理想論で〜しようぜ!いや〜のが良い!は 机上の空論の議論だから好き勝手にどうぞってなる
108 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 00:41:26.80 ID:LJdX4cyX] >>107 荒れたのは、そんな小利口なやり方必要ねーだろ→いや必要だろ→ループ、って感じに見えたが それにOOPは難しいよ派と誰でも分かる派とC++はC前提派が混ざって大混乱に陥った
109 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 00:45:29.82 ID:phwAyEUP] 俺はこうやってるぜ自慢ならいいと思う 人それぞれなのに人の方法にケチつけるから荒れる
110 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 00:55:44.26 ID:DqIwh6Bu] 机上の空論と言う事で・・・ 振る舞いを機能で細分化してオブジェクトとしておく で、弾を実装するときにそれらのオブジェクトをお好みで利用する こんな感じにすると楽 C#ならActionだけでできちゃうからC#使いにお勧め
111 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 01:02:06.42 ID:cozewM6U] >>108 おお、わかりやすい
112 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 01:06:04.99 ID:b6vAzTXb] >>109 が全てだな。 そもそも「ゲームが作りたくて(半ば仕方なく)プログラムをしてる」人に対して、 「プログラムの題材としてゲームを選んでる」人が作法()とか言ってたからなw
113 名前:名前は開発中のものです。 [2011/07/20(水) 02:07:15.20 ID:zx/NMNX+] ショットに四角とか三角の判定を持ったショットも作りたいけど こうなると、完全に別物を作らないといけなくなるよな 敵や味方との判定の関数も新たに作らないといけなくなるしな
114 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 02:10:31.57 ID:phwAyEUP] >>113 当たり判定クラスor構造体を作っておいて、判定はひとつの関数でやるのおすすめ
115 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 02:48:40.84 ID:vUGfpdFc] 敵味方判定はビットマスクだろ。 当たり判定はビットマップでやれば同じ扱いで 数ピクセル分の並列判定も可能。
116 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 04:35:42.15 ID:gL7wAfPg] >>115 何言ってるか全然わかんないけど興味あるので詳しく教えてくださいませんか?
117 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 06:07:09.62 ID:VQBl28Yo] 無名クラスがnewできないからjava C#みたいに関数ポインタの代わりが できないんだよな
118 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 21:43:52.57 ID:hYnYJ2X9] ラムダ式でええやん
119 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 21:50:57.98 ID:DqIwh6Bu] 関数ポインタでええやん
120 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 22:44:43.47 ID:g6rdsdP4] >>116 ビットマスクは種類ごとに1ビットだけ立てたのを用意するよくある手法。 すべての攻撃が敵だけに当たる等で完全に分離できるならオブジェクトリストを増やしたほうがいい。 ビットマップは当たり判定用の2値画像を用意して読み込み時に バウンディングボックスの設定と水平線のスキャンライン毎に横の最小最大値を記録。 バウンディングボックスでの大まかな判定の後に重なるラインだけで当たり判定。 でも高速で移動してる物体や弾だと間の補完も必要だし 出来るなら円や矩形だけに固定したほうが速いわな。
121 名前:名前は開発中のものです。 mailto:sage [2011/07/20(水) 22:57:58.35 ID:g6rdsdP4] >>117 ファンクタとしてなら関数内で名前適当でクラス宣言すりゃ十分だろ
122 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 10:29:50.43 ID:9fulY9ee] >>117 そんなあなたにC++0xのラムダ式。 Visual C++ 2010 ならExpressでも使えます。 個人的にはboost::lambdaとC++0xラムダ式とfunction<>の組み合わせが 最高にカオスで素敵。 積極的に使いたいとは思わないけどな!
123 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 12:42:12.91 ID:oxc8Rw/m] >>120 何を言っているかさっぱりだが、この発言が理解不能な俺でもそれっぽいSTGが作れるのを見ると ゲーム作製ってプログラミング知識は要らないんだな〜と痛感するw 先人のアイディアを模倣(インスパイア)したパクリゲームだからだけどww 面白いゲームの第一人者になるは必要なのかもしれないな
124 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 12:56:34.57 ID:e3FYH844] つか当たり判定でそんな面倒くさいことをする必要なんてあんのか? プログラム書くためにゲーム作るんじゃないんだから
125 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 13:01:19.70 ID:NyPhIIxu] ゲーム製作は料理と同じ プログラミング用語=料理用語 コードの書き方にケチをつける=包丁の使い方にケチをつける 完成品が出来ない=材料だけ買って飽きる ツクール=レトルト食品 料理用語なんて知らず包丁の使い方も素人でも美味しい料理は作れる 但し最低限の知識は必要。包丁の使い方に慣れていれば効率やレパートリーが増える カレー(RPG)でいいならレトルト(ツクール)でもそれなりな物が作れる 下手に1から作るより美味しい
126 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 13:11:36.20 ID:F3BN3/F7] >>123 俺はそれこそ円と矩形だけで全て判定させてるけど、まぁ120の言ってる事は大体解る。細かくは解らん。 120の内容を理解しようと思ったら、まず二進数と論理演算を知る必要がある。 そんなに難しい事じゃないから、覚えるのに20分もかからないと思う。 プログラム知識として、知ってて得はあっても損はないから興味あるなら調べてみては。
127 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 13:23:07.82 ID:e3FYH844] 俺も円と矩形(回転可能)だけ 正直円と回転矩形ですら登場頻度は凄く低いわけで、点と矩形だけで大抵は事足りると思う
128 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 13:26:00.60 ID:aFVdxxKm] >>124 すこし、外れてるかもしれんが その言い方だと「ゲームにクイックソートなどいらぬ、バブルソートで十分だ」 って感じに聞き取れるぞ。 早く、正確な処理にはそれなりに面倒な処理が必要なんだよ 速さだけを追求するなら、短冊で判定すればいい、 距離を正確にだして、判定したいというなら、円での判定もある より正確に、回転した長方形等を判定し、ある程度の速さを 全ての物体との当たり判定をしなくてもよい方法 当たり判定の質、量に応じて処理は選んで使うものだよ 例えば、画面上ある全ての弾が互いに干渉する弾幕ゲームなんてものを考えると 弾の数を制限するか、より早いロジックを考えるかって話になる 弾幕ゲームで100個以下の弾とか、2^nオーダー処理でやるほうが馬鹿だろ
129 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 13:29:20.87 ID:e3FYH844] >>128 ああ、言いたいのはそういう意味じゃない 「そんな面倒な処理をやって、そこまでの利点あるのか?」 って言いたかったんだ 俺は一般的な方法でやってるけど、数百対数百のオーダーの処理でも1msもかからないわけで 一応、多少の判定間引き処理は入れてるけどね
130 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 13:34:22.00 ID:oxc8Rw/m] >>126 あまり興味ないかな 二進数やら論理演算はわかるが むしろなぜそういう用語でしか語れなくなるのか不思議でしょうがない >ビットマップは当たり判定用の2値画像を用意して読み込み時に >バウンディングボックスの設定と水平線のスキャンライン毎に横の最小最大値を記録。 こういう所をもっと分かりやすく語る事ができないのかな〜っと
131 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 13:38:04.34 ID:wkg9zBV6] 仕様と実装、戦略と戦術。
132 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 13:39:56.67 ID:fRr1kdC6] >>130 同感 何かオナニーを見せられてる感じがした
133 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 13:47:49.25 ID:NyPhIIxu] 業界人か業界かぶれの病気みたいなもんなんだよ 調理場でダスター使えよwwと言っちゃうようなもん ダスターと言わず雑巾で良いだろw クァンタ?関数オブジェクトでいいだろw 本人は通じて当たり前と思って使っちゃう表現 ゲーム業界は知らんがプログラマーから客先で打ち合わせするようなSEになると 専門用語癖は超NG 技術力が生半可かあるプログラマー程この癖が抜けにくい というか「システム部の人間なんだから通じて当然」みたいに思うらしいw
134 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 13:55:04.58 ID:u/vR7YNA] というか用語自体はそんなに難しくもないのに、全体が繋がるとサッパリ意味不明になるから余計にタチが悪いと思ったw (バウンディングボックスは他分野でも使われるから曖昧でピンと来なかったが)
135 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 14:16:17.88 ID:ruwe1b1D] 二行以上のイミフ長文は勘弁して欲しい もちろんコード例がずらずらっと綴られるのは一向に構わん
136 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 14:18:02.15 ID:rj8APaBe] なんか、当たり判定と聞くと PCエンジン版の R-TYPE を思い出す 自機は中央1ドットしか当たり判定がなく、その代わり敵弾とかは、 やや大きめの(丸い弾がピッタリ収まる)矩形とみなして、判定していた
137 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 14:21:55.89 ID:e3FYH844] 式神の城なんかもその系統じゃなかったっけな<自機1ドット 弾幕系だと弾がドットってのが多いけど じゃあ弾は全部ドットでいいじゃん、って思われそうなもんだけど、 それでも見た目の弾の大きさがダイレクトに難易度を左右するから面白い
138 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 16:24:48.14 ID:aFVdxxKm] >>129 手間がかかる分、利点はあるよ 敵の撃った弾が、自機にしか当たらないような状況ならあまり意味がないけどね 全部が全部に当たるなら、nLog2nぐらいに抑えることはできる。 n^2で計算するより、より多くの当たり判定を16msで可能になるわけだ。 ただ、イニシャルコストというべきものは、コードの煩雑さだけでなく 準備するデータにも多くかかるので、処理の対象が少ないときに 逆転することも当然ある。 まぁ、使うとするなら、弾幕シューティングとかではなくて リアルタイム物理演算とかになるわけだが 画面の外を含めて、設定したフィールドに千数百のオブジェクトがあって 互いに干渉するような場面を想定するなら非常に有効な手段になる。 逆に画面に数千の弾があっても主人公にしか当たらないというなら 導入する意味はまったくない。
139 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 16:41:43.05 ID:cLBhZIBA] 別に千以上のオブジェクトがあったところで、領域を適当に縦横各10分割くらいして大ざっぱに調べてから判定取ればいいだけなんじゃ 千対千程度の衝突判定なら1msもかからないよ
140 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 16:50:22.64 ID:m1RQehj9] >>138 は典型的な「理屈ばかりで実物を作れない」タイプに見える
141 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 16:52:42.66 ID:Boe80Cih] 空間分割実装して色々追加してたら劣化物理エンジンになった 今は素直に物理エンジンや物理エンジンの当たり判定だけ利用してる
142 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 16:58:46.11 ID:H/W2gefG] ぶっちゃけ、複雑なものを複雑に解くのはそんなに難しくないんだよな 複雑なものをいかに簡単に解くかってのが開発、特に個人や同人で要求される能力だと思う
143 名前:126 mailto:sage [2011/07/21(木) 17:36:45.31 ID:mndgCBlg] >>130 君の気持ちも解るけど用語なしで説明しようと思ったら、超長文になるから、無理。 でも二進数と論理演算わかるならビットマスクはわかるでしょ? 00000001 ← 敵の弾に当たるフラグ 00000010 ← 味方の弾に当たるフラグ 00000011 ← 両方の弾に当たるフラグ 「味方の弾に当たるかどうか調べたい」って時には次のようにマスクで論理演算する。 00000011 &00000010 ← これがマスク ---------- 00000010 ← 答えが0でなければフラグが立ってる。
144 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 17:39:25.89 ID:aFVdxxKm] >>139 1,000対1,000だと1,000,000回の判定が必要だよ 俺の環境だと if (a < g & c > e & b < h & d > f) { // 何もしない } っていう処理を1,000,000回に平均6.1msかかるのだが n~2オーダーの処理を馬鹿にしすぎてないか? a += 1; って処理でも1,000,000回だと平均3.5ms必要だ。 平均値なのはCPUの状態で1ms以下のときもあるから
145 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 17:40:31.38 ID:xZAHcfu0] そこはわかってるぽいし別に書かなくても
146 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 17:40:43.06 ID:sP0EYTBd] 単純なものを複雑に考えるのは一番良くないと思った木曜日の日暮れ前
147 名前:名前は開発中のものです。 mailto:sage [2011/07/21(木) 17:43:55.08 ID:Ybj0mBW5] >>144 だからまず大まかに調べてから、って書いてんじゃん 空間分解するだけで平均試行回数はせいぜい千オブジェクトで数千オーダーになるぞ 密度が滅茶苦茶高かったりオブジェクトがやたら大きかったりすれば話は別だか、その場合はどうやっても試行回数は増える あんた説明も下手だけど理解力も無いんだな