C/C++ゲーム製作総合スレッド Part6
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2014/07/08(火) 19:30:19.51ID:J+zVqUil元スレ
DXライブラリ 総合スレッド その17
http://toro.2ch.net/test/read.cgi/gamedev/1383795645/
前スレ
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
http://toro.2ch.net/test/read.cgi/gamedev/1351015269/
C/C++ゲーム製作総合スレッド Part3
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
C/C++ゲーム製作総合スレッド Part4
http://toro.2ch.net/test/read.cgi/gamedev/1376262450/
C/C++ゲーム製作総合スレッド Part5
http://peace.2ch.net/test/read.cgi/gamedev/1389798031/
0424名前は開発中のものです。
2014/10/31(金) 10:05:54.22ID:6bcSF0zB自分もLua使ってて今作ってるけど、ロジックはC++で組んでる(組む予定)
Luaでやるのはキャラの初期値などのパラメータ値の設定やイベントの記述、
画面背景に表示するものをLuaで記述、くらいの予定かな
>>423の人も言ってるけど、Luaで書けるならC++でも書けるから、何をLuaに求めるかだと思うけど、
自分の場合はLuaでやるメリットはリコンパイルせずにレベルデザインの動作確認を行えるようになること
ロジック部分はLuaに追い出すと速度的なデメリットが大きそうなのと、
Luaで書けるようにすること自体の工数も大きそうなのでやめた
0425名前は開発中のものです。
2014/10/31(金) 12:53:25.76ID:CfUZyuSt0426名前は開発中のものです。
2014/10/31(金) 17:49:19.79ID:wudHshK90427名前は開発中のものです。
2014/10/31(金) 17:59:48.36ID:881Z1hau0428名前は開発中のものです。
2014/10/31(金) 18:15:11.72ID:jL8HxUOw0429名前は開発中のものです。
2014/10/31(金) 18:24:36.01ID:6bcSF0zBいらねーよw
0430名前は開発中のものです。
2014/10/31(金) 19:02:05.50ID:LbK2+I6l3種類ほど
一つはシナリオとかのイベント管理用
一つはレコード単位のデータ管理用
一つはツリー構造のデータ管理用
0431名前は開発中のものです。
2014/10/31(金) 19:18:37.90ID:oJQR+l+C・クラスとヘッダーに分けなくていい
・importはC/C++のincludeより使いやすいと思う
C/C++だとどれをインクルードすべきか調べないと分からない事もあるし
・ネイティブの部分だけ予めコンパイルしておけば、変更したコードを複数のデバイスですぐにデバッグ可能
・GCでメモリ管理が自動に
・リフレクションでクラスの情報に実行時アクセス
・実行時の式評価(デバッグに使う)
実行時コード編集は確かにあまり役立ってないかも
デリゲート・・・はC++11なら使えるのか
0432名前は開発中のものです。
2014/10/31(金) 19:23:51.37ID:GqyQ4J03実行中に変更出来ないと一回落として変更して同じところまで進めないといけないから
レベルの調整とかしてるとめちゃくちゃめんどい
0433名前は開発中のものです。
2014/10/31(金) 19:24:16.18ID:LbK2+I6l0434名前は開発中のものです。
2014/10/31(金) 19:32:27.85ID:6bcSF0zBまあ半分わかるけど、相当規模が大きなものじゃないといらないし、
代替としてその環境を作るスクリプトも組めるし、
途中で変えちゃったら、ユーザーがほんとにその条件に辿り着けるのかテストにならないから
やっぱりいらないな
0435名前は開発中のものです。
2014/10/31(金) 20:11:52.54ID:GqyQ4J03ロジックをスクリプトで記述するなら汎用ゲームエンジンでいい気がするな
Unityとかめっちゃお手軽よ
0436名前は開発中のものです。
2014/10/31(金) 20:42:19.68ID:3MYWoAmv0437名前は開発中のものです。
2014/10/31(金) 20:58:16.81ID:qWph+yLX0438名前は開発中のものです。
2014/10/31(金) 22:36:22.81ID:ARi4wFqk0439名前は開発中のものです。
2014/10/31(金) 22:57:08.23ID:oJQR+l+Cいーるどぅ
0440名前は開発中のものです。
2014/10/31(金) 22:59:35.82ID:r+epGFzI0441名前は開発中のものです。
2014/10/31(金) 23:09:11.23ID:BXR79UmAシューティングゲームアルゴリズムマニアクスにあったように記憶してる。
手元にないから確かじゃないけど。
0442440
2014/10/31(金) 23:15:42.18ID:r+epGFzIありがとうございます!
その本は持っているのですが、IKについて書かれていることに気付きませんでしたw
コードも書いているので参考になりそうです。
他の本も、ご存知の方がおられたら是非教えてください。
0443名前は開発中のものです。
2014/11/01(土) 01:19:56.78ID:/W7J7qqw最近読んだのだとこれ
XNAのソースがサンプルであるけど今はXNA自体が使えない
http://www.borndigital.co.jp/book/94.html
0445名前は開発中のものです。
2014/11/01(土) 10:44:08.91ID:oqeDiPeWBがtrueならD、falseならE
DがtrueならF、falseなら・・・
という感じで
if (A) {
if (B) {
if (D) {
F();
} else {
G();
}
} else {
E();
}
} else {
C();
}
というようなことになってしまいます
例えばAがゲーム開始フラグ、Bがプレイヤー出現フラグ、Dが敵出現フラグという時
最初にC()でカウントを回してAをtrueにしゲーム開始
E()でカウントを回してプレイヤーを出現
G()でカウントを回して敵を出現
F()でバトル開始
のような感じになるのですが、どうすればいいのでしょう
あまり良くないですがswitch caseなどでもいいのかなと考えてます
0446名前は開発中のものです。
2014/11/01(土) 11:05:49.01ID:/W7J7qqwステートパターン使うといいよ
IStateを実装した開始ステート、敵出現ステートなどをつくって、
unique_ptr<IState> state = make_unique<InitialState>();
while ...
state->update();
if (state->next)
state = state->next;
0447名前は開発中のものです。
2014/11/01(土) 16:11:10.84ID:XJ9qlDD+0449名前は開発中のものです。
2014/11/02(日) 01:02:23.40ID:p7BeypyfやっぱりStateパターンが良いですよね
ありがとうございます
0450名前は開発中のものです。
2014/11/02(日) 10:54:46.91ID:F1N1A3wTStrategyパターンって
コードの書き方はまったくと言っていいほど同じじゃないですか?
Stateは状態的な切り替え、
Strategyは機能的な切り替え、
というふうに、どういう使い方をするかで名称が別れてるということですか?
0451名前は開発中のものです。
2014/11/02(日) 12:52:42.92ID:2+iLF1K9状態遷移はストラテジーっぽい
0452名前は開発中のものです。
2014/11/02(日) 13:07:10.08ID:nNeu0fIH後から見た時に結構重要だったりするよね
0453名前は開発中のものです。
2014/11/02(日) 13:26:08.13ID:bYY9FFGo例えば遷移だと>>446のやり方はそれぞれのStateの中で自分に関係する遷移条件と遷移先だけ指定するから
ソースを見ただけじゃ全体の遷移一覧がぱっと見えてこないんだよなぁ
0454名前は開発中のものです。
2014/11/02(日) 20:23:50.79ID:rvNm7bLn偏移状態はUMLなりその他の手段で伝わればいい
0455名前は開発中のものです。
2014/11/02(日) 20:58:59.62ID:F1N1A3wTその通りに動くっていう仕組みはスマートで憧れるなぁw
動かす側(エンジン側)のC++コードは一切変更しないでいい。
0456名前は開発中のものです。
2014/11/02(日) 21:39:22.79ID:2+iLF1K90457名前は開発中のものです。
2014/11/02(日) 23:03:44.43ID:nU5X7LHx0458名前は開発中のものです。
2014/11/02(日) 23:46:34.29ID:bYY9FFGo0459名前は開発中のものです。
2014/11/03(月) 11:18:44.11ID:awPRm7Lk各処理に番号付けてswitchで振り分けながら順番に処理した方がまだ見通しよくなりそう
0460名前は開発中のものです。
2014/11/03(月) 12:22:49.27ID:h2Nq+Bdg0461名前は開発中のものです。
2014/11/03(月) 12:27:51.68ID:DUvfBBxq0462名前は開発中のものです。
2014/11/03(月) 13:23:55.34ID:EKtPAmoI1行ですっきり書けてかっこいいと思ってやってるんだろうけど
結局デバッグするときにどの関数が実際に呼ばれてるのか
分かりにくくなったりするだけなんだよなあ
状態変数使ってifelseとかswitchの方が分かりやすいし
そもそも状態遷移の処理なんかそんなに頻繁に書き換えないし
状態遷移の処理で致命的なバグになって開発が頓挫なんてしないし
結局プログラマーのオナニーでしかないんだよなあ
ファミコンなんかクラスどころか関数すらないのに神ゲーいっぱいあったわけで
オナニーに精力を出すくらいならもっと内容に力入れてよ
0463名前は開発中のものです。
2014/11/03(月) 13:31:20.68ID:DUvfBBxqベタな書き方で十分なら、それでいいところは多いね。
0464名前は開発中のものです。
2014/11/03(月) 13:33:27.09ID:Haa+1SS6他人と共同で作業してたりコードレビューしたりしないなら好きにすればいいさ
多少のわかりにくさはコメントでカバーすることもできるし
それが原因で時間かかっていつまで経っても完成しないとかだと目も当てられないが
0465名前は開発中のものです。
2014/11/03(月) 13:33:31.87ID:TMDXQf530466名前は開発中のものです。
2014/11/03(月) 13:36:09.35ID:DUvfBBxq楽しいねw
ポリモーフィズムで、ほとんどコードをいじることなくなった基幹クラスがあることが嬉しいw
場合によってはベタ書きのほうが総合的にイイなぁ、と思うところも多々あり。
0467名前は開発中のものです。
2014/11/03(月) 15:20:17.50ID:awPRm7Lk関数名じゃなくて数値と対応付けてswitchで処理するって事
複数のboolで分岐してるのをintひとつでやる感じ
列挙型でやればコードも見やすいかも
そもそも関数名でswitchなんて出来ないしね
0468名前は開発中のものです。
2014/11/03(月) 15:42:10.04ID:LRPNDOfH自動的に対応付けてCのソースコード生成とか、昔からよくあるサボりテク
STGの敵キャラや弾みたいな、簡易なシーケンシャル制御では重宝するかと
0469名前は開発中のものです。
2014/11/03(月) 15:42:40.12ID:LRPNDOfH0470名前は開発中のものです。
2014/11/03(月) 16:29:35.49ID:almwUFeG0471名前は開発中のものです。
2014/11/03(月) 16:38:51.58ID:w8rbKk4KCならまだしも、C++で関数ポインタって使いにくいと思うんだけど
非staticなメンバ関数使おうとしたらめんどくさいし(function<...>とかあるけど)
あと一口に状態遷移っていっても
アクションゲームの敵とか、個々のゲーム内オブジェクトの動作みたいな規模と
RPGでのフィールド/メニュー/先頭シーンの切り替えみたいな規模のものがあるけど
それによっても求められる要件は結構違ってくるんじゃないか
0472名前は開発中のものです。
2014/11/03(月) 16:47:13.78ID:6bdXEtlk関数付き構造体としてしかC++使えていないだろうし
0473名前は開発中のものです。
2014/11/03(月) 17:15:54.38ID:awPRm7Lk少なくとも>>445の例でstateパターンが最適とは思えない
0474名前は開発中のものです。
2014/11/03(月) 17:30:10.15ID:s5EHYVPLhttp://boost.cppll.jp/HEAD/libs/mpl/doc/paper/mpl_paper.html
の、「5. 例: コンパイル時 FSM ジェネレータ」の辺りを読んでみると
>>445が抱いた疑問に対して、わりと明瞭に答えているような気が
しないでもない
「ネストしたif(またはswitch-case)を使ってFSMの構造を実装する
ことは特に間違いではないが」というように、状況によって最適な
実装は変わるんだよね
0475名前は開発中のものです。
2014/11/03(月) 17:38:52.31ID:EKtPAmoIステートパターン使ってない奴を見下し軽蔑し
ステートパターンを使うことを強要してくる
こういうやつがいるからソースコードをgithubに公開とかする気が失せるんだよなあ
日本人てほんと頭悪い民族なんだなと思う
0476名前は開発中のものです。
2014/11/03(月) 17:40:45.30ID:DUvfBBxq0477名前は開発中のものです。
2014/11/03(月) 17:43:52.24ID:71HprTRFすごいなその日本人ってやつは
0478名前は開発中のものです。
2014/11/03(月) 17:49:10.69ID:s5EHYVPL0479名前は開発中のものです。
2014/11/03(月) 17:56:31.99ID:Z17rldcf商業ならそうもいかないだろうけど
0480名前は開発中のものです。
2014/11/03(月) 18:00:07.61ID:eKZugS4h他人のソース全く意味わからないし。
0481名前は開発中のものです。
2014/11/03(月) 18:26:59.05ID:EKtPAmoI日本人は絶対写真出さないしニックネームだからな
ネットゲームでも外人は気さくに話しかけてくるが日本人は基本無口だからな
晒しとか陰湿な行為を行うのは日本人という民族が劣ってるからなんだろう
0482名前は開発中のものです。
2014/11/03(月) 18:34:22.56ID:Z2NKRK1eもっと自分に自信を持ったら?
0483名前は開発中のものです。
2014/11/03(月) 19:12:02.78ID:LRPNDOfH0484名前は開発中のものです。
2014/11/03(月) 21:02:33.52ID:6bdXEtlk頭悪いし才能ないから諦めたほうがいいよ
0485名前は開発中のものです。
2014/11/03(月) 21:22:08.07ID:/5RkG39n0486名前は開発中のものです。
2014/11/03(月) 21:41:28.69ID:DUvfBBxq0487名前は開発中のものです。
2014/11/03(月) 21:47:10.70ID:awPRm7LkだからJAVAやってればいいじゃん
君にネイティブ言語はちょっと難しいんじゃないかな
0488名前は開発中のものです。
2014/11/03(月) 23:31:40.14ID:6bdXEtlk継承ひとつ理解できないおつむじゃ諦めたほうがいい
もしくは独自のヘンテコなやり方をしたければ、ここで披露せずに一人でやっていなさい
0489名前は開発中のものです。
2014/11/03(月) 23:48:43.67ID:kGGiNKfpでもstateパターン作るなら、状態遷移図は別にドキュメントを作る必要があると思う。
テーブルでやる場合はソースだけでもいいが、抜けがないかの確認がしにくい。
階層型の状態遷移はどうやるといいのだろうか。nestが2階層とか決まってたらまだいいけど、
自由に階層作りたいとか。
0490名前は開発中のものです。
2014/11/03(月) 23:51:38.06ID:kGGiNKfpコードも見やすく、変更も動的にできるし。
0491名前は開発中のものです。
2014/11/04(火) 00:05:07.98ID:zm0bWhhE0492名前は開発中のものです。
2014/11/04(火) 00:09:15.45ID:8wIs/lt8親階層を子階層から遷移させる手法が考えどころになるだろうね
自分は独自のやり方でやってるけど、一般的にはどういうやりかたが
推奨されて普及しているのかよく分からない
0493名前は開発中のものです。
2014/11/04(火) 00:40:17.63ID:ROF6NvON0494名前は開発中のものです。
2014/11/04(火) 01:00:57.23ID:gmdSbkqZ0495名前は開発中のものです。
2014/11/04(火) 01:25:54.32ID:eIlBUMlD興味があるので、できれば試用感を教えてほしいんだけど
0496名前は開発中のものです。
2014/11/04(火) 02:14:53.36ID:zm0bWhhEライブラリいっぱい使うと時間がかかるとか、
なんでアホな話になるかね。
外部データとして扱えることが最大の利点だろうに。
移植のこととか考えてないんかねこの人たちは。
0497名前は開発中のものです。
2014/11/04(火) 02:17:27.43ID:ROF6NvON0498名前は開発中のものです。
2014/11/04(火) 02:33:18.69ID:zm0bWhhEシーケンシャルな書き方で >>445 を書けて
GameStart();
ShowPlayer();
ShowEnemy();
BattleStart();
てことで、定型の処理は隠ぺいして保守しやすくスッキリ見通せる。
さらにスクリプトからスクリプトを生成して動的に実行するということも可能になるんで
非常にフレキシブル。
boostのコルーチンは使ったことない。
0499名前は開発中のものです。
2014/11/04(火) 06:57:09.55ID:64bWIxQw逆にC++だと移植大変だったりする?
OSのAPI以外でもコードに差って出たりするの
0500名前は開発中のものです。
2014/11/04(火) 13:13:42.12ID:8wIs/lt8コンパイル時間云々もDLLにすれば解決するよ
俺的には、Luaはユーザーに自作マップとかMODを作らせるものだと思ってる
洋ゲーだとMODツールキットにLuaがよく使われているしな
0501名前は開発中のものです。
2014/11/04(火) 20:36:39.38ID:zm0bWhhEC++の中にハードコーディングしたイベントだらけだったら、
コードを把握するのも大変で移植するのに萎えないか?
その点実行部分とスクリプトで明確に分けれるのが大きい。
実行部分は作る人が仕様に沿ってつくるだけだし、どのプラットホームでも共通のスクリプトにできる。
ちなみにLuaはANSI C準拠なんで、C++がダメな環境でもOK。
0502名前は開発中のものです。
2014/11/04(火) 21:00:59.89ID:xgvPL05Xコード把握するの大変だけど移植するわけじゃないからおkとはならないでしょ
0503名前は開発中のものです。
2014/11/04(火) 21:03:11.80ID:IS/2iQRa移植以前に完成したことないだろ
0504名前は開発中のものです。
2014/11/04(火) 21:09:55.86ID:zm0bWhhEとりあえず、>>503はどういう方法でゲーム作っているのか書いてから
どこら辺がデタラメか指摘してもらえるかな?
0505名前は開発中のものです。
2014/11/04(火) 22:19:13.99ID:8wIs/lt8見栄を張って嘘をついてもすぐにばれてしまうというこったw
0506名前は開発中のものです。
2014/11/04(火) 22:42:12.25ID:Jn/miYsuAIの行動パターンを制御する時みたいに、それぞれのステートが
共通の値(現在HPとか)を参照できる状態(ステート固有の値は持たない)で、
実行される処理だけ切り替えたい場合と、
シーンの切り替えみたいに、ステート固有の値を保管してシーンをスタックに詰んで戻ってきたい場合と、
実装方法は>>446で同じだけど、明確に意味が違うとして別クラス(インターフェース)にすべきだよね?
0507名前は開発中のものです。
2014/11/04(火) 22:46:48.54ID:zm0bWhhE外部にスクリプトで記述していたら、本体は機種依存や特殊な部分だけ移植すればいいだろうが。
ハードコーディングなんぞしてたら移植するたびに作り直しじゃないか。
0508名前は開発中のものです。
2014/11/04(火) 22:48:00.93ID:2N3psa7Jするべきだと思う
じゃないとシーンの制御にAIのオブジェクト渡せるみたいなわけわからん事になる
0509名前は開発中のものです。
2014/11/04(火) 23:07:53.61ID:K2k2Os5b0510名前は開発中のものです。
2014/11/04(火) 23:17:05.61ID:zm0bWhhEゲーム固有のイベントをその汎用的なエミュに組み込むのか?組み込まないだろ?というのとあまり変わらない。
0511名前は開発中のものです。
2014/11/04(火) 23:18:46.07ID:2N3psa7J0512名前は開発中のものです。
2014/11/04(火) 23:36:33.23ID:rDud6J5G別に移植考えないなら考えてないコードでもいいんじゃない?
まぁどっちでも好きな様にすりゃいいんだけど
0513名前は開発中のものです。
2014/11/04(火) 23:41:58.41ID:K2k2Os5b多分大抵の人はスクリプトの用途をもっと限定的なものとして話してると思うわ
0514名前は開発中のものです。
2014/11/04(火) 23:48:24.99ID:zm0bWhhE要はstateパターンやswitch振り分けのほかにDSLという選択肢を示したかっただけ。
0515名前は開発中のものです。
2014/11/04(火) 23:50:26.53ID:GMRH/mFP処理速度が必要な部分が判明したときだけコードをC++に移すかんじで
FFCCはソース見当たらなかったがほとんどがスクリプトだったと見た記憶がある
http://www.inside-games.jp/article/2009/09/07/37504.html
http://game.watch.impress.co.jp/docs/20080224/ffcc.htm
0516名前は開発中のものです。
2014/11/04(火) 23:52:06.45ID:8wIs/lt8スクリプトを使うかどうかと何の関係もないのだがw
ボロがでるばかりwww
0517名前は開発中のものです。
2014/11/05(水) 00:01:59.05ID:23olDi5Xまさにそう。使ってるライブラリが開発停止になっても、エンジン部のすげ替えもできるし。
>>516
キミは分からないならもういいよ、独自の路線を走ってくれw
たぶん一人だけで開発してるだろうから、いまのままでも特段不便はないだろ。
0518名前は開発中のものです。
2014/11/05(水) 00:12:09.01ID:mDgxc5Qoそれと組み込みスクリプト言語を使用することに何の関連性も無いのよ
0519名前は開発中のものです。
2014/11/05(水) 00:21:14.06ID:23olDi5Xで、俺の主張は>>514だが、キミの主張はなんなの?過去発言から意図が見えないのだが?
単に俺に突っかかって来るだけなら、相手しても無駄なので遠慮したいんだが。
0520名前は開発中のものです。
2014/11/05(水) 00:27:01.07ID:mDgxc5Qoあまり背伸びをするなよw
0521名前は開発中のものです。
2014/11/05(水) 00:28:29.32ID:23olDi5X0522名前は開発中のものです。
2014/11/05(水) 00:36:27.94ID:mDgxc5Qoしったか君が大恥をかいたのであった♪
0523名前は開発中のものです。
2014/11/05(水) 00:45:38.59ID:/iQIEZEB前提が共有できてないのに知ったか吹いてると大恥かくよ
■ このスレッドは過去ログ倉庫に格納されています