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/
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前提が共有できてないのに知ったか吹いてると大恥かくよ
0524名前は開発中のものです。
2014/11/05(水) 00:50:14.08ID:IdGIx4uz個人で作る小規模ゲームでもよく使われるの?
オールC++の人も多いのかな?
0525名前は開発中のものです。
2014/11/05(水) 00:55:37.53ID:x4hCla17移植先がC++ならOSのAPI叩く部分とエンジン駆動部分を綺麗に分離しとけば、
移植性に関しては大して変わらないようにも思うし、
スクリプトの最大のメリットが移植性とか言われるとやっぱすごい違和感在るわ
つうかゲーム自体をスクリプトで書くならもうすでにこのスレで話す内容じゃないな
0526名前は開発中のものです。
2014/11/05(水) 00:56:41.89ID:mDgxc5Qo遂にその程度のことも分からなかったID:23olDi5Xが大恥かいたということだね
0527名前は開発中のものです。
2014/11/05(水) 01:16:22.19ID:IsY3AQRwc++だけで何の問題もない
0528名前は開発中のものです。
2014/11/05(水) 01:19:11.85ID:IdGIx4uz移植とか気にせんでえーし楽だ。
0529名前は開発中のものです。
2014/11/05(水) 01:33:14.61ID:1mW5bpIrデータの分離は常識だけど、それをさらに進めて制御も分離できる
データとそれを使うコードは密接なことも多いから
まるごと分離できると何も考えなくて済むし
0530名前は開発中のものです。
2014/11/05(水) 02:09:12.31ID:23olDi5Xいや、>>496 で言ってるように最大の利点はデータとして分離できること。
移植が注目されてるが、質問から思わず伸びたに過ぎない。利点の一つではあるが。
ちなみに>>422は俺ではないが、ほぼ同じ経緯をたどっているね。
特に複数人で開発するときスクリプトはかなり便利。
割と簡単に使えるようにしてから、デザイナーが演出とかいろいろ直接いじったりできる。
※あいつら、結構シビアなんでいちいち要求に応じて、こっちで作業してたらめんどくっさい。
また、前は書き換え専用の実行ファイル持ってたが、
データとしてゲーム部分を持っているのでリリース後、ゲーム中にアップデートすることもできる。
某プロテクトの関係で実行ファイルを書き換えられないので、これ地味に結構良い。
0531名前は開発中のものです。
2014/11/05(水) 02:22:26.32ID:23olDi5Xほんとこれだね
0532名前は開発中のものです。
2014/11/05(水) 02:24:59.33ID:IdGIx4uz覚えとこ。
0533名前は開発中のものです。
2014/11/05(水) 03:13:21.00ID:H18oW5WU例えばキャラクターの行動を外部データ(テキスト形式)で設定するとして、俺がどうやろうかと考えると
テキストを読み込む→書かれてた文字を判定→それに従ってキャラを設定する
という単なる外部データ読み込み処理になるわけだけど、
これだと特に意識しない限り独自形式でやることになるから、スクリプト言語とか関係なくなる。
んじゃよく聞くスクリプト言語ってのはなんなんだと考えると
誰かが考えたスクリプト言語にしたがって自分で実行プログラムを組んでいる?
しか思いつかないんだが、これだとあまりにも非効率で、一般に広まるとは考えにくい。
んじゃライブラリみたいな形で配布されてるの? とも思うんだが、それを自分のプログラムに組み込むのって
最初に挙げた、自分の独自形式でテキスト読み込むほうが楽でしかも早くね? と思ってしまう。
0534名前は開発中のものです。
2014/11/05(水) 04:02:31.79ID:23olDi5X独自だろうが何だろうが、スクリプトを見て処理の流れが一発でわかるとベスト。
ノベルゲーのテキスト処理のスクリプトは想像しやすいんじゃないかな?
これはいくらなんでもハードコーディングはしないでしょ。
ただ、自分で四則演算や変数・関数を実装しようとすると、
テキストの構文解析、意味解析、スタックマシン等を勉強して
yaccやbisonでコンパイラを作る大変な羽目になる。
んで、そんなことせずとも簡単にそういう機能を組み込めるように
LuaやSquirrelがある。それにこの二つはメジャーで、かなり広まってる。
0535名前は開発中のものです。
2014/11/05(水) 04:45:23.73ID:vpLYRihW0536名前は開発中のものです。
2014/11/05(水) 07:24:36.56ID:gZJGpYilxmlとかをデータ構造と言われると納得できるがスクリプト言語と言われるとなんかモニョる
いや、スクリプト言語をデータ構造として使える事は理解しているし、
データ構造をスクリプト言語の代わりとしては使えない事も理解しているが……
0537名前は開発中のものです。
2014/11/05(水) 08:24:52.84ID:JAMPZGh30538名前は開発中のものです。
2014/11/05(水) 08:58:45.06ID:Tq/w+cMa通りでスレの流れが理解できんわけだ…
0539名前は開発中のものです。
2014/11/05(水) 19:54:47.73ID:LE8Hhxvhキャラクターの行動を記述できるような表現力のある
実質的にスクリプト言語と呼んで良いようなものを簡単に書けるなら
他の人が作ったものを学習して使う方が面倒に思うのでは
他の人が作ったスクリプト言語を使うにしてもブラックボックスで使うのと
中身を検査して使うのとでは手間が大幅に違う
まだお互いに無意識な認識の違いがかなりあるのではないか
0540名前は開発中のものです。
2014/11/06(木) 01:14:24.74ID:u3pLa7VG処理としてのスクリプトってのはどういう風に使うかわかんねぇや
例えばDXLibとLuaを使うとする。
DXLibは基本的にシングルスレッドで、ゲームループ中にupdateとdrawを交互に呼び出すっていうのが主流だけど、
そのupdate中にLuaスクリプトを呼ぶとすると、その処理中、ループはそこで止まってることになる。
AIのルーチンとか、ウェイト無しでひたすら処理すればいいやつはそれで良いけど。
コルーチンを駆使するような挙動(※)を記述する場合って、意図したように動かすの難しいよね?
(※四角形を右に3秒かけて30ドット移動させた後に、上に2秒かけて50ドット動かす、など)
コルーチンを2段重ねにして、
obj.move(30, 0, 3000) //xに30ドット、1000ミリ秒
obj.move(0, -50, 2000)
//moveの実装
void move(int x, int y, int time) {
int frame = time * FPS / 1000;
float dx = (float)x / frame
float dy //略
for(i = 0; i < frame; ++i) {
time / FPS
this.x += dx;
this.y //略
yield();
}
}
こんな感じ?(これじゃズレるけど)
0541名前は開発中のものです。
2014/11/06(木) 02:25:22.77ID:PKFZPuVAfloat delta = (now_time - begin_time) / (float)time で 0〜1まで変化するので、
x(y) * deltaでその時点での移動量が出るから初期位置に足してやる。
終了条件は1以上になったときで、強制的に初期位置にx(y)を足して処理を抜ける。
0542名前は開発中のものです。
2014/11/06(木) 03:09:54.65ID:EqcVgNy30543名前は開発中のものです。
2014/11/06(木) 14:42:03.47ID:/931C6S2特開2011−220825
でググって一番最初のリンク
今更こんなんで特許申請するとか頭おかしいし、なぜ取れるんだろうか…
0544名前は開発中のものです。
2014/11/06(木) 15:30:14.91ID:58LXPdcWホントにそうなら取り消されるんじゃない?
0545名前は開発中のものです。
2014/11/06(木) 15:41:51.54ID:SeWxbthZ訴えなければ取り消されない
ちなみに低額訴訟なら簡単に訴えれる
0546名前は開発中のものです。
2014/11/06(木) 15:46:35.49ID:SeWxbthZちなみに3Dゲームに興味の無い俺は訴えないけどな
まあ訴えるなら頑張れ
0547名前は開発中のものです。
2014/11/06(木) 15:53:35.47ID:/931C6S2最終的には一般的なプログラム上での話しになってる
これは酷過ぎるな…
何の価値もないこの申請がトヨタの誰かの業績になってると思うと腹立つな
0548名前は開発中のものです。
2014/11/06(木) 15:56:19.75ID:WRpf6OH00549名前は開発中のものです。
2014/11/06(木) 16:08:27.82ID:/931C6S2そしてこういう下らない特許は山ほどあって
ゲーム 特許 訴訟
でググると結構色々あるな
0550名前は開発中のものです。
2014/11/06(木) 16:13:48.30ID:es6ThdJv0551名前は開発中のものです。
2014/11/06(木) 18:44:11.46ID:F7RERGXP0552名前は開発中のものです。
2014/11/06(木) 19:53:55.97ID:rZJzoyGTロード中にミニゲームが遊べる
って特許が12月で切れるんやな
0553名前は開発中のものです。
2014/11/06(木) 20:31:37.28ID:KMTyqLtjそれも、どこから出てきたのか見当もつかないサブマリン特許みたいな物ならなおさら
0554名前は開発中のものです。
2014/11/06(木) 21:01:35.08ID:/931C6S2ミニゲームだったらナムコだろ
リッジ7のロード中にゼビウスが遊べた時はびびったw
0555名前は開発中のものです。
2014/11/06(木) 21:11:28.90ID:Zp1CF6nb>>543みたいなゴミ特許が効力あるとか、唖然とするわ・・・。
0556名前は開発中のものです。
2014/11/06(木) 21:19:10.59ID:MoMQBjON審査過程をチェックする機構もあるのか怪しい。
0557名前は開発中のものです。
2014/11/06(木) 21:25:50.58ID:OmSV/1Vy0558名前は開発中のものです。
2014/11/06(木) 21:40:44.92ID:58LXPdcWまず考えられるのは今までに同じ特許がなかった事を調べる、くらいだろう。
次に既知の技術として存在してないかを調べるんだろうけど、
これいちいち調べてられないよな。漏れがでるのはしょうがない。
ネットが発展した現代では、調べるのもかなり容易になってきたのではないかと思うが、
審査官が来る日も来る日もググってると考えるとなにか悲しいものがあるな……。
0559名前は開発中のものです。
2014/11/06(木) 21:53:29.21ID:mXBMs4Fv0560名前は開発中のものです。
2014/11/06(木) 22:55:27.98ID:T/qTIcHW新規性の判断はそこでされたんじゃないの?
0561名前は開発中のものです。
2014/11/06(木) 23:20:16.77ID:MoMQBjON0562名前は開発中のものです。
2014/11/06(木) 23:37:08.84ID:u3pLa7VGあーいや、そういう話じゃなくて、
DXLibだとメインループ回ってるから、いくらLuaでコルーチンがあっても
1ループ間の時間に合わせて処理返さないといけないよなって話
0563名前は開発中のものです。
2014/11/07(金) 00:36:18.17ID:YN7LVK2N0564名前は開発中のものです。
2014/11/07(金) 00:41:45.93ID:WL/Bhc4K0565名前は開発中のものです。
2014/11/07(金) 01:43:20.36ID:OPX5vmffそいつらを上手く奴隷として扱えるようになるのが社会の勝ち組。
0566名前は開発中のものです。
2014/11/07(金) 01:53:01.03ID:cHXJDjI4座標はupdateスレッドでロックしてるし描画するにしてもdrawスレッドでロックしないといけないだろ
メモリを2倍使ってダブルバッファリングで交互にリソースを入れ替えてもいいけど1フレーム遅れるし
要素ごとにロックとアンロックしてたらそっちのほうが処理重いでしょ
モーションブラーとかドロップシャドウみたいな、書き足すようなシェーダとかなら分かるんだけど、ゲームの要素そのものを描画するのにマルチスレッド?ってすごい疑問なんだけど
どんな風にやってるの?
0567名前は開発中のものです。
2014/11/07(金) 02:53:09.53ID:BtR0AX8uマルチスレッドで描画するのに「1フレーム遅れる」って関係あんの?
0568名前は開発中のものです。
2014/11/07(金) 03:13:07.36ID:QezXslKR片方はとにかく描画する
ロックアンロックで同期させるならマルチスレッドをやめる
0569名前は開発中のものです。
2014/11/07(金) 06:56:56.78ID:cuSqlZ5aというか、マルチスレッドだけでも本がいっぱい出てるからそれを参考にしたらいいかと
0570名前は開発中のものです。
2014/11/07(金) 07:32:03.69ID:9A2ZZlGVそれぞれのスレッドに別々の役割を与えて異なる処理を分担させる事になる
あと、マシンに対する負荷を減らすには同期処理しまくらないと意味がないし
ロックアンロックが重くなると言ってる奴はマルチスレッドを根本から誤解してる
というかとにかく本を読め
0571名前は開発中のものです。
2014/11/07(金) 07:53:25.81ID:7gbV2cfzその中ですべての作業を終わらせる事を考えろ
重い処理は役割分担して複数のスレッドで終わらせばいいし、
軽い処理はわざわざ役割分担する必然性は無いからな
0572名前は開発中のものです。
2014/11/07(金) 08:07:38.45ID:0E5IqK7U0573名前は開発中のものです。
2014/11/07(金) 08:58:33.47ID:cHXJDjI4もし描画スレッドで更新スレッドがロックしてる描画要素を描画しようとしたらアンロックされるまで待つのか?
0574名前は開発中のものです。
2014/11/07(金) 09:08:00.46ID:4PyQVSc6そんな事しなくても並列処理してくれるもんなの?
0575名前は開発中のものです。
2014/11/07(金) 09:22:31.34ID:xV0IZ5SCjavaとかだと排他ロックするのすごい重い気がするんだけど
C++だとそんなことないの?
0576名前は開発中のものです。
2014/11/07(金) 11:15:34.21ID:+qZS8i0Yロックしている間に別のスレッドをフルに動かすのがデフォ
0577名前は開発中のものです。
2014/11/07(金) 11:42:28.34ID:KHDaX/cLで、コマンドの作成を出来る限りマルチスレッドで行なう
最後にメインスレッドが自前の描画コマンドを解析しつつ各種API(DirectXやOpenGL)を呼び出していく
0578名前は開発中のものです。
2014/11/07(金) 11:53:44.31ID:CL7k1iDn0579名前は開発中のものです。
2014/11/07(金) 12:23:40.03ID:mfboXhbt描画範囲が重なる場合はこの手段が使えないね
あとスレッドって、何度も起動させて使うよりも、
一度起動させたらロックさせながら使い回す方が処理が早いね
0580名前は開発中のものです。
2014/11/07(金) 15:24:47.03ID:Frm/uGA7今の話ってどのプラットフォームを想定して進行してるの?
DirectX? OpenGL? ソフトウェア描画? それとも特に規定しない全般?
0581名前は開発中のものです。
2014/11/07(金) 23:07:57.05ID:JstQIuBK0582名前は開発中のものです。
2014/11/08(土) 10:52:03.60ID:CsoGcbNXウチのタブレットは4コアだ
PCはシングルコアだが
PCはわりと長持ちだらなぁ
0583名前は開発中のものです。
2014/11/08(土) 11:16:44.54ID:kQCHHHLCカメラの射影行列使いまわすんだからカメラのインスタンスロックしないと危ないよね
で、カメラのアップデートは更新処理するスレッドで回すんだから結局更新スレッドと描画スレッドで占有権を撮り合う形になるから
アンロック待ちが当たり前なのか
0584名前は開発中のものです。
2014/11/08(土) 11:30:01.41ID:unIj8h+A0585名前は開発中のものです。
2014/11/08(土) 12:09:00.67ID:mcbpZdSD気になってはいるんだけど試せてないんだよな
■ このスレッドは過去ログ倉庫に格納されています