トップページgamedev
1001コメント504KB

タスクシステム総合スレ part5

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2009/02/19(木) 02:21:01ID:k4ODtuXP
タスクシステムについての議論、相談、質問、雑談などのスレです

part4 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」と明示してください
 そうでない場合はカスタム版タスクであることを明示してください

・人を憎んで言語を憎まず
0115名前は開発中のものです。2009/02/21(土) 16:38:17ID:07PQbtcV
>>113
あんたはプログラミング経験が浅くてわかってないんだろうが、ループも、二重ループにするとき、
i,jの添え字を間違えたり、null判定を忘れたり、continueを書き忘れたりするのが人間ってものなの。

そういう定型化している部分を共通部分として書き出して、どこか別のところに追いやったほうが
バグは減るわけ。それは別にタスクシステムでなくてもいいのだが。

forがforeachになっただけでずいぶんバグが減る。
foreachの終了のときのハンドラを定義する構文があればさらに安全性は高まる。

そうやって抽象化と共通部分の括りだしを繰り返して書いていくのがプログラムだろう。
0116名前は開発中のものです。2009/02/21(土) 16:40:14ID:3HETWV4t
>>111
>このまま規模が大きくなっても、このパーセンテージは揺らがない。
どこがそんなにラクになるのかなと見直したが、2重のforループがTASK2と書けるんだね。
ここでだいぶ文字数稼いでるみたいだ。
んで、それがそんなにうれしいことなのかと言われるとNOな訳で。
0117名前は開発中のものです。2009/02/21(土) 16:40:41ID:4jF5VqD/
>>115
だから

タスクシステム=ループのカッコとnull判定をなくした最新鋭のシステムです

でいいんだろ?
0118名前は開発中のものです。2009/02/21(土) 16:41:07ID:07PQbtcV
>>114
> 正直、差分がそこしか見えなかったんだからそれでいいんだよな?

全然違うね。

510のように抽象化することで、自動並列化のようなことが可能になってくる。

まあ、510のソースを自動並列化するのは正直無理だが、もう少し抽象化して、
各タスクの役割を明確に記述できれば自動並列化できる。
0119名前は開発中のものです。2009/02/21(土) 16:41:26ID:P36r7rTD
>>107
「ウォークマン」みたいなものじゃない?
最初に有名になって、それ以降類似したものの総称として
便利だから名前だけ使ってるって。

>非ゲームプログラマがTaskという名前のクラスを見て、何なのかすぐ理解できるのかってことですよ。
タスクシステムを使うのはゲームプログラマでしょ。普通は。

いちいち現場で「これはオブジェクトを管理するシステムで更新と描画で登録関数が呼ばれて…」
とか説明するより「タスクシステム的なもの」の一言でゲームプログラマならだいたいって通じるし。

ま、デザインパターンみたいにちゃんと定義と命名されればいいんだろうけど
ゲーム業界固有の物だしねぇ
0120名前は開発中のものです。2009/02/21(土) 16:41:35ID:07PQbtcV
>>116-117
>>118
0121名前は開発中のものです。2009/02/21(土) 16:45:39ID:4jF5VqD/
>>118
それは>>510からはいえないな
実際、>>510>>641の間で自動化云々って話はないわけだし
自動化を証明したければ比較のソースを書いてからだな
それまではいっちゃいけねぇだろ
俺も否定しないし
少なくとも>>510>>641の間では自動化は見えなかった
今回はこれが結論
0122名前は開発中のものです。2009/02/21(土) 16:52:23ID:3HETWV4t
まあ、2重のforループで文字数稼いでいるということは、
forループの中身が増えれば増えるほどその稼ぎは薄まる訳だ。
規模が巨大になればなるほどパーセント減るようにしか見えないぞ。
その辺どうなのよ。
0123名前は開発中のものです。2009/02/21(土) 16:55:30ID:07PQbtcV
>>121
510と641を並列化するソースを書き比べればすぐにわかるよ。
そんな本格的なものでなくていいから。

2重ループでi×jのループ回してるところ、あれをi×j / N のループに
分けて実行して、すべてのスレッドの終了をセマフォで待つだけでいいよ。
0124名前は開発中のものです。2009/02/21(土) 16:56:43ID:07PQbtcV
>>122
> forループの中身が増えれば増えるほどその稼ぎは薄まる訳だ。
> 規模が巨大になればなるほどパーセント減るようにしか見えないぞ。

それはもちろん正しい。そのへんはゲームの性質によるだろう。
0125名前は開発中のものです。2009/02/21(土) 17:14:52ID:3HETWV4t
>>124
>>111
0126名前は開発中のものです。2009/02/21(土) 17:27:14ID:iOCBxjYv
タスクシステムとやらのメリット
コードが一割減

タスクシステムのデメリット
可読性が低くなる


この調子でお願いします
メリットわかってるんだったらごまかさずに書けよ
そんな出し惜しみばかりするから無駄に荒れる
0127名前は開発中のものです。2009/02/21(土) 17:35:18ID:07PQbtcV
>>126
コード削減、一割減はちょっと違うと思うな。
今回の例ではタスクシステムを使わないと27%増。

俺の感覚では、だいたいこの数字はどんなゲームでもそんなに変わらなくて
平均すれば20%前後だと思うな。これが10%程度ってことはないな。

並列化とかもっと大がかりな仕組みがタスクシステム側に用意されていれば
この差はもっと広がるしな。まあ、それをタスクシステムと呼んでいいのかは知らんが。
0128名前は開発中のものです。2009/02/21(土) 17:46:01ID:iOCBxjYv
じゃあ二割減でもいいや

開発速度向上はない、可読性が低いものほど開発に時間がかかるから
タスクシステムとやらのデメリットとして
開発に時間がかかるというのも追加できる

この調子ならメリットデメリットを列挙できそうだな
選択肢になりうるかどうかはそれを見れば判断できるだろう
化けの皮を一枚ずつはいでいくのは楽しいの
0129名前は開発中のものです。2009/02/21(土) 17:52:15ID:07PQbtcV
>>128
> 開発速度向上はない、可読性が低いものほど開発に時間がかかるから

ソース全部理解しなくても、510のタスクシステムは使えるだろ。

TASK2(クラス名A,クラス名B)
{
クラス名A1.XXX = YYY;
クラス名B2.ZZZ = WWW;
}

こう使うだけじゃん。説明に1分も要さないと思うが?
0130名前は開発中のものです。2009/02/21(土) 17:52:47ID:Kwr5xaMF
>128
> 開発速度向上はない、可読性が低いものほど開発に時間がかかるから
> タスクシステムとやらのデメリットとして

まずタスクシステムのどこが可読性低いのかを示してもらわないと。

FSMになってるところ? 関数ポインタの部分? ごった煮リスト?
0131名前は開発中のものです。2009/02/21(土) 18:15:26ID:D/oVP314
>>130
自分のタスク内で完結しない処理に関しては、全部グローバル変数経由

ゲーム中のあるシーンを想定した場合、そこで何のタスクがどういう順番で走るかが、
コードの一箇所を見てもわからない。

0132名前は開発中のものです。2009/02/21(土) 18:15:57ID:4jF5VqD/
>>129
でも読みにくいなぁ、おいw
それが何を表してるのかさっぱりわからないぜw
ループ隠しただけなのになw
0133名前は開発中のものです。2009/02/21(土) 18:24:15ID:hYClRP74
>>131
>自分のタスク内で完結しない処理に関しては、全部グローバル変数経由
そんな処理するのはタスクじゃないだろ。
0134名前は開発中のものです。2009/02/21(土) 18:26:52ID:D/oVP314
>>118
> もう少し抽象化して、各タスクの役割を明確に記述できれば自動並列化できる。
そんな簡単じゃないよ。

並列処理は計算機科学の分野では長らく研究されていて、いろいろ知見が積み重なってるんだが、
少なくとも 510 からは、自動並列化につながる筋道がまったく見えない。

夢が大きいのはいいんだが、まったく現実性が無いのもどうかと思うぞ。
0135名前は開発中のものです。2009/02/21(土) 18:32:19ID:a9F+sDW/
タスク擁護派から言わせてもらうが、>>129 は読みづらいよ
初めて読む STL や Loki や boost と同じくらいにね。俺なら使わん

結局、あるライブラリを使うメリットは普及してるかどうかだ
strcpy や strncpy を使うメリットはなんだ?
みんなあの仕様はおかしいと感じているのに? タスクもそれと同じこと。

そして、普及さえしていなければメリットはないと考えて必死で叩くお前らは正しい
0136名前は開発中のものです。2009/02/21(土) 18:40:14ID:07PQbtcV
>>134
> 並列処理は計算機科学の分野では長らく研究されていて、いろいろ知見が積み重なってるんだが、
> 少なくとも 510 からは、自動並列化につながる筋道がまったく見えない。

「自動」の意味を誤解しているようだが、
自動車は、自動的に目的地まで運んでくれる乗り物ではないのと同様、
人間が何もしなくてもいいという意味ではない。

俺が「自動」並列化と言っているのは>>123の意味。
例えば、TASK2をP_TASKと人間が書き換えればあとは自動的に並列化してくれるように改造するのは容易。

なんでこれが出来ないと思うのか、俺はお前らの技術力を疑いたくなる。本当にお前らプログラマなのか?
0137名前は開発中のものです。2009/02/21(土) 19:05:26ID:D/oVP314
>>136
> なんでこれが出来ないと思うのか
その程度で済むなら OpenMP がやってる
0138名前は開発中のものです。2009/02/21(土) 19:18:40ID:4jF5VqD/
>>136
なんにも自動化しないだろw
0139名前は開発中のものです。2009/02/21(土) 19:35:06ID:07PQbtcV
>>137-138
お前らが何もわかってないただの自称プログラムだというのは十分わかった。

123すら出来ないとはな。
0140名前は開発中のものです。2009/02/21(土) 19:51:24ID:07PQbtcV
>>138
お前本当に日本人か?どう見ても中国人だろ。

前スレ、前前スレから日本語が極端に不自由な奴が二名いるみたいだが、お前はそいつだろ。

プログラム以前に日本語教室行ってこいよ。
0141名前は開発中のものです。2009/02/21(土) 19:59:47ID:4jF5VqD/
もはや進む方向が頭おかしいじゃん
ループなんかはずして喜ぶプログラマいないってw
むしろ、ループ処理してるならfor文を見えるところにおいておいてほしいだろ
誰がこんな構造にして喜ぶのか?
ちょっとは考えろよ
0142名前は開発中のものです。2009/02/21(土) 20:09:26ID:D/oVP314
>>139
依存関係も副作用も無いコードなら、そら簡単に並列処理できるさ。数値計算だと
割と多いが、ゲームでそれはほとんどないだろ。
0143名前は開発中のものです。2009/02/21(土) 20:43:23ID:HdiuLFdj
日本語がおかしかったら中国人ってなんできめつけんの?
インド人かもしれんし韓国人かもしれんだろ
0144名前は開発中のものです。2009/02/21(土) 20:43:36ID:iOCBxjYv
可読性に関してはDSLの圧勝なので
それに比べてタスクシステムは可読性がないと言えるのは間違いないよ
専門家でも読むのが難しい本と、幼稚園児が読める絵本とでは
同じ文字数だとしても
絵本の方が圧倒的に速く読めるでしょう、当たり前だけどな

使えるから使えると言ってるけど
使ったら他の選択肢がなくなるから、使えるからと言って考えなしに使うなと
昔の偉い人とエロイ人もゆってた

つまり、エロエロよー
0145名前は開発中のものです。2009/02/21(土) 20:47:01ID:Dmt7DoEE
>>142
横槍ですまんが、あくまでゲームで並列処理は難しいと決め付けるのは良くない。
ゲームは依存化が明確にしやすく、
割と並列化しやすいとMTフレームワークの中の人が言っております。
http://game.watch.impress.co.jp/docs/20070131/3dlp.htm
>石田氏は「タスクという観点から見ると、依存関係は最小化でき、
>むしろゲームプログラムは並列化しやすいともいえるんです」と、
>これまでのゲーム開発の常識とは正反対の意見を主張する。

これには自分も驚いたが、
MTフレームワークの製作者が実践してそう思ったのなら説得力があると思わないか?
まぁ、予想(予測)と理論と実践はそれぞれ違うって事だ。
0146名前は開発中のものです。2009/02/21(土) 20:56:31ID:D/oVP314
>>145
予想というか、仕事で実際にゲーム書いてた経験談なんだが。モーションとかレンダリング
まわりのジョブはわりと分割しやすいんだけど、いわゆるゲームロジックに絡む部分は、
かなり難しい。

排他制御は特にバグが入りやすい部分だし、仕様変更多発が想定されるゲームロジック
部分を並列処理するのはリスキー。
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
ID:Dmt7DoEE
前スレの>>510は名乗るのをやめても
タスク信者の特徴は消せないのだから
名乗るといい

名無しでの火消し&誘導は無駄
0151名前は開発中のものです。2009/02/21(土) 21:43:42ID:Dmt7DoEE
いや。俺は以前>>22を書いた者で、すまんが510とは別人だ。
実際にタスクについては主に見通しの問題で否定的で、参照構造についても目的が無ければ無意味な足枷でしかないと考えている。
ただ、並列化については興味があるわけ。マルチスレッドで速度を稼げるのならそういう技術も覚えたいと思っている。
そんな中、自動並列化についてタスクにはその可能性がなきにしもあらずと考えている。
まぁ自分は実装するのはゴメンだがね。
0152名前は開発中のものです。2009/02/21(土) 21:49:55ID:07PQbtcV
>>142
> 依存関係も副作用も無いコードなら、そら簡単に並列処理できるさ。数値計算だと
> 割と多いが、ゲームでそれはほとんどないだろ。

あんた、本当に大きなゲームのプログラム書いたことがなさそうだな。

並列化して処理時間を稼ぎたい部分って、同期のためのコストとかもあるから
実際はかなり粒度の大きな、単純な計算が繰り返される処理なんだよ。
ゲームのうち、衝突判定とかは特にそういう計算ばっかりだ。

まあ、>>145でもすでに指摘されているが。

このスレは本当に商用で大きな規模のゲームを作ったことがあるのかと
疑いたくなるような奴ばかりで俺はただただ呆れるばかりだ。
0153名前は開発中のものです。2009/02/21(土) 21:50:34ID:D/oVP314
>>151
> そんな中、自動並列化についてタスクにはその可能性がなきにしもあらずと考えている。
そもそも、CPU 食ってるのはゲームロジックより、ヒット判定やモーション処理だったり
しないか? 将棋とかの AI は別だけどさ。

そこは仕様が比較的安定しているから、作りこむだけのコストがかけられる。自動並列化
なんていわずとも、従来のロックベースの方法で OK。
0154名前は開発中のものです。2009/02/21(土) 21:55:00ID:3HETWV4t
一般的な自動並列化と俺定義の自動並列化で話が通じ合ってないな、お前ら。
0155名前は開発中のものです。2009/02/21(土) 21:59:19ID:D/oVP314
>>152
衝突判定は、単に「ぶつかってる・いない」を判定するだけなら簡単なんだが、衝突の
解決が絡むと並列化が割と難しい。

衝突解決には、たとえば「壁は動かない」「プレイヤーが壁に当たったら押し戻される」
「プレイヤーと NPC があたったら NPC 優先」とかルールを決めて、それに応じて
優先順位つけて解決していくのが一般的だと思うが、問題は解決するときに相互
作用が発生することなんだよな。

シーケンシャルに処理するなら、割と手抜きアルゴリズムでもそれっぽく見えるんだが、
並列処理するとなったら、とたんに複雑さが増す。前に一度やってみてメゲた。
0156名前は開発中のものです。2009/02/21(土) 22:02:28ID:Dmt7DoEE
>>153
コンシューマならCPUの数と使用用途が特定されてるもんだが、現実的に考えて決めうちでが妥当だと思う。
PCのような特定されないマルチCPUの環境を考えると、自動で並列化するのは面白いんじゃないんかねぇ……。
自動並列化といっても、正直こればっかりは実装してみないと、
どのようにスレッド分配され、パフォーマンスが上がるのか下がるのかは、議論できんところだね。
0157名前は開発中のものです。2009/02/21(土) 22:08:58ID:3HETWV4t
お前らw

>>136で自動並列化の俺定義出してるんだから、ここはそれに合わせてやれよ。
>>136はライブラリ提供者が、ライブラリ利用者に分からないようこっそり裏で並列化(手作業)しやすいよ。
と、言ってるんじゃないの? 違うか?

ちなみにID:D/oVP314とその他は一般的な意味で話してるような気がする。
ググって出てくるような一般的な意味ね。
0158名前は開発中のものです。2009/02/21(土) 22:14:35ID:D/oVP314
>>157
っつか、それはデータの依存性自動検出とかできないと無理なわけで。ハードルが
超高い。
0159名前は開発中のものです。2009/02/21(土) 22:16:13ID:3HETWV4t
ループの抽象化が人為的ミスを防ぐとか、>>123の意味で処理を挿げ替え易いというのは分かる。

出来るだけ先入観を抜きにして、もう一度>>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
>>158
その超高いハードルを、どうしたら解決できるだろうかを議論しようじゃないか。
たとえば>>510はデータ集約について提案し、
参照構造の是非について議論しようとしていたようだよね。
オブジェクトの所有/解放を(ライブラリ内で見えないように)行うことで、
並列化の足掛かりを見出そうとしたようだよ。第1歩というか、パフォーマンス的には第-1歩だけど。
0161名前は開発中のものです。2009/02/21(土) 22:25:18ID:3HETWV4t
まあ、>>123みたいな部分で泥臭い作業が発生したとしても、
俺は>>510より>>641のほうが良いね。
「シンボル'Star2'は定義されてません」とかVCに言われてイラつくこともないし。
無駄や不透明な部分があると精神衛生上良くない。
0162名前は開発中のものです。2009/02/21(土) 22:26:57ID:D/oVP314
>>160
> その超高いハードルを、どうしたら解決できるだろうかを議論しようじゃないか。
本気でやるなら、サーベイ論文読むところからスタート。かなり研究されてる分野だから、
ゼロから何かやるとか時間の無駄なので。
0163名前は開発中のものです。2009/02/21(土) 22:31:42ID:4jF5VqD/
>>162
そんなくだらいこと研究して金もらってる奴がいることに驚きだぜw
0164名前は開発中のものです。2009/02/21(土) 22:36:21ID:07PQbtcV
>>161
> 「シンボル'Star2'は定義されてません」とかVCに言われてイラつくこともないし。

インテリセンスでるのにそんなミスやるはずがないじゃん。あんた使ってるのVC98?
0165名前は開発中のものです。2009/02/21(土) 22:39:35ID:D/oVP314
>>163
並列処理のアルゴリズム・データ構造まわりは昔から研究ネタとしてはよくあるんだが、
単一プロセッサの性能向上が頭打ちになるのが現実的になってきた頃から、Intel, IBM を
はじめとした企業が金と人突っ込んでる。

公開されていて実際に開発に使えるレベルになっている成果というと、たとえば Intel
Threading Building Block とかさ。
0166名前は開発中のものです。2009/02/21(土) 22:40:53ID:3HETWV4t
いや、自動並列化は普通に研究対象としてアリだろ。
これから必要になってくる分野だぞ。

タスクシステムにしてもな、
ゲームの根幹的な制御部に使うのはかえって面倒そうなのでやっぱり嫌だ。
単純で、相互作用がなくて、あったとしても誤差許容できて、計算結果はゲーム性に影響しない。
ベストエフォートで充分なところなら使えそうだとは思った。
大量の火花エフェクトとか、そういう余力でやればいいような部分。
0167名前は開発中のものです。2009/02/21(土) 22:42:18ID:3HETWV4t
>>164
右クリック→定義へ移動
0168名前は開発中のものです。2009/02/21(土) 22:45:19ID:Dmt7DoEE
>>162
すまん。俺も本気でやるつもりは無いんだ。
正直、並列化には憧れているが、鬼門だと思ってる。それが手動であっても自動であってもさ。
ゲームではない自分の専門分野でIntelC++とMPIで稼ぐ実装をした事があるが、
冗長になった割にパフォーマンスが出なくて萎えた経験がある。

もしゲーム特化で、安全で保守の掛からないデータ構造を有するタスク自動並列化のライブラリが出来たのなら、
金貰ってもいいレベルだと思う。個人が趣味でやる分野じゃないねぇ。
0169名前は開発中のものです。2009/02/21(土) 22:54:04ID:4jF5VqD/
結局、自動化ってあんまり意味ないよね
プログラムって最低限設定しなきゃいけない内容は絶対に自動にならねぇし
結局は上にスルーパスして設定を任せるだけになる

スクリプト組んでも苦労する人間が変わるだけで絶対的な作業量は無くならない
むしろ、トータルでは増えてしまう場面のが多いかもね
そりゃプログラマの仕事があんまり高度で・・・っていうならわかるけど
できたスクリプト言語がC言語とあまり変わらんようなのってどうよ?

ってのと同じでタスクシステムも結局処理をスルーパスしてるだけで
自動化してるように見えるだけでしょ?
0170名前は開発中のものです。2009/02/21(土) 23:00:58ID:Dmt7DoEE
>>169
ん?複数スレッドにタスク単位で処理を投げてパフォーマンスを稼ぐ「自動並列化」の話だよ?
0171名前は開発中のものです。2009/02/21(土) 23:02:21ID:D/oVP314
>>169
データ構造と処理内容を限定することで、並列処理を定型化して簡単に使えるように
するってのは、話としては分かる。

ただ、それを目指すならタスクとやらは starting point としては全然ダメなのが萎える。
0172名前は開発中のものです。2009/02/21(土) 23:02:42ID:07PQbtcV
>>169
ID:4jF5VqD/はド素人か。本当にゲーム作ったことあんのか?

お前、一人だけレベルが低すぎる。もう引っ込め。
0173名前は開発中のものです。2009/02/21(土) 23:03:41ID:3HETWV4t
とりあえず、煽るのはヤメにしようぜ。面倒だ。
0174名前は開発中のものです。2009/02/21(土) 23:05:14ID:Dmt7DoEE
同じく煽るのはやめましょう。
識者との有意義な話。(できれば建設的な話)にもっていきたい。
0175名前は開発中のものです。2009/02/21(土) 23:38:57ID:LbjEvDmu
松浦健一郎の本って内容濃いね
0176名前は開発中のものです。2009/02/22(日) 02:17:35ID:zvJaILDC
>>170
え?そんな話してんの?w
絶対無理だと思うよ
ゲームで一番重い処理はオブジェクト同士の関連だって
少なくともデータ自体は分離されてなきゃ並列に動けないと思うぜ
ごった煮にした時点でそんなの無理じゃね?
0177名前は開発中のものです。2009/02/22(日) 05:31:48ID:/MSzm31i
ゲームロジックで一番重たいのは当り判定だ。
そんなものしらないのかよ。糞が。
0178名前は開発中のものです。2009/02/22(日) 05:51:25ID:/MSzm31i
今、oyaとkoクラスがあって、それぞれupdateメソッドを持っている。
koクラスのupdateメソッドはoyaクラスのupdateメソッド内で呼ばれる。
koクラスのupdateメソッド内の処理は、ある特定の情報(ここではinfoとする)を必要としている。
infoをどのようにしてkoクラスのupdateメソッド内の処理に参照させればよいか。
1.グローバル変数
2.引数
3.シングルトンパターン
0179名前は開発中のものです。2009/02/22(日) 06:16:09ID:ihng4iqV
複数生成されちゃ困るような情報ならシングルトンになるんじゃないの?
oyaクラスで生成する情報であれば引数で渡すのが楽だろうし
0180名前は開発中のものです。2009/02/22(日) 08:48:04ID:W9e8MC1E
>>159
>・星衝突で自分同士の場合のcontinueが抜けてる。
j=i+1から回してるから自分同士ありえないな。
万有引力をj=0から回すだけで良い。
0181名前は開発中のものです。2009/02/22(日) 10:26:16ID:2krgEtKU
>>177
ゲーム内容も明示せずに
>ゲームロジックで一番重たいのは当り判定だ。
ってゲーム一般として断言できちゃうあたりがステキ

物理演算バリバリの3Dコリジョンチェックと
2Dシューティングのボックス判定の繰り返しは違うし
AIの計算時間、モデルのアニメ計算etc...の時間もゲームによって違うのにね。
0182名前は開発中のものです。2009/02/22(日) 17:28:01ID:DmOCWQfi
>>177
ジャンルによる。将棋だと AI の方が重い。
0183名前は開発中のものです。2009/02/23(月) 07:26:36ID:sG7Lzgrq
タスク信者どもやっと死んだか?
0184名前は開発中のものです。2009/02/23(月) 08:08:01ID:keyUucFf
プログラムが一行も書けないアンチタスカーのポエマーが死んだんじゃね?
0185名前は開発中のものです。2009/02/23(月) 09:35:14ID:7qNmU6oR
タスク信者は死なんよ。
なぜならアンチタスカーこそが最大のタスク信者だから。
俺もアンチタスカーだが、皆がタスクシステムの利点に気づかないように、
あえてアンチを演じている。
気づかれると日本経済が破綻するからな。
0186名前は開発中のものです。2009/02/23(月) 12:39:27ID:sG7Lzgrq
日本経済脆過ぎだろ
0187名前は開発中のものです。2009/02/23(月) 16:16:29ID:7qNmU6oR
皆それが分からずに回りをぐるぐる回ってるだけ。
アメリカではオブジェクト指向での陽動作戦が主流。
一部日本でもその余波の影響を受けてる。2重3重に騙されて踊らされてる状態。
何かおかしいと気がついたインテリたちはLisp使ってる。
しかしそこどまり。ロジックでは根源にたどり着かない。
防空壕の中に居ては何も出来ない現実。
0188名前は開発中のものです。2009/02/23(月) 16:58:53ID:JKBRWfYb
日本語でお願いします。
0189名前は開発中のものです。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
>>193
タスク信者はひとくくりにしていい
だがタスク信者でないものはひとくくりには出来ない
それはログを見れば分かる。それぞれ批判の切り口が違う

読まないから分からない。こういう一見さんに限って
俯瞰視点を気取って分かったような口を利き
稚拙な総括で締めくくろうとする

タスク信者以上に邪魔な存在だ

0196名前は開発中のものです。2009/02/23(月) 18:45:03ID:2rXEX53B
>>194
結論なんてとっくにでてるよ。
余暇にやることが無いからとりあえずアンチと信者に分かれて鬼ごっこしてるだけ。
0197名前は開発中のものです。2009/02/23(月) 18:47:56ID:DYVLGFTC
>>194
哲学?そんな高尚なものではない
どうでもいい役割に、どうでもよくない重要な役割を無理に与え昇格させようと試み
どうでもいい実装を、どうでもよくないウルテクであるかのように喧伝する

これはハッタリ詐欺だ。昔を知らないアマチュアを騙くらかそうと躍起になる石器人の産物だ
0198名前は開発中のものです。2009/02/23(月) 18:59:34ID:7qNmU6oR
>>195
残念ながら私は前スレの510だ。
一見さんどころか、プログラムすら投じている常連だ。
むしろ、私が居ないとこのスレは回らない。もはやネタが無いからな。

>読まないから分からない。こういう一見さんに限って
>俯瞰視点を気取って分かったような口を利き
>稚拙な総括で締めくくろうとする

自分にレスして楽しいの?


さ〜今宵も盛り上がってまいりました!!
0199名前は開発中のものです。2009/02/23(月) 19:04:16ID:Kk+tvzE1
やれやれ、わからない奴もいるんだな
複雑だが重要な箇所や、試行錯誤が必要な箇所
何度も書き換える必要のある箇所をDSLで記述を簡潔にする
それ以外は多少複雑になってもかまわない
一度しか書かない複雑な箇所と、何度も書き直す簡単な箇所のみで
システム全体が組まれていれば
トータルでの開発コストが最小になる
逆に複雑な箇所を何度も書き直したら莫大なコストになるってことぐらい
少し考えればバカでもわかるはずだ
0200名前は開発中のものです。2009/02/23(月) 19:11:49ID:7qNmU6oR
>何度も書き換える必要のある箇所をDSLで記述を簡潔にする
DSLだと何で簡単になるの?
仮に何らかの理由で簡単になるとして、理由が分かってるのならDSLでなくても良くない?
なんでわざわざ言語作るの?
0201名前は開発中のものです。2009/02/23(月) 19:18:35ID:2rXEX53B
>>200
だったらアセンブリ言語だけ使ってろよ
0202名前は開発中のものです。2009/02/23(月) 19:20:54ID:Kk+tvzE1
揚げ足取りしかできないのかバカな奴
DSLを理解していればそんな反論にはならないのに
やっぱりお前はバカなのだな
他人の言葉を借りて本質を理解することが出来ない
反論の余地のない要点を避けて、揚げ足取りをしているだけ
自分の言っていることすらもわかってないんじゃないのか
自分で言い出した事に対する返答に対して揚げ足取りなんて
ずいぶんと姑息な手を使うのが好きなようだな
何について話しているのかすらも忘れて、ただひたすらに
他人を黙らせるためだけに語るのだろ
それは罵倒するだけの人間と同じ種類の人間
そんな奴を見てはいそうですねといえるはずもなかろう
おまえもうんこと一緒に便器に流れてしまえ
このうんこやろう
0203名前は開発中のものです。2009/02/23(月) 19:22:03ID:7qNmU6oR
CはアセンブリのDSLではない。
0204名前は開発中のものです。2009/02/23(月) 19:25:28ID:2rXEX53B
C言語だと何で簡単になるの?
仮に何らかの理由で簡単になるとして、理由が分かってるのならC言語でなくても良くない?
なんでわざわざ言語作るの?
0205名前は開発中のものです。2009/02/23(月) 19:27:46ID:Kk+tvzE1
頭の悪いマナーも知らないクソやろう7qNmU6oRに対してわかりやすく書いてやろう

>問題領域が簡単に書けたとしても、それ以外の部分が複雑になるだけ。
>「簡単に書いてやろう」その発想がすでに誤り。
に対する反論が
>>199
というわけだ
おまえの頭の中にはちゃんと脳みそが入ってますかあーあー
なんならうんこでも付け足してやろうか

>なんでわざわざ言語作るの?
この一文でDSLがなんなのかを全く理解していないのがわかる
ばーかばーか
0206名前は開発中のものです。2009/02/23(月) 19:31:20ID:7qNmU6oR
なんかファビョられた。

DSLは、問題を複雑にしている原因を一網打尽に他所へ隔離するための一手段でしかない。
このスレみたいにな。

>複雑だが重要な箇所や、試行錯誤が必要な箇所
>何度も書き換える必要のある箇所をDSLで記述を簡潔にする

なにこの曖昧な記述。因果関係が意味不明。
0207名前は開発中のものです。2009/02/23(月) 19:37:49ID:7qNmU6oR
>>204
C言語とアセンブリはDSL的には同じもの。
どっちも汎用言語で、どっちも同じ問題を解決するために開発されたものだから。
0208名前は開発中のものです。2009/02/23(月) 19:49:08ID:7qNmU6oR
あげあし取りはどっちだか。枝葉に付き合うのは大変だ。

俺の主張を纏めておくと、
・問題を複雑にしている原因を一網打尽に他所へ隔離することが大切。
・DSLはその一手段。
・目的が達成されれば、他の手段でも良い。

DSLとか簡潔とか、関係ねぇ。センスが無いっていうのですかね、こういうの。
0209ID:EEKBitmg2009/02/23(月) 20:05:39ID:DYVLGFTC
>>198
残念ながら俺はHSP厨だ

で、タスクシステム=DBとかいうトンデモ論が意味分からないわけだが
てめぇ、またHSP叩いて逃げてんじゃねーぞチンカス
0210ID:EEKBitmg2009/02/23(月) 20:10:09ID:DYVLGFTC
何日も待ってたが、結局あの
「俺様が考えた超すごい新生タスクシステム>>510」提唱者は
タスクシステム=DBとか絶叫して逃げたままだ
0211名前は開発中のものです。2009/02/23(月) 20:14:58ID:sG7Lzgrq
DSLとタスクシステムってなんの関係もないじゃん
勝手にくつけるならまず>>2に関して自分がどういう立場なのかはっきりさせろよ
0212名前は開発中のものです。2009/02/23(月) 20:15:07ID:GaLE72iG
DSLを銀の弾丸と思ってるお前はタスカーと同じwwww
0213ID:EEKBitmg2009/02/23(月) 20:17:01ID:DYVLGFTC
既出のものを既出と理解しない。自動でないものを自動であると叫ぶ
ユーザーに処理の依存関係を分析させ、ユーザーの手で処理ステップを
依存関係の有無で分解させておいて、それを自動並列処理であるなどと言い放つ
おまけにそれが新規性に溢れた野心的試みとか吠える

俺みたいなガキンチョが吠えてるならまだ許せるけど、いい歳したオッサンが
こういう事して許されるの?
0214名前は開発中のものです。2009/02/23(月) 20:17:52ID:7qNmU6oR
>>209
説明しようと思ったけど、やっぱやめた。繰り返しになるからな。
■ このスレッドは過去ログ倉庫に格納されています