タスクシステム総合スレ part3
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2008/11/09(日) 11:51:40ID:+pjnJyQQpart2 http://pc11.2ch.net/test/read.cgi/gamedev/1196711513/
part1 http://pc11.2ch.net/test/read.cgi/gamedev/1173708588/
0024名前は開発中のものです。
2008/11/12(水) 12:25:51ID:3e5+3Sl/「おそいかも」とか「フラグメンテーションが発生するかも」なんていう
どんぶり勘定で面倒なメモリ管理コードなんて追加しちゃいけない。
「ここがおそいことがわかったから」「ここでフラグメントが問題になったから」と
言えるなら何か細工を入れてもいい。言えなきゃおとなしく new/delete 使っとけ。
0025名前は開発中のものです。
2008/11/12(水) 12:41:37ID:beD99wJ70026名前は開発中のものです。
2008/11/12(水) 13:08:03ID:IOwBN/Qz仕事でやってるやつはみんな何回も痛い目見てるから自然と神経質になる
問題が出ないうちから考えてもアタマでっかちになるだけ
0027名前は開発中のものです。
2008/11/12(水) 23:22:51ID:qQkBoxEr> そんなどんぶり勘定が許されるのは素人ゲーだけだよ
気のせい。
0028名前は開発中のものです。
2008/11/13(木) 05:53:34ID:4jJZotVwmallocからしてロクなもんじゃなかった気がするけど
newとdeleteほどアフォ仕様じゃなかったよな
オーバーロードするといちいちそのヘッダ呼ばないと
newとかdeleteとか呼べないしで糞面倒くせぇ
せめてデバッガで見えれば助かるんだけどそういう機能ってないの?
0029名前は開発中のものです。
2008/11/13(木) 07:37:37ID:bFvJK9Jeふつー ::operator new() ではなく、クラス内の operator new をオーバーロードするから、
必然的にヘッダ読み込むことになると思うが。
メモリ使用量は、使ってるライブラリによるな。俺は自前で書いたのがあるから、それを
使ってるけど。
0030名前は開発中のものです。
2008/11/13(木) 16:57:10ID:YYgyTJOhググッてもこのスレばかりヒットしますw
0031名前は開発中のものです。
2008/11/13(木) 19:06:42ID:rnZd7PxY>mallocからしてロクなもんじゃなかった気がするけど
それ実装対象・OS・ライブラリの組み合わせに依存した話
例えばおまいらが大好きなx86系PCとWindowsとVisualStudioの組み合わせの場合
VS付属のmalloc、デフォルトのnew/delete、STLのデフォルトアロケータの中身を見れば
どれもHeapAllocに行き着く
暇だった頃にベンチマークテストして遊んだけどHeapAllocが他のアロケータ
(GNU libc malloc、BSD Malloc、etc)と比べてロクでもないという感想にはならなかったな。
HeapAllocはおそらくDoug Lea Mallocそのものかその親戚筋に相当する実装だろうと思う。
>>28はdlmalloc系がロクなもんじゃないと言いたいの?それともヒープ使用量をモニターする
手段が見つからないからロクなもんじゃないと言いたいの?
0032名前は開発中のものです。
2008/11/13(木) 19:34:18ID:rnZd7PxY>極端にサイズが大きいものと小さいものを
>同じヒープから確保する場合
「極端に生存期間が大きいものと小さいものを同じヒープから確保する場合」
も付け加えといとくれ
0033名前は開発中のものです。
2008/11/13(木) 20:38:35ID:rnZd7PxYネトゲのサーバプログラムとかだとオブジェクトの生存期間の差はかなり強烈なものになるから
例えばWindows系ならHeapCreateとかで適切にヒープ領域を分けといたりするけれど、PCゲーの
クライアントプログラム限定の話ならぶっちゃけこんなの要らん
数ステージを巡回するデモンストレーションモードで数日間ぶん回してメモリ確保に失敗し始めたり
タスクマネージャのグラフが愉快な絵を描いてるとかNtQuerySystemInformationでログ取り続けたら
驚きの結果が、とかならフラグメンテーション云々の可能性を考えてもいいかもだが
そういう場合はステージ毎にHeapCreate/HeapDestroyでドバっと確保・ドバっと開放でもしとけばいい。
これならステージ中のオブジェクトはみんなHeapAlloc系使ってもフラグメントの心配いらね
弾とかパーティクルみたいなサイズ・生存期間共に粒度極小のオブジェクトを大量にばら撒く
ゴジャースなゲームなら表示MAX分だけドバっと確保したboost::pool使うか配列で順序なしのリスト
みたいなことやっとけばいいよ
ところでタスクシステム?ハァ?って感じだな
0034名前は開発中のものです。
2008/11/13(木) 21:32:18ID:4jJZotVw俺はそんな難解な話してない
使ってるメモリの使用量がわからない・わかりにくいってただそんだけのこと
あと、メモリリークとかも全然わかんねぇ
IDEの問題になるけど分かる要素がないのがひでぇl
で、俺の知識だけだと自分でmallocをラップした関数を実装して
それに使用メモリの総量・使用メモリ状況やメモリリークなんかを
チェックできるようにしてるんだけど
この辺っていつまでたってもウンコじゃね?
とかそういうこと言ってる
(俺が知らないだけかもしれんが少なくともVCはウンコだと思う)
0035名前は開発中のものです。
2008/11/13(木) 21:49:37ID:bFvJK9Jeマジに最適化し出すと、関数の並び順とかまで見直す必要がある。PS2 のときには
キャッシュがマジ少なかったので、ライブラリチームは T15000 使って最適化してたけど、
今はそこまでやってないんじゃないかなぁ。
ゲームロジックはキャッシュミス起きまくりだが、そもそも大して CPU 使ってないので
気にしない。昔も今も。
0036名前は開発中のものです。
2008/11/13(木) 21:51:07ID:bFvJK9Jeパーティクルとかの小さなオブジェクトは STLport の node allocator 使ってた。メモリが
多少無駄になるけど、早いし断片化しないので。
0037名前は開発中のものです。
2008/11/13(木) 21:56:23ID:rnZd7PxY確認するが、CRTデバッグヒープくらいは使ってるという前提でいいよな?
http://msdn.microsoft.com/ja-jp/library/974tc9t1(VS.80).aspx
その上で不満ということならもう少し詳しくお話をしてほしい
もし使ってないってんなら幾らなんでもネタだろう…(´-`)
0038名前は開発中のものです。
2008/11/13(木) 22:13:53ID:4jJZotVwこっちも確認するけど
それアフォがソース見てもわかる奴しかでない奴でしょ?
難しいリークだとアウトプットウィンドウに変なコードがずらずら出てもどこのコードが
リーク起こしてるかまったくわからない機能でしょ?
そんなの使えないよ
正直、その機能に頼るぐらいなら自分でmallocをラップしたほうがよっぽどいい
0039名前は開発中のものです。
2008/11/13(木) 22:21:07ID:4jJZotVw_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);
なんでこれさ
こんなアフォなんだろうね
俺のいる会社の新人だってこんなアフォな機能作らないと思うよ
やっぱり俺の使い方間違ってる?
ってかそれとももうちょっといい使い方あんの?
さすがにこりゃねぇだろうと思った
だって自分でやればどこのソースのどのコードが使ってるメモリなのか
余裕でわかるようにできるじゃん
これまったくわかんねぇじゃん
動的(わからない法則がちょっとわかってないが)に確保したもんだとほぼお手上げじゃね?
0040名前は開発中のものです。
2008/11/13(木) 22:53:24ID:rnZd7PxY>>36
node allocatorは良いものらしいね
>>38-39
把握した
WindowsだのVisual Studioなど言ったって、なんだよ結局はユーザープログラム固有の
モニタプログラム(システムモニタ(リソースモニタ)やジョブモニタ)を用意しなくちゃ
いけなくなるのかよバーローつー話だよな
通常、ゲーム開発用のフレームワークはデバッグ支援用のツール群とセットになってるけど
それに相当するサービスをVS標準機能に期待するのは難しいね
ま、同人ゲームとか、ここでタスクシステムすげぇすげぇ言ってる超小規模開発・個人開発なら
無用の機能だが
0041名前は開発中のものです。
2008/11/13(木) 23:55:15ID:rnZd7PxY(前略)だからコンテキストスイッチは不要では。
>コンテキストスイッチは要らなくネ?
ゲームに要求される表現は多様化・高度化し続け、それに伴いゲーム内で処理されるジョブの粒度も多様化し
1イント内に処理すべきジョブ数も増大の一途をたどった。ジョブ(ゲームコード。例えばAI)を記述するスタッフも
増大し多様化した。時間ステップ毎に単純に数値積分していくだけのジョブばかりではなくなり、継続(continuation)
が必要なジョブが増えた。にも関わらずゲームの特性上個々のジョブはμsecオーダーで終了ないし中断することを
要求される。継続に必要な手続きをユーザープログラム側に丸投げする(ユーザープログラム側にリエントラントな
仕掛けを用意させる)原始的なFSMモデルのジョブ制御だけではお話にならなくなり、ファイバーやコルーチンのような
仕掛けも必要になった。これらのジョブの粒度はスレッドを使うには小さすぎ、また数も多すぎる
まぁ、同人ゲーやタスクシステムすげぇすげぇ言ってる超小規模開発・個人開発なら無用の機能ではあるが
0042名前は開発中のものです。
2008/11/14(金) 00:06:03ID:DNME6QAR0043名前は開発中のものです。
2008/11/14(金) 01:05:26ID:mdtDWXyh----------------------------------------------------------
>(前略)だからコンテキストスイッチは不要では。
>
>>コンテキストスイッチは要らなくネ?
↓
>(前略)だからコンテキストスイッチは不要では。
----------------------------------------------------------
>1イント内に
↓
時間ステップ毎に
----------------------------------------------------------
(補足)
一部素人がタスクシステム(以下>>2と呼ぶ場合アリ)とか呼ぶものの実態が>>2程度のものであるという前提に立つならば
これは70年代のハードに依拠する簡素なゲームにとっては無難なジョブ制御プログラムとかモニタプログラムの【断片】だね
しか言いようがない。もはや今となってはね。
これは非常に簡素でオーソドックスなFSMモデルのジョブ制御であり、大昔から科学計算で頻繁に使われ
大昔の計算機、現代でも組み込み用途の超貧弱なマイコン(安いものなら50円前後。RAM数KBとROM数百KBの
ワンチップのやつ。半ば使い捨て)のために用意される超原始的なモニタプログラムにも見られる。
継続に必要な仕掛け、つまりコンテキストスイッチに必要な記述は全部ユーザープログラム側に丸投げ。
何もしてくれない。誰が書いても同じようなものになるってくらい凡庸な、道端の雑草並みのありふれた仕掛けだ。
でも「タスクシステム」という呼び方は珍しい。かなりエキセントリックだ。これは特定の職場内の固有名詞
ローカル用語の粋を出ることはないだろうね
0044名前は開発中のものです。
2008/11/14(金) 01:22:07ID:0noAZqI/AIについてで実装できてるわけじゃないから強くは言えんけど
タスクシステムの構造を大きく変えるような手を入れなくてもできそうな気がする。
別スレッドで定期的にタスクを位置等のグループ毎に分割して、グループ内での状況を解析する。
そしてタスクに次に処理がきたときに、次にどう動かすか考えるの役立つ情報をセットする。
とかではだめですか。
0045名前は開発中のものです。
2008/11/14(金) 01:24:09ID:SCRh4oL7で、そんなリソース大量消費型ゲームと小規模DSゲームの売り上げが変わんなくて
涙目、という話ですね。わかります。
とかそんなつまらんイヤミはおいとくとして、タスクシステムのサンプル打ち込んで
おもしれーなとか言ってる俺には雲の上の話なんだけど、
>原始的なFSMモデルのジョブ制御だけではお話にならなくなり、
こういうところはなんとなく予想できるんだよ。ただ現実問題として
>同人ゲーやタスクシステムすげぇすげぇ言ってる超小規模開発・個人開発
が、手軽に手をだせる、楽チン開発できてウハウハなフレームワークってあるの?
どうせ勉強するんならそっちのほうがいいような気がすんだけど。
0046名前は開発中のものです。
2008/11/14(金) 01:26:10ID:1UgkwBETC++ でふつーにメインループ書いて、continuation っぽいこと必要な部分はスクリプト言語 + スタックレス VM で良いじゃん。lua とか。
0047名前は開発中のものです。
2008/11/14(金) 01:32:05ID:mdtDWXyh技術は進歩し続け、計算機は猛烈な勢いで処理速度を向上させ、現代のナウいハードに依拠するナウいゲームを
作るために『『不可欠』』となったナウいフレームワークだのゲームエンジンだのと比べるともはやミジンコ級であり
お世辞にもシステムとはとても呼べない玩具みたいな代物であることは否めない
>>2のような小規模で簡素なFSMモデルのジョブ制御は、原始的なモニタプログラムといえるかもしれない。
しかし一般にOSを表す非プリエンプティブマルチタスクシステムとは明らかに異なる。共通項は非プリエンプティブ
という点だけでありコンテキストスイッチをサポートしていない(その責任をユーザープログラム側に丸投げ
してしまってる)時点でマルチタスクシステムとは明らかに異なる。マルチタスクという用語自体は1960年代半ば
オペレーティングシステムという用語と共に誕生した。UNIVACとかSystem/360のOSが出てきた時代の話。
エンジニアは用語の意味が輻輳を起こし意思疎通に齟齬が生じることを嫌う。OSが提供されないカスタムボードで
走るゲームプログラムの開発者なら兎も角、立派なOS下で走るゲームプログラムの開発者にとってタスクはプロセスだ。
>>2は、過去に「とある開発チームで使われていた原始的なモニタプログラム」が固有名詞として「タスクシステム」と
呼ばれていたのかもしれないね、程度の理解でいいと思う。当時のゲームプログラムはOSが提供されないカスタムボードで
走るものであり、ゲーム開発者自前のモニタプログラムを用意しハードの全てを自分でコントロールした
#google2001の検索結果によると当時「タスクシステム」などと呼んでるページはほぼ皆無だったことが判明している
#ほんの一部でその単語を使ってたページは出典としてLogician Lordを紹介していた。ネットで徐々に伝播しCマガで
#松浦とかいう素人プログラマが出典を明記せずに紹介し急速に流布し広めた「タスクシステム」なる呼び方の出所は
#Logician Lordだろうと思われる。これがネット発の「タスクシステム」なるものの出自だ。都市伝説と呼ぶに相応しい
0048名前は開発中のものです。
2008/11/14(金) 01:55:22ID:SCRh4oL7スタックレス + lua でググった。
なるほど、いまどきはタスクシステム(FSM)でカリカリやる、やれるくらいの規模の開発
なら、単純なメインループとスクリプト言語のほうが楽だしパフォーマンスも出る
ってこと?
難点はあのパスカルくささに耐えねばならんとこかなあ。ニントモカントモ。
0049名前は開発中のものです。
2008/11/14(金) 01:57:27ID:1UgkwBET状態遷移が複雑な部分、たとえばアクションゲームのプレイヤー制御とかは
C++ で書いといて、continuation あった方が楽な部分、たとえば「何秒後に
エフェクト発生」とかはスクリプトとかデータファイルで書くのがふつーじゃね?
0050名前は開発中のものです。
2008/11/14(金) 02:05:40ID:mdtDWXyh必要ないものは取り入れる必要はない。コンプレックスは持つ必要ない。
俺も同人ゲーを作ったことあるが規模相応の簡素なコーディングで済ませてた。
いわゆるタスクシステムとか紹介されてるあのヘンテコな仕掛けも不要だった。プライオリティ?ハァ?って感じだ。
敵の配列が弾の配列があって。そんな感じだ。
タスクシステムを心の底から崇拝する人間が心の底から子バカにしている様子がたまに見受けられる
配列厨のコードそのものだ。
同人ゲームを悪く言うつもりで書いたわけではないのだが、もし>>40-41の「同人ゲーム〜」の部分が気に障るなら
そこは撤回する。すまなかった
0051名前は開発中のものです。
2008/11/14(金) 02:05:58ID:SCRh4oL7luaはver4のころちょっとかじっただけなんだけど、スクリプト処理のために
組み込んでみようとは思ってたんで、考えてみるよ。ありがと。
0052名前は開発中のものです。
2008/11/14(金) 02:22:54ID:mdtDWXyh多種多様な人間が多種多様なジョブ(ユーザープログラム)を記述することになると
「FSMモデルのみ」という拘束条件は必ず無理が生じる。これはやれば分かるという他ない
RAM数KBの組み込み用モジュールのモニタプログラムでもコンテキストスイッチをサポートしたがる。
FSMモデルでジョブを記述させると色々面倒くせーことになるから。説明するよりも組んでみたほうが
分かるという他ない
>別スレッドで〜
よく分からんがコンテキストスイッチをサポートしたくないがためだけに
何やら複雑怪奇な仕組みを導入する話のような気がしてならない
素直にLuaとか使ったほうがいいよ。というか眠いばいばい
0053名前は開発中のものです。
2008/11/14(金) 02:29:54ID:SCRh4oL7>規模相応の簡素なコーディングで済ませてた
そこんとこがよくわからんのだよなあ。
単純な配列とループで組めて問題ないならぜんぜんOKでしょ。俺もそうする。
ただ、サンプルでも使ってる GLLib の人のサンプルソースは単純ループ
だけど、けっこうきつい印象を受けた。
俺も「タスクシステム」を採用するだけでバラ色の未来が開けるとは思わん
(まだかじっただけなんで実はすごい泥沼が待っているのかもしれない)けど、
そこそこ使いまわしが効いて、それなりに見通しがいいように思う。
要は適材適所じゃないかと思うんだが、用語を使うことすら非難するほどの
問題があるの?
0054名前は開発中のものです。
2008/11/14(金) 02:37:14ID:SCRh4oL7こういうのは、同意できるんだよね。
そこそこ便利そうだけど決してわかり易い仕組みとはいいにくいから、
なんか泥沼にはまりそうな気がする。
まあ、小学生の感想文ですまん。
0055名前は開発中のものです。
2008/11/14(金) 02:38:50ID:s5clZUFBメモリの単位がkまでの環境
Mになると不要
0056名前は開発中のものです。
2008/11/14(金) 02:46:45ID:SCRh4oL7キャッシュじゃねーかw<k
あー、PICのプログラムとかそれっぽい。
0057名前は開発中のものです。
2008/11/14(金) 02:49:24ID:s5clZUFB0058名前は開発中のものです。
2008/11/14(金) 07:52:52ID:EfjKu0FE0059名前は開発中のものです。
2008/11/14(金) 16:00:01ID:gWloFQ1jLuaの文法が嫌いならSquirrelもいいよ。
ム板でスレタイ検索してみてくださいな。
>>53
自分の書いた文章で古い設計方法に名前がついたことにより
予期せぬ形でもてはやされるようになってしまった。
そのことに対する責任感から現代的な知識を伝えると共に
言葉狩りを行っている。
彼の行動はこのように解釈することもできる。あくまで妄想だが。
0060名前は開発中のものです。
2008/11/14(金) 19:49:55ID:Z+hETYkYメモリ・ポインタまわりのバグり具合はハンパじゃないな
フツーに書けとあれほど言ってるのにやって
ゲームと違うところでいっつも四苦八苦してるとなりのプロジェクト
あんまりポインタ周りのバグが酷いからプロジェクトをまたいだ会議で
原因を指摘してやったのにまだごにょごにょ言ってる
もう、お前(となりのプロジェクトのウンコリーダー)に逃げ場はねぇよ
グローバル変数とタスクシステムとポインタの悪用は絶対に全部セットなんだよな
タスクシステム使わないプロジェクトはグローバル変数も使わないしポインタの悪用もしない
だからプログラムがメインから必ず終えるし
組み込むべき箇所もすぐにわかる
第三者がきてもすぐに全体が把握できるってのはでかいね
もういい加減に信者も目を覚ますべき
0061名前は開発中のものです。
2008/11/14(金) 20:17:38ID:gp/PSntR0062名前は開発中のものです。
2008/11/14(金) 21:58:54ID:EfjKu0FE0063名前は開発中のものです。
2008/11/14(金) 22:21:45ID:pFqWgrsKコンテキストスイッチがあったところでスパゲティにする奴はするけどなw
0064名前は開発中のものです。
2008/11/14(金) 22:34:07ID:mbBbhYbw0065名前は開発中のものです。
2008/11/15(土) 00:05:57ID:Kosjr/Zu昔Delphi使ってたから、馴染みはあるんだけど、C/C++と併用すると間違うんだよね。
演算子とか。
>>60
あー、それは俺も気になった。
親クラスのメソッド呼んだら、内部で自分自身を削除してて戻ってきたところで落ちるとかw
俺がタコなだけなんだけど、基本的にポインタを多用するスタイルみたいだしな。
几帳面なやつ向きかも。実はちょっとびびってるw
0066名前は開発中のものです。
2008/11/15(土) 00:27:43ID:GEMDjn92相互参照オブジェクト(インスタンス)の取り扱いについてのごく初歩的な
あらゆるプログラムに通じる基本的なお作法の話だと思うんだ
0067名前は開発中のものです。
2008/11/15(土) 00:34:05ID:EtW+xZ5p0068名前は開発中のものです。
2008/11/15(土) 00:46:53ID:Kosjr/Zuんー、いいわけがましくなるけど、俺の場合、インスタンスの廃棄は生成した側
が責任をもつというスタイルだったんで、インスタンス自身が自分を廃棄する
という形式に慣れてないんだと思ったけど。
0069名前は開発中のものです。
2008/11/15(土) 00:55:46ID:Qgt9Tm09でも悪用するだろ?
しかもグローバル変数は使わないと恩恵(笑)は受けられないだろ?
所詮、アフォが飛びつく糞なアイテムよ
0070名前は開発中のものです。
2008/11/15(土) 01:00:16ID:GEMDjn92その廃棄っていうのは、自殺を決断したらメモリ開放まで一気に行ってるわけだよね?
タスクシステムとかいうナニにおけるインスタンス(というかエンティティなんだろうね)の
自殺のプロセスというのは、常にそういうもの(自殺を決意したらメモリ開放まで一気に決行)
と決まっているの?それとも君が読んだ何かしらの自称タスクシステムのサンプルコードの
実装がたまたまそうなっていたというだけなの?
0071名前は開発中のものです。
2008/11/15(土) 01:06:54ID:GEMDjn92>(自殺を決意したらメモリ開放まで一気に決行)
なおかつ生みの親や己を参照するインスタンスに何ら通知する手段を提供しない。ね
>>68
>俺の場合、インスタンスの廃棄は生成した側
>が責任をもつというスタイルだったんで
これも同じく。自殺を決意したら生みの親に自分を殺してくれと依頼するような手続きは
タスクシステムと呼ばれるナニにおいては「存在しない」ということになってるのか、それとも
君が読んだ何かしらの自称タスクシステムのサンプルコードの実装がたまたまそういう
手続きを用意していなかっただけなのか
自称タスクシステムってどれもこれも俺俺システムで内容がバラッバラだよね
0072名前は開発中のものです。
2008/11/15(土) 01:23:55ID:Kosjr/Zuイテレータに矛盾が生じないような工夫はされてたけど、delete はdelete だったな。
まあ、それでも、たまたま、じゃないかと思うけど。入門用サンプルだし。
0073名前は開発中のものです。
2008/11/15(土) 01:34:51ID:GEMDjn92そうかー。もし良かったらそれのURLとか書籍名教えてくれないかな
いや、別に悪戯とかしないからさ
0074名前は開発中のものです。
2008/11/15(土) 01:53:28ID:Kosjr/Zu却ってこえーよw
こっちは勉強させてもらってる立場だからあんまりなー。
このスレを調べりゃわかるよ。
0075名前は開発中のものです。
2008/11/15(土) 02:00:05ID:GEMDjn92>却ってこえーよw
何にもしねーよ。入門用を謳う自称タスクシステムがいっぱいあるから
そのカオスを更に加速させて「タスクシステム」がどんどん
「口に出すだけで何とも居た堪れなくなるムードを醸し出すキーワード」
になっていく様はある意味で痛快だしな。
0076名前は開発中のものです。
2008/11/15(土) 02:02:37ID:GEMDjn920077名前は開発中のものです。
2008/11/15(土) 02:45:06ID:ic2SgE5Aコンテンツ産業に理解ある総理の下で
国策としてコンテンツ産業に力を入れようとしているのに
裾野を支える初心者が混乱に陥ることを喜ぶのは
日本人として恥ずかしくない?
0078名前は開発中のものです。
2008/11/15(土) 08:16:42ID:hO/9YF4Pいつも途中で破綻する俺でもゲーム作れた
0079名前は開発中のものです。
2008/11/15(土) 13:25:03ID:s+TTPkcjそういう、いかれた自称上級者はいつの時代にもいた。
0080名前は開発中のものです。
2008/11/15(土) 14:12:48ID:Mi8wwxRaなんかこう一目置かれてるって感じ?
隠し切れない風格を醸してるせいかコミュニケーションにも微妙な距離が生まれるみたい。
こういう孤独も上級者ならではの悩みだよね
0081名前は開発中のものです。
2008/11/15(土) 14:30:50ID:bk64Ra9f0082名前は開発中のものです。
2008/11/15(土) 16:47:53ID:ooF5RpWW0083名前は開発中のものです。
2008/11/15(土) 18:45:10ID:saotQS84http://pc11.2ch.net/test/read.cgi/tech/1217813098/985
0084名前は開発中のものです。
2008/11/15(土) 19:01:12ID:Bp8RkerR0085名前は開発中のものです。
2008/11/16(日) 02:36:48ID:SVunqIhe1.名前が気に入らない
2.名前を付けた人物が気に入らない
3.名前の「システム」の部分が気に入らない
4.自由度が高いのが気に入らない
5.隣のプロジェクトが気に入らない
0086名前は開発中のものです。
2008/11/16(日) 03:11:11ID:DYIhu6LDひしひしと伝わってくるけど、そういうワンパターンなかわし方を続けるのってのもどうなんだろうね
0087名前は開発中のものです。
2008/11/16(日) 06:15:12ID:SBJGjborタスクシステム使いまくりでバグりまくりなので
そもそもの構造からいってすでにまずいってことがわかると困る人がいるのです
0088名前は開発中のものです。
2008/11/16(日) 07:03:30ID:SVunqIheいやいや、俺はタスク使わんし・・・
批判の仕方が感情的だっつってんの
タスク派も嫌タスク派も、なんで自分のやり方が一番いいと思えるんだ?
0089名前は開発中のものです。
2008/11/16(日) 07:44:51ID:SBJGjbor二つの方法ですでに開発したことがあって比較した上での結論
0090名前は開発中のものです。
2008/11/16(日) 08:44:31ID:SVunqIheタスクシステムという名称は新しいものらしいけれど、
それ自体はかなり古い手法だろ?
当時対比されるべき「もう一つのやり方」は
アセンブリで非構造化の逐次プログラミングだったはず
当時のタスクの本質がコンポーネント指向にあったんだろうと考えれば
取り込む要素があると思いこそすれ、非難する気には全然ならないんだよね
なんつーか、フラッシュ使いがハイパーカードを非難してるようなモヤモヤを感じる
0091名前は開発中のものです。
2008/11/16(日) 08:50:18ID:fOiOPCuzhttp://ja.wikipedia.org/wiki/%E3%82%AE%E3%83%A3%E3%83%A9%E3%82%AF%E3%82%B7%E3%82%A2%E3%83%B3
タスクシステムの初出は1970年代
0092名前は開発中のものです。
2008/11/16(日) 08:56:45ID:SVunqIheジョブコン(ジョブコントローラー)と呼ばれていたらしい
他にも派閥によって呼び名が・・・おっとだれか来たようだ
0093名前は開発中のものです。
2008/11/16(日) 14:53:09ID:ekn4SUba以前このスレでも話が出たMTなんとかのことですか?
0094名前は開発中のものです。
2008/11/16(日) 22:47:39ID:JDXMEp1E> 取り込む要素があると思いこそすれ、非難する気には全然ならないんだよね
C++ で仮想関数として取り込み済み。
0095名前は開発中のものです。
2008/11/16(日) 23:43:18ID:fOiOPCuz0096名前は開発中のものです。
2008/11/17(月) 00:52:54ID:d4ix+Z90UNIX のデバイスドライバとか UNIX V6 の頃から、こんな作りだ。
0097名前は開発中のものです。
2008/11/18(火) 00:07:12ID:jVsaZ2Ntだっせー
0098名前は開発中のものです。
2008/11/18(火) 01:47:54ID:2bcqSLD5・いまタスク使ってるやつは擁護になってないからスルー
・アンチはそんなの知ったことじゃないから叩く
技術史が好きなヤツにしか意味のない話です
0099名前は開発中のものです。
2008/11/18(火) 02:15:13ID:0/4z+Eh4・メモリ管理
・タスク管理
だって言ったじゃん
メモリフラグメントに対して固定長データという回答を出したのがタスクシステムの功績
そして扱うべきデータがどんなデータであれ管理レベルでは等価である事がタスクシステムか否かの分岐点だと思うね
ちなみに継承+多態はメモリ管理、タスク管理のどちらから見ても最悪なばかりか速度まで低下して何のメリットもない
プログラムも複雑化してタスクシステムより尚悪い
あと余計な事かもしれないけど、このスレが迷走しやすいのは「何を解決するのか」を定義しないで話を進めるからだよ
例えば「ジャンルにとらわれない万能オブジェクト管理システム」なんていう途方もない事であっても目的があるとないのでは
議論の濃さが全然違う
最後に何度も言ってるけど、・・・タスクシステムを使うには現在のPCはオーバースペックすぎると思うよ
HSPでよくみかける固定長配列での管理よりわかりやすく速度的にも有利なタスクシステムなんて見たことないし
有意な差が出るとも思えない
0100名前は開発中のものです。
2008/11/18(火) 07:37:14ID:P1O//Y8n0101名前は開発中のものです。
2008/11/18(火) 08:29:07ID:RCT5hNLc>プログラムも複雑化してタスクシステムより尚悪い
お前は継承も使わずにプログラムしてんのか?
0102名前は開発中のものです。
2008/11/18(火) 09:07:44ID:HHT2Kui7haskellには継承なんてないけどそれでも綺麗なコードの実用プログラムが沢山書かれてるよ
0103名前は開発中のものです。
2008/11/18(火) 12:59:38ID:k/xr4HgCderiving とか知らないのか?
で、必死になってメモリ管理とか叫んでるひととか、バカにしようと必死な人とかは
スルーしたほうがいい気がする。
0104名前は開発中のものです。
2008/11/18(火) 16:11:47ID:jVsaZ2Nt>タスクシステムっていうのは
> ・メモリ管理
> ・タスク管理
>の2種類から構成されている
前スレログ読みましたが、クラスを使うとフラグメントが発生どうのとかよく分からない話をして
数人から突っ込まれてたID:IuSgJyHuさんですか?たぶんそうだろうかと私は思うのですが。
ところであなたの言う「タスクシステム」とやらは具体的に何なのでしょう。これと思う実装例が
あるならそれを示してくれませんか。人によって定義が千差万別の俺俺システム「タスクシステム」
ですから、その言葉を発する人間が登場する度にこうやって確認せざるをえないわけで。
このように、確固たる出典がない、言い方を変えれば権威が不在というのは不便なものです。
技術用語としての存在価値が疑問視され、所詮はローカル用語といわれるのも頷けます
>メモリフラグメントに対して固定長データという回答を出したのがタスクシステムの功績
ん?70年代中期・末期において主記憶をページング方式で管理することに新規性があったと。
簡単のために操作対象を固定長に分割・管理する、つまり固定長レコード方式というものに
新規性があったと。そういうお考えで?
当時のソフトウェアエンジニアの通念というものが集計できるならば、あなたの考えは当時としても
非常に珍しい類のものだろうと思います。かなりエキセントリックだろうと思います
まぁ確かに、計算機についての基礎教養が欠乏、というかむしろ知的水準が絶望的に低い人間
にとっては世の中のあらゆる仕組みはあらゆる時代を通じて常に新規性に満ちた凄いテクノロジー
なのでしょうけど…
そういう知的弱者・情報弱者・底辺階級をターゲットにした功績話を絶叫するのはあなたの趣意ですか?
0105名前は開発中のものです。
2008/11/18(火) 16:24:48ID:vNWKmyuxあいかわらず厭味だねぇ
0106名前は開発中のものです。
2008/11/18(火) 22:15:12ID:7msrEyPM0107名前は開発中のものです。
2008/11/19(水) 02:14:42ID:QielmcSv今は継承を使わないのが流行り
おまえだってhasAにしてるんだろ?
特に深い継承はアンチパターンになりつつある
継承+多態の効率の悪さはいわずもがな
ゲームで使っちゃいけません
>>102
継承は基本的に汚いコードになると思うよ
設計書は綺麗になるけど
>>104
ギャラクシアン以外をタスクシステムと呼んでるのは某よっちゃんいかの人だけだよ
固定長レコードというCOBOL的なものをゲームに持ち込んだのは新規性がある
そもそも固定長レコードはフラグメント解消のものではなかった
バナナでクギを打った所に新規性があるんだよ
トンカチあるから必要ないよねっていうのは別の話
0108名前は開発中のものです。
2008/11/19(水) 03:31:19ID:FID+LaPo"is a" 関係でも継承使わないってこと?それだと無理なコードにならない?
効率が悪いというけど、そもそもゲームで CPU 処理時間がボトルネックになること
すら稀なのに、さらにそのうち継承+多態によるものは数%以下でしょ?
ヘビーなループ内では問題になることもあるだろうけど、はじめから使わない前提に
する必要は無いと思うよ。
0109名前は開発中のものです。
2008/11/19(水) 08:36:26ID:yTZjB9bO> 今は継承を使わないのが流行り
実装継承とインターフェース継承を混同しとるな。
0110名前は開発中のものです。
2008/11/19(水) 19:07:46ID:U55fYg17> 固定長レコードという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> バナナでクギを打った所に新規性があるんだよ
> トンカチあるから必要ないよねっていうのは別の話
その例え何かおかしくないか。常温バナナで釘を打つのは確かに斬新な愚行だが
規模がまるで違うものを指してトンカチと冷凍バナナという話をしているのかなと前向きに解釈してみるか
大昔には科学者もエンジニアもシステム屋もみんな今とは比べ物にならないくらい貧弱なハードでやり繰りしてた。
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俺も継承は使わないほうがいい派
実装とかインターフェイスとか関係無い
そのメソッドやメンバがどのクラスのものであるのかわからなくなるのが最大の害だと思う
しかもオーバーライト(?名前忘れた)されると今度は同じ名前のメソッドがあって
どれを呼んでるのか本格的にわからなくなる
どうしても使わなきゃならんのがMFCみたいな変態実装になってる場合
自分に内包してるモンを継承使って書き換えさせるウンコソース
これは仕方がない
でも、できるだけhas aの関係でまとめたほうがいいと思う
0115名前は開発中のものです。
2008/11/19(水) 23:52:57ID:GeiIfEUVttp://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:K7xBu4Cwttp://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:K7xBu4CwCUDAを調べてて思ったんだが、メモリ・ワークをどこにとるかでパフォーマンスが
大幅に違ったりするみたいだし、いまどきのゲームのメモリ管理ってそうなんだろうな
0120名前は開発中のものです。
2008/11/20(木) 01:35:27ID:sLhTakp+0121名前は開発中のものです。
2008/11/20(木) 01:41:10ID:K7xBu4Cw喧嘩腰に見える?そりゃすまん。
0122名前は開発中のものです。
2008/11/20(木) 03:32:51ID:sLhTakp+スレ全体の雰囲気のことを言ってる。
0123名前は開発中のものです。
2008/11/20(木) 23:36:18ID:Xvygn8lQ> >>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 みたいなやつ)と
簡素なリモートデバッガ、エディタ、クロスアセンブラ(別にハンドアセンブルでもいいけど)で構成されるもの
■ このスレッドは過去ログ倉庫に格納されています