タスクシステム総合スレ part7
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001名前は開発中のものです。
2009/05/07(木) 13:33:06ID:u3YZJr5Epart6 http://pc11.2ch.net/test/read.cgi/gamedev/1238725539/
part5 http://pc11.2ch.net/test/read.cgi/gamedev/1234977661/
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」と明示してください
そうでない場合はカスタム版であることを明示してください
・人を憎んで言語を憎まず
0808名前は開発中のものです。
2009/08/08(土) 21:32:02ID:OnpPfR8B「自問自答」で、すでにレスの中で自分の答えに誘導してしまってるんだよな。
0809名前は開発中のものです。
2009/08/08(土) 22:00:00ID:Phb7PCA5特定の環境や実装について知りたいわけではありません。
あなたの知っているタスクシステムと名の付いたものについての返答を
してもらえれば十分だと思っています。
>646 の中に、質問者自身の答えが書いてあるのは確かですが、
その質問者の方とは違う答えがあるのではないでしょうか?
そういった点は >670 あたりでも説明されて回答が促されていますが、
やはり挙がらなかったようです。
まだ何か足りないでしょうか?
0810名前は開発中のものです。
2009/08/08(土) 22:02:22ID:xyBM8L8Yあんたの質問は矛盾してるよ。
0811名前は開発中のものです。
2009/08/08(土) 22:11:52ID:Phb7PCA5「具体的」と「主観的」とは矛盾しないものと思います。
たとえば「納豆にネギを刻むと旨いんだ」という主張は具体的で且つ主観的なものです。
確かにはじめから客観的で具体的な回答であればより望ましいのですが、
主観的で具体的な回答でも、未だ明らかでない客観的な事実を知るための
手がかりとしては貴重なものです。
主観的なものでもかまいませんので、おねがいします。
0812名前は開発中のものです。
2009/08/08(土) 22:18:49ID:xyBM8L8Y>>674
でこのスレは終わってないか?
主観的かつ具体的、でもこれじゃダメって理由を教えてくれや
0813名前は開発中のものです。
2009/08/08(土) 22:22:57ID:Phb7PCA5それは質問への回答ではないからです。
0814名前は開発中のものです。
2009/08/08(土) 22:25:32ID:xyBM8L8Yあらためて自分で質問してみな。
アンチの具体的な質問ってやつを。
0815名前は開発中のものです。
2009/08/08(土) 22:40:52ID:Phb7PCA5以下のようなものでいいでしょうか?よろしくおねがいします。
( >498 の質問から抽出。)
「タスクシステム」の主要な部分となる class Task や TaskSystem などに
どんなコメント(存在意義・使用目的の説明)をつけていますか?
( >646 の質問から抽出。)
「生成消滅が頻繁に発生する」というゲームを作る場合、「タスクシステム」を
使うことで別の方法よりも簡単に実装できるということですが、具体的に何と比較して
どの点が簡単になるのでしょうか?
「オブジェクトごとの挙動が異なる」というゲームを作る場合、「タスクシステム」を
使うことで別の方法よりも簡単に実装できるということですが、具体的に何と比較して
どの点が簡単になるのでしょうか?
「一定間隔で更新と描画を行う」というゲームを作る場合、「タスクシステム」を
使うことで別の方法よりも簡単に実装できるということですが、具体的に何と比較して
どの点が簡単になるのでしょうか?
0816名前は開発中のものです。
2009/08/08(土) 22:53:47ID:xyBM8L8Y> どんなコメント(存在意義・使用目的の説明)をつけていますか?
”コンストラクタ”とか”デストラクタ”とかコメントつけないのと同じ意味でたぶんつけんけど。
あえてコメントをつけるなら”タスクシステム”
> 具体的に何と比較してどの点が簡単になるのでしょうか?
これは質問がおかしい。
タスクシステムを使う人に対して何かと比較して質問したいなら
質問側で具体的な「タスクじゃない何か」を比較対象として出すべき。
悪魔の証明じゃないんだから。
0817名前は開発中のものです。
2009/08/08(土) 23:32:51ID:xyBM8L8Yそもそも存在「意義」・使用「目的」はソースのコメントで書くものじゃないだろ
引数とか戻り値とかの使用「方法」なら書くが・・・
0818名前は開発中のものです。
2009/08/08(土) 23:38:26ID:Phb7PCA5ありがとうございます。
> タスクシステムを使う人に対して何かと比較して質問したいなら
> 質問側で具体的な「タスクじゃない何か」を比較対象として出すべき。
「何かと比較して質問したい」わけではありません。
何と比較して簡単になると言っているのか、という質問をしているので、
比較対象は回答として挙げられるものと思っています。
0819名前は開発中のものです。
2009/08/08(土) 23:41:42ID:Phb7PCA5そうですか。コメントとして質問していては望む回答は得られないようですので、
少し質問を変えさせてもらいます。
「タスクシステム」の主要な部分となる class Task や TaskSystem などについて、
どんな存在意義・使用目的の説明をされていますか?
たとえばライブラリのドキュメントなどに記載されるような内容を想定しています。
よろしくおねがいします。
0820名前は開発中のものです。
2009/08/08(土) 23:43:07ID:xyBM8L8Y> 「何かと比較して質問したい」わけではありません。
> 何と比較して簡単になると言っているのか、という質問をしているので、
自分の質問を見返しておかしいとおもわないかな・・・?
0821名前は開発中のものです。
2009/08/08(土) 23:49:50ID:xyBM8L8Y> 「タスクシステム」の主要な部分となる class Task や TaskSystem などについて、
> どんな存在意義・使用目的の説明をされていますか?
>>2 のリンク先の方が詳しく図付きで説明してあるんでそっち見てくれ。
これを見て存在意義と使用目的が理解できんなら掲示板で説明しても理解できるとは思えん・・・
0822名前は開発中のものです。
2009/08/08(土) 23:51:01ID:SPaTpHk9PCでゲーム作る場合、ディスプレイのリフレッシュレートってまちまちでしょ。
(最近は液晶が普及したおかげで大概60Hzだが)
でもゲームのロジックは60Hzとかで固定したいでしょ。
(数値解析の精度が変わったり壁抜けしたりするのが嫌だから)
それで、ディスプレイのリフレッシュレートとゲームロジックの周期のギャップを埋める仕組みが
必要だと思うんだけど、みんなはどうしてる?
http://spitfire.client.jp/program/fps.html
0823名前は開発中のものです。
2009/08/08(土) 23:54:31ID:Phb7PCA5すいません。見返してみましたがおかしいと思うところはありませんでした。
0824名前は開発中のものです。
2009/08/08(土) 23:55:07ID:xyBM8L8Yゲームによる。
ゲーム中の計算時間単位をリフレッシュレート側の更新速度にあわせる方法。
リフレッシュレートは無視して固定FPSでやる方法(ティアリングは無視)
ゲーム計算処理は固定FPS、表示だけリフレッシュレート依存。
とかとか・・・
0825名前は開発中のものです。
2009/08/08(土) 23:59:03ID:Lca3wy1Vこれ面倒なんだよね。
0826名前は開発中のものです。
2009/08/09(日) 00:00:17ID:xyBM8L8Yすいません。何か人工無能と会話してるみたいであなたと話が通じる気がしません・・・
0827名前は開発中のものです。
2009/08/09(日) 00:17:45ID:4TaFdjmkありがとうございます。
改めてひとつずつ見てみることにします。
0828名前は開発中のものです。
2009/08/09(日) 00:20:01ID:4TaFdjmk> さて、話は前後しますが「処理」の部分を状態によって切り替える手法についてです。
> 最も単純な方法はおそらく、状態に番号をつけてif文やswitch〜case文で切り替える方法でしょう。
...
> そこで、タスクという手法が登場します。
このページで「タスク」の存在意義を示しているのはこの部分のようです。
しかし、これは仮想関数によって解決される問題だと思います。
むしろ仮想関数のほうが言語のサポートによって型安全に書きやすい分、
適切だと思います。
これだけのことのために以下のような注意事項に悩まされてしまうのでは、
まったく割に合わないと思います。
http://homepage3.nifty.com/moha/prog_attention.html
0829名前は開発中のものです。
2009/08/09(日) 00:23:59ID:4TaFdjmk> タスクシステムを採用すると、以下のメリットが得られます。
>
> * CPUの負荷を減らすことができる
> * メモリの使用量を節約することができる
> * ゲームを開発するのに適したシステムで開発できる
>
> デメリットとしては、
> 現代的なプログラムに比べると、分かりにくい部分があります。
>
> ジャンプ処理や、関数ポインタを使用するので、
> 泥臭いコードになりがちです。
メリット・デメリットがちゃんとまとめられていて助かりますね。
CPU 負荷については、関数ポインタによる分岐が多発する分、最近の CPU では
逆に不利になることが考えられます。
メモリの使用量については、独立したメモリプールの仕組みを使えば、
挙げられているタスクシステムのデメリットは回避しながら望む結果が得られます。
「ゲームを開発するのに適したシステム」については、残念ながら何のことか
わかりませんでした。(誰か解説してもらえますか?)
最後のやつがわからないままではありますが、総じてデメリットのほうが
大きいように思います。
0830名前は開発中のものです。
2009/08/09(日) 00:25:49ID:ryu4L4qwここに出てる問題で
仮想関数を使って解決できるのはワークオーバーだけ、ということを理解できたら
だいぶタスクが理解できてる、と言える。
先走って半端な理解のまま結論出さずに、ちゃんと理解してから結論だしな。
0831名前は開発中のものです。
2009/08/09(日) 00:27:32ID:LPRNL5Jt0832名前は開発中のものです。
2009/08/09(日) 00:29:23ID:CFq+cfTI> * メモリの使用量を節約することができる
> * ゲームを開発するのに適したシステムで開発できる
マジでこれどうやって検証したんだろうか?
0833名前は開発中のものです。
2009/08/09(日) 00:36:03ID:ryu4L4qw> CPU 負荷については、関数ポインタによる分岐が多発する分、最近の CPU では
> 逆に不利になることが考えられます。
関数ポインタによる分岐と通常関数による分岐、仮想関数による分岐
CPU上でどんな動作をしているのかイメージできてるのかな・・・?
> メモリの使用量については、独立したメモリプールの仕組みを使えば、
> 挙げられているタスクシステムのデメリットは回避しながら望む結果が得られます。
メモリプールを使ってタスクと同じことができるタスクのデメリットが無いシステム
ってやつを君が作ることが出来れば、誰もタスクシステムなんて使わなくなると思うよ。
タスクシステムなんて使ってゲーム作ってる現役ゲームプログラマの馬鹿どもに作ってみせてやりなよ。
君の素晴らしいシステムをww
0834名前は開発中のものです。
2009/08/09(日) 00:41:10ID:LPRNL5Jtいないから。
0835名前は開発中のものです。
2009/08/09(日) 00:43:03ID:ryu4L4qw仮想関数もタスクシステムも都市伝説、君か。
久しぶりにアンチらしいアンチが出没したな。
0836名前は開発中のものです。
2009/08/09(日) 00:47:59ID:4TaFdjmk> タスクシステムとは、これら複数のタスクを管理する仕組みであり、現在でも
> プロの現場で用いられています。長所は次の通りです。
>
> * ジャンルを問わず様々なゲームに適用できる
> * 並列処理をうまい具合に実現できる
> * ゲームの流れを自然な形で表現できる
> * 大規模なゲームも開発できる
> * タスクごとに独立しているため、複数人で開発できる
>
> 一方の短所は、タスクシステムの歴史が古いことに起因する、高すぎる自由度です。
> さまざまな実装方法があり、またオブジェクト指向が一般的ではなかった時代の
> 手法なためか、スパゲティプログラムや、データの隠蔽化が不十分なプログラムと
> なっている例も見かけます。
いちおう長所・短所をまとめて書いてくれてはいますが、どれもあまり
具体的ではなく、はっきりしません。
しょうがないので2ページ目まで見られる記事本文を読みすすめて見ました。
0837名前は開発中のものです。
2009/08/09(日) 00:49:09ID:4TaFdjmk> このようにタスクの削除にメモリ領域の解放を伴わないことによって自滅も
> 可能となり、プログラムの見通しが良くなる、という利点があります。
delete this できることが最初にあげた「ゲームの流れを自然な形で表現できる」
などの根拠になっているようですが、ここでタスクシステムとして紹介されて
いるような仕組みが無くとも delete this は可能です。
http://codezine.jp/article/detail/297?p=2
operator new/delete の独自定義も行っているのですが、本来メモリ割り当てと
解放しか行わないはずのこれらの処理の中でコンストラクタ・デストラクタ
相当の動作をしており、 C++ のオブジェクトモデルから外れてしまっています。
なにやら「デフラグ」という見慣れない機能があったのですが、実装を見ると
memmove() しています。これでは派生クラスのメンバには POD しか持てません。
どうも、この筆者は C++ に対する理解が不十分なようです。
おそらく std::list<Task> とでもすれば済みそうな仕組みを、標準ライブラリを
知らなかったがために一生懸命組み上げてしまった、その中で、自分が最近学んだ
珍しい機能を使ってみた、というものぐらいにしか見えません。
0838名前は開発中のものです。
2009/08/09(日) 01:11:47ID:ryu4L4qwその理解で言えば
A)タスクシステム使ったゲームは都市伝説で存在しない
B)タスクシステム使ったゲームを作るゲームプログラマは君よりレベルが低い馬鹿
C)タスクシステムの使いどころを理解できない君が馬鹿
のAかBになりそうだけど・・・
正解はどれだと思う?ww
0839名前は開発中のものです。
2009/08/09(日) 01:22:20ID:LPRNL5Jt本にはわからないだろうが。
0840名前は開発中のものです。
2009/08/09(日) 01:23:30ID:LPRNL5Jt0841名前は開発中のものです。
2009/08/09(日) 01:31:04ID:4TaFdjmk> タスクとは、いったい何なのでしょう?辞書や用語辞典を引いても、何の手助けにもなりません。
> タスクを一言で説明すると、
>
> ・実行アドレスを含む汎用ワークの連結リスト
>
> となるでしょうか。
仮想関数、標準コンテナの組み合わせで実現するのがよさそうです。
> 冒頭でも述べたように、タスクとは非常に原始的な処理です。
> 非常に少ない(数キロ〜数十キロバイトの)ワークエリアと、
> 至って非力な(数メガヘルツの)CPUパワーを有効活用する為のテクニック、
> それがタスク処理なのです。
そういうことなのでしょう。
関数を切り替えることで状態を切り替えるという手法は今でも適切に応用できる
場面があると思います。しかし、それを実現するためにシステムとして提供する
ところはありません。
0842名前は開発中のものです。
2009/08/09(日) 01:42:54ID:LPRNL5Jt何で実現してもタスクシステムはタスクシステムだろうに。
0843名前は開発中のものです。
2009/08/09(日) 01:52:03ID:4TaFdjmk過去のものであると思いました。いずれも古い記事だということからも、そのように
考えられます。
このような仕組みを現在でも新規で採用するようなことがあるとすれば、これらの
記事に挙げられているようなメリットを自分の対象環境で検証していないとか、
デメリットを無視しているだとか、あるいは C++ による標準的な手法を知らないだとか、
何かしら見落としがあるのではないかと思います。
一連の書き込みについて、「そこは間違っている」だとかいうことがあれば、
具体的にどこが間違っていて、正しくはこうである、というような指摘をもらえると
助かります。
0844名前は開発中のものです。
2009/08/09(日) 01:56:32ID:LPRNL5Jt↑詳しく
0845名前は開発中のものです。
2009/08/09(日) 02:03:19ID:pp4zzkP00846名前は開発中のものです。
2009/08/09(日) 02:06:41ID:ryu4L4qw「残念ながら何のことかわかりませんでした。(誰か解説してもらえますか?) 」
自分で言ってるように、これが君のタスクに対する理解ってことでいいんでない?
理解できなかったのに結論だけ出るのはおかしいってことも分からないのかも知れないけど
タスクは使えないって結論ありきで、欠点以外は耳に入らないみたいだから誰にも君に解説
できる人は居ない。
0847名前は開発中のものです。
2009/08/09(日) 02:08:50ID:4TaFdjmk>> あるいは C++ による標準的な手法
> ↑詳しく
switch による分岐が嫌だという時には仮想関数( State パターンなど)を使う。
リンクリストなどの動的コンテナは標準ライブラリなどを使う。
メモリ管理のカスタマイズはコンテナのアロケータを差し替えたり
operator new/delete を独自定義するなどして行う。
一連の記事を読んでて思い当たったのはこんなところです。
0848名前は開発中のものです。
2009/08/09(日) 02:18:19ID:AGjKWO87そのcodezineの記事は批判が多いことと
仮想関数やstd::listを使ったものも
タスクシステムとみなす一派もいるらしいことを
付け加えとく。
スレ毎に話題がループしてる気がするんだが
このスレの過去ログ倉庫どっかに無いかな。
0849名前は開発中のものです。
2009/08/09(日) 02:44:31ID:LPRNL5Jt>タスクシステムとみなす一派もいるらしいことを
俺のことだな。
だってアーキテクチャ的には同じものだからな。
樹海に行くのに徒歩で行くか車で行くか程度の差でしかない。
どちらにしろ糞は糞ってこった。糞に到達するのが早いか遅いかの議論に興味はないね。
というわけだ>>847
俺の中では ID:4TaFdjmk もタスク一派かな。
なんでかって?そりゃ思考のアーキテクチャがタスカーと同程度だからだ。
だってお前の言ってる事って、要は、STL使ったり仮想関数使った方が、
codezineの記事の方法よりも、もっと早くタスクシステムを作れますよ、って事だろ。
否定的な立場をとりつつも、結局タスクシステムを作るのを手助けしちゃってるじゃないか。
本当はどうしたかったんだ?
タスクシステムの構築を加速させるのがお前の目的だったのか?
でも案外それがお前の本質なのかもな。
こんなスレ覗くぐらいだし、本当はお前もタスクシステムが好きなんじゃないか?
タスクシステマーはお前と同程度の人間だから、みんな暖かいぜ?
朱に交われば赤くなるってやつだな。
0850名前は開発中のものです。
2009/08/09(日) 03:38:37ID:3bFXUk1n(A)毎フレーム処理
(B)コルーチン処理
0851名前は開発中のものです。
2009/08/09(日) 04:09:03ID:UdcRWiQZなんかもったいないような
0852名前は開発中のものです。
2009/08/09(日) 08:53:19ID:ryu4L4qwstlは使えるけど、自分でlist実装できません。ってのが出没して侮れん・・・
昔はlistなんて誰でも同じような実装何度も繰り返して、さすがに無駄だろってstlが生まれたんだが
stl以降のゆとりプログラマにとってはlistは何かすごく高尚なアルゴリズムで自分で実装なんて考えられないらしい。
だからstlに存在しないデータ構造はC++では使えないと思ってる新人プログラマがいたりする。
車輪の再発明は無駄だが、便利になりすぎると使う人間が劣化するのはどこでも一緒なのかね。
0853名前は開発中のものです。
2009/08/09(日) 09:09:15ID:MkGQm79Oパソコンで動くソフトウェアを作ろうなんて
ちゃんちゃらおかしいということですね。わかります。
0854名前は開発中のものです。
2009/08/09(日) 11:01:23ID:CFq+cfTIグローバル変数使ってやりとりするのが好きなんだろ?
でもそれってわかってくると恥かしいぜw
0855646
2009/08/09(日) 11:22:11ID:nFaNv7CH>>>646 にいたっては自問自答で質問にすらなってない
まぁそりゃそうだわなー。俺は>>628とお話してたわけだからねぇ
君にとっちゃ関係ないお話なんだからいきなり>>646を引っ張ってきて
質問に答えてって言われても困るだろうねぇ
>>808
君は>>646に返答してくれた>>650かな。もしそうなら
答えにくい話に付き合ってくれてありがとうねぇ
でも答えにくいのは俺が自問自答したからじゃないんだよ
他人に考えを伺う際にこちらの考え(or解釈)も添えただけだからねぇ
俺の考え(or解釈)との一致不一致が答えにくさに作用するはずないよねぇ
考え(or解釈)が一致するから答えにくい → 嫌われちゃったかねぇ
考え(or解釈)が一致しないから答えにくい → 気にすんな。違って当たり前だ
ローカル用語だからねぇ
0856名前は開発中のものです。
2009/08/09(日) 11:27:50ID:nFaNv7CHまた君か。懲りないねどうも
0857名前は開発中のものです。
2009/08/09(日) 11:49:06ID:CFq+cfTI普通のプログラムもまともに組めないままPG気取ってる糞がこんなもんに騙される
0858名前は開発中のものです。
2009/08/09(日) 12:10:00ID:fXRIrW8WHashMapは自分で作れる自信ないわ俺
0859名前は開発中のものです。
2009/08/09(日) 15:32:56ID:LPRNL5Jtおいおい、せめてB+-treeとかにしてくれよ。
http://pfp7.cc.yamaguchi-u.ac.jp/~ichikawa/lecture/yamanashi-u/01/resume/node10.html
>>854
真性現る。
0860名前は開発中のものです。
2009/08/09(日) 15:33:21ID:fNG6Olju0861名前は開発中のものです。
2009/08/09(日) 16:04:19ID:CFq+cfTIそれ以外の方法はどうせグローバル変数と似たような問題が発生するので知っていても無意味だよ
引数で渡すか、グローバル変数で渡すか
クラスで強引にまとめてメンバやスタティック変数に別関数の引数から渡して
目的の処理の関数は引数を通さないってのは結局グローバル変数と同じ問題が発生してしまうので考慮に値しない
ちなみにここで問題っていうのは更新するものが呼び出し元から見えなくなってしまう状態な
0862名前は開発中のものです。
2009/08/09(日) 18:18:04ID:LPRNL5Jt例:C言語の標準入出力
0863名前は開発中のものです。
2009/08/09(日) 18:24:35ID:LPRNL5Jtもしも、引数君がwin32apiを設計したら。
GetMessage( &dosv, &x86, &win32, &process, &thread, &queue, &msg, NULL, 0, 0 );
めんどくせーし、可読性も落ちる。バグの元だな。
0864名前は開発中のものです。
2009/08/09(日) 18:40:25ID:CFq+cfTIダメだろ
あるプロジェクトのソースをあるプロジェクトで使いたいときに
影響範囲がわからなくてまるで木の根っこみたいにプロジェクトにソースがひっついてしまって
カプセル化の意味がまったくなくなってしまう
グローバル変数なんか使ってしまったら必要なデータがなにかわからないだろ
これを引数でいれておけば引数をみるだけで簡単に必要なものが絞れるってわけよ
また、これは別にプロジェクトから移動させるときだけじゃなくて
構造を組み替えなければならないときにも迂闊に分離できない
つまり、仕様変更に弱いプログラムになってしまうんだよ
0865名前は開発中のものです。
2009/08/09(日) 18:49:44ID:CFq+cfTIDirectXのSetRenderState関数があるな
これさセットしたもんが何にどう影響するのかわからないんだよな
だから固定シェーダとか使うなよボケってみんなからフルボッコにされる
0866名前は開発中のものです。
2009/08/09(日) 19:58:51ID:LPRNL5Jt引数で渡しても引っ付くことには変わりないだろ。
だってそれはそのアプリの仕様なんだから。
>プロジェクトにソースがひっついてしまって
>カプセル化の意味がまったくなくなってしまう
カプセル化(データ隠蔽)の意味をわかっていない。モジュールの結合度が高まることとカプセル化は関係ない。
>グローバル変数なんか使ってしまったら必要なデータがなにかわからないだろ
わからなくていいからグローバル変数なんだ。
サブシステムというものはそういうものだ。
>また、これは別にプロジェクトから移動させるときだけじゃなくて
>構造を組み替えなければならないときにも迂闊に分離できない
これに限って言えば、グローバル変数使ってるほうが構造の組み換えには強い。
引数の引き回しを考えなくて良いからな。
グローバル変数は柔軟すぎて何でも出来ちゃうからこそ問題なんだろうに。
>DirectXのSetRenderState関数があるな
>これさセットしたもんが何にどう影響するのかわからないんだよな
セットした後、使い終わったら元に戻さないからそういうことになるんだろ。
ちなみにID3DXEffectはエフェクト内での設定を処理後に自動で元に戻してくれる。
自動で元に戻してくれるってだけで、SetRenderStateと仕組みは同じ。
0867名前は開発中のものです。
2009/08/09(日) 20:12:00ID:LPRNL5JtCの標準ライブラリが内部で持ってる変数ですら知らない。
標準出力の正体なんか知らなくてもprintfは使える。
printpolygon(座標)でポリゴンが描画されたとしてもなんら困らない。
既に我々はグローバル変数的なサブシステムの上で
プログラムを書いているし、走らせているということ。
0868名前は開発中のものです。
2009/08/09(日) 21:00:30ID:cWFbq9mKそれはカプセル化であって、グローバル変数とは違うだろw
Win32が内部でもってる変数を外から書き換えたらどうなるか想像つくだろ
それがグローバル変数ってことだろうがw
0869名前は開発中のものです。
2009/08/09(日) 22:02:36ID:ryu4L4qwWin32が”内部で”持ってる変数はグローバルじゃないだろ
コンテキストなりで内部状態を持ってるわけだ。
引数で全コンテキスト状態を渡さなくてもコンテキスト変更の入り口と出口さえ押さえられれば
安全に運用できる・・・ってのは引数君には理解できないレベルの話か。
0870名前は開発中のものです。
2009/08/09(日) 22:44:53ID:LPRNL5JtだからプログラムのどこからでもWin32APIを呼び出せる。
0871名前は開発中のものです。
2009/08/10(月) 00:21:45ID:KNogq/JJだからWin32apiも呼べるからってどこでも読んじゃダメだ
せめて使う必要のある場所とない場所を区別するために
windows.hを呼ぶソースと呼ばないソースをわけるぐらいはしないと
馬鹿は全部まとめた総合ヘッダーとか作っちゃうけど本当はそんなことやっちゃダメだ
0872名前は開発中のものです。
2009/08/10(月) 00:30:39ID:pM60OIe/>>810
既に指摘されてるようだが
「具体的」と「主観的」は排他的な関係ではないねぇ
>>812
>主観的でいいなら
>>>674
>でこのスレは終わってないか?
うんにゃ。君が>>674の見解に100%の見解の一致があるというなら
それは君と>>674との間の一致にすぎないんだねぇ
権威不在のローカル用語、タスクシステム。これの共通理解は朧げだねぇ
例えばアンチを装う歪んだ性癖のあるファイルシステム君 ID:6uucu48D。
この珍獣は自前のチンカスタスクシステムの常識をこのように述べた(>>765)
『タスクシステム自体もタスク間でのコミュニケーションが苦手という問題を抱えてるが』
実に愉快な「ボクのチンカスシステム固有の事情」を赤裸々に語ってくれたわけだが
君はどう思うね?おそらく見解は異なるだろう
例えばDCAJの調査報告がタスクシステムについて言及したわけだが
玉虫色の内容にならざるを得なかったのは示唆に富んでるよねぇ
あのパートを担当した方はジャンケンで負けたんだろうかねぇ
とんだババを引いて大変だったねぇ
0873名前は開発中のものです。
2009/08/10(月) 00:54:11ID:pM60OIe/>馬鹿は全部まとめた総合ヘッダーとか作っちゃうけど本当はそんなことやっちゃダメだ
また引数君(総合ヘッダー君)の告解の時間が始まったのか
ここは君の懺悔室かね
0874名前は開発中のものです。
2009/08/10(月) 01:11:23ID:pM60OIe/>> 具体的に何と比較してどの点が簡単になるのでしょうか?
>これは質問がおかしい。
特におかしいとは思えないねぇ。簡単というのは所詮は相対的な表現だからねぇ
何らかの比較対象・基準値があって、それよりも簡単or複雑(困難)という表現を
使うものだからねぇ。そうだろう?
>タスクシステムを使う人に対して何かと比較して質問したいなら
>質問側で具体的な「タスクじゃない何か」を比較対象として出すべき。
>悪魔の証明じゃないんだから。
不存在の証明を要求してるわけじゃないから悪魔の証明は関係ないと思うねぇ
0875名前は開発中のものです。
2009/08/10(月) 08:53:44ID:e5XbTRCE> それは君と>>674との間の一致にすぎないんだねぇ
それが「主観的」ってもんでしょ。
主観的な回答求められてるのに客観的じゃないからダメってのはねぇ・・・?
0876名前は開発中のものです。
2009/08/10(月) 12:49:17ID:13rwf2rz0877名前は開発中のものです。
2009/08/10(月) 15:11:50ID:tkOlDOwc詭弁論者きもい
0878名前は開発中のものです。
2009/08/11(火) 00:22:33ID:GACdsZEw0879名前は開発中のものです。
2009/08/11(火) 01:10:42ID:sYwhMl4bこれで技術者だと思ってる糞をマジで叩きだしたい
0880名前は開発中のものです。
2009/08/11(火) 01:19:59ID:UfiVJoWZ0881名前は開発中のものです。
2009/08/11(火) 01:29:35ID:sYwhMl4b0882名前は開発中のものです。
2009/08/11(火) 01:46:54ID:byuibPtWタスク使ったプログラムなんて、どうやっても俺専用クソースになるのがわかってるから
「ここはこう組んだほうがいい」と代案ひとつ出せば勝ちなのに。
圧倒的兵力差でも勝てない米軍見てるみたいでイライラする。
0883名前は開発中のものです。
2009/08/11(火) 01:59:01ID:UfiVJoWZ> 「ここはこう組んだほうがいい」と代案ひとつ出せば勝ちなのに。
「ここは」といって代案を出すには、まず「タスクシステム」を使ったコードが無いと
できないと思うんだけど、どっかにまとまった量のサンプルが落ちてないかな?
これまでの例で言うと、典型的と思われる問題のわかりやすいコードを
アンチタスクシステムな人が作って置き換えの例を出しても、
「それは前提にしてるそのコードのレベルが低いだけ」って言う流れになってた。
0884名前は開発中のものです。
2009/08/11(火) 03:09:31ID:L7W3nnsg0885名前は開発中のものです。
2009/08/11(火) 06:16:45ID:6xw/3V3i>http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8878.zip
>ちょっと変わったタスクシステム出来たよ。
>なにが違うの?
>・タスクはデータ構造ではなく制御構造。
>・タスクはオブジェクトではない。
>・タスクはデータを持たない。
>・タスクはオブジェクト間での相互作用を記述する。
>・タスクは関数やメソッドの中に定義する。
>ちゃんとデバッグしてないから多分バグある。
>サンプルプログラムは星の間に働く万有引力のやつ。
これをサンプルにすればいいんじゃね?
0886名前は開発中のものです。
2009/08/11(火) 08:53:56ID:GACdsZEw> 「タスクシステム」を使ったコードが無いと
つまりアンチはタスクシステムを使ったコードがわからない、というレベルか
タスクの悪いところがわかるからアンチ、とか以前の問題じゃん・・・
0887名前は開発中のものです。
2009/08/11(火) 08:57:11ID:GACdsZEw後輩指導とかなら仕事だし、後々自分が楽になるから面倒でもやるけど
今までのスレ読んでも理解できません。自分で考えることもできません。
って明らかにプログラマとして見所の無い赤の他人にそこまで手間かけるほど
暇で親切な人間なんていないよ・・・
0888名前は開発中のものです。
2009/08/11(火) 17:28:23ID:L7W3nnsg0889名前は開発中のものです。
2009/08/11(火) 19:04:11ID:n/VFKT7t0890名前は開発中のものです。
2009/08/12(水) 11:24:27ID:QBxyUxs10891646
2009/08/12(水) 23:30:28ID:Kt38Jq6z>>2の「システム」は侵入式連結リストを定周期でナメてるだけだからねぇ
同期的・協調的に実行待ちの要素を順次実行をしているだけなんだねぇ
プリエンプションに必要な実行コンテキストの保存には一切関与しないし
プリエンプティブなスケジューリングなど一切していない
0892名前は開発中のものです。
2009/08/13(木) 00:46:20ID:re/VKpm/0893名前は開発中のものです。
2009/08/13(木) 00:50:55ID:H9HKooLq単体で有用な場面があることに異論のある人はいないと思う。
・連結リスト構造
・関数ポインタ(または仮想関数、またはその両方)
・メモリプール(あるいはオブジェクトプールなど)
・ツリー構造
・型や名前などのキーによるオブジェクトへの間接アクセス(および列挙)
「タスクシステム」というと、これらの手法(他にもあるかも)を複数
組み合わせたもので、システムと呼ぶくらいにプログラム全体のベースとして
存在しているもの、ということになると思うんだけど、この解釈から外れる
ような「タスクシステム」を使ってるという人はいますか?
0894名前は開発中のものです。
2009/08/13(木) 00:56:31ID:tmR/IL+L0895名前は開発中のものです。
2009/08/13(木) 01:00:33ID:jRlNENU1あらら
その切り方だとこのスレの教えて君アンチは全滅だw
もう少し生暖かく導いてくれよwww
0896名前は開発中のものです。
2009/08/13(木) 01:36:18ID:vyxPBm2hタスクシステムなんてゲームの仕様の数だけ実装があるような
経験知の塊みたいなものを、「これがタスクシステム」「これはタスクシステムじゃない」
なんて線引きしても無駄じゃないかな。
まぁ、それがデザインパターンとか、形式知になった物しか使えないタイプの人間には
我慢ならない所なんだろうけど。
0897名前は開発中のものです。
2009/08/13(木) 02:04:49ID:t759lalu0898名前は開発中のものです。
2009/08/13(木) 10:53:51ID:re/VKpm/というより、理解できない池沼。
タスクシステムで作ったゲームは、自分勝手なタスク達がおのおのそれらしく振舞うことで成り立つ。
池沼のあつまり。
タスクシステマーにとっての天国。理想の社会像。
0899名前は開発中のものです。
2009/08/13(木) 12:19:13ID:re/VKpm/http://www.sun-inet.or.jp/~yaneurao/intensive/ggg/log1.html
>私が考える一番エレガントな方法とは、少なくともキャラクターは自立性が有ることです。例えば、
> new CMissile;
>とすればミサイルが生成され、あとはメインのプログラムからは、ミサイルについて意識しなくても済むような設計が理想です。
自立性があるのは結構だが、
最終的にはゲームとして成り立てるためにシステマティックに振舞ってもらわないと困るわけで。
一旦、個を確立させといて、あとから集団として意味づけするのは、
どう考えても2度手間だよな。
0900名前は開発中のものです。
2009/08/13(木) 12:43:47ID:re/VKpm/やねうらおも自分で言ってる。
>たとえば、ホーミング弾にはSEが存在するとしましょう。
>前回、話したようにホーミング弾を担うクラスは自立性のあるクラスです。
>ホーミング弾が生成された瞬間にSEは鳴らないといけませんから、
>ホーミング弾のコンストラクタは、soundを読み込み、再生しようとします。
>すると、以下のような問題が浮上します。
>1.生成された瞬間にサウンドをファイルから読み込んでいたのではリアルタイム性が損なわれる
数々の困難を乗り越えて、やっとこさっとこキャラクタの自立性を確立したところで、
結局はゲームとしてシステマティックに振舞わせるために、
個々の自立キャラクタに集団としての意味づけをしなければならない。
もうやってること意味わからないってレベルじゃねーぞ。
0901名前は開発中のものです。
2009/08/13(木) 12:51:52ID:re/VKpm/発想の一番最初から既に間違っている。
なので、どこまで行ってもうまく行かない。
何にもならない。無駄。
>私が考える一番エレガントな方法とは、「少なくとも」キャラクターは自立性が有ることです
↑キャラクタの自立性が発想の根本な人の例。
↑キャラクタには少なくとも自立性がなきゃ話にならないらしいです。
↑かわいそうな人です。
0902名前は開発中のものです。
2009/08/13(木) 13:01:58ID:Nquh+3x9概念と実装を混同してるよ。
0903名前は開発中のものです。
2009/08/13(木) 13:32:36ID:uslACH4o0904名前は開発中のものです。
2009/08/13(木) 17:07:38ID:mFnqeWIS> だから自立性のあるキャラクタ云々がそもそもの間違い。
違うね。それはゲームによるよ。そういう設計をしたほうがエレガントになることは十分ありうる。
0905名前は開発中のものです。
2009/08/13(木) 19:37:31ID:Zhe6RD8Jあったま悪ぃw
0906名前は開発中のものです。
2009/08/14(金) 01:11:32ID:jhWkndWXアンチが何か意見言ったか?
メリット教えろってのは意見じゃなくて質問だろ。
あぁ、アンチの意見って引数以外認めないとか仮想関数はダメとか、あれのことかw
そりゃ誰も意見なんて聞かんわなwww
0907名前は開発中のものです。
2009/08/14(金) 01:21:18ID:3wh6mKrxお前、クルクルパーすぎるだろ
レス数が900を超えています。1000を超えると表示できなくなるよ。