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

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2008/11/09(日) 11:51:40ID:+pjnJyQQ
タスクシステムについての議論、相談、質問、雑談などのスレです

part2 http://pc11.2ch.net/test/read.cgi/gamedev/1196711513/
part1 http://pc11.2ch.net/test/read.cgi/gamedev/1173708588/
0100名前は開発中のものです。2008/11/18(火) 07:37:14ID:P1O//Y8n
わけのわからんこと言い出すからレスが止まっちゃっただろ
0101名前は開発中のものです。2008/11/18(火) 08:29:07ID:RCT5hNLc
>ちなみに継承+多態はメモリ管理、タスク管理のどちらから見ても最悪なばかりか速度まで低下して何のメリットもない
>プログラムも複雑化してタスクシステムより尚悪い
お前は継承も使わずにプログラムしてんのか?
0102名前は開発中のものです。2008/11/18(火) 09:07:44ID:HHT2Kui7
Cには継承ないよ
haskellには継承なんてないけどそれでも綺麗なコードの実用プログラムが沢山書かれてるよ
0103名前は開発中のものです。2008/11/18(火) 12:59:38ID:k/xr4HgC
なんで唐突に Haskell が出てくるのかわからんが
deriving とか知らないのか?

で、必死になってメモリ管理とか叫んでるひととか、バカにしようと必死な人とかは
スルーしたほうがいい気がする。
0104名前は開発中のものです。2008/11/18(火) 16:11:47ID:jVsaZ2Nt
>>99
>タスクシステムっていうのは
>  ・メモリ管理
>  ・タスク管理
>の2種類から構成されている

前スレログ読みましたが、クラスを使うとフラグメントが発生どうのとかよく分からない話をして
数人から突っ込まれてたID:IuSgJyHuさんですか?たぶんそうだろうかと私は思うのですが。
ところであなたの言う「タスクシステム」とやらは具体的に何なのでしょう。これと思う実装例が
あるならそれを示してくれませんか。人によって定義が千差万別の俺俺システム「タスクシステム」
ですから、その言葉を発する人間が登場する度にこうやって確認せざるをえないわけで。
このように、確固たる出典がない、言い方を変えれば権威が不在というのは不便なものです。
技術用語としての存在価値が疑問視され、所詮はローカル用語といわれるのも頷けます

>メモリフラグメントに対して固定長データという回答を出したのがタスクシステムの功績

ん?70年代中期・末期において主記憶をページング方式で管理することに新規性があったと。
簡単のために操作対象を固定長に分割・管理する、つまり固定長レコード方式というものに
新規性があったと。そういうお考えで?
当時のソフトウェアエンジニアの通念というものが集計できるならば、あなたの考えは当時としても
非常に珍しい類のものだろうと思います。かなりエキセントリックだろうと思います

まぁ確かに、計算機についての基礎教養が欠乏、というかむしろ知的水準が絶望的に低い人間
にとっては世の中のあらゆる仕組みはあらゆる時代を通じて常に新規性に満ちた凄いテクノロジー
なのでしょうけど…
そういう知的弱者・情報弱者・底辺階級をターゲットにした功績話を絶叫するのはあなたの趣意ですか?
0105名前は開発中のものです。2008/11/18(火) 16:24:48ID:vNWKmyux
i君乙
あいかわらず厭味だねぇ
0106名前は開発中のものです。2008/11/18(火) 22:15:12ID:7msrEyPM
変わらぬ芸風も、また一興
0107名前は開発中のものです。2008/11/19(水) 02:14:42ID:QielmcSv
>>101
今は継承を使わないのが流行り
おまえだってhasAにしてるんだろ?
特に深い継承はアンチパターンになりつつある
継承+多態の効率の悪さはいわずもがな
ゲームで使っちゃいけません

>>102
継承は基本的に汚いコードになると思うよ
設計書は綺麗になるけど

>>104
ギャラクシアン以外をタスクシステムと呼んでるのは某よっちゃんいかの人だけだよ
固定長レコードというCOBOL的なものをゲームに持ち込んだのは新規性がある
そもそも固定長レコードはフラグメント解消のものではなかった
バナナでクギを打った所に新規性があるんだよ
トンカチあるから必要ないよねっていうのは別の話
0108名前は開発中のものです。2008/11/19(水) 03:31:19ID:FID+LaPo
>>107
"is a" 関係でも継承使わないってこと?それだと無理なコードにならない?

効率が悪いというけど、そもそもゲームで CPU 処理時間がボトルネックになること
すら稀なのに、さらにそのうち継承+多態によるものは数%以下でしょ?
ヘビーなループ内では問題になることもあるだろうけど、はじめから使わない前提に
する必要は無いと思うよ。
0109名前は開発中のものです。2008/11/19(水) 08:36:26ID:yTZjB9bO
>>107
> 今は継承を使わないのが流行り
実装継承とインターフェース継承を混同しとるな。
0110名前は開発中のものです。2008/11/19(水) 19:07:46ID:U55fYg17
>>107
> 固定長レコードというCOBOL的なものをゲームに持ち込んだのは新規性がある

固定長レコードはそれよりずっと以前のパンチカード由来。例えば19世紀末のタビュレーティングマシン
そこから進化したユニットレコード装置とかPCS(パンチカードシステム)とか。(※)
この時点でパンチカードのレコード長は大抵【80カラム】。これが処理単位だった
それがそのままコンピュータの記憶装置に使われ、その後の記憶装置の仕様にも反映された
アセンブリ言語のプログラムは一行80カラム。データも同じく。メインフレームのRecord Oriented Filesystem
初期のFORTRAN、OSのジョブ制御言語、COBOLなどなど、あらゆる処理の単位としてこの【80カラム(バイト)】が
当然のごとく登場した

FORTRANが登場したのは1950年代の半ば
COBOLが登場したのは1950年代の末

(※)更に遡れば19世初頭のジャカール織機だとか18世紀末のオルゴールだとか色々あるかもだが
0111名前は開発中のものです。2008/11/19(水) 19:37:40ID:U55fYg17
(訂正)
> アセンブリ言語のプログラムは一行80カラム。
 ↓
アセンブリ言語のプログラムは80カラム単位でロードされた。
----------------------------------------------------------

>>170
> そもそも固定長レコードはフラグメント解消のものではなかった

固定長レコードとか固定長データとかいう構造(要するに配列)が大昔から現在まで色んなところで
便利に使われてるのはその取り扱いが、実装が、極めて単純だから。
例えば
・データの所在(番地)が容易に算出できる
  先頭番地+オフセット。このオフセットがレコード長*レコード番号で済む。
  処理が単純化できるし回路も単純化できる。つまり真空管数(トランジスタ数)を抑えられる
  占有面積も重量も放熱設備も電気料金も抑えられる。
・外部フラグメンテーションの制御が簡単
  記憶領域を【容易に】再利用できる
  最大長を決めてるからデータ書き換え時には旧データに新データを直接上書きできる
などなど。頻繁に書き換えるデータにはどれも重要な特性。

固定長なデータ構造はそのメリットの大きさゆえに、デメリット(レコード内の無駄。内部フラグメンテーション)
が許容されるケースは多い。COBOLも、COBOLが登場する以前の事務処理プログラムも可変長データの大半は
最大サイズを決めたうえで固定長レコード、それを収束した固定長ブロックで格納した。
今のRDBや簡素なDBMも基本的には同じ
0112名前は開発中のものです。2008/11/19(水) 20:12:26ID:U55fYg17
>>170
> バナナでクギを打った所に新規性があるんだよ
> トンカチあるから必要ないよねっていうのは別の話

その例え何かおかしくないか。常温バナナで釘を打つのは確かに斬新な愚行だが

規模がまるで違うものを指してトンカチと冷凍バナナという話をしているのかなと前向きに解釈してみるか

大昔には科学者もエンジニアもシステム屋もみんな今とは比べ物にならないくらい貧弱なハードでやり繰りしてた。
FORTRANやCOBOLが登場する以前の計算機を駆使する人間は多かれ少なかれ今で言うところのハッカーじみた
技能やバッドノウハウを身に付けて自前のサブプログラム群をシコシコ作って自前ライブラリ用意したりした。
FORTRAN登場後も初期のFORTRANコンパイラの最適化は不十分で最内周ループ処理など頻繁に呼び出す処理の
アセンブリコードを自分で書く利得は大きかった。(※)

これらは日本のビデオゲーム業界が隆盛を誇るずっと以前の話

つまり、ド貧弱な装備でシコシコ戦うことを強いられ、セコくて貧乏くさい高速化テクやリソース節約テクを駆使してたのは
何もゲーム業界固有の境遇・逆境だったわけじゃない。もしゲーム業界固有だなどと思い込んでる人間がいるなら
そいつはルサンチマン君だ

(※)その後BLAS、LAPACK、MPIなどなど先人の開発した優れたライブラリが沢山登場し
   FORTRANコンパイラの最適化機能もとても優秀なので自前でシコシコする必要なくなった
0113名前は開発中のものです。2008/11/19(水) 20:14:33ID:U55fYg17
(訂正)
>>170

>>107

>規模がまるで違うものを指してトンカチと冷凍バナナ

本来の用途がまるで違うものを指してトンカチと冷凍バナナ
0114名前は開発中のものです。2008/11/19(水) 22:25:30ID:1obj959Z
>>108
俺も継承は使わないほうがいい派
実装とかインターフェイスとか関係無い
そのメソッドやメンバがどのクラスのものであるのかわからなくなるのが最大の害だと思う
しかもオーバーライト(?名前忘れた)されると今度は同じ名前のメソッドがあって
どれを呼んでるのか本格的にわからなくなる

どうしても使わなきゃならんのがMFCみたいな変態実装になってる場合
自分に内包してるモンを継承使って書き換えさせるウンコソース
これは仕方がない

でも、できるだけhas aの関係でまとめたほうがいいと思う
0115名前は開発中のものです。2008/11/19(水) 23:52:57ID:GeiIfEUV
>114
ttp://www.bizlogic.co.jp/techinfo/reconsider/inherit.htm

>新人プログラマほど継承を乱用します.特に新人が好むのは、
>コードの再利用のための継承です.(中略)
>新しいサブクラスが必要になって定義しようとしたら、親ク
>ラスに不整合があることを発見して修正.すでに定義済のサ
>ブクラス群に影響が出るためそれらを修正.その影響がクラ
>スのクライアントに出ることに気づかず、バグが連発.修正
>を繰り返すうちに設計し本人しか理解できないような継承階層が完成・・・

イイハナシダナー

耳の痛いことだが、とりあえずタスクシステムのせいじゃないと思うんだw
0116名前は開発中のものです。2008/11/19(水) 23:59:13ID:GeiIfEUV
ギャラクシアン以外をタスクシステムとして認めない原理主義者が現れてスレ的には
おめでいたいことだが、狭量すぎやしないか?
とりあえずメモリ管理については
・当時はそもそも自前のメモリ管理以外存在しない。
・メモリに制約のあるシステムならタスクシステムでなくても必要
だから、タスクシステムの絶対条件じゃないと思うんだが。
0117名前は開発中のものです。2008/11/20(木) 00:34:43ID:9Z88vxLa
そもそも当時と今とでは
「メモリ管理」って言葉が指すものがだいぶ違うからな。

今のゲーム開発だと
メモリ管理モジュールの綿密なアーキテクチャの設計と実装を主に指すけど、
当時のは「管理モジュール」なんて呼べないような極々シンプルなものだからな。
0118名前は開発中のものです。2008/11/20(木) 00:39:08ID:K7xBu4Cw
連投スマヌ ちと古いが、>>44
ttp://www.t-pot.com/program/140_GameAISeminar4/index.html
Haro2のAIは階層型FSMとやらで実現されているそうだ。

>>41によれば「タスクシステム=FSM」だそうだから、タスクシステムでできそうな
気がするというのもあながち的外れではないかもよ。

もっとも、50がいう配列厨もFSMの一実装じゃねーのと思うので
タスクシステム=FSM=配列厨となって自己矛盾じゃないのかとか思ったり。
なんかFSMの解釈間違ってる?
0119名前は開発中のものです。2008/11/20(木) 00:52:20ID:K7xBu4Cw
>>117
CUDAを調べてて思ったんだが、メモリ・ワークをどこにとるかでパフォーマンスが
大幅に違ったりするみたいだし、いまどきのゲームのメモリ管理ってそうなんだろうな
0120名前は開発中のものです。2008/11/20(木) 01:35:27ID:sLhTakp+
3スレ目になったが、今だに喧嘩腰じゃないと議論もできないのか・・・
0121名前は開発中のものです。2008/11/20(木) 01:41:10ID:K7xBu4Cw
>>120
喧嘩腰に見える?そりゃすまん。
0122名前は開発中のものです。2008/11/20(木) 03:32:51ID:sLhTakp+
ああいや、個人を指してるわけじゃなくて、
スレ全体の雰囲気のことを言ってる。
0123名前は開発中のものです。2008/11/20(木) 23:36:18ID:Xvygn8lQ
>>118
> >>41によれば「タスクシステム=FSM」だそうだから

>>41では「タスクシステム=FSM」というような趣旨のコメントはしてない
>>41までは「ここでタスクシステムと呼ばれてるものが何なのか知らんけど」という立ち位置でコメントしてる。ただ
そのままの状態でポエムを書き続けるのは難しいんで>>43以降はみんなのテンプレ(?)と思われる>>2を引っ張り出し
「タスクシステムとは>>2」という前提(or仮定)のもとでコメントした

そして>>43以降(ID:mdtDWXyh、ID:U55fYg17)でも「タスクシステム=FSM」という趣旨のコメントはしてない
【非常に簡素でオーソドックスなFSMモデルの】ジョブ制御、【小規模で簡素なFSMモデルの】ジョブ制御
というような書き方はしてたが。これ通じ難かったんかな。一応意味を補足するためにダラダラ書いたんだが。
与えられたCPU時間でジョブを細切れにして処理の継続(continuation)に必要な手続きをユーザーに丸投げする
原始的なジョブ制御な

「70年代のハードに依拠する簡素なゲームにとっては無難なジョブ制御プログラムとかモニタプログラムの【断片】だね」
とも書いてるが、「70年代のハード」をちょっと修正すると「70年代〜80年代初頭にかけて登場した典型的な実装対象(※1)と開発環境(※2)」

(※1)基本的には○MHzの8bitCPUに○KBのRAMに○KBのROMのマイコンボード
    これにOBJ(とかBGとか★とか)の表示や(固定)サウンドの出力やコイン制御のための回路や各種スイッチ(のインターフェース)
    あと必要なら大容量ROMのバンク切り替え回路、などなどを付加したカスタムボード。
(※2)ここでは、8or16bitPC(或はマイコンボードをカスタムしまくってデスクトップPC化したTK-80BS みたいなやつ)と
    簡素なリモートデバッガ、エディタ、クロスアセンブラ(別にハンドアセンブルでもいいけど)で構成されるもの
0124名前は開発中のものです。2008/11/20(木) 23:39:52ID:Xvygn8lQ
(訂正)
○MHzの8bitCPU

○MHzの8or16bitCPU
0125名前は開発中のものです。2008/11/21(金) 01:39:25ID:gOWsGtVr
>>123
そういう立ち位置なんだとすると余計にわからなくなるのよ。

>「ここでタスクシステムと呼ばれてるものが何なのか知らんけど」

という立ち位置の人間が、ゲーム開発者ローカルな用語である「タスクシステム」
という用語とそのスレッドで、

>タスクシステムすげぇすげぇ言ってる超小規模開発・個人開発なら

てな形で批判的な言説を繰り返す理由が。てっきり

>タスクシステムを心の底から崇拝する人間が心の底から子バカにしている様子がたまに見受けられる 配列厨のコードそのものだ。

という形で小ばかにされたことをこのスレにぶつけてるんだと思ったよw 俺の立場としては

>ゲームプログラムでは、複数の構造体変数を管理することにより、複数のキャラクタを
>管理できます。複数の構造体変数を管理するための方法は、構造体をリスト構造で管理
>する方法と構造体を配列で管理する方法の 2 種類あります。
ttp://msdn.microsoft.com/ja-jp/academic/cc998623.aspx
の実装方式の一つだろうという前提で、そのメリットデメリットに興味があってここに参加しているのだけども。
ちなみに上記の例でいえば、マイクロソフトは配列厨だなw
0126名前は開発中のものです。2008/11/21(金) 01:41:47ID:Ch23O/ls
>>120,122
タスクの話題に限ったことじゃないけど
賛成か反対かの単純な対立に流れることは多いね。
わかりやすいから盛り上がるけど白熱しすぎて喧嘩になったりする。
でもその対立構造が正しいとは限らなくて
良い意見が喧嘩に埋もれてしまったり。

ゲーム製作技術板なのに技術の話じゃなくてすまん。
0127名前は開発中のものです。2008/11/21(金) 02:31:22ID:gOWsGtVr
>>126
確かにそうだ。俺も何が対立軸なのかよくわからなくなってるよw
俺は情報系の人間じゃないんで、ゲームのオブジェクトの相互の振る舞いは
FSMの一形態と見なせるみたいな発言を単純に面白いなと感心するんだけど。
0128名前は開発中のものです。2008/11/21(金) 02:35:33ID:EpPTVUTk
配列で線形リストも組めない雑魚が配列をバカにしてるのを見ると悲しくなるし、
そもそもタスクシステム(特にこのスレで主流の複雑な実装)は速度的に不利なんだから
素直に配列さんごめんなさいって言えばいいと思う
0129名前は開発中のものです。2008/11/21(金) 21:53:14ID:HLQRvhCb
この3連休でタスクシステムの仕様についてまとめるように、以上。
0130名前は開発中のものです。2008/11/21(金) 23:55:06ID:gOWsGtVr
>>128 が、>>123だとして、わからん、お前のいうことはわからん!(大滝秀ry

>配列で線形リストも組めない
どこかで queue を配列で組む入門例があったけど、そんなものじゃないだろうし、
だとしてもその線形リストで、まさかタスクシステムをつくるわけじゃなかろうし、わからん。

>雑魚が配列をバカにしてるのを見ると悲しくなるし
どのレスを指しているのか、わからん!

>このスレで主流の複雑な実装
どれだよ!>>43なんか、
>誰が書いても同じようなものになるってくらい凡庸な、道端の雑草並みのありふれた仕掛け
とかいってるぞ。凡庸でありふれて複雑て、どっちなんだよ。

>速度的に不利
いや、ロジックの部分は大して食いませんてば。最近のゲームはそうでもないのか?

>素直に配列さんごめんなさい
君が配列ラブなのだけはなんとなくわかったよ。ごめんな。
0131名前は開発中のものです。2008/11/22(土) 06:09:06ID:gy1lHoyD
>>128は書いてる内容から明らかに雑魚だなw
0132名前は開発中のものです。2008/11/24(月) 11:26:55ID:bZE/I6Oe
>>129
いまどきのタスクシステムの仕様
1.クラス名、構造体名に「Task」を含む
2.描画物とそれ以外の処理を同列に扱える(ことがある)

これくらいじゃね
0133名前は開発中のものです。2008/11/24(月) 23:39:25ID:0qULllkp
「ゲームプログラマになる前に覚えておきたい技術」
を読んだけどタスクシステムなんて使ってなかった
普通に配列使ってて、配列の上手な使い方がのってた

やっぱプロは配列を使うんだね
0134名前は開発中のものです。2008/11/24(月) 23:42:11ID:L4g5tFOs
>>133
2chでしかでかい声は聞かない(マジで)
0135名前は開発中のものです。2008/11/24(月) 23:58:55ID:c7RL3I32
>>133
はいはい、配列さんごめんなさい。

>>133は、配列の利便性と構造体を使ったリストの有用性の違いがわかっていないようだ。
もう一度、データ構造を見直すことをお薦めする。
0136名前は開発中のものです。2008/11/25(火) 00:45:31ID:iVVKZxJp
>>133
おま・・・リスト使うか配列使うかの話かよw
セガがリスト使わないなんてありえないから、安心して両方の使い方を覚えような
ついでに二分木やハッシュも覚えておくこと
0137名前は開発中のものです。2008/11/25(火) 00:58:47ID:nYppp7MY
配列 : 削除、追加時のコストが高い。検索が速い
リスト : 削除、追加時のコストが安い。検索が遅い

リストは単純に舐めるだけでも遅い
ここで比べるべきなのはデータの検索(巡回)・追加・削除がゲーム中にどれだけ発生して
それを処理するにはどんなアルゴリズムとデータ構造がベターであるかだ

データの検索(巡回)よりも追加と削除のほうが多いゲームなどない
だからリストより配列のほうがゲームに適している

リストの有意点とはデータサイズの見積りをサボれるという一点に尽きる
たしかに配列のリサイズはゲーム中にはとても不可能だからこれは魅力だ
しかし、ゲームを製作する上で場面ごとに必要なメモリの見積もりなんてやって当たり前の話で
その程度の理由でリストを使うなんておかしい

以上の理由からゲームでリストを使う事はない


弾幕STG等ひたすら衝突判定を繰り返す場合なら
検索アルゴリズムの都合で配列よりツリーがベターな場合もある
(STG製作技術スレで話題になってたエリア別ツリー構造等。FPSでよく使われるが)
だから配列がベストとは言わないが少なくともリストに劣ることは無い
0138名前は開発中のものです。2008/11/25(火) 02:46:59ID:WElvD00o
いつからリスト対配列になったんだ?
タスクシステムは固定長データが重要とか言い出した>99あたり?

つか>126じゃないけどその対決って
どうしても勝ち負けを決めないといけないようなことなの?
0139名前は開発中のものです。2008/11/25(火) 13:07:00ID:iVVKZxJp
>>137
もっともらしくウソついてんじゃねーよ
わざと言ってんだろ。明らかに初学者に対して悪意のあるウソだな

>リストは単純に舐めるだけでも遅い
誤り。「単純に舐める」=シーケンシャルアクセスに有意差はない。
配列が有利なのはランダムアクセスの場合。

>データの検索(巡回)よりも追加と削除のほうが多いゲームなどない
比較方法の誤り。巡回回数と挿入回数を単純に比較しても意味はない。
コストの違いは以下のようにO記法で考えると分かりやすい。

・シーケンシャルアクセス(巡回)のコスト
 配列はO(n):要素数が増えると処理時間が増える
 リストもO(n):要素数が増えると処理時間が増える
・ランダムアクセス(インデクス値でアクセス)のコスト
 配列はO(1):要素数が増えても処理時間は変わらない
 リストはO(n):要素数が増えると処理時間が増える
・挿入、削除のコスト
 配列はO(n):要素数が増えると処理時間が増える
 リストはO(1):要素数が増えても処理時間は変わらない

O(1)はO(n)に対して非常に有利なので、
ランダムアクセスがありそうなら配列を、挿入がありそうならリストを選ぶのが一般的。
どちらもありそうなら実際に処理時間を計測してみるのが良い。
処理時間とは別に、メモリのフラグメントを嫌ってリストを避けたい場合は、
データ本体は配列構造に置き、管理はZソートされたリスト構造に、
というように両方を組み合わせる手法もある(C++オブジェクトをメモリプールするのと同じことだけどね)。

とにかく、初学者は「どっちが勝ち」みたいな議論に振り回されないこと。
ぶっちゃけ実際に動かしてみて問題がないなら、なんであれそのやり方は正しい。
0140名前は開発中のものです。2008/11/26(水) 00:21:42ID:wcFZ5Gxi
ID:mdtDWXyh、ID:U55fYg17、Xvygn8lQ だが…。どうしたもんかね。とりあえず俺にレスした人から順番にレスするか…

> ID:K7xBu4Cw、ID:gOWsGtVr

>>123の時点では↑この人の諸元と過去発言を把握できなかったがサンプル数が増えたおかげで大凡のところ見当が付いたわ。
まず俺の一連の書き込み( ID:mdtDWXyh、ID:U55fYg17、Xvygn8lQ )から「タスクシステム=FSM」という解釈に至るのは難しい(※)
@FSMの意味をよく理解していないA人の話をよく聞いてないかB意図的に歪曲して解釈しようと努めている、のどれかだろう。
@ならFSMや有限状態機械でググレとしか言えんしAならちゃんと読んでくださいとしか言えんしBなら正直相手にしたくない

奇遇にも過去にこの人物と同じ解釈「タスクシステム=FSM」を披露したのはルサンチマン君のID:SCRh4oL7ただ一人だ。
ID:K7xBu4Cw 、ID:gOWsGtVrがこれと同一人物なのか知る由も無いが、かなり似通った特徴的な思考・読解の持ち主だなとは思う。

さて、この人は更に>>130で「>>128 が、>>123だとして」という謎めいた仮定を持ち出してるのだが、なんでこうなるんだろうね…
俺の過去発言と照らし合わせれば無理があると容易に分かるはずだよな
この人は>>130で自らそれを説明してみせているにも関わらず、その仮定が真であるという前提のコメントを書くだけで
その仮定が偽であるという(当然あってしかるべき、より可能性の高い)前提のコメントは結局書くことはなかった。妙だね

 ・ただ単にコミュニケーション能力の不足、悪意のない、無知、短気、舌足らずゆえにこういう尻切れトンボで終わった
 ・「>>128>>123であってほしい。いやむしろそうあってくれ。頼む。これで終いにしよう」という願望の現われ

まぁ後者ならそのご期待には添えないとしか言えない
俺は配列に「さん」付けしてもらうことも、ましてや便所のラクガキにおいて初心者(?)に謝ってもらうことにも興味がない
0141名前は開発中のものです。2008/11/26(水) 00:23:32ID:wcFZ5Gxi
(※)素直な思考の持ち主ならば、ゲームプログラムの中で【状態を保持し遷移する】ような要素、つまりFSMモデルを適用しやすいもの
としてまず初めに思い浮かぶものといえばシーン(オブジェクト)やエンティティだろう。そういったもの⊂FSMと解釈するならわかる

>>2そのものをFSMとして説明することはできるが、これを言い出したらプログラムも電子計算機も社会基盤も自然環境も惑星も
#銀河も宇宙もFSMモデルで説明できるという話になる。ぬるま湯に溶かしたハナクソを構成する分子の振る舞いも、乾いて風化した
#ハナクソ粉体の振る舞いもFSMモデルで滔々と説明できるという話になる。こういう話は埒外であり、するつもりはない
0142名前は開発中のものです。2008/11/26(水) 01:14:00ID:bxsuU9Ti
話が難しすぎてついていけません><
0143名前は開発中のものです。2008/11/26(水) 02:19:03ID:RbP/LZbz
>>140が誰と何の話をしてるのか全然わからんけど
>>2=「ジョブコン」=FSMという話は直感的で分かりやすいと思うぞ

てか名称「タスクシステム」は人によって定義が違うから使うな。議論が混乱する
0144名前は開発中のものです。2008/11/26(水) 02:34:19ID:RbP/LZbz
ああ、>>140をフォローしたつもりが逆だったらしい
>>140はFSMって言い方が抽象的すぎるっつってんのね?
了解。もう言わん
0145名前は開発中のものです。2008/11/26(水) 08:30:23ID:P2jaFZy4
>>137
冗談だろって思って配列にしたら速くなった
たぶんキャッシュ周りも関係してる気もする
01461302008/11/26(水) 23:22:37ID:QqsnFsqJ
>>140
>@FSMの意味をよく理解していないA人の話をよく聞いてないかB意図的に歪曲して解釈しようと努めている、
どれもそれなりにあてはまるとは思うが、あえていうならAかなw

とりあえずBについてはそういう意図も一部あったんでそれは謝っとくよ。
ただ、前提として >>40,>>41で繰り返された

>ここでタスクシステムすげぇすげぇ言ってる

というような傾向は無いとはいわんけど(タスクシステムスレだし)、実装で苦労してるみたいな話が中心で、
mdtDWXyhが挑発的な言辞を繰り返さなきゃいかんほどかね?と思うけどな。
01471302008/11/26(水) 23:23:39ID:QqsnFsqJ
>「タスクシステム=FSM」を披露したのはルサンチマン君のID:SCRh4oL7ただ一人だ。
これは順番が違う。同じレスを指してると思うんだけど、

(1)「タスクシステム=FSMだ」という発言があった。
(2) そのあとに >>41で「原始的なFSMモデルのジョブ制御」という発言があった

ので、同一人物か同じ立場の人間が批判的な意味で FSMという単語を使ってるのかな?と思ったんだよ。意味合いは違うようだけどFSMという用語を使うレス自体が少なかったからそこは勘弁。

その上で、ゲーム上のオブジェクトの振る舞いをFSMモデルで捉えることはできるだろうけど、それは配列で構成されたゲームについても言えることで、タスクシステム(実装)批判につなげるのはおかしいんじゃないの?と皮肉ったつもりだったのよ。
01481302008/11/26(水) 23:28:25ID:QqsnFsqJ
ただまあ、タスクシステム(ジョブコンでもいいや)の適用範囲とか実装上の問題点と
か、そういう流れになってくれると嬉しいんで、「これで終わりにしてほしい」という
のも正直なところ。だからピンダッシュに反応しすぎた俺も悪い。もうだまっとく。
0149名前は開発中のものです。2008/11/26(水) 23:53:44ID:wcFZ5Gxi
>>139>>137のお話について横から首突っ込んで初学者向けにポエムを書いてみるか

実際の処理速度を語るとき、ランダムアクセスといったら、メモリアドレスを基準にしたランダムアクセスという話も当然絡んでくる
データ構造上の順番(連結リストなら繋がれた順番)を基準にしたらリニアアクセスだよ、といってもメモリアドレスを基準にしたら
ばっちりランダムアクセスになっていました、という状況も当然あり、この場合は処理する要素数と要素サイズと実装対象によっては
べらぼうなペナルティを受けたりする。ので

>>リストは単純に舐めるだけでも遅い
>誤り。「単純に舐める」=シーケンシャルアクセスに有意差はない。

これは状況ごとにプロファイラなりアナライザにかけて検証してみないと分からないというツマラナイ結論に帰結する
ので

>とにかく、初学者は「どっちが勝ち」みたいな議論に振り回されないこと。
>ぶっちゃけ実際に動かしてみて問題がないなら、なんであれそのやり方は正しい。

だよな

(続く)
0150名前は開発中のものです。2008/11/26(水) 23:55:50ID:wcFZ5Gxi
(続き)
ただし、連結リストを>>2のように使う場合と、ジョブの種類別に配列でデータを固めてる場合(※)を比較すると、前者は不利な状況に追い込まれる
>>2は何でもかんでもごった煮の連結リストでおまけに各要素は好き勝手にジョブを指定してくる。プライオリティ(?)とかいう変数を何に使うのか
知らないがこれでソートされてようが各要素で毎度毎度サブルーチンのアドレス(関数ポインタ)経由でジョブを実行させている
つまりハードウェアにとっては要素ごとに何のジョブを実行するのか予測が難しい。どのジョブが実行されるにせよ、その内容が大して代わり映え
のない超単純な数値積分であれば、分岐予測で速度を稼ぐハードウェアにとっては嫌がらせに近い仕掛けであり、ブチ切れる可能性が高い

○万のパーティクル(数千の通常弾に数千の煙に数千の閃光に数千のフラグメント)を撒き散らす物量ゲーとかなら、そういう要素には
>>2ではなくジョブの種類別に配列でデータを固めて一括処理するほうが速度が出やすくなる。
趣味プログラマであれば、今様のゲーマー仕様PCで実験してみればすぐに確認できる

(※)この手の配列厨コードは、Zソートを回避するあるいはCPUによるZソートを回避する色んな工夫とセットになる。
単純な加算合成だけでなく、アルファブレンドなしアルファテストのみテクスチャに描いてグレア処理して合成とか色々
0151名前は開発中のものです。2008/11/27(木) 00:37:08ID:q61URdTy
>要素ごとに何のジョブを実行するのか予測が難しい

その辺は面白い、つか考えてなかったな。
以前、ビデオキャプチャしたYUY2をP4-2.4GHzでソフトRGB変換する、ってのをやってて、
30万ピクセルをfloat演算して1フレーム8msec.程度でで処理できてたから、いまさら数万の
オーダーでがたがたいうなよって思ってたけど、言われてみれば配列のシーケンシャル
処理に近いんで、キャッシュの効かなそうな処理なら、どのくらいで処理してるのか確
認すべきだな。
0152名前は開発中のものです。2008/11/27(木) 00:57:00ID:q61URdTy
>プライオリティ(?)とかいう変数を何に使うのか 知らないが

これはメリットというより必要悪に近いんじゃないかな。ゲーム上のオブジェクトを
動的に生成するタイプのタスクシステムだと、処理順が不定になってしまうので、
プライオリティという形で処理順を明示できるようにしてある、みたいな。
そこまでして処理順を確定しないといけないような場面があるのかどうかは
ちょっとわからん。初心者なもんで。
0153名前は開発中のものです。2008/11/27(木) 05:33:57ID:d1RPtk1Q
処理順は固定じゃないと駄目なんだよ
壁当たりの判定を保持するような物体の当たりチェックは
普通の物体のチェックより後にやらないと
簡単にすり抜けが発生してしまう

俺、当たりのチェックだけはタスクシステム使ってようが
直書きしたほうが安全な気がする
0154名前は開発中のものです。2008/11/27(木) 06:07:57ID:qLIfWPBB
プライオリティについては>>2のWhite PaperとLogician Lordでは
リストに連結されたタスクの中身が何なのかを示すために使われてる。
例えばここだな。

http://web.archive.org/web/20041012012504/www.hh.iij4u.or.jp/~peto/Games/task_03.html
>あらかじめ、優先度とタスクワークの構成を決めておきます。優先度は、例えば次のようになります。
> * 0x1000: ジョイスティックの入力解析
> * 0x2000: 自機の制御
> * 0x3000〜0x3fff: 敵の制御
> * 0x4000〜0x4fff: 背景の制御
> * 0x5000: キャラクタ表示

一つのリストに纏めようとするからプライオリティなんてものが必要になる。
必要悪どころかはっきり悪だと言ってあげるよ。
この仕様だとタスクを増やすたびに追加すべき位置をサーチしなければならない。
またタスクの中身を知るために優先度を確認していかなければならない。

enemyはenemyリストに、backgroundはbackgroundリストに入れりゃいいんだよ。
別に配列でもいいが。
0155名前は開発中のものです。2008/12/01(月) 12:21:06ID:+Gl5Bh4T
ピンキーネット所属の藤松みこを最初の辞職に追い込んだは
フリーで湯沢と言うビデオカメラマン(元アートハウスゴン社員)から陰部に指を挿入されたことが原因だ!。

当時現役だった彼女にはショックな出来事で事務所とメーカー巻き込んで大騒ぎ。
カメラマンは土下座しただけで金銭は請求されなかったのは何故か疑問だったが…。
(意外と優しい事務所だったりして…。)

普通は事務所から脅され賠償金を請求され業界追放に追いこまれるだろう!

ちなみにセクハラ事件でカメラマンの追放まで追い込んだ領家ゆあの前事務所とは雲泥の差だ。

また普段から公私混同するカメラマンとして有名だし次回彼の標的になる10代のアイドルが気になるところだ。
0156名前は開発中のものです。2008/12/01(月) 13:32:33ID:zCQmgzIM
ttp://www.page.sannet.ne.jp/hirasho/diary/diary0811.html#30

>タスクシステムについて触れられてない、とか書かれているのを見つけた。
>何それ?おいしいの?直感的でない、変に抽象化されてデバグしにくい、実行順がコードの形で書かれておらずメンテしにくい、
>等々、どう考えてもあれが有効な場面があるとは思えない。使っている人を問いつめたことがあるが、結局利点は出てこなかった。
>一つ考えられるとすれば、独立性をきちんと保って各タスクを書いていればマルチスレッド対応がしやすそう、ということくらいか。
>しかし、どうせ複数タスクから同一のクラスインスタンスを参照してたり、妙なシングルトンやらグローバル変数を見てたり、
>依存関係が不適切なためにスケジューリングが複雑化したりするに違いなく、本当にマルチスレッド実行していい状態にあることを保障するのは容易ではない。
>よほど訓練されたチームでなければそんなことをする気にはまるでならない。
0157名前は開発中のものです。2008/12/01(月) 19:17:54ID:JLnsfkv1
だからタスクシステムなんて聞くのは2chだけだって
ここの信者だけだよ威勢がいいのw
だって現場で聞いたことないもんw
0158名前は開発中のものです。2008/12/01(月) 21:32:13ID:igKS/Zf4
大手ならどこでも通じる
0159名前は開発中のものです。2008/12/01(月) 22:17:35ID:JLnsfkv1
>>158
そしたら下請けに流れてきてもおかしくないじゃん
0160名前は開発中のものです。2008/12/01(月) 23:06:38ID:/JTH9VCP
俺は自分からは使わんが、他社の2回くらい見たぞ?
もちろん>>2そのままじゃなかったが、ネットでよく聞くから増えてんじゃね

つーかさー、NDSのサンプルよく読んでみろよ・・・
現場で見たことないって騒いでるやつはDS開発やったことないのか?
0161名前は開発中のものです。2008/12/02(火) 01:05:14ID:68pyN8gN
サターンしかやったこtない
0162名前は開発中のものです。2008/12/02(火) 08:48:36ID:2eboyQhG
俺は、据え置き型ばっかり
0163名前は開発中のものです。2008/12/02(火) 17:21:35ID:2m2wCEKn
ttp://www.page.sannet.ne.jp/hirasho/diary/diary0812.html#2
ひらしょ氏、今日の日記でも検討してるな。

いずれにしても銀の弾丸じゃないのは当然として、鉛の弾丸かどうかは微妙なところか。
否定派のつもりはないけどね俺。
0164名前は開発中のものです。2008/12/02(火) 19:37:52ID:RctAWrR8
>>163
いいなこの人
説明に難しい言葉を使わないようにしてるし
ちゃんと人に伝えようという文章に好感が持てる
0165名前は開発中のものです。2008/12/02(火) 20:12:02ID:VDtsWa1y
たしかに
タスクシステムとは可搬性と再利用性に優れた素晴らしいシステムなんです
とか繰り返してた人たちの話よりよっぽど分かりやすい
0166名前は開発中のものです。2008/12/03(水) 02:05:13ID:lPaxGufd
ひらしょ氏の日記見て来ますたw

つか、ヒープのフラグメント避けるためにサイズの違うデータでも固定長メモリ確保するとか
俺が学生時代にごくナチュラルに作ったものだが・・・。メモリプールという言葉の存在すら知らないまま。
まずさ、ゲームで使われている技術なんて、3Dやら除けば全然大したことがなくて
独自性などどこにもなということを認識するべきじゃなかろうか。とりわけ今となっては。

> だからタスクシステムなんて聞くのは2chだけだって

昔のアマゲ周辺でそれなりに聞いたかな。某よっしん氏等も使ってた記憶が。
ただ、言葉は聞くけど実体は人それぞれという類のものだよね。
オブジェクトをリストで繋げて更新ルーチンへのポインタ保持してるだけで
俺がガンダムだって言っても、言葉の定義なんかないんだから自由なわけだしさ。
実際、昔言ってたタスクシステムもその程度の代物でしかなかったと思うんだよ。

そうだな、それでも、C++がまだ使われていなかった頃はそれなりに画期的、というのもちげーな
「ああこうすればいいのか」と人を感心させられる程度のものではあったかもしれない。
ひとつのテクニックとして名前をつけて呼ぶ価値があったと思うよ。10年以上前の話。

でも、今となってはこんな普通にC++で書けば自然にできるようなことをシステムなんてとても呼べないし、
それでもタスクシステムという名前にこだわってる人は、もっと高度な何かを語ってると思うんだが

何それ?っていうか、要らんよねぶっちゃけというか、コード見せれ、というか

俺としては、C・アセンブラ時代に言ってたタスクシステムが、ものすごいタイムラグを経て、
一部のアマチュアに、おかしな形で伝わってしまっただけじゃね?と思っているのだが。
もしそうだとすれば、素人を混乱させる有害情報でしかないので火消しが必要なレベルだと思う。

そうでないなら、とにかくコード見せて。
0167名前は開発中のものです。2008/12/03(水) 02:14:33ID:Smp60beT
>164は>165を指してるんだよね。
http://pc11.2ch.net/test/read.cgi/gamedev/1036512390/860-862
0168名前は開発中のものです。2008/12/03(水) 03:28:15ID:uVk3FrZq
そのスレ読んだ
LGPLを含むEXEがLGPLに感染してるなんてライセンス文読めば一目瞭然のことを
何とか超解釈で否定しようとしてる子が定期的に出没していて
その理屈は違くね?という人達が理詰めで外堀から確実に徐々に埋め立ててる
そんな感じ?

物事をひん曲げて解釈したがる人を諭すには
駄目押し気味でもああいうのも有効かなとはおもた
0169名前は開発中のものです。2008/12/03(水) 11:42:42ID:YzqEx1FO
>>167
あのスレのレスは三行でまとめて欲しい

>>168
あのスレごちゃごちゃしすぎてて、自分で何書いたかさえ忘れる

ところで、感染しないライセンスなんて無いよ。例えパブリックドメインであっても。
結合したら二次著作物なんだから。
0170名前は開発中のものです。2008/12/03(水) 12:08:41ID:1jatayxx
>>169
二次利用に縛りをかけないライセンスは存在する。

ていうか、パブリックドメインとは、だれのものでもない存在だから、
二次著作物とかそういう縛りもない、はず。
0171名前は開発中のものです。2008/12/03(水) 12:59:17ID:YzqEx1FO
>>170
うーん、有名どころで二次利用に縛りをかけないライセンスを見たことないけどな。
少なくとも「本ライセンス文書を同封しろ」と書いてある。

パブリックドメインに関しては著作権者が権利放棄してるから、利用に縛りはないだろうけど。
0172名前は開発中のものです。2008/12/03(水) 13:23:37ID:6uS+aRN8
>>169-170
おまえらあっちのスレでやれ。
>>168
むしろ逆効果にしか見えないのだが、
前スレで釣り宣言してたからそれで狙い通りなのだろう。
0173名前は開発中のものです。2008/12/03(水) 13:25:50ID:ls+0FiDV
三次利用以降に縛りをかけない事、という縛りをかけてるものはあるな
0174名前は開発中のものです。2008/12/04(木) 00:21:20ID:J8DrEDup
数年前のとある同人STGのメイン関数。趣味だから何も考えてないね。仕方ないね
int _tmain(int argc, _TCHAR* argv[]){
  boost::shared_ptr<GAMEENV> gameenv(new GAMEENV);   //D3D,SOUND,INPUT,USERDATA,etc
  boost::scoped_ptr<SCENE> logo(new LOGO(gameenv));    //ロゴ画面
  boost::scoped_ptr<SCENE> demo(new DEMO(gameenv));   //デモ画面
  boost::scoped_ptr<SCENE> title(new TITLE(gameenv));    //タイトル画面
  boost::scoped_ptr<SCENE> config(new CONFIG(gameenv));  //コンフィグ画面
  boost::scoped_ptr<SCENE> stage1(new STAGE1(gameenv)); //ステージ1
  (…中略…)
  boost::scoped_ptr<SCENE> stage8(new STAGE8(gameenv)); //ステージ8
  boost::scoped_ptr<SCENE> ending(new ENDING(gameenv));  //エンディング
  logo->Run();                              //ロゴ画面再生
  try{
    while(1){
      demo->Run();                         //デモ画面再生
      switch(title->Run()){                     //タイトル画面再生
      case TITLEOPTIONTYPE_GAMESTART:         //ゲームスタート
        try{ //STAGEEXCEPTIONTYPE_GAMEOVERという例外を投げるまでゲーム続行
          stage1->Run();stage2->Run();stage3->Run();stage4->Run();
          stage5->Run();stage6->Run();stage7->Run();stage8->Run();
          ending->Run();                     //エンディング画面再生
        }catch(STAGEEXCEPTIONTYPE){;}break;       //GAMEOVER例外投げてきた
      case TITLEOPTIONTYPE_CONFIG:            //オプション画面再生
        config->Run();break;
      }
    }
  }
  catch(GAMEEXCEPTIONTYPE){;}catch(...){return EXIT_FAILURE;}//糞ゲーだからやめるらしい
  return EXIT_SUCCESS;
}
0175名前は開発中のものです。2008/12/04(木) 00:28:18ID:J8DrEDup
_tmainじゃなくて_tWinMainだったかな。よくおぼえてないや
各シーンはいわゆるベタベタの配列厨コード。元HSパーだから仕方ないね
でもメモリもGPUリソースもジャブジャブ使いまくったおかげで
見た目はバリバリのイケイケになったよ。動作も軽快だったよ。自惚れだね
0176名前は開発中のものです。2008/12/04(木) 02:00:33ID:yi3zavJ4
>>174
たのむ
なにが言いたいのか最後に書いてくれ

俺が気になるのは、メインループが本当に必要なのかどうかだな
タスクシステムも、それ以外のC++コードでも、なんでメインループ作るん?いらなくね?
普通に書けばいいじゃん(普通ってなによ)
0177名前は開発中のものです。2008/12/04(木) 02:16:23ID:vVwN1TZ0
stage1->Run()はstage1が終わるまで返ってこないんだろ。
いずれにせよゲームなんて毎フレームの同じ処理の繰り替えしなんだから
どこぞかにループは存在するのが当たり前だと思うが。
0178名前は開発中のものです。2008/12/04(木) 02:16:58ID:iyneYGG1
>>176が言う普通ってどんなコードなんだろうね
0179名前は開発中のものです。2008/12/04(木) 03:27:17ID:yi3zavJ4
あーすまん
メインループはどんなプログラムにもあんね

なんかさ、1フレームごとに回るループを作るやり方と
作らないやり方(あちこちでupdateする)について
急に気になって言ってみたんだが
やっぱどっちでもいい気がしてきたからいいや
0180名前は開発中のものです。2008/12/04(木) 04:04:02ID:BYcsjOha
スレッド作るにしろなんにしろ
どこかでスケジューラが回ってるがな
0181名前は開発中のものです。2008/12/04(木) 10:56:55ID:vVwN1TZ0
>>179
> 作らないやり方(あちこちでupdateする)について
> 急に気になって言ってみたんだが

それは使ってるフレームワークが裏でループ回してupdate()呼んでるんだろ。
あるいは割り込み駆動の可能性もあるが。
0182名前は開発中のものです。2008/12/04(木) 22:22:51ID:wPvA+LuT
>>175
>見た目はバリバリのイケイケ
気になるな。
0183名前は開発中のものです。2008/12/05(金) 00:50:08ID:Vt/x/8eI
>>176
>たのむ
>なにが言いたいのか最後に書いてくれ

地域担当の教団勧誘員に>>174を見せると彼の顔はみるみる青ざめ、ついには目を背けてしまいました。
ただごとでない様子を感じ取った私は恐る恐るその訳を尋ねました。すると彼はおずおずと耳元で囁くのです。
「それはいけない。凶兆が見えます。そのようなものを作っていては遠からず仏罰が下るでしょう。南無妙法蓮華」
>>174は彼らの"先生"の教義に反する、知性体として恥ずべきお猿さんコードなのだそうです。私は狼狽してみました。
幼少の砌よりツクラーにしてHSPerである私の深層に眠る劣等感の残滓の存在をESPで見抜いたのか、彼は目を細め
「安心なさい。今からでも間に合う。私共のように三宝(  *  )に帰依なさい。そうすれば必ず道は開けますよ」
と仏様のような微笑みを湛えながらビール券とこの案内状をくれたのです
0184名前は開発中のものです。2008/12/05(金) 00:51:18ID:Vt/x/8eI
>>183続き
(∀・ *)【三宝】…■松浦本■やね本■逆引き本
┌──────────────────────────────────────────┐
│ 【集会のご案内】                                                       │
│   タスクシステム(>>2)こそ失われた聖杯、伝説の神器、至高のオーパーツ、現代のエクスカリバー  |
│   私どもの教団では、身も心も何もかも唯一無二のリンクリストに捧げることで驚きのTCBがプライ  |
|  オリティすることをお約束します。奮ってご参加ください                                |
│  タスクシステム総合スレ part3                                              |
│  http://pc11.2ch.net/test/read.cgi/gamedev/1226199100/l50                           │
|                                                                  |
| 【社説】反動分子の煽動記事に惑わされてはならない                                  |
|  http://diary.imou.to/~AoiMoe/2008.12/early.html#2008.12.02                         |
|  http://d.hatena.ne.jp/naoya2k/20081201                                     |
|  http://qo.sakuratan.com/2008/07/24/タスクシステムのこと。/                        |
|  万物を支配するは唯一無二のリンクリストをおいて他に無く、秩序をもたらすはTCBのプライオリテイのみ。|
|   この崇高なる輪廻転生の法を冒涜し踏み躙る邪教徒共はママの愛情が足りなかったに違いない。 .|
|  敬虔なる信徒諸君は彼らの妄言に惑わされることなく修行に励みたまえ。そして最終解脱者となっ.|
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

ビール券に弱い僕は誘われるままホイホイとこのスレにやって来たんだね
0185名前は開発中のものです。2008/12/05(金) 03:20:55ID:JyB7wu71
そろそろタスクシステム総合スレじゃなくて
ゲームシステム総合スレに名前変えね?
>>2を使ってる人は皆無なわけだし
0186名前は開発中のものです。2008/12/05(金) 04:47:21ID:U4VbVISL
いや、ここ隔離スレだから…
0187名前は開発中のものです。2008/12/05(金) 05:37:33ID:lg/+bi94
>>185
あー、ゲームシステム総合とか間抜けたスレタイいちいち考えなくていいから
既存スレちゃんとあるんで。こっちでは撲殺天使の人もあっちでは普通だから

ゲームにおけるデータ構造・クラス設計・パターン2
http://pc11.2ch.net/test/read.cgi/gamedev/1211544659/l50

既存スレからタスクシステムを隔離するためにこのスレは作られたんで
このスレが誘蛾灯として機能するにはこのスレタイは好都合この上ないんで
悪いけどお前が思ってる以上にそこそこ需要あるんだわ

>>2を使ってる人は皆無なわけだし

は?お前が憤死しても代わりは幾らでも湧いてくるから心配しなくていいって
0188名前は開発中のものです。2008/12/05(金) 09:54:30ID:bKzmksBZ
やね本はプレミア付く程のレア物
0189名前は開発中のものです。2008/12/06(土) 00:08:37ID:AlgIGpgY
>>166
何がいいたいかわからん。動的インスタンスリスト巡回アップデートwの具体的なメリットデメリットを指摘すればいいんじゃないか?
ttp://www.issei.org/
そのひらしょ氏の本を手伝ったらしいPGさんのブログ。タスクシステムらしきソースがある。
問い詰めた知人てこのひとかな?
例えば>>174をタスクシステムで書いたとして、単純に比較すればそりゃ
>直感的でない、変に抽象化されてデバグしにくい、実行順がコードの形で書かれておらずメンテしにくい
コードだと思うんだよ。んで、それでも使いたいメリットあるのか?て話だよな。

俺は本職のゲーム屋さんじゃないんで失礼かもしれないが、わかりにくいところもあるけど、
結構融通が利いて便利かもと思ったよ。
ためしにプロトタイプを作ってて、「ここで一発エフェクトが欲しいな」と思ったところで、new してリストにつなぐだけで動くってのはちょっと感心した。

あと、メインループ周りを作ってしまえば、そこをいじらなくても別のゲームが作れるのは
なれれば安心感があるな。
ただ、万人にお勧めできるかつと、それはちょっと難しいかもとは思う。
0190名前は開発中のものです。2008/12/06(土) 00:15:03ID:+2mVCqZ1
>>189
>ためしにプロトタイプを作ってて、「ここで一発エフェクトが欲しいな」と思ったところで、new してリストにつなぐだけで動くってのはちょっと感心した。
これホントは動かないのが普通なんだよ
裏でグローバル変数でつながってるからnewするだけで動くように見えるだけ
可能でしょ?そういうの?
本来あるべき手続きを見た目見えなくするもんだから
後で「え?そんなところと関係あるの?」っていう部分がボロボロ出てくる

結果これ以上ないデスマになる
0191名前は開発中のものです。2008/12/06(土) 00:28:23ID:AlgIGpgY
>>190
レス早すぎるだろw
>後で「え?そんなところと関係あるの?」っていう部分がボロボロ出てくる

そういう不安は、まあ、あるな。自分が把握していられる範囲ならともかく、
「3日前のコードは他人のコード」な人(俺だ)とか。

>裏でグローバル変数でつながってるから
これ、このスレでよく批判の対象になってるけど、俺が見た範囲では
それぞれ listはprivateにしたり一応保護する工夫をしているように見えるけど
「オブジェクト同士が相互参照できるならグローバルと同じで無意味」ってこと?
0192名前は開発中のものです。2008/12/06(土) 03:37:13ID:+2mVCqZ1
>>191
タスクシステム云々ってよりグローバル変数の駄目な理由そのものじゃん
0193issei2008/12/06(土) 07:28:54ID:wah4ZAkA
>>189
> タスクシステムらしきソースがある。
どこに?

私は、いまどきのハードウェアならタスクシステムは捨てて、役割ごとに std::list<> なり
配列なり作った方が良いと思ってる。

http://www.issei.org/blog/archives/000225.html
0194名前は開発中のものです。2008/12/06(土) 11:22:47ID:r2noZKmJ
>>193
名前欄入れてらっしゃるけど、ご本人様で?

そのエントリによると、新人研修でタスクシステムのようなものを教えてる
ところは実在するわけですかね。
0195名前は開発中のものです。2008/12/06(土) 12:02:44ID:+2mVCqZ1
散々タスクシステムを崇拝してきた人間も
ひらしょーさんの「なにそれ?」で完全に散ったなw
0196名前は開発中のものです。2008/12/06(土) 12:40:25ID:r2noZKmJ
入門を脱したばかりの奴が入門記事を書く悪循環に、
ちょうどタスクシステムがはまっていた感はあったな。
CodeZineとか。
0197issei2008/12/06(土) 19:18:28ID:wah4ZAkA
>>193
私は新人研修に関わってないので、どういう文脈で紹介されたのかは不明です。
研修中の息抜きで、単なる昔話してたのかも。
01981892008/12/06(土) 22:51:20ID:AlgIGpgY
>>193 ありゃ?そのページをみて書いたんだけどw
釈迦に説法だと思うけど、一応、

・狭義のタスクシステム
 >>193のリンクで(ここにあるようなモノ)としているような古典的なもの
・広義のタスクシステム
 古典システムをクラスとstd::listなどで実装しなおしたもの

というような定義がこのスレでは何度か上がってて、オブジェクトの種類ごとに
リストを分けるべき、てな議論もあるんで、>>193のサンプルや、ほかに公開している
ものはその範疇かな、と思った。
 定義自体あいまいなところがあるので、タスクシステムと呼ばれたくない、
ということであれば申し訳ない。
0199名前は開発中のものです。2008/12/06(土) 23:09:38ID:vtDZydvR
毎フレームstd::listに繋がったメンバ関数を呼ぶだけのものに
システムとか名前つけること自体が厨臭くてダメだろ。
■ このスレッドは過去ログ倉庫に格納されています