タスクシステム総合スレ part5
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2009/02/19(木) 02:21:01ID:k4ODtuXPpart4 http://pc11.2ch.net/test/read.cgi/gamedev/1233459490/
part3 http://pc11.2ch.net/test/read.cgi/gamedev/1226199100/
part2 http://pc11.2ch.net/test/read.cgi/gamedev/1196711513/
part1 http://pc11.2ch.net/test/read.cgi/gamedev/1173708588/
・タスクと呼ばれる実装は、非常に多岐に渡ります
古典タスクシステムについての話題は「>>2」と明示してください
そうでない場合はカスタム版タスクであることを明示してください
・人を憎んで言語を憎まず
0103名前は開発中のものです。
2009/02/21(土) 16:08:02ID:07PQbtcV> (5087 + 514 + 118 + 235) - 4684 = 1270
> その差50行程度だが、どこが遥かになんだ。
タスクシステム使わないほうは、27%もソース増えてるじゃん。
開発時間はソースの量にだいたいは比例するから、
8時間の作業で済むところが、10時間強もかかる計算になるじゃん。
俺ならそんなの御免だね。
だから、俺は使えるところでは使ったほうがいいという結論だな。
使えないと思うところでは使わない。それだけのことじゃん。
0104名前は開発中のものです。
2009/02/21(土) 16:13:33ID:4jF5VqD/処理が減ったわけでもないのに
そこがそんなにうれしいとこなのか?
0105名前は開発中のものです。
2009/02/21(土) 16:16:13ID:07PQbtcV人間がバグを仕込んでしまう確率は、だいたいコードの分量に比例して増えるからね。
可読性を保っているなら、コードは少ないほうが望ましい。27%も違えば大きな違いだろう。
0106名前は開発中のものです。
2009/02/21(土) 16:18:18ID:7rFrs1eT1つ目が繋がってないのに2つ目を持ってこられても困るというか
個人的な感想を言えば、たったの1万行で破綻するとはとても思えない
0107名前は開発中のものです。
2009/02/21(土) 16:19:40ID:4zHPU/si要はゲーム中で動く「モノ」のことでしょ?なんでわざわざタスクとか呼ぶん?
例えば「実例で学ぶゲームAIプログラミング」の2章が
もろにいわゆるタスクシステムやタスク間通信の近代的なC++実装だと思うんだが
タスクなんてひとっことも言わないし、こうやって作るんだとか誇りもしないのね。たいしたことじゃないから。
これがいまどきのありふれた感覚じゃねーの?
だいたい根本的に、「モノ」を管理するために低レベルなOSのアナロジーを使うこと自体が間違ってると思う。
そういうの実装を歪めると思わん?
「ゲームオブジェクト」「エンティティ」「アクター」なんでもいいけど、「タスク」だけはない。
具象的なネーミングとしても抽象的なネーミングとしても。
非ゲームプログラマがTaskという名前のクラスを見て、何なのかすぐ理解できるのかってことですよ。
お前らがやりたいのは、OSの稚拙な真似事じゃなくて、「モノ」を動かすことでしょ?
あーでもロスプラみたいにマルチコアに振り分けるならOS的要素強いかもね。わかんね。
結局、典型的な「自転車置場の議論」(http://0xcc.net/blog/archives/000135.html)なんだよなこれ。
松浦本読んだ程度のドシロウトでも参加できるという。
そういうのを避けるためにも俺はタスクシステムという言葉は使わない。
使ってるやつ見かけたら陰からこっそり指さして笑う。
0108名前は開発中のものです。
2009/02/21(土) 16:21:47ID:3HETWV4t0109名前は開発中のものです。
2009/02/21(土) 16:25:03ID:3HETWV4tITRONのタスクはすげーよ。なのに、タスクシステムのタスクは全然すごくねーよ。
このギャップにイラッとするのはある。
0110名前は開発中のものです。
2009/02/21(土) 16:25:40ID:4jF5VqD/それは本質をまったくみてないなぁ
1行ごとに中身のない改行を入れて「;」を打つだけでも行数だけは増えるじゃない
しかも今回のプログラムだって工夫すれば改行崩れの処理省きでcontinue文は消せてしまうので
それをソースコードの行数の増加と考えるのは上げ足取りをしてるようにしか見えない
むしろ、マクロでfor文を見えなくした>>510のがわかりにくくて気持ち悪い
このマクロっぽいのの意味を初見でみた人が知るには付属のタスクシステムテンプレートを
全部読んで理解するしかないでしょ?
これは嫌だなぁ
仮にマニュアルもなにもなかったとしたらかなり読める人限定されそう
0111名前は開発中のものです。
2009/02/21(土) 16:26:24ID:07PQbtcVこのまま規模が大きくなっても、このパーセンテージは揺らがない。
タスクシステムを使わないほうのプログラムでは、どうしても27%ほどだけソースが大きくなる。
だから行数なんかには意味がない。このパーセンテージのほうがはるかに重要だ。
お前は、どうしてそれをごまかそうとするのか俺にはわからない。
0112名前は開発中のものです。
2009/02/21(土) 16:31:02ID:07PQbtcV> それは本質をまったくみてないなぁ
そんなことはない。大雑把にはソースの分量で判定できる。
どちらのプログラムも平均的なプログラマが書いたと仮定して、
タスクシステムを使わないほうは27%もソース分量が増えたのには違いない。
> むしろ、マクロでfor文を見えなくした>>510のがわかりにくくて気持ち悪い
あの程度のソースがわかりにくいとは思わないが、マニュアルがないと
正しく使えない人がいるというのには同意。
ただ、本人が開発するなら話は別だろう。
0113名前は開発中のものです。
2009/02/21(土) 16:33:03ID:4jF5VqD/酷いな
ループのカッコとnull判定のことでしかないのに
ここまでくると病気としかいいようがない
0114名前は開発中のものです。
2009/02/21(土) 16:35:43ID:4jF5VqD/それがタスクシステムの本来の役目ということがはっきりしたともいえるね
正直、差分がそこしか見えなかったんだからそれでいいんだよな?
タスクシステム=ループのカッコとnull判定をはじけます
でおk?
0115名前は開発中のものです。
2009/02/21(土) 16:38:17ID:07PQbtcVあんたはプログラミング経験が浅くてわかってないんだろうが、ループも、二重ループにするとき、
i,jの添え字を間違えたり、null判定を忘れたり、continueを書き忘れたりするのが人間ってものなの。
そういう定型化している部分を共通部分として書き出して、どこか別のところに追いやったほうが
バグは減るわけ。それは別にタスクシステムでなくてもいいのだが。
forがforeachになっただけでずいぶんバグが減る。
foreachの終了のときのハンドラを定義する構文があればさらに安全性は高まる。
そうやって抽象化と共通部分の括りだしを繰り返して書いていくのがプログラムだろう。
0116名前は開発中のものです。
2009/02/21(土) 16:40:14ID:3HETWV4t>このまま規模が大きくなっても、このパーセンテージは揺らがない。
どこがそんなにラクになるのかなと見直したが、2重のforループがTASK2と書けるんだね。
ここでだいぶ文字数稼いでるみたいだ。
んで、それがそんなにうれしいことなのかと言われるとNOな訳で。
0117名前は開発中のものです。
2009/02/21(土) 16:40:41ID:4jF5VqD/だから
タスクシステム=ループのカッコとnull判定をなくした最新鋭のシステムです
でいいんだろ?
0118名前は開発中のものです。
2009/02/21(土) 16:41:07ID:07PQbtcV> 正直、差分がそこしか見えなかったんだからそれでいいんだよな?
全然違うね。
510のように抽象化することで、自動並列化のようなことが可能になってくる。
まあ、510のソースを自動並列化するのは正直無理だが、もう少し抽象化して、
各タスクの役割を明確に記述できれば自動並列化できる。
0119名前は開発中のものです。
2009/02/21(土) 16:41:26ID:P36r7rTD「ウォークマン」みたいなものじゃない?
最初に有名になって、それ以降類似したものの総称として
便利だから名前だけ使ってるって。
>非ゲームプログラマがTaskという名前のクラスを見て、何なのかすぐ理解できるのかってことですよ。
タスクシステムを使うのはゲームプログラマでしょ。普通は。
いちいち現場で「これはオブジェクトを管理するシステムで更新と描画で登録関数が呼ばれて…」
とか説明するより「タスクシステム的なもの」の一言でゲームプログラマならだいたいって通じるし。
ま、デザインパターンみたいにちゃんと定義と命名されればいいんだろうけど
ゲーム業界固有の物だしねぇ
0120名前は開発中のものです。
2009/02/21(土) 16:41:35ID:07PQbtcV>>118
0121名前は開発中のものです。
2009/02/21(土) 16:45:39ID:4jF5VqD/それは>>510からはいえないな
実際、>>510と>>641の間で自動化云々って話はないわけだし
自動化を証明したければ比較のソースを書いてからだな
それまではいっちゃいけねぇだろ
俺も否定しないし
少なくとも>>510と>>641の間では自動化は見えなかった
今回はこれが結論
0122名前は開発中のものです。
2009/02/21(土) 16:52:23ID:3HETWV4tforループの中身が増えれば増えるほどその稼ぎは薄まる訳だ。
規模が巨大になればなるほどパーセント減るようにしか見えないぞ。
その辺どうなのよ。
0123名前は開発中のものです。
2009/02/21(土) 16:55:30ID:07PQbtcV510と641を並列化するソースを書き比べればすぐにわかるよ。
そんな本格的なものでなくていいから。
2重ループでi×jのループ回してるところ、あれをi×j / N のループに
分けて実行して、すべてのスレッドの終了をセマフォで待つだけでいいよ。
0124名前は開発中のものです。
2009/02/21(土) 16:56:43ID:07PQbtcV> forループの中身が増えれば増えるほどその稼ぎは薄まる訳だ。
> 規模が巨大になればなるほどパーセント減るようにしか見えないぞ。
それはもちろん正しい。そのへんはゲームの性質によるだろう。
0125名前は開発中のものです。
2009/02/21(土) 17:14:52ID:3HETWV4t>>111
0126名前は開発中のものです。
2009/02/21(土) 17:27:14ID:iOCBxjYvコードが一割減
タスクシステムのデメリット
可読性が低くなる
この調子でお願いします
メリットわかってるんだったらごまかさずに書けよ
そんな出し惜しみばかりするから無駄に荒れる
0127名前は開発中のものです。
2009/02/21(土) 17:35:18ID:07PQbtcVコード削減、一割減はちょっと違うと思うな。
今回の例ではタスクシステムを使わないと27%増。
俺の感覚では、だいたいこの数字はどんなゲームでもそんなに変わらなくて
平均すれば20%前後だと思うな。これが10%程度ってことはないな。
並列化とかもっと大がかりな仕組みがタスクシステム側に用意されていれば
この差はもっと広がるしな。まあ、それをタスクシステムと呼んでいいのかは知らんが。
0128名前は開発中のものです。
2009/02/21(土) 17:46:01ID:iOCBxjYv開発速度向上はない、可読性が低いものほど開発に時間がかかるから
タスクシステムとやらのデメリットとして
開発に時間がかかるというのも追加できる
この調子ならメリットデメリットを列挙できそうだな
選択肢になりうるかどうかはそれを見れば判断できるだろう
化けの皮を一枚ずつはいでいくのは楽しいの
0129名前は開発中のものです。
2009/02/21(土) 17:52:15ID:07PQbtcV> 開発速度向上はない、可読性が低いものほど開発に時間がかかるから
ソース全部理解しなくても、510のタスクシステムは使えるだろ。
TASK2(クラス名A,クラス名B)
{
クラス名A1.XXX = YYY;
クラス名B2.ZZZ = WWW;
}
こう使うだけじゃん。説明に1分も要さないと思うが?
0130名前は開発中のものです。
2009/02/21(土) 17:52:47ID:Kwr5xaMF> 開発速度向上はない、可読性が低いものほど開発に時間がかかるから
> タスクシステムとやらのデメリットとして
まずタスクシステムのどこが可読性低いのかを示してもらわないと。
FSMになってるところ? 関数ポインタの部分? ごった煮リスト?
0131名前は開発中のものです。
2009/02/21(土) 18:15:26ID:D/oVP314自分のタスク内で完結しない処理に関しては、全部グローバル変数経由
ゲーム中のあるシーンを想定した場合、そこで何のタスクがどういう順番で走るかが、
コードの一箇所を見てもわからない。
0132名前は開発中のものです。
2009/02/21(土) 18:15:57ID:4jF5VqD/でも読みにくいなぁ、おいw
それが何を表してるのかさっぱりわからないぜw
ループ隠しただけなのになw
0133名前は開発中のものです。
2009/02/21(土) 18:24:15ID:hYClRP74>自分のタスク内で完結しない処理に関しては、全部グローバル変数経由
そんな処理するのはタスクじゃないだろ。
0134名前は開発中のものです。
2009/02/21(土) 18:26:52ID:D/oVP314> もう少し抽象化して、各タスクの役割を明確に記述できれば自動並列化できる。
そんな簡単じゃないよ。
並列処理は計算機科学の分野では長らく研究されていて、いろいろ知見が積み重なってるんだが、
少なくとも 510 からは、自動並列化につながる筋道がまったく見えない。
夢が大きいのはいいんだが、まったく現実性が無いのもどうかと思うぞ。
0135名前は開発中のものです。
2009/02/21(土) 18:32:19ID:a9F+sDW/初めて読む STL や Loki や boost と同じくらいにね。俺なら使わん
結局、あるライブラリを使うメリットは普及してるかどうかだ
strcpy や strncpy を使うメリットはなんだ?
みんなあの仕様はおかしいと感じているのに? タスクもそれと同じこと。
そして、普及さえしていなければメリットはないと考えて必死で叩くお前らは正しい
0136名前は開発中のものです。
2009/02/21(土) 18:40:14ID:07PQbtcV> 並列処理は計算機科学の分野では長らく研究されていて、いろいろ知見が積み重なってるんだが、
> 少なくとも 510 からは、自動並列化につながる筋道がまったく見えない。
「自動」の意味を誤解しているようだが、
自動車は、自動的に目的地まで運んでくれる乗り物ではないのと同様、
人間が何もしなくてもいいという意味ではない。
俺が「自動」並列化と言っているのは>>123の意味。
例えば、TASK2をP_TASKと人間が書き換えればあとは自動的に並列化してくれるように改造するのは容易。
なんでこれが出来ないと思うのか、俺はお前らの技術力を疑いたくなる。本当にお前らプログラマなのか?
0137名前は開発中のものです。
2009/02/21(土) 19:05:26ID:D/oVP314> なんでこれが出来ないと思うのか
その程度で済むなら OpenMP がやってる
0138名前は開発中のものです。
2009/02/21(土) 19:18:40ID:4jF5VqD/なんにも自動化しないだろw
0139名前は開発中のものです。
2009/02/21(土) 19:35:06ID:07PQbtcVお前らが何もわかってないただの自称プログラムだというのは十分わかった。
123すら出来ないとはな。
0140名前は開発中のものです。
2009/02/21(土) 19:51:24ID:07PQbtcVお前本当に日本人か?どう見ても中国人だろ。
前スレ、前前スレから日本語が極端に不自由な奴が二名いるみたいだが、お前はそいつだろ。
プログラム以前に日本語教室行ってこいよ。
0141名前は開発中のものです。
2009/02/21(土) 19:59:47ID:4jF5VqD/ループなんかはずして喜ぶプログラマいないってw
むしろ、ループ処理してるならfor文を見えるところにおいておいてほしいだろ
誰がこんな構造にして喜ぶのか?
ちょっとは考えろよ
0142名前は開発中のものです。
2009/02/21(土) 20:09:26ID:D/oVP314依存関係も副作用も無いコードなら、そら簡単に並列処理できるさ。数値計算だと
割と多いが、ゲームでそれはほとんどないだろ。
0143名前は開発中のものです。
2009/02/21(土) 20:43:23ID:HdiuLFdjインド人かもしれんし韓国人かもしれんだろ
0144名前は開発中のものです。
2009/02/21(土) 20:43:36ID:iOCBxjYvそれに比べてタスクシステムは可読性がないと言えるのは間違いないよ
専門家でも読むのが難しい本と、幼稚園児が読める絵本とでは
同じ文字数だとしても
絵本の方が圧倒的に速く読めるでしょう、当たり前だけどな
使えるから使えると言ってるけど
使ったら他の選択肢がなくなるから、使えるからと言って考えなしに使うなと
昔の偉い人とエロイ人もゆってた
つまり、エロエロよー
0145名前は開発中のものです。
2009/02/21(土) 20:47:01ID:Dmt7DoEE横槍ですまんが、あくまでゲームで並列処理は難しいと決め付けるのは良くない。
ゲームは依存化が明確にしやすく、
割と並列化しやすいとMTフレームワークの中の人が言っております。
http://game.watch.impress.co.jp/docs/20070131/3dlp.htm
>石田氏は「タスクという観点から見ると、依存関係は最小化でき、
>むしろゲームプログラムは並列化しやすいともいえるんです」と、
>これまでのゲーム開発の常識とは正反対の意見を主張する。
これには自分も驚いたが、
MTフレームワークの製作者が実践してそう思ったのなら説得力があると思わないか?
まぁ、予想(予測)と理論と実践はそれぞれ違うって事だ。
0146名前は開発中のものです。
2009/02/21(土) 20:56:31ID:D/oVP314予想というか、仕事で実際にゲーム書いてた経験談なんだが。モーションとかレンダリング
まわりのジョブはわりと分割しやすいんだけど、いわゆるゲームロジックに絡む部分は、
かなり難しい。
排他制御は特にバグが入りやすい部分だし、仕様変更多発が想定されるゲームロジック
部分を並列処理するのはリスキー。
0147名前は開発中のものです。
2009/02/21(土) 21:03:43ID:Dmt7DoEEそのリスキーな部分をいかにして、
安全で仕様変更に強い設計で書くのかを議論していってもいと思うわけよ。
仕事でロジック部分の並列化やられたら、うへぇってなるが、
趣味だったら面白いネタだとおもわないかい?
0148名前は開発中のものです。
2009/02/21(土) 21:13:55ID:Dmt7DoEEもしタスク派が生き残りをかけるのなら、マルチコア時代の恩恵を
受けられるような並列処理の記述性ただ1点だけ突き詰めるのが良いとおもうぜ。
0149名前は開発中のものです。
2009/02/21(土) 21:15:06ID:iOCBxjYv他人の権威にすがって偉そうにする奴も世の中にはたくさんいる
そういう奴は最後には命乞いをして延命を図る
延命を図るのだよっっっ
くやしいのぅ、くやしいのぅwww
0150名前は開発中のものです。
2009/02/21(土) 21:37:12ID:H2kw4iDd前スレの>>510は名乗るのをやめても
タスク信者の特徴は消せないのだから
名乗るといい
名無しでの火消し&誘導は無駄
0151名前は開発中のものです。
2009/02/21(土) 21:43:42ID:Dmt7DoEE実際にタスクについては主に見通しの問題で否定的で、参照構造についても目的が無ければ無意味な足枷でしかないと考えている。
ただ、並列化については興味があるわけ。マルチスレッドで速度を稼げるのならそういう技術も覚えたいと思っている。
そんな中、自動並列化についてタスクにはその可能性がなきにしもあらずと考えている。
まぁ自分は実装するのはゴメンだがね。
0152名前は開発中のものです。
2009/02/21(土) 21:49:55ID:07PQbtcV> 依存関係も副作用も無いコードなら、そら簡単に並列処理できるさ。数値計算だと
> 割と多いが、ゲームでそれはほとんどないだろ。
あんた、本当に大きなゲームのプログラム書いたことがなさそうだな。
並列化して処理時間を稼ぎたい部分って、同期のためのコストとかもあるから
実際はかなり粒度の大きな、単純な計算が繰り返される処理なんだよ。
ゲームのうち、衝突判定とかは特にそういう計算ばっかりだ。
まあ、>>145でもすでに指摘されているが。
このスレは本当に商用で大きな規模のゲームを作ったことがあるのかと
疑いたくなるような奴ばかりで俺はただただ呆れるばかりだ。
0153名前は開発中のものです。
2009/02/21(土) 21:50:34ID:D/oVP314> そんな中、自動並列化についてタスクにはその可能性がなきにしもあらずと考えている。
そもそも、CPU 食ってるのはゲームロジックより、ヒット判定やモーション処理だったり
しないか? 将棋とかの AI は別だけどさ。
そこは仕様が比較的安定しているから、作りこむだけのコストがかけられる。自動並列化
なんていわずとも、従来のロックベースの方法で OK。
0154名前は開発中のものです。
2009/02/21(土) 21:55:00ID:3HETWV4t0155名前は開発中のものです。
2009/02/21(土) 21:59:19ID:D/oVP314衝突判定は、単に「ぶつかってる・いない」を判定するだけなら簡単なんだが、衝突の
解決が絡むと並列化が割と難しい。
衝突解決には、たとえば「壁は動かない」「プレイヤーが壁に当たったら押し戻される」
「プレイヤーと NPC があたったら NPC 優先」とかルールを決めて、それに応じて
優先順位つけて解決していくのが一般的だと思うが、問題は解決するときに相互
作用が発生することなんだよな。
シーケンシャルに処理するなら、割と手抜きアルゴリズムでもそれっぽく見えるんだが、
並列処理するとなったら、とたんに複雑さが増す。前に一度やってみてメゲた。
0156名前は開発中のものです。
2009/02/21(土) 22:02:28ID:Dmt7DoEEコンシューマならCPUの数と使用用途が特定されてるもんだが、現実的に考えて決めうちでが妥当だと思う。
PCのような特定されないマルチCPUの環境を考えると、自動で並列化するのは面白いんじゃないんかねぇ……。
自動並列化といっても、正直こればっかりは実装してみないと、
どのようにスレッド分配され、パフォーマンスが上がるのか下がるのかは、議論できんところだね。
0157名前は開発中のものです。
2009/02/21(土) 22:08:58ID:3HETWV4t>>136で自動並列化の俺定義出してるんだから、ここはそれに合わせてやれよ。
>>136はライブラリ提供者が、ライブラリ利用者に分からないようこっそり裏で並列化(手作業)しやすいよ。
と、言ってるんじゃないの? 違うか?
ちなみにID:D/oVP314とその他は一般的な意味で話してるような気がする。
ググって出てくるような一般的な意味ね。
0158名前は開発中のものです。
2009/02/21(土) 22:14:35ID:D/oVP314っつか、それはデータの依存性自動検出とかできないと無理なわけで。ハードルが
超高い。
0159名前は開発中のものです。
2009/02/21(土) 22:16:13ID:3HETWV4t出来るだけ先入観を抜きにして、もう一度>>510を読んでみた。
やっぱり、TASKマクロのもどかしさが引っかかるんだよな。
iとjどっちも0からブン回してるけど、星衝突ループはj=i+1からで充分。
オーダーが変わってくるんだけど、その辺手が出せないじゃん。
そんな場合、TASK2Bマクロでも作るのかな?
ライブラリに任せでこういう不備があると面倒だ。
しかもこれに対処するとアドバンテージ消えそうだな。
WindowだのApplicationだのをタスク化してるのも意味不明だな。
継承したものがまるまる無駄になってるのが大雑把すぎ。
TASK2に突っ込みたいがためにやってるだけなら、やっぱり無駄過ぎだよな。
先行投資と言っても、その投資が回収されるまでは過度の抽象化にすぎないわけだ。
んで、>>641バグっるかもって作者言ってたけど、ホントにバグっててワロタ。
・万有引力はj=0から回さないとダメ。
・星衝突で自分同士の場合のcontinueが抜けてる。
あとはOK。
0160名前は開発中のものです。
2009/02/21(土) 22:22:05ID:Dmt7DoEEその超高いハードルを、どうしたら解決できるだろうかを議論しようじゃないか。
たとえば>>510はデータ集約について提案し、
参照構造の是非について議論しようとしていたようだよね。
オブジェクトの所有/解放を(ライブラリ内で見えないように)行うことで、
並列化の足掛かりを見出そうとしたようだよ。第1歩というか、パフォーマンス的には第-1歩だけど。
0161名前は開発中のものです。
2009/02/21(土) 22:25:18ID:3HETWV4t俺は>>510より>>641のほうが良いね。
「シンボル'Star2'は定義されてません」とかVCに言われてイラつくこともないし。
無駄や不透明な部分があると精神衛生上良くない。
0162名前は開発中のものです。
2009/02/21(土) 22:26:57ID:D/oVP314> その超高いハードルを、どうしたら解決できるだろうかを議論しようじゃないか。
本気でやるなら、サーベイ論文読むところからスタート。かなり研究されてる分野だから、
ゼロから何かやるとか時間の無駄なので。
0163名前は開発中のものです。
2009/02/21(土) 22:31:42ID:4jF5VqD/そんなくだらいこと研究して金もらってる奴がいることに驚きだぜw
0164名前は開発中のものです。
2009/02/21(土) 22:36:21ID:07PQbtcV> 「シンボル'Star2'は定義されてません」とかVCに言われてイラつくこともないし。
インテリセンスでるのにそんなミスやるはずがないじゃん。あんた使ってるのVC98?
0165名前は開発中のものです。
2009/02/21(土) 22:39:35ID:D/oVP314並列処理のアルゴリズム・データ構造まわりは昔から研究ネタとしてはよくあるんだが、
単一プロセッサの性能向上が頭打ちになるのが現実的になってきた頃から、Intel, IBM を
はじめとした企業が金と人突っ込んでる。
公開されていて実際に開発に使えるレベルになっている成果というと、たとえば Intel
Threading Building Block とかさ。
0166名前は開発中のものです。
2009/02/21(土) 22:40:53ID:3HETWV4tこれから必要になってくる分野だぞ。
タスクシステムにしてもな、
ゲームの根幹的な制御部に使うのはかえって面倒そうなのでやっぱり嫌だ。
単純で、相互作用がなくて、あったとしても誤差許容できて、計算結果はゲーム性に影響しない。
ベストエフォートで充分なところなら使えそうだとは思った。
大量の火花エフェクトとか、そういう余力でやればいいような部分。
0167名前は開発中のものです。
2009/02/21(土) 22:42:18ID:3HETWV4t右クリック→定義へ移動
0168名前は開発中のものです。
2009/02/21(土) 22:45:19ID:Dmt7DoEEすまん。俺も本気でやるつもりは無いんだ。
正直、並列化には憧れているが、鬼門だと思ってる。それが手動であっても自動であってもさ。
ゲームではない自分の専門分野でIntelC++とMPIで稼ぐ実装をした事があるが、
冗長になった割にパフォーマンスが出なくて萎えた経験がある。
もしゲーム特化で、安全で保守の掛からないデータ構造を有するタスク自動並列化のライブラリが出来たのなら、
金貰ってもいいレベルだと思う。個人が趣味でやる分野じゃないねぇ。
0169名前は開発中のものです。
2009/02/21(土) 22:54:04ID:4jF5VqD/プログラムって最低限設定しなきゃいけない内容は絶対に自動にならねぇし
結局は上にスルーパスして設定を任せるだけになる
スクリプト組んでも苦労する人間が変わるだけで絶対的な作業量は無くならない
むしろ、トータルでは増えてしまう場面のが多いかもね
そりゃプログラマの仕事があんまり高度で・・・っていうならわかるけど
できたスクリプト言語がC言語とあまり変わらんようなのってどうよ?
ってのと同じでタスクシステムも結局処理をスルーパスしてるだけで
自動化してるように見えるだけでしょ?
0170名前は開発中のものです。
2009/02/21(土) 23:00:58ID:Dmt7DoEEん?複数スレッドにタスク単位で処理を投げてパフォーマンスを稼ぐ「自動並列化」の話だよ?
0171名前は開発中のものです。
2009/02/21(土) 23:02:21ID:D/oVP314データ構造と処理内容を限定することで、並列処理を定型化して簡単に使えるように
するってのは、話としては分かる。
ただ、それを目指すならタスクとやらは starting point としては全然ダメなのが萎える。
0172名前は開発中のものです。
2009/02/21(土) 23:02:42ID:07PQbtcVID:4jF5VqD/はド素人か。本当にゲーム作ったことあんのか?
お前、一人だけレベルが低すぎる。もう引っ込め。
0173名前は開発中のものです。
2009/02/21(土) 23:03:41ID:3HETWV4t0174名前は開発中のものです。
2009/02/21(土) 23:05:14ID:Dmt7DoEE識者との有意義な話。(できれば建設的な話)にもっていきたい。
0175名前は開発中のものです。
2009/02/21(土) 23:38:57ID:LbjEvDmu0176名前は開発中のものです。
2009/02/22(日) 02:17:35ID:zvJaILDCえ?そんな話してんの?w
絶対無理だと思うよ
ゲームで一番重い処理はオブジェクト同士の関連だって
少なくともデータ自体は分離されてなきゃ並列に動けないと思うぜ
ごった煮にした時点でそんなの無理じゃね?
0177名前は開発中のものです。
2009/02/22(日) 05:31:48ID:/MSzm31iそんなものしらないのかよ。糞が。
0178名前は開発中のものです。
2009/02/22(日) 05:51:25ID:/MSzm31ikoクラスのupdateメソッドはoyaクラスのupdateメソッド内で呼ばれる。
koクラスのupdateメソッド内の処理は、ある特定の情報(ここではinfoとする)を必要としている。
infoをどのようにしてkoクラスのupdateメソッド内の処理に参照させればよいか。
1.グローバル変数
2.引数
3.シングルトンパターン
0179名前は開発中のものです。
2009/02/22(日) 06:16:09ID:ihng4iqVoyaクラスで生成する情報であれば引数で渡すのが楽だろうし
0180名前は開発中のものです。
2009/02/22(日) 08:48:04ID:W9e8MC1E>・星衝突で自分同士の場合のcontinueが抜けてる。
j=i+1から回してるから自分同士ありえないな。
万有引力をj=0から回すだけで良い。
0181名前は開発中のものです。
2009/02/22(日) 10:26:16ID:2krgEtKUゲーム内容も明示せずに
>ゲームロジックで一番重たいのは当り判定だ。
ってゲーム一般として断言できちゃうあたりがステキ
物理演算バリバリの3Dコリジョンチェックと
2Dシューティングのボックス判定の繰り返しは違うし
AIの計算時間、モデルのアニメ計算etc...の時間もゲームによって違うのにね。
0182名前は開発中のものです。
2009/02/22(日) 17:28:01ID:DmOCWQfiジャンルによる。将棋だと AI の方が重い。
0183名前は開発中のものです。
2009/02/23(月) 07:26:36ID:sG7Lzgrq0184名前は開発中のものです。
2009/02/23(月) 08:08:01ID:keyUucFf0185名前は開発中のものです。
2009/02/23(月) 09:35:14ID:7qNmU6oRなぜならアンチタスカーこそが最大のタスク信者だから。
俺もアンチタスカーだが、皆がタスクシステムの利点に気づかないように、
あえてアンチを演じている。
気づかれると日本経済が破綻するからな。
0186名前は開発中のものです。
2009/02/23(月) 12:39:27ID:sG7Lzgrq0187名前は開発中のものです。
2009/02/23(月) 16:16:29ID:7qNmU6oRアメリカではオブジェクト指向での陽動作戦が主流。
一部日本でもその余波の影響を受けてる。2重3重に騙されて踊らされてる状態。
何かおかしいと気がついたインテリたちはLisp使ってる。
しかしそこどまり。ロジックでは根源にたどり着かない。
防空壕の中に居ては何も出来ない現実。
0188名前は開発中のものです。
2009/02/23(月) 16:58:53ID:JKBRWfYb0189名前は開発中のものです。
2009/02/23(月) 17:15:51ID:3YpC4milもうちょっと続けてください
0190名前は開発中のものです。
2009/02/23(月) 17:19:36ID:7qNmU6oR理想な構造=都合の悪いものを外部に追いやってるだけ。局所的幸せ。
このままいくと、プログラムは幸せになるが、プログラマは不幸になる。
国は幸せだが国民が不幸な北朝鮮と同じ。
0191名前は開発中のものです。
2009/02/23(月) 17:31:30ID:7qNmU6oRスタックがあるので関数はいつでも呼び出せる。
でも、引数はいつでも用意できるわけではない。
スタックは一見理想的な構造に見えるが、実は都合の悪いことを外部に追いやっただけ。
みんな困ってる。でも気がついていない。
0192名前は開発中のものです。
2009/02/23(月) 17:57:19ID:Kk+tvzE1オブジェクト指向的スパゲッティコードのようなもの
GOTOを使ったスパゲッティコードの方がまし
Lisperが書いた本でlisp最高最高書いてあったからよく読んでみたら
DSLのようなメタをその言葉を知らないまま絶賛していた
Lisperってのはすごいんだかすごくないんだかよくわからない人達だった
実装の要点である問題領域をいかに簡単に書くかということこそが
最重要であるのに、そのアプローチを真っ向から阻むタスクシステムを
俺は許せない、許せんのだよ
タスクシステム死すべき死すべき
0193名前は開発中のものです。
2009/02/23(月) 18:06:49ID:7qNmU6oR「簡単に書いてやろう」その発想がすでに誤り。
タスカーもアンチタスカーも同じ場所をぐるぐる回ってるだけ。
0194名前は開発中のものです。
2009/02/23(月) 18:22:16ID:JKBRWfYb>>107の書いてた自転車置き場の議論だっけ?良く納得した。
早々に退散させてもらうぜ。
0195名前は開発中のものです。
2009/02/23(月) 18:42:04ID:DYVLGFTCタスク信者はひとくくりにしていい
だがタスク信者でないものはひとくくりには出来ない
それはログを見れば分かる。それぞれ批判の切り口が違う
読まないから分からない。こういう一見さんに限って
俯瞰視点を気取って分かったような口を利き
稚拙な総括で締めくくろうとする
タスク信者以上に邪魔な存在だ
0196名前は開発中のものです。
2009/02/23(月) 18:45:03ID:2rXEX53B結論なんてとっくにでてるよ。
余暇にやることが無いからとりあえずアンチと信者に分かれて鬼ごっこしてるだけ。
0197名前は開発中のものです。
2009/02/23(月) 18:47:56ID:DYVLGFTC哲学?そんな高尚なものではない
どうでもいい役割に、どうでもよくない重要な役割を無理に与え昇格させようと試み
どうでもいい実装を、どうでもよくないウルテクであるかのように喧伝する
これはハッタリ詐欺だ。昔を知らないアマチュアを騙くらかそうと躍起になる石器人の産物だ
0198名前は開発中のものです。
2009/02/23(月) 18:59:34ID:7qNmU6oR残念ながら私は前スレの510だ。
一見さんどころか、プログラムすら投じている常連だ。
むしろ、私が居ないとこのスレは回らない。もはやネタが無いからな。
>読まないから分からない。こういう一見さんに限って
>俯瞰視点を気取って分かったような口を利き
>稚拙な総括で締めくくろうとする
自分にレスして楽しいの?
さ〜今宵も盛り上がってまいりました!!
0199名前は開発中のものです。
2009/02/23(月) 19:04:16ID:Kk+tvzE1複雑だが重要な箇所や、試行錯誤が必要な箇所
何度も書き換える必要のある箇所をDSLで記述を簡潔にする
それ以外は多少複雑になってもかまわない
一度しか書かない複雑な箇所と、何度も書き直す簡単な箇所のみで
システム全体が組まれていれば
トータルでの開発コストが最小になる
逆に複雑な箇所を何度も書き直したら莫大なコストになるってことぐらい
少し考えればバカでもわかるはずだ
0200名前は開発中のものです。
2009/02/23(月) 19:11:49ID:7qNmU6oRDSLだと何で簡単になるの?
仮に何らかの理由で簡単になるとして、理由が分かってるのならDSLでなくても良くない?
なんでわざわざ言語作るの?
0201名前は開発中のものです。
2009/02/23(月) 19:18:35ID:2rXEX53Bだったらアセンブリ言語だけ使ってろよ
0202名前は開発中のものです。
2009/02/23(月) 19:20:54ID:Kk+tvzE1DSLを理解していればそんな反論にはならないのに
やっぱりお前はバカなのだな
他人の言葉を借りて本質を理解することが出来ない
反論の余地のない要点を避けて、揚げ足取りをしているだけ
自分の言っていることすらもわかってないんじゃないのか
自分で言い出した事に対する返答に対して揚げ足取りなんて
ずいぶんと姑息な手を使うのが好きなようだな
何について話しているのかすらも忘れて、ただひたすらに
他人を黙らせるためだけに語るのだろ
それは罵倒するだけの人間と同じ種類の人間
そんな奴を見てはいそうですねといえるはずもなかろう
おまえもうんこと一緒に便器に流れてしまえ
このうんこやろう
■ このスレッドは過去ログ倉庫に格納されています