タスクシステム総合スレ part4
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2009/02/01(日) 12:38:10ID:rVEgp4cMpart3 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/
0297名前は開発中のものです。
2009/02/08(日) 22:29:49ID:9yKZ63FMタスクシステムを使うことによって何のどんな問題が解決するの?
これをはっきりさせてよ
っていうと全くまともなレスが帰ってこないからなw
んで>>282の内容に戻るとw
0298名前は開発中のものです。
2009/02/08(日) 22:31:54ID:iemYL3IEキャストするのもきめえ。
Setter/Getter作るのもきめえ。
グローバルで通信するのもきめえ。
ピザな神に任せるのもきめえ。
てな感じで同じく悩み続けてる俺にはここ最近の話はとても参考になってる。
だからもっとやれ。ただし脳内じゃなくてちゃんとわかるようなコードつけてな。
0299名前は開発中のものです。
2009/02/08(日) 22:37:30ID:/7HQNkAm俺はごく基本的で大局的な見解しか示してない
局部的な話は一切していない
さぁ、タスクシステムを大局的に語るがよい
又は3Dでタスクシステムを使うがよいww
偉そうな名前を持った偽科学は消毒だー
0300名前は開発中のものです。
2009/02/08(日) 22:40:34ID:9yKZ63FMオブジェクト指向の常識に従う限り
ゲームのシーンクラスの肥大化を防ぐ手はねーよ
トリッキーな解釈をして関連をクラスにするとか
ってのは一つの逃げ道かもしれねーな
ただ、それをしたところで俺の上のほうのレス(ID:lLkuERdr)を読んでもらえば分かると思うが
書かなければならない処理の絶対数はどんな組み方をしても変わらない
俺はこれでも10年以上やってきたので設計思想で
できることとできないことが判別できるようになった
だから迷いがなくタスクシステムを糞だと言い切れる
もし、他の可能性を探すならオブジェクト指向を覆すような新しい設計思想が必要
0301名前は開発中のものです。
2009/02/08(日) 22:46:01ID:L1xVTjvzオマエは煽るふりをして自分の理解できないところを質問しているだけだろwww
0302名前は開発中のものです。
2009/02/08(日) 22:48:37ID:L1xVTjvz関連の総数が爆発するのは、不味い設計しているからだ。
そういうのはそもそもゲームの仕様からして不味い。
それをそのまま唯々諾々と実装するようなID:9yKZ63FM=ID:lLkuERdrは馬鹿の見本。
0303名前は開発中のものです。
2009/02/08(日) 22:48:38ID:9yKZ63FMいままでこれが説明できた人間はいないぜ
無理すんなよw
0304名前は開発中のものです。
2009/02/08(日) 22:49:57ID:VfZ7TaKb「大局的」の意味がよく分からんが。
あくまで、たとえばの話として・・・
○問題設定
プレイヤーキャラを常に画面上に存在させておき、プレイヤーの操作に反応させる。
一定時間ごとに、ライバル・キャラを画面上に発生・消滅させる。
キャラ接触の結果として、随時、火花を画面中に発生させる。
火花は発生後、画面上でアニメーションさせて1秒後に消滅させる。
ライバル・キャラ、火花は複数同時に存在し得るものとする。
画面上での全キャラのFPS当たり移動スピードや、火花アニメのFPS当たり状態遷移スピードは、固定とする。
火花は画面上最前面に表示されるようにする。
(その他細かいルールは割愛)
この問題を解決する方法の一つとして、タスクシステムの存在意義がある。
ところで問題は、それこそ色々あるから、そんなこと聞くだけ野暮だと思うが。
0305名前は開発中のものです。
2009/02/08(日) 22:50:00ID:L1xVTjvz自分が知らないものは存在しないも同然かww
0306名前は開発中のものです。
2009/02/08(日) 22:50:23ID:9yKZ63FMは?もうお前のくだらない戯言に騙される奴はいないんだよ
オブジェクトが20個あってそれぞれが影響しあうなら
当然それだけの処理がいるの
設計をどうこねくりまわしたってその数が減ることは物理的にないんだよw
0307名前は開発中のものです。
2009/02/08(日) 22:54:09ID:PqcaRaMD>タスクシステムを使うことによって何のどんな問題が解決するの?
タスクを管理できる。ただそれだけ。
タスクシステムを使わずにタスクをどーやって管理するの?
switch/caseかな?
まぁ、どんな方法だろうとタスク管理をするシステムをタスクシステムというんだから
ゲームにタスクがある以上タスクシステムが無いというのはありえないと思うが。
0308名前は開発中のものです。
2009/02/08(日) 22:58:14ID:9yKZ63FMは?ちょっと聞くけど
使わないで組んだこと1度でもあるの?
>>307
頭悪すぎ
まず、タスクシステム使わなきゃタスクって単語すらでない
のに何が聞きたいの?
タスクシステム使う前提で話してどーすんだよ
理屈でモノを考える力をどっかに捨ててきたのか?お前
0309名前は開発中のものです。
2009/02/08(日) 23:00:15ID:L1xVTjvz> 設計をどうこねくりまわしたってその数が減ることは物理的にないんだよw
キサマの設計のクソさ加減は、>121見れば判るからwwwww
0310名前は開発中のものです。
2009/02/08(日) 23:00:40ID:/7HQNkAmいや、タコスシステムとやらを使わなくても書けるだろ
タスコシステム使ったらどういう恩恵が得られるのかってーのに興味があるんだよ
普通の人々は
早くなるーだの、コードが短くなるーだの、読みやすくなるーだの、拡張しやすいーだの
そういうことを聞いてるわけだ
書けるんだよ書けるんだよって、書ければいいのならHSP使った方が手っ取り早い
0311名前は開発中のものです。
2009/02/08(日) 23:01:44ID:PqcaRaMD>まず、タスクシステム使わなきゃタスクって単語すらでない
OSのマルチタスクってタスクシステムの話かな?
タスクってのは「処理の単位」以上の意味は無いから
ゲームに処理がある限り「タスク」は存在するんだけどね。
0312名前は開発中のものです。
2009/02/08(日) 23:01:46ID:DctRL+eTなんか違うことを言ってるんだろうか
0313名前は開発中のものです。
2009/02/08(日) 23:02:42ID:3SPyMiZ9タスクとかいう言葉を何の定義もなく使うところがキモいです。
たとえば>>304を実現するのに普通の人はタスクなんて使わないので
管理の必要もないわけでさ。
と書こうとしたら>>308に書かれてた。
0314名前は開発中のものです。
2009/02/08(日) 23:08:29ID:150rW63Bマリオがクリボーに触れたときの処理と、ノコノコに触れたときの処理は別々に書くのか。
0315名前は開発中のものです。
2009/02/08(日) 23:08:51ID:PqcaRaMDギャラがやゼビウス時代の古典的ナムコタスクシステム(関数ポインタ+ワーク)や
マルチコアのジョブ時間管理やりソース共有管理まで行うMTフレームワークレベルのものも
広義のタスクシステムなんだけど。
これらを一切使わずに>>304を実現できる普通の人っているのか?
それとも何か特定の1つのタスクシステム実装についてのみ語っているのか?
0316名前は開発中のものです。
2009/02/08(日) 23:15:44ID:buJH1feoオレはアンチじゃないけど
「広義のタスク」が何を指すのか不明では?
>>49の「タスクとはすなわちフレームをまたいだ継続的処理の抽象化」を言ってる?
0317名前は開発中のものです。
2009/02/08(日) 23:16:26ID:rDw772wv収拾つかなくなるだろ。
古典的ナムコタスクシステム(関数ポインタ+ワーク)
これをウンコを管理するウンコシステムと呼んで区別しよう。
話はそれからだ。
アンチが叩いてるのはこのウンコの部分なんだから。
0318名前は開発中のものです。
2009/02/08(日) 23:17:51ID:L1xVTjvz> 古典的ナムコタスクシステム(関数ポインタ+ワーク)
『コンテキスト保存によるフレーム間の継続性』が抜けてるぞ。
0319名前は開発中のものです。
2009/02/08(日) 23:19:54ID:VfZ7TaKbトムヤムクンプロセッサってのは聞いたことしかないから、よく知らん。
結局、並列動作処理フレームワークの実装がブラックボックス依存なんじゃねえの、それって。
ブラックボックス依存で構わないんだったら、ネガキャンするなと言いたい。
0320名前は開発中のものです。
2009/02/08(日) 23:23:26ID:+Lu8guC0だから、単純なゲームのとあるシーンは以下のようになる。
while(1) {
描画
ゲームオブジェクトの移動
当たり判定
時間調整
}
次にタイトル画面を表示するシーンが欲しいなと思ったら、もう一つループを追加する
while(1) {
描画(タイトル画面表示)
キー入力
時間調整
}
シーンの数だけループができた。
じゃあ、このループを一般化して、ハードコーディングではなく、外部からのスクリプト読み込みなどで
動的に生成できないかと悩んでみると、タスクシステム(っぽい何か)に行き着いた。
0321名前は開発中のものです。
2009/02/08(日) 23:23:57ID:DctRL+eTただのFSMではなくコルーチン&スケジューラが実装されていたのなら
そう書いてもらったほうが分かりやすい
0322名前は開発中のものです。
2009/02/08(日) 23:28:08ID:xD+TYCTG指標をいくつか決めて実装手法ごとに○×付け。一番○が多いのを使う。
これでいいんじゃね?
どういった表現方法使ったってどうせ全部「データの受け渡し」であることには変わりない。
概念的には一つのことを実現しようとしてるだけ。
もし引数の概念が無い言語ならグローバル変数使わざるを得ないし、
グローバル変数の概念が無い言語なら引数使わざるを得ないかもしれない。
この辺の手法の差異なんて言語に左右されるような瑣末なこと。
C++ではたまたまいろいろな手法が利用可能だけども
概念的には「データの受け渡し」だけが目的なんだから、
CPU使用時間とかメモリ使用量とかソース可読性とかそういった瑣末な指標によって選択すればいい。
「C++におけるデータ受け渡しの実装手法はどれが一番概念的に優れてるか」とか悩むのは
そもそも問いかけの選択からして間違ってる。どれも概念的には「データの受け渡し」で同一のもの。比較不可。
優劣が付けられるのは前述の瑣末な指標で比較した場合のみ。
C++がやれること多すぎて悩むの疲れたのならいっそもっと選択肢少ない言語に変えてみたら?
Cとかに。わりと本気で。
#レスなげえ、俺きめえ。ごめんね
0323名前は開発中のものです。
2009/02/08(日) 23:36:38ID:buJH1feo納得しない人たちもいると思う
オレはC++大好きデザパタ大好きだが、自戒をこめてこの言葉を君たちに
C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために
さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが簡単に生産されるようになってる。
正直いって、C を選ぶ理由が C++ プログラマーを追っぱらうため *だけ* だったとしても、
それ自体、C を使う強力な理由になりうる。
-- Linus Torvalds
0324名前は開発中のものです。
2009/02/08(日) 23:36:54ID:VfZ7TaKb「タスクシステム」を批判できる立場にねーだろ。
0325名前は開発中のものです。
2009/02/08(日) 23:42:17ID:L1xVTjvzいやいや、作ったソフトにどんな名前をつけるかは作者の権利だ。
それについてどうこう言うのと、『タスクシステム』という名前についてアレコレ言うのは
違う気がするぞ。
0326名前は開発中のものです。
2009/02/08(日) 23:44:14ID:VfZ7TaKb悪い、ちょい嫉妬しただけだ。
大人げなかったな。
0327名前は開発中のものです。
2009/02/08(日) 23:46:18ID:L1xVTjvz0328名前は開発中のものです。
2009/02/08(日) 23:48:32ID:iemYL3IE確かになー。
本当に悩むべきはそんなところじゃねーだろーっていつも頭では思うんだけど、
「もし理想のやり方が見つかれば、二度と悩まなくて済む」って甘い罠に取りつかれちゃうんだな。
つーかなんかタスクシステムに限った話じゃなくなってるな。
↓こっちの話題だなすまん。
ゲームにおけるデータ構造・クラス設計・パターン2
http://pc11.2ch.net/test/read.cgi/gamedev/1211544659/
0329名前は開発中のものです。
2009/02/08(日) 23:49:52ID:/7HQNkAmHSP使った方がいいよ、資源の無駄
かっこつけてC++なんて使う意味ないって
俺かっこいい超天才C++使いこなす俺超天才って言って
一ヶ月かけて作ったゲームも
HSPなら三日で作れるから
所詮タスクシステムなんてその程度
DSL的アプローチとしてはHSPの方が有益
タスクシステムはうんこ
うんこに指差してうんこって言って何が悪い
これはうんこじゃないやいって言ったところで
それはうんこだ
うんこうんこ
0330名前は開発中のものです。
2009/02/08(日) 23:54:43ID:L1xVTjvz0331名前は開発中のものです。
2009/02/09(月) 00:03:05ID:jAkDZVnoいっぺん表作っちゃえば二度と悩まなくて済むよ
処理時間短縮重視ならこれ、メモリ使用量極小を狙うならこれ、
とかって簡単に決定できる
まぁ、大体PCならメモリとかCPUなんて潤沢に使えるから気にせず
コードの可読性だけでさくっと決めていい気がするけど
0332名前は開発中のものです。
2009/02/09(月) 00:28:43ID:xIvd3PJC普通にできるだろ
馬鹿かお前大丈夫か?
ていうか一度でも組んでみてから言ってくれよ
つーか、お前、タスクシステム云々がどうとかそういうところこだわる前に
プログラマとしてヤバイだろw
0333名前は開発中のものです。
2009/02/09(月) 00:54:39ID:rrMBb3Sk0334名前は開発中のものです。
2009/02/09(月) 01:34:23ID:K+aHd4rk適材適所。
0335名前は開発中のものです。
2009/02/09(月) 01:44:30ID:Tt5KtR55なーにが広義のタスクシステムだ。バッカじゃねーの?このカッペ野郎
毎度毎度テメェの都合でローカル用語の解釈を変えてんじゃねー
あと"ジョブ時間管理"とか訳のわかんねー用語を発明すんな
お前いつもそんなふうに新しい用語をクリエイトしながら他人とお話しするの?
0336名前は開発中のものです。
2009/02/09(月) 07:48:20ID:tQgf226pタイトル画面や戦闘シーンは、相互依存がほとんどなく、インスタンス数もたかが知れてる。また処理パターンが仕様変更で変わる可能性がある。
そういう用途には、std::list<> に virtual void exec() だけ実装したクラスのインスタンスを入れておいて、定期的に呼び出してやれば良い。システムと呼ぶ程のモノじゃないがな。
一方、プレイヤーや敵キャラなどは、上の前提条件が成り立たない。相互依存が多く、処理も一度「移動、ヒット判定、死亡判定」と決めたら、まず変更しない。
困難なポイントが違うので、解決策も必然的に変わってくる。
0337名前は開発中のものです。
2009/02/09(月) 12:40:04ID:Q7FeorJ2これでFA。
0338名前は開発中のものです。
2009/02/09(月) 13:30:04ID:DGIHyZBW>あと"ジョブ時間管理"とか訳のわかんねー用語を発明すんな
まだ君の頭では理解できないことかもしれないけど
”MTフレームワーク”でググって勉強してみれば意味が分かるかもね…
0339名前は開発中のものです。
2009/02/09(月) 16:20:33ID:rrMBb3Sk今、ゲームを ウィンドウ と DirectX と ゲーム管理 と ゲームオブジェクト の4つに分けて考える。
データの流れ(処理の流れ)に着目すると、
DirectX → ウィンドウ
↑ ↓
ゲームオブジェクト ← ゲーム管理
という関係が成り立っている。
ウィンドウと入力と出力に分解すると、
ウィンドウ(in)→ゲーム管理→ゲームオブジェクト→DirectX→ウィンドウ(out)
となり、<入力>→<プログラム>→<出力> という昔ながらのシンプルなモデルになる。
ところがここにオブジェクト指向の概念(データ構造でプログラムを分解する)を導入すると、
ウィンドウ→DirectX→ゲーム管理→ゲームオブジェクト
となり、前述のデータの流れ(処理の流れ)
ウィンドウ(in)→ゲーム管理→ゲームオブジェクト→DirectX→ウィンドウ(out)
と相反してくる。
この問題を解決するには、データ構造とデータの流れ(処理の流れ(制御構造))をそれぞれ別々に記述できる
C言語が最強ということになる。カプセル化なにそれ。
0340名前は開発中のものです。
2009/02/09(月) 16:42:01ID:rrMBb3Skプログラムの三大要素は
・データ構造(struct、etc)
・制御構造(function、etc)
・定数(define、etc)
である。
それぞれ別のものだから、別々のところに別の方法で別々に作成するのがCスタイル。
一方、データ構造に合わせて制御構造と定数を分断し、すべてデータ構造に括り付けるのがC++スタイル。
当然、C++スタイルでは制御構造は制御的に意味のないところで分断される。
また、C++には制御構造をどこでも分断できるようにするためのナイフが用意されていて、それが仮想関数。
プログラマは仮想関数を使いデータ構造にしたがって制御構造を分解する。
晴れて本来一つのまとまった処理だったものがあちらこちらに散らばる。
0341名前は開発中のものです。
2009/02/09(月) 16:43:55ID:kpyVvUs4わけがわからないから3行でまとめて。
0342名前は開発中のものです。
2009/02/09(月) 16:47:46ID:rrMBb3Sk今一度C++で何が起こったか考えるべき。
データ構造と制御構造と定数はそれぞれ別々のもの。
一つに纏めようとするのはナンセンス。
0343名前は開発中のものです。
2009/02/09(月) 16:54:17ID:Q7FeorJ2知らない奴は
サヨウナラ
0344名前は開発中のものです。
2009/02/09(月) 17:06:06ID:rrMBb3Sk0345名前は開発中のものです。
2009/02/09(月) 17:10:20ID:iuuYPzaN0346名前は開発中のものです。
2009/02/09(月) 17:11:46ID:OcO9vKc8>となり、前述のデータの流れ(処理の流れ)
> ウィンドウ(in)→ゲーム管理→ゲームオブジェクト→DirectX→ウィンドウ(out)
>と相反してくる。
ミドルウェア(グローバル関数)→ゲーム管理(シーンクラス)→ゲームオブジェクト(クラス群)→ミドルウェア
こうならいいのかな。よく分からんけど。
0347名前は開発中のものです。
2009/02/09(月) 17:23:48ID:rrMBb3SkC++とかだと、定数は、
class C
{
private:
enum{ HOGE_MAX=10, PIYO_SIZE=100, };
public:
enum{ ERR_MEM=1, };
};
とかするのが美徳とされている。
0348名前は開発中のものです。
2009/02/09(月) 17:38:52ID:qRHH/+SEそれは、プレイヤーや敵キャラのループはハードコーディングしかありえないって意味?
あるいはループとは違う仕組みとか。(タイマ割り込みとか)
>>339-340
それは単なるプログラミングスタイル(表現)の違い。
Cを始めとする手続き型言語を用いたプログラミングでは処理を始めから最後まで小説のように一本の線で書くことが得意。
それに対しC++やJavaを始めとするオブジェクト指向な言語によるプログラミングでは地図のように、オブジェクト間にはりめぐらされる道(ネットワーク)によってプログラムを表現しようとする。
だからソースを上から順番に読めば全体が理解できるとかいう話では無くなる。
C++で書かれたプログラムの全体を理解したいのであれば、クラス図(UML)でも書き起こすと良いと思うよ。
Doxygen対応のコメント書いておけば自動生成できるし。
0349名前は開発中のものです。
2009/02/09(月) 17:45:46ID:rrMBb3Skゲームオブジェクト(クラス群)→ミドルウェア
の部分はどうなってるの?
1.ミドルウェアはグローバルであり、どこからでもアクセスできる。
2.ミドルウェアへのアクセサは処理の都度、引数でもらう。
3.ゲームオブジェクトはミドルウェアへのアクセサを内部に保持している。
(ゲーム管理クラス経由、など間接的な場合を含む)
0350名前は開発中のものです。
2009/02/09(月) 17:51:54ID:OcO9vKc81
0351名前は開発中のものです。
2009/02/09(月) 18:07:00ID:pOUPLq7jなんかごちゃごちゃ長いけど
タスクシステムが何の問題の何を解決するのかでたのかい?
0352名前は開発中のものです。
2009/02/09(月) 18:10:33ID:rrMBb3Sk>それに対しC++やJavaを始めとするオブジェクト指向な言語によるプログラミングでは地図のように、
>オブジェクト間にはりめぐらされる道(ネットワーク)によってプログラムを表現しようとする。
あなたは「オブジェクト指向では地図のように〜〜」と言うが、その理由までは考えないのか。
また、そういう性質はゲームに向いていると思う?
「地図のようにはりめぐらされるネットワークによってプログラムを表現」したい?
それに例えオブジェクト指向でも、地図のようにはりめぐらされるネットワークは決して歓迎されていない。
0353名前は開発中のものです。
2009/02/09(月) 18:22:40ID:rrMBb3Skデータ構造よりもデータの流れ(処理の流れ)
ミドルウェア(グローバル関数)→ゲーム管理(シーンクラス)→ゲームオブジェクト(クラス群)→ミドルウェア
を重視した設計だね。
0354名前は開発中のものです。
2009/02/09(月) 18:51:16ID:ixLiaNv+タスクシステムは実はフレームワークだったのだよ
なにー!?
0355名前は開発中のものです。
2009/02/09(月) 18:53:31ID:Tt5KtR55> まだ君の頭では理解できないことかもしれないけど
http://www.google.co.jp/search?hl=ja&q="ジョブ時間管理"
"ジョブ時間管理"との一致はありません
google様が聞いたことねーっつってるわけ。意味わかる?
お前はそんだけ奇特な用語をポコポコ発明してるわけよ
自覚ねーの?ワナビーだから?知ったかクンだから?巣篭もりしてっから?
とっとと部屋から出ろよバーカ
で、もしかしてお前、ジョブスケジューラとかジョブスケジューリングのことが言いたいの?
だったら何で
>”MTフレームワーク”でググって勉強してみれば意味が分かるかもね…
何でMTフレームワークでググって勉強とかいう超絶的に頭悪そうなお話になるのかな?
ジョブスケジューラとかジョブスケジューリングってもっと汎用的な、OSの概念だよねぇ?
MTフレームワークのお勉強?低学歴ワナビーは紹介記事を読んだだけでお勉強になるの?
おめぇそんなんで何かを知っちゃった気になれるわけ?ワナビーが背伸び発言するには十分なの?
0356名前は開発中のものです。
2009/02/09(月) 18:59:43ID:ixLiaNv+イディオムなの?
デザインパターンなの?
フレームワークなの?
それとも、それらを超越した存在、神いわゆるGODなの?
それとも、新しいプログラミング言語のプロトタイプなの?
それとも、やっぱりただのうんこなの?
謎は深まるばかりだ
"working time management"
マイナーなつづりだな、きっと一部の選ばれしものだけが読める
論文かなんかで秘密裏に発表されているんだろう
俺ら凡人に対してそんな高度な言葉を使うなんて
普通に嫌な奴だな
0357名前は開発中のものです。
2009/02/09(月) 20:37:24ID:Tt5KtR55mediatorやobserverがゲームプログラムの中に登場するというなら問題ない
タスクシステム(>>2)の中にmediatorやobserverがあるというなら知能障害確定だな
ねーよ。どこにも
前スレで>>2はオブサーバーだとか言って喚いてたバカに何度も何度も何度も
何で?何で?何で?何で?何で?何で?何で?何で?何で?何で?何で?
と質問責めにしたが、まともな返事は返ってこなかった
0358名前は開発中のものです。
2009/02/09(月) 20:47:32ID:xIvd3PJC帰ってきてたじゃん
アレだろ?
更新タイミングはメッセージじゃね?
って返答だっただろ?
んでそうだよ→ちがうよ→そうだもん→ちがうもん・・・以下ループ
で終わったじゃん
俺は当事者じゃねぇけどw
0359名前は開発中のものです。
2009/02/09(月) 21:03:37ID:Tt5KtR55タスクという内部の処理単位を扱う何らかのシステムであるわけだ
>>2はビデオゲームにおけるあらゆる処理を1/60[sec]で起床させる
何で?何で?何で?何で?何で?何で?何で?何で?何で?何で?
バカ?バカ?バカ?バカ?バカ?バカ?バカ?バカ?バカ?バカ?
ほれ。これに答えた奴は一人もいねーよ
0360名前は開発中のものです。
2009/02/09(月) 21:18:37ID:8Rt3AtN00361名前は開発中のものです。
2009/02/09(月) 21:25:02ID:Tt5KtR550362名前は開発中のものです。
2009/02/09(月) 23:04:12ID:ixLiaNv+すげぇむかつく
設計の本読んで初めてタスクシステム詐欺に騙されたと気づいたときには
無意味なクソコードを何ヶ月も書いていたあのいまいましい思い出と共に
うんこと一緒に流れてしまえ
いまだにタスクシステムを擁護している連中は
俺から見ると、やっと流したウンコを拾ってきてまたこびりつけるような奴だ
このクソいまいましい観念は俺が3Dを覚えるときにも邪魔しやがった
本当に俺の前に立ちふさがるうんこだった
このうんこは除去しなければならない
0363名前は開発中のものです。
2009/02/09(月) 23:07:22ID:GJIaJ9hd0364名前は開発中のものです。
2009/02/09(月) 23:24:44ID:Tt5KtR55>そういうのやねうらおだけじゃなかったけどね
>昔は多少わかりにくくても考えながら聞いてやったけど
>いまって時代が変わったってのもあるよね
>もう別に奴等の言うことをわざわざ理解してやる義理も必要もないし
>情報が氾濫しすぎてて何かしゃべっても説明責任はてめぇの方にあんだよバーカ
説明責任かー。前スレでそれ絶叫してシカトされまくってたタスクバカがいたなぁ
自分に都合の良いウソを語る奴には説明責任を追及しないくせに
自分に都合の悪い事実を語る奴に説明責任を追及するタスクバカ
例えば、タスクバカにとってタスクシステム(>>2)ってのはゲーム業界固有の秘儀!至宝のテクニック!
であらねばならなかったわけなんだが、その根拠レスな確信を揺るがしかねない歴史的事実には
頑として抵抗して耳を塞いでたな。ほんとカルトってこえーわ
んで、「それはスレ違い!スレ違い!タスクステムと関係ないから関係ないから!」って一人で騒いでたね
0365名前は開発中のものです。
2009/02/09(月) 23:36:02ID:K+aHd4rkなんか今日は違う流れっぽい。
0366名前は開発中のものです。
2009/02/09(月) 23:43:53ID:UkCGE4Ld>>2の代わりとなるわかりやすい原型を紹介してくんねーかな?
「普通に書く」っていうけど、その実態がよく分からんから、
普通の人に、鼻つまみモノ扱いされるんだと思うぞ。
タスクシステムについては、>>2で最も初歩的な原型が示されているわけだしさ。
0367名前は開発中のものです。
2009/02/09(月) 23:58:01ID:ixLiaNv+それを万能のフレームワークのようにありがたがって無意味に誇張して
本質を語る邪魔をする、全て捨てろ、それは錬金術だ
今の体系的なパターンに含むことも出来ない過去の遺物だ
タスクシステムをありがたがっている奴は
設計の本なんて一冊も読んだことがないだろ、DSLすら知らないだろ
過去の栄光にすがっていると自覚しろ
わしの若いころはこうじゃった、だからお前もこうしろって
じじいかよ、性質の悪い爺かよ
役に立たない上に新しい観念を考えるときに邪魔にしかならない
最初に覚えるべきことじゃない、それは博物館に飾って置いておくだけのもので
実用するべきものじゃない
うんこー
0368名前は開発中のものです。
2009/02/09(月) 23:58:59ID:K+aHd4rk{
wait_vblank();
自機.update( ... );
foreach ( 敵 in 敵リスト )
敵.update( ... );
foreach ( 弾 in 自弾リスト )
弾.update( ... );
foreach ( 弾 in 敵弾リスト )
弾.update( ... );
checkCollision_自機vs敵弾( 自機, 敵弾リスト );
checkCollision_自機vs敵( 自機, 敵リスト );
checkCollision_敵vs自弾( 敵リスト, 自弾リスト );
}
とかやっていくんじゃないの?
これでも出来ないことは無いよ。
0369名前は開発中のものです。
2009/02/10(火) 00:11:36ID:KBLQ7wOOその部分を汎用的にすることを止めれば
すなわちタスコシステムを使わないという選択肢を取れば
使える手が増える、増えるワカメぐらいに増える
それが様々なパターン、フレームワークの選択に繋がる
そこを汎用的にすることに執着することが、もっとも愚かしく
そして考えの浅さを露呈している箇所である
そこを隠しても大きなメリットはない
男の乳首と同じだ、わざわざ隠すような所ではない
お前らは乳首を隠してパンツはいてない
そういう間抜けなことを他人に強要しているのだよ
君たちはノーパン信者なんだよ
何も知らない奴に乳首を隠せノーパンに目覚めよと言っている
恐ろしいカルトなのだよ
0370名前は開発中のものです。
2009/02/10(火) 00:12:45ID:Gj2vSSkO否定的見解はよくわかった。
だがしかし、>>2に代わる初歩的原型は具体的に無いということだな。
>>368
それって実質タスクシステムじゃん。
0371名前は開発中のものです。
2009/02/10(火) 00:13:38ID:D1ATM4io> それが様々なパターン、フレームワークの選択に繋がる
じゃ、タスクというパターンを選択してもいいんだ。
よかったな、お前ら>1-1000
0372名前は開発中のものです。
2009/02/10(火) 00:22:09ID:lnAkDE/Dいや、原型が>>368なんじゃね? もうベタベタまんまの原型なんじゃね?
で、>>368を↓という風に美しくまとめたのがウンコシステムじゃなかったっけ?
while ( true )
{
wait_vblank();
foreach ( ウンコ in ウンコリスト )
ウンコ.update( ... );
}
んで、↓みたいなのはウンコ同士のつっつきあいで表現するんだろ?
ウンコがウンコを生成したり消滅させたりしながら。
checkCollision_自機vs敵弾( 自機, 敵弾リスト );
checkCollision_自機vs敵( 自機, 敵リスト );
checkCollision_敵vs自弾( 敵リスト, 自弾リスト );
違ったっけ?
違ったらスマン。
0373名前は開発中のものです。
2009/02/10(火) 00:23:48ID:D1ATM4io0374名前は開発中のものです。
2009/02/10(火) 00:25:21ID:st5qSMNL>それって実質タスクシステムじゃん。
うん
実質は同じだ。データのやりとり。
違うのは可読性。
実質は同じ。
違うのは可読性。
実質は同じ。
違うのは可読性。
>>371
タスクはOK
マルチスレッドの単位もスレッドだし。
だがタスクシステム。てめーはダメだ!
0375名前は開発中のものです。
2009/02/10(火) 00:37:44ID:D1ATM4io{
virtual void update( Context& );
};
typedef list< BaseTas* > TaskList;
class JikiTask : public BaseTask { ... };
class TekiTask : public BaseTask { ... };
typedef list< TekiTask* > TekiList;
class JidanTask : public BaseTask { ... }; // 自弾全部管理してるタスクだと思えw
class TekidanTask : public BaseTask { ... }; // 敵弾全部管理してる(ry
====
TaskList tasks;
JikiTask jiki;
TekiTask teki[100くらい];
TekiList tekis;
JidanTask jidan( 100くらい );
TekidanTask tekidan( 弾幕系なので2000くらいw );
0376名前は開発中のものです。
2009/02/10(火) 00:38:27ID:D1ATM4iotasks.append( jiki );
tasks.append( teki全部 );
tasks.append( jidan );
tasks.append( tekidan );
while ( true )
{
wait_vblank();
foreach ( タスク in tasks )
タスク.update( context );
当たり判定( jiki, tekis, tekidan );
当たり判定( jidan, tekis );
}
とかはイカンのか?
0377名前は開発中のものです。
2009/02/10(火) 00:39:20ID:D1ATM4iotasks.appen( teki全部 );
が一つ余計だな。
0378名前は開発中のものです。
2009/02/10(火) 00:41:18ID:KBLQ7wOOこれをタスクシステムに投入すると
list.add(a).add(b).add(new C(a, b)).execute();
c.execute() { value = a + b; }
こうなる
dという要素をこのリストに突っ込む場合
abcがdに干渉されないのであれば
d.execute()を適当に実装すればよい
干渉するのであればabcのexecuteを修正する
よって追加に強いというメリットはないと断言できる
コマンドのメリットである追加に強いというメリットはない
ないのだよ
これじゃあコマンドパターンの意味がないじゃないか
この屈辱、コマンドに対する屈辱
コマンドパターンがかわいそうだ
タスク信者はコマンドパターンに謝れ、あやまれよぅ
0379名前は開発中のものです。
2009/02/10(火) 00:46:45ID:Gj2vSSkO>>368は局部的な実装をちょこっとだけ厚化粧しただけ。
その程度の可読性有り難がってどうすんだよ。
必ずしも個々のオブジェクト(タスク)の発生と消滅のタイミングが整然としている、
例えば60フレームごとに、全タスクが一斉に発生・消滅してるわけじゃないじゃん。
つまり発生と消滅のタイミングが、微妙にずれていることにより、カオスが表現できる。
しかしカオスな状態を裏方で制御する努力は、>>2でも>>368でも変わりがない。
つまりさ、
現実を見ろ、
タスクシステムに立ち向かえ、
カオスを克服する運用ルールを見極めろ、
ってことだよ。
0380名前は開発中のものです。
2009/02/10(火) 00:49:09ID:D1ATM4io0381名前は開発中のものです。
2009/02/10(火) 00:53:47ID:0//SUk3r0382名前は開発中のものです。
2009/02/10(火) 00:53:54ID:lnAkDE/D主従関係があるとないとでは全然違う。
要素が要素に直接干渉し、要素がさらなる要素を生成消滅させるのと、
リストを扱う奴が要素同士の関係を管理して、要素を生成消滅させるの、
違うよな。
>>336がFAでいいと思うがな。
>タイトル画面や戦闘シーンは、相互依存がほとんどなく、インスタンス数もたかが知れてる。また処理パターンが仕様変更で変わる可能性がある。
こういう部分で>>2を使うことには何の異論もない。
「相互依存がほとんどなく」ってのがポイント。
タスクシステムとかいう単語を見るとな、全部ウンコリストの中でやっつけようというイメージがあるんだが、ちゃうの?
ちゃんと使い分けしてるんならそれは否定しない。>>2は否定する。全部一緒だから。
0383名前は開発中のものです。
2009/02/10(火) 00:56:22ID:r6EeZy16仮想関数とか関数ポインタとか使うと
可読性が悪くなってデバッガで追えなくなるから
全部switch/caseで書けって言ってたプログラマが居たなぁ…
0384名前は開発中のものです。
2009/02/10(火) 00:57:58ID:M5ksrydA馬鹿じゃね。
>例えば60フレームごとに、全タスクが一斉に発生・消滅してるわけじゃないじゃん。
>つまり発生と消滅のタイミングが、微妙にずれていることにより、カオスが表現できる。
それのどこがカオスなの?寿命管理なんて、結局自クラスで閉じてるジャン。
そんなことより、例えば、宇宙に漂う星々を観賞するソフトをタスクシステムで作ることを考える。
星をタスクで実装したとして、各星の間に働いている万有引力はどう記述するの?
現実を見るのはお前だな。
0385名前は開発中のものです。
2009/02/10(火) 01:05:40ID:D1ATM4io厳密にやるならワークをそれぞれ2つ持って、フレームごとにフリップだろ。
面倒だったら一つ一つ更新して、n+1がnを参照してもn+1を参照しても対して問題が無い様にするさ。
どこまで誤差を容認できるか知らんけど。
0386名前は開発中のものです。
2009/02/10(火) 01:06:43ID:r6EeZy16そーいうタスクの実行順序が結果に影響する場合は
実行時間単位でタスク状態のスナップショットを取って相互参照はそのスナップショットを参照、
という方法で擬似的に「いっせーのせ」をやる方法を物理演算系ライブラリでよくやってる。
0387名前は開発中のものです。
2009/02/10(火) 01:07:10ID:VmByRVIY>>>2に代わる初歩的原型
初歩的原型?>>2が?どーこがだよ
なんだこれ。ジョブエントリのリストを周期的にナメナメしてバッチ処理するだけ
なんでこれがゲームプログラムの初歩的原型なんだよ。バカこくでねーよ
・おめぇ、何か処理したかったら必ず先頭にTCB(は?)を入れたデータ構造にしろよ
・おめぇが書いた処理はどんなものだろうと必ず1/60[sec]で周期的に呼び出すからな。覚悟しろよ
・俺に呼び出された後はてめぇの責任で全部やりな。俺は何にもしらねーからな
こういうちゃんこ鍋ポーリングヘンテコプログラムをゲームプログラムの原型とかほざく理由を書け
0388名前は開発中のものです。
2009/02/10(火) 01:08:43ID:VmByRVIYユーザーのあらゆる処理単位のデータ構造にTCBとかいうものをねじ込んでるよな
・サブルーチンアドレス
・プライオリティ
・連結リストのパラメータ
みんな仲良くなーぜかこういうものを押し付けてきやがる。なーんでなんで?どうして?
おまけにこれが日本ビデオゲーム業界黎明期の秘儀であるなどと権威付ける。正気か?
だったら何度だっていってやる。RAM4KBにROM数十KBにBGやOBJを出力する回路を
積んだZ80マイコンボードでこれ組んでみろよ。ほれ
そして、この仕組みをそのまんま
・64bitマルチコアCPU
・数GBのメインメモリ
・ローカルメモリ数百MB搭載のGPU(DSP)カード
こういう環境上で律儀に真似しようとするのはなーんでなんで?どうして?
0389名前は開発中のものです。
2009/02/10(火) 01:11:15ID:D1ATM4io> >>373
> >>>2に代わる初歩的原型
> 初歩的原型?>>2が?どーこがだよ
俺のレスに突っ込みかよw
0390名前は開発中のものです。
2009/02/10(火) 01:13:56ID:VmByRVIY0391名前は開発中のものです。
2009/02/10(火) 01:15:44ID:M5ksrydA>>386
それは論点が違う。書き方が悪かったかな・・・
>宇宙に漂う星々を観賞するソフトをタスクシステムで作ることを考える。
>星をタスクで実装したとして、各星の間に働いている万有引力はどう記述するか。
この問題の論点は、タスクシステムにおいて、タスク間にまたがる処理はどこに書くのか?。
0392名前は開発中のものです。
2009/02/10(火) 01:17:04ID:D1ATM4ioとりあえずこの問題に限定するけど、フリーの物理エンジンの実装見たことある?
0393名前は開発中のものです。
2009/02/10(火) 01:19:09ID:r6EeZy16>こういう環境上で律儀に真似しようとするのはなーんでなんで?どうして?
そのまま同じコードで実装して使ってるところは無いと思うけど。
特にC++が主流になった現場では。
まぁ、同じ考え方のシステムはスペックにあった実装されて使われてるけどね。
スペックに関係なくゲーム作るうえで処理のプライオリティ付きでゲームの状態遷移によって出し入れできるタスク管理は便利だから。
他にいい方法があれば淘汰されてるだろうけど、この考えのシステムを淘汰できるような物は今のところ無いみたいだしね。
0394名前は開発中のものです。
2009/02/10(火) 01:21:28ID:D1ATM4ioFPSなんかは、全部仮想関数でupdateを持つEntityクラスのサブクラスにしてたりするよ。
0395名前は開発中のものです。
2009/02/10(火) 01:21:36ID:M5ksrydA無いけど。
0396名前は開発中のものです。
2009/02/10(火) 01:24:07ID:D1ATM4io答えが全部書いてあるから、見てみるといいよ。
■ このスレッドは過去ログ倉庫に格納されています