- 1 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 11:51:40 ID:+pjnJyQQ]
- タスクシステムについての議論、相談、質問、雑談などのスレです
part2 pc11.2ch.net/test/read.cgi/gamedev/1196711513/ part1 pc11.2ch.net/test/read.cgi/gamedev/1173708588/
- 4 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 13:02:33 ID:Pg+PR9ol]
- 1おつ
前スレ>>995を実行しようとしたら、 「MSVCP60D.dllがみつかりません」って出て実行できんです。
- 5 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 13:37:28 ID:95rhOgJ5]
- 同じく下記2ファイルがみつかりませんと出てきた
MSVCP60D.DLL msvcrtd.dll
- 6 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 15:05:15 ID:clryvbVu]
- windows用の関数のスタブを用意したりして
linuxにてコンパイルして動作確認はできた boost, boost build必須だけど…
- 7 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 15:15:38 ID:clryvbVu]
- boostはいらんな、
なんかCTextBuffer::Openで落ちるから色々調べてたときに使ってただけね パスやらファイル名の問題で*.mqoが開けなかったときにぬるぽが発生して落ちてただけね あとglutの初期化忘れとか タスクシステムと全然関係無いですねゴメソ
- 8 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 21:43:46 ID:+pjnJyQQ]
- >>4
それVC6のデバッグ版のDLLだな うちは入ってるから気づかなかったが >>995はリリース版でビルドしちゃれよ
- 9 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 22:46:40 ID:G/ueWH6s]
- >>8
もしくは CRT をスタティックリンク。
- 10 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 23:28:18 ID:zHkW8xfN]
- ここで10年前に買ったVC6の恩恵を初めて受けることになるとは
- 11 名前:名前は開発中のものです。 mailto:sage [2008/11/10(月) 22:26:56 ID:nDrMpAC2]
- >MSVCP60D.dllがみつかりません
だっせー!>俺 すびばせんでした。再うpしました。 uproda11.2ch-library.com/src/11133655.zip.shtml DLキー task 修正項目 ・実行ファイルを Release ビルド ・背景スクロールを実装してみた。 ・データローダの別スレッド動作のテストなど
- 12 名前:名前は開発中のものです。 mailto:sage [2008/11/10(月) 22:36:07 ID:nDrMpAC2]
- >>7
ガッ!(AA略) >linuxにてコンパイルして動作確認はできた さすがゲーム板。いや、LinuxでブートCD配布とかできたらと思ってたので。 >前スレの人 ・実行順制御よりオブジェクト相互の関係が重要 サンプルを組んでみて、そのあたりの解決が提示されているわけではなさそうですね。< タスクシステム サンプルのなかで、プレーヤーオブジェクトをポインタで保持してたり、その弊害を 避けるためにフラグ立ててたりとけっしてスマートとはいいがたいような。 TCB+関数ポインタをクラスで置き換えるのは悪いとはいわないが、オブジェクトの 生成削除が頻繁に起こるゲームで、std::listで管理するのはどうかなと思いました。 手軽ではあるのだけど。
- 13 名前:名前は開発中のものです。 mailto:sage [2008/11/10(月) 22:42:17 ID:nDrMpAC2]
- >前スレの人
>実行順制御・描画順制御 まだ慣れていないので評価しにくいですが、サンプルではシナリオの読み込みとか優先度を高くしてありますね。それなりに意味はあるのか? 描画順制御についていえば、OpenGL を使っていても半透明オブジェクトの重ねがき みたいに描画順をメンテする例もあるので、まあ、あれば使うかなと。 (爆発表現にちょっとつかってみた) 描画に関してはもっとちゃんとしたやり方があるように思いますが。
- 14 名前:名前は開発中のものです。 mailto:sage [2008/11/11(火) 22:13:14 ID:BOKiifWA]
- >>12
> オブジェクトの生成削除が頻繁に起こるゲーム 今時のマシンなら高がしれてるよ。エフェクトでパーティクル個別に new するとかだと、さすがに 氏ねと思うが。
- 15 名前:名前は開発中のものです。 mailto:sage [2008/11/11(火) 23:33:37 ID:YONi9ugo]
- >>14
>今時のマシンなら高がしれてるよ CPU負荷や処理速度じゃなくて、サンプルの例だと、stl::list からオブジェクトを 削除する場合のトリッキーに見える処理がちょっといやらしいかなと思ったんですよ。 ただ、シーケンシャルな処理だと考えればそんなに問題もないのかな。
- 16 名前:名前は開発中のものです。 mailto:sage [2008/11/11(火) 23:45:14 ID:BOKiifWA]
- >>15
そういう話なら同意。というか、何でもかんでも一つのリストにつながなくても、ふつーに std::list<Enemy> enemy_list; std::list<Effect> effect_list; と分けとけば良いのにね。
- 17 名前:名前は開発中のものです。 mailto:sage [2008/11/11(火) 23:45:44 ID:bfqrEb/4]
- 今時のマシンでもメモリ問題は意識すべきだよ。
少なくとも自分以外の人に遊んでもらえるゲームを作るつもりならね。 モジュールのライフスパンに応じて適切にヒープを分けるだけなんだから 最初からやれば手間はかからない。 今時はコンシューマゲーム機の開発者でさえもメモリ管理をおろそかにする未熟者が多い。 マスターアップ近くになってフラグメント化のためゲームがハング。 対策を練ろうにもグローバルでnew、deleteだったから全部書き直しするしかないという 実話もあるほど。
- 18 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 00:46:23 ID:N/n8r37l]
- 1GHz 512MB VRAM8MBで起動した
超絶スローで
- 19 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 01:05:05 ID:sxpmqDHH]
- >>17
CodeZine のサンプルはメモリ管理にこだわってたよね。 「タスクシステム」の要件にメモリ管理を加えるべきか、みたいな 話もあったけど。
- 20 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 01:07:38 ID:sxpmqDHH]
- >>18
>VRAM8M て、trio64とか?w さすがにOpenGL のハードアクセラレーションないとちょっときついかと。
- 21 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 06:58:36 ID:3e5+3Sl/]
- >>17
> 対策を練ろうにもグローバルでnew、deleteだったから全部書き直しするしかないという なんでそうなるんだ? 「モジュールのライフスパンに応じて適切にヒープを分けるだけ」なんだろ? 後でもできるじゃん。
- 22 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 08:16:49 ID:qQkBoxEr]
- >>17
メモリの断片化が問題になるのは、極端にサイズが大きいものと小さいものを 同じヒープから確保する場合。 テクスチャ・モデル・モーション・サウンドなどのリソース類だけ分けておけば、 あとのゲーム制御用のインスタンスは気にせずグローバルなヒープから new, delete で OK だよ。
- 23 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 12:09:14 ID:eqQiBZB/]
- そんなどんぶり勘定が許されるのは素人ゲーだけだよ
少なくともヒープ使用量の最大値は見積もれていないと 売り物にしてはいけないね。 フラグメント化対策の方法論なんて確立されているんだから それをおろそかにするのは単なる手抜き以外の何者でもない。
- 24 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 12:25:51 ID:3e5+3Sl/]
- まったくだ。
「おそいかも」とか「フラグメンテーションが発生するかも」なんていう どんぶり勘定で面倒なメモリ管理コードなんて追加しちゃいけない。 「ここがおそいことがわかったから」「ここでフラグメントが問題になったから」と 言えるなら何か細工を入れてもいい。言えなきゃおとなしく new/delete 使っとけ。
- 25 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 12:41:37 ID:beD99wJ7]
- 問題になるまではGCやsmart_ptrを使っていてもおkと
- 26 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 13:08:03 ID:IOwBN/Qz]
- いいよ
仕事でやってるやつはみんな何回も痛い目見てるから自然と神経質になる 問題が出ないうちから考えてもアタマでっかちになるだけ
- 27 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 23:22:51 ID:qQkBoxEr]
- >>23
> そんなどんぶり勘定が許されるのは素人ゲーだけだよ 気のせい。
- 28 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 05:53:34 ID:4jJZotVw]
- newとdeleteはやたら使用メモリの全体量がわかりずらいな
mallocからしてロクなもんじゃなかった気がするけど newとdeleteほどアフォ仕様じゃなかったよな オーバーロードするといちいちそのヘッダ呼ばないと newとかdeleteとか呼べないしで糞面倒くせぇ せめてデバッガで見えれば助かるんだけどそういう機能ってないの?
- 29 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 07:37:37 ID:bFvJK9Je]
- >>28
ふつー ::operator new() ではなく、クラス内の operator new をオーバーロードするから、 必然的にヘッダ読み込むことになると思うが。 メモリ使用量は、使ってるライブラリによるな。俺は自前で書いたのがあるから、それを 使ってるけど。
- 30 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 16:57:10 ID:YYgyTJOh]
- タスクシステムと分岐予測やパイプラインの関係を考察してるようなサイトありませんかね?
ググッてもこのスレばかりヒットしますw
- 31 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 19:06:42 ID:rnZd7PxY]
- >>28
>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系がロクなもんじゃないと言いたいの?それともヒープ使用量をモニターする 手段が見つからないからロクなもんじゃないと言いたいの?
- 32 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 19:34:18 ID:rnZd7PxY]
- >>22
>極端にサイズが大きいものと小さいものを >同じヒープから確保する場合 「極端に生存期間が大きいものと小さいものを同じヒープから確保する場合」 も付け加えといとくれ
- 33 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 20:38:35 ID:rnZd7PxY]
- >>32だけど>>21で既に生存期間の話出てるね。文盲だね
ネトゲのサーバプログラムとかだとオブジェクトの生存期間の差はかなり強烈なものになるから 例えばWindows系ならHeapCreateとかで適切にヒープ領域を分けといたりするけれど、PCゲーの クライアントプログラム限定の話ならぶっちゃけこんなの要らん 数ステージを巡回するデモンストレーションモードで数日間ぶん回してメモリ確保に失敗し始めたり タスクマネージャのグラフが愉快な絵を描いてるとかNtQuerySystemInformationでログ取り続けたら 驚きの結果が、とかならフラグメンテーション云々の可能性を考えてもいいかもだが そういう場合はステージ毎にHeapCreate/HeapDestroyでドバっと確保・ドバっと開放でもしとけばいい。 これならステージ中のオブジェクトはみんなHeapAlloc系使ってもフラグメントの心配いらね 弾とかパーティクルみたいなサイズ・生存期間共に粒度極小のオブジェクトを大量にばら撒く ゴジャースなゲームなら表示MAX分だけドバっと確保したboost::pool使うか配列で順序なしのリスト みたいなことやっとけばいいよ ところでタスクシステム?ハァ?って感じだな
- 34 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 21:32:18 ID:4jJZotVw]
- >>31
俺はそんな難解な話してない 使ってるメモリの使用量がわからない・わかりにくいってただそんだけのこと あと、メモリリークとかも全然わかんねぇ IDEの問題になるけど分かる要素がないのがひでぇl で、俺の知識だけだと自分でmallocをラップした関数を実装して それに使用メモリの総量・使用メモリ状況やメモリリークなんかを チェックできるようにしてるんだけど この辺っていつまでたってもウンコじゃね? とかそういうこと言ってる (俺が知らないだけかもしれんが少なくともVCはウンコだと思う)
- 35 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 21:49:37 ID:bFvJK9Je]
- >>30
マジに最適化し出すと、関数の並び順とかまで見直す必要がある。PS2 のときには キャッシュがマジ少なかったので、ライブラリチームは T15000 使って最適化してたけど、 今はそこまでやってないんじゃないかなぁ。 ゲームロジックはキャッシュミス起きまくりだが、そもそも大して CPU 使ってないので 気にしない。昔も今も。
- 36 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 21:51:07 ID:bFvJK9Je]
- >>33
パーティクルとかの小さなオブジェクトは STLport の node allocator 使ってた。メモリが 多少無駄になるけど、早いし断片化しないので。
- 37 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 21:56:23 ID:rnZd7PxY]
- >>34
確認するが、CRTデバッグヒープくらいは使ってるという前提でいいよな? msdn.microsoft.com/ja-jp/library/974tc9t1(VS.80).aspx その上で不満ということならもう少し詳しくお話をしてほしい もし使ってないってんなら幾らなんでもネタだろう…(´-`)
- 38 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 22:13:53 ID:4jJZotVw]
- >>37
こっちも確認するけど それアフォがソース見てもわかる奴しかでない奴でしょ? 難しいリークだとアウトプットウィンドウに変なコードがずらずら出てもどこのコードが リーク起こしてるかまったくわからない機能でしょ? そんなの使えないよ 正直、その機能に頼るぐらいなら自分でmallocをラップしたほうがよっぽどいい
- 39 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 22:21:07 ID:4jJZotVw]
- ちなみに使ってるのはこれ
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF); なんでこれさ こんなアフォなんだろうね 俺のいる会社の新人だってこんなアフォな機能作らないと思うよ やっぱり俺の使い方間違ってる? ってかそれとももうちょっといい使い方あんの? さすがにこりゃねぇだろうと思った だって自分でやればどこのソースのどのコードが使ってるメモリなのか 余裕でわかるようにできるじゃん これまったくわかんねぇじゃん 動的(わからない法則がちょっとわかってないが)に確保したもんだとほぼお手上げじゃね?
- 40 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 22:53:24 ID:rnZd7PxY]
- 飯くってた
>>36 node allocatorは良いものらしいね >>38-39 把握した WindowsだのVisual Studioなど言ったって、なんだよ結局はユーザープログラム固有の モニタプログラム(システムモニタ(リソースモニタ)やジョブモニタ)を用意しなくちゃ いけなくなるのかよバーローつー話だよな 通常、ゲーム開発用のフレームワークはデバッグ支援用のツール群とセットになってるけど それに相当するサービスをVS標準機能に期待するのは難しいね ま、同人ゲームとか、ここでタスクシステムすげぇすげぇ言ってる超小規模開発・個人開発なら 無用の機能だが
- 41 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 23:55:15 ID:rnZd7PxY]
- 前>>969
(前略)だからコンテキストスイッチは不要では。 >コンテキストスイッチは要らなくネ? ゲームに要求される表現は多様化・高度化し続け、それに伴いゲーム内で処理されるジョブの粒度も多様化し 1イント内に処理すべきジョブ数も増大の一途をたどった。ジョブ(ゲームコード。例えばAI)を記述するスタッフも 増大し多様化した。時間ステップ毎に単純に数値積分していくだけのジョブばかりではなくなり、継続(continuation) が必要なジョブが増えた。にも関わらずゲームの特性上個々のジョブはμsecオーダーで終了ないし中断することを 要求される。継続に必要な手続きをユーザープログラム側に丸投げする(ユーザープログラム側にリエントラントな 仕掛けを用意させる)原始的なFSMモデルのジョブ制御だけではお話にならなくなり、ファイバーやコルーチンのような 仕掛けも必要になった。これらのジョブの粒度はスレッドを使うには小さすぎ、また数も多すぎる まぁ、同人ゲーやタスクシステムすげぇすげぇ言ってる超小規模開発・個人開発なら無用の機能ではあるが
- 42 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 00:06:03 ID:DNME6QAR]
- スゲー参考になってありがたいけど同人シュー制作者の俺にはテラコンプレックスw
- 43 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 01:05:26 ID:mdtDWXyh]
- (訂正)
---------------------------------------------------------- >(前略)だからコンテキストスイッチは不要では。 > >>コンテキストスイッチは要らなくネ? ↓ >(前略)だからコンテキストスイッチは不要では。 ---------------------------------------------------------- >1イント内に ↓ 時間ステップ毎に ---------------------------------------------------------- (補足) 一部素人がタスクシステム(以下>>2と呼ぶ場合アリ)とか呼ぶものの実態が>>2程度のものであるという前提に立つならば これは70年代のハードに依拠する簡素なゲームにとっては無難なジョブ制御プログラムとかモニタプログラムの【断片】だね しか言いようがない。もはや今となってはね。 これは非常に簡素でオーソドックスなFSMモデルのジョブ制御であり、大昔から科学計算で頻繁に使われ 大昔の計算機、現代でも組み込み用途の超貧弱なマイコン(安いものなら50円前後。RAM数KBとROM数百KBの ワンチップのやつ。半ば使い捨て)のために用意される超原始的なモニタプログラムにも見られる。 継続に必要な仕掛け、つまりコンテキストスイッチに必要な記述は全部ユーザープログラム側に丸投げ。 何もしてくれない。誰が書いても同じようなものになるってくらい凡庸な、道端の雑草並みのありふれた仕掛けだ。 でも「タスクシステム」という呼び方は珍しい。かなりエキセントリックだ。これは特定の職場内の固有名詞 ローカル用語の粋を出ることはないだろうね
- 44 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 01:22:07 ID:0noAZqI/]
- >>41
AIについてで実装できてるわけじゃないから強くは言えんけど タスクシステムの構造を大きく変えるような手を入れなくてもできそうな気がする。 別スレッドで定期的にタスクを位置等のグループ毎に分割して、グループ内での状況を解析する。 そしてタスクに次に処理がきたときに、次にどう動かすか考えるの役立つ情報をセットする。 とかではだめですか。
- 45 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 01:24:09 ID:SCRh4oL7]
- >ゲームに要求される表現は多様化・高度化し続け
で、そんなリソース大量消費型ゲームと小規模DSゲームの売り上げが変わんなくて 涙目、という話ですね。わかります。 とかそんなつまらんイヤミはおいとくとして、タスクシステムのサンプル打ち込んで おもしれーなとか言ってる俺には雲の上の話なんだけど、 >原始的なFSMモデルのジョブ制御だけではお話にならなくなり、 こういうところはなんとなく予想できるんだよ。ただ現実問題として >同人ゲーやタスクシステムすげぇすげぇ言ってる超小規模開発・個人開発 が、手軽に手をだせる、楽チン開発できてウハウハなフレームワークってあるの? どうせ勉強するんならそっちのほうがいいような気がすんだけど。
- 46 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 01:26:10 ID:1UgkwBET]
- >>45
C++ でふつーにメインループ書いて、continuation っぽいこと必要な部分はスクリプト言語 + スタックレス VM で良いじゃん。lua とか。
- 47 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 01:32:05 ID:mdtDWXyh]
- Q.【>>2のようなプログラムを「タスクシステム」と呼ぶことに固執し広めようとする人間がしばしば笑い者になるのは何故?】
技術は進歩し続け、計算機は猛烈な勢いで処理速度を向上させ、現代のナウいハードに依拠するナウいゲームを 作るために『『不可欠』』となったナウいフレームワークだのゲームエンジンだのと比べるともはやミジンコ級であり お世辞にもシステムとはとても呼べない玩具みたいな代物であることは否めない >>2のような小規模で簡素なFSMモデルのジョブ制御は、原始的なモニタプログラムといえるかもしれない。 しかし一般にOSを表す非プリエンプティブマルチタスクシステムとは明らかに異なる。共通項は非プリエンプティブ という点だけでありコンテキストスイッチをサポートしていない(その責任をユーザープログラム側に丸投げ してしまってる)時点でマルチタスクシステムとは明らかに異なる。マルチタスクという用語自体は1960年代半ば オペレーティングシステムという用語と共に誕生した。UNIVACとかSystem/360のOSが出てきた時代の話。 エンジニアは用語の意味が輻輳を起こし意思疎通に齟齬が生じることを嫌う。OSが提供されないカスタムボードで 走るゲームプログラムの開発者なら兎も角、立派なOS下で走るゲームプログラムの開発者にとってタスクはプロセスだ。 >>2は、過去に「とある開発チームで使われていた原始的なモニタプログラム」が固有名詞として「タスクシステム」と 呼ばれていたのかもしれないね、程度の理解でいいと思う。当時のゲームプログラムはOSが提供されないカスタムボードで 走るものであり、ゲーム開発者自前のモニタプログラムを用意しハードの全てを自分でコントロールした #google2001の検索結果によると当時「タスクシステム」などと呼んでるページはほぼ皆無だったことが判明している #ほんの一部でその単語を使ってたページは出典としてLogician Lordを紹介していた。ネットで徐々に伝播しCマガで #松浦とかいう素人プログラマが出典を明記せずに紹介し急速に流布し広めた「タスクシステム」なる呼び方の出所は #Logician Lordだろうと思われる。これがネット発の「タスクシステム」なるものの出自だ。都市伝説と呼ぶに相応しい
- 48 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 01:55:22 ID:SCRh4oL7]
- >>46
スタックレス + lua でググった。 なるほど、いまどきはタスクシステム(FSM)でカリカリやる、やれるくらいの規模の開発 なら、単純なメインループとスクリプト言語のほうが楽だしパフォーマンスも出る ってこと? 難点はあのパスカルくささに耐えねばならんとこかなあ。ニントモカントモ。
- 49 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 01:57:27 ID:1UgkwBET]
- >>48
状態遷移が複雑な部分、たとえばアクションゲームのプレイヤー制御とかは C++ で書いといて、continuation あった方が楽な部分、たとえば「何秒後に エフェクト発生」とかはスクリプトとかデータファイルで書くのがふつーじゃね?
- 50 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 02:05:40 ID:mdtDWXyh]
- >>42
必要ないものは取り入れる必要はない。コンプレックスは持つ必要ない。 俺も同人ゲーを作ったことあるが規模相応の簡素なコーディングで済ませてた。 いわゆるタスクシステムとか紹介されてるあのヘンテコな仕掛けも不要だった。プライオリティ?ハァ?って感じだ。 敵の配列が弾の配列があって。そんな感じだ。 タスクシステムを心の底から崇拝する人間が心の底から子バカにしている様子がたまに見受けられる 配列厨のコードそのものだ。 同人ゲームを悪く言うつもりで書いたわけではないのだが、もし>>40-41の「同人ゲーム〜」の部分が気に障るなら そこは撤回する。すまなかった
- 51 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 02:05:58 ID:SCRh4oL7]
- >>49
luaはver4のころちょっとかじっただけなんだけど、スクリプト処理のために 組み込んでみようとは思ってたんで、考えてみるよ。ありがと。
- 52 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 02:22:54 ID:mdtDWXyh]
- >>44
多種多様な人間が多種多様なジョブ(ユーザープログラム)を記述することになると 「FSMモデルのみ」という拘束条件は必ず無理が生じる。これはやれば分かるという他ない RAM数KBの組み込み用モジュールのモニタプログラムでもコンテキストスイッチをサポートしたがる。 FSMモデルでジョブを記述させると色々面倒くせーことになるから。説明するよりも組んでみたほうが 分かるという他ない >別スレッドで〜 よく分からんがコンテキストスイッチをサポートしたくないがためだけに 何やら複雑怪奇な仕組みを導入する話のような気がしてならない 素直にLuaとか使ったほうがいいよ。というか眠いばいばい
- 53 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 02:29:54 ID:SCRh4oL7]
- >>50
>規模相応の簡素なコーディングで済ませてた そこんとこがよくわからんのだよなあ。 単純な配列とループで組めて問題ないならぜんぜんOKでしょ。俺もそうする。 ただ、サンプルでも使ってる GLLib の人のサンプルソースは単純ループ だけど、けっこうきつい印象を受けた。 俺も「タスクシステム」を採用するだけでバラ色の未来が開けるとは思わん (まだかじっただけなんで実はすごい泥沼が待っているのかもしれない)けど、 そこそこ使いまわしが効いて、それなりに見通しがいいように思う。 要は適材適所じゃないかと思うんだが、用語を使うことすら非難するほどの 問題があるの?
- 54 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 02:37:14 ID:SCRh4oL7]
- >何やら複雑怪奇な仕組みを導入する話のような気がしてならない
こういうのは、同意できるんだよね。 そこそこ便利そうだけど決してわかり易い仕組みとはいいにくいから、 なんか泥沼にはまりそうな気がする。 まあ、小学生の感想文ですまん。
- 55 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 02:38:50 ID:s5clZUFB]
- タスクシステムが有効なのは小規模システムだな
メモリの単位がkまでの環境 Mになると不要
- 56 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 02:46:45 ID:SCRh4oL7]
- >>55
キャッシュじゃねーかw<k あー、PICのプログラムとかそれっぽい。
- 57 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 02:49:24 ID:s5clZUFB]
- AVRは俺の嫁
- 58 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 07:52:52 ID:EfjKu0FE]
- i君はルサンチマンに満ち溢れてるなw
- 59 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 16:00:01 ID:gWloFQ1j]
- >>48
Luaの文法が嫌いならSquirrelもいいよ。 ム板でスレタイ検索してみてくださいな。 >>53 自分の書いた文章で古い設計方法に名前がついたことにより 予期せぬ形でもてはやされるようになってしまった。 そのことに対する責任感から現代的な知識を伝えると共に 言葉狩りを行っている。 彼の行動はこのように解釈することもできる。あくまで妄想だが。
- 60 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 19:49:55 ID:Z+hETYkY]
- タスクシステムを使ってるプログラムの
メモリ・ポインタまわりのバグり具合はハンパじゃないな フツーに書けとあれほど言ってるのにやって ゲームと違うところでいっつも四苦八苦してるとなりのプロジェクト あんまりポインタ周りのバグが酷いからプロジェクトをまたいだ会議で 原因を指摘してやったのにまだごにょごにょ言ってる もう、お前(となりのプロジェクトのウンコリーダー)に逃げ場はねぇよ グローバル変数とタスクシステムとポインタの悪用は絶対に全部セットなんだよな タスクシステム使わないプロジェクトはグローバル変数も使わないしポインタの悪用もしない だからプログラムがメインから必ず終えるし 組み込むべき箇所もすぐにわかる 第三者がきてもすぐに全体が把握できるってのはでかいね もういい加減に信者も目を覚ますべき
- 61 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 20:17:38 ID:gp/PSntR]
- メモリ、ポインタを怖がるってプロとしてどうなのw
- 62 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 21:58:54 ID:EfjKu0FE]
- 馬鹿が触ったポインタほど怖いもんはねえぞ
- 63 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 22:21:45 ID:pFqWgrsK]
- 確かにコンテキストスイッチがないとグローバル変数に頼らざるをえない。
コンテキストスイッチがあったところでスパゲティにする奴はするけどなw
- 64 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 22:34:07 ID:mbBbhYbw]
- nullポはいねぇがあ〜?
- 65 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 00:05:57 ID:Kosjr/Zu]
- >>48
昔Delphi使ってたから、馴染みはあるんだけど、C/C++と併用すると間違うんだよね。 演算子とか。 >>60 あー、それは俺も気になった。 親クラスのメソッド呼んだら、内部で自分自身を削除してて戻ってきたところで落ちるとかw 俺がタコなだけなんだけど、基本的にポインタを多用するスタイルみたいだしな。 几帳面なやつ向きかも。実はちょっとびびってるw
- 66 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 00:27:43 ID:GEMDjn92]
- それタスクシステムとかいうナニに限った話ではないと思うんだけどな
相互参照オブジェクト(インスタンス)の取り扱いについてのごく初歩的な あらゆるプログラムに通じる基本的なお作法の話だと思うんだ
- 67 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 00:34:05 ID:EtW+xZ5p]
- ポインタなくてもタスクシステム組めるけど?
- 68 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 00:46:53 ID:Kosjr/Zu]
- >>66
んー、いいわけがましくなるけど、俺の場合、インスタンスの廃棄は生成した側 が責任をもつというスタイルだったんで、インスタンス自身が自分を廃棄する という形式に慣れてないんだと思ったけど。
- 69 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 00:55:46 ID:Qgt9Tm09]
- >>67
でも悪用するだろ? しかもグローバル変数は使わないと恩恵(笑)は受けられないだろ? 所詮、アフォが飛びつく糞なアイテムよ
- 70 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 01:00:16 ID:GEMDjn92]
- >インスタンス自身が自分を廃棄
その廃棄っていうのは、自殺を決断したらメモリ開放まで一気に行ってるわけだよね? タスクシステムとかいうナニにおけるインスタンス(というかエンティティなんだろうね)の 自殺のプロセスというのは、常にそういうもの(自殺を決意したらメモリ開放まで一気に決行) と決まっているの?それとも君が読んだ何かしらの自称タスクシステムのサンプルコードの 実装がたまたまそうなっていたというだけなの?
- 71 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 01:06:54 ID:GEMDjn92]
- >>70補足
>(自殺を決意したらメモリ開放まで一気に決行) なおかつ生みの親や己を参照するインスタンスに何ら通知する手段を提供しない。ね >>68 >俺の場合、インスタンスの廃棄は生成した側 >が責任をもつというスタイルだったんで これも同じく。自殺を決意したら生みの親に自分を殺してくれと依頼するような手続きは タスクシステムと呼ばれるナニにおいては「存在しない」ということになってるのか、それとも 君が読んだ何かしらの自称タスクシステムのサンプルコードの実装がたまたまそういう 手続きを用意していなかっただけなのか 自称タスクシステムってどれもこれも俺俺システムで内容がバラッバラだよね
- 72 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 01:23:55 ID:Kosjr/Zu]
- >>70
イテレータに矛盾が生じないような工夫はされてたけど、delete はdelete だったな。 まあ、それでも、たまたま、じゃないかと思うけど。入門用サンプルだし。
- 73 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 01:34:51 ID:GEMDjn92]
- >>72
そうかー。もし良かったらそれのURLとか書籍名教えてくれないかな いや、別に悪戯とかしないからさ
- 74 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 01:53:28 ID:Kosjr/Zu]
- >いや、別に悪戯とかしないからさ
却ってこえーよw こっちは勉強させてもらってる立場だからあんまりなー。 このスレを調べりゃわかるよ。
- 75 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 02:00:05 ID:GEMDjn92]
- あー、ここに載ってるならいいや
>却ってこえーよw 何にもしねーよ。入門用を謳う自称タスクシステムがいっぱいあるから そのカオスを更に加速させて「タスクシステム」がどんどん 「口に出すだけで何とも居た堪れなくなるムードを醸し出すキーワード」 になっていく様はある意味で痛快だしな。
- 76 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 02:02:37 ID:GEMDjn92]
- いっぱいあるから → 増殖するのは結構なことだ
- 77 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 02:45:06 ID:ic2SgE5A]
- ちょっと大げさかもしれないけど
コンテンツ産業に理解ある総理の下で 国策としてコンテンツ産業に力を入れようとしているのに 裾野を支える初心者が混乱に陥ることを喜ぶのは 日本人として恥ずかしくない?
- 78 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 08:16:42 ID:hO/9YF4P]
- タスクシステムすごくね?
いつも途中で破綻する俺でもゲーム作れた
- 79 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 13:25:03 ID:s+TTPkcj]
- >>77
そういう、いかれた自称上級者はいつの時代にもいた。
- 80 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 14:12:48 ID:Mi8wwxRa]
- タスクシステムを使うようになってからというもの、周囲がボクを見る目が変わったね。
なんかこう一目置かれてるって感じ? 隠し切れない風格を醸してるせいかコミュニケーションにも微妙な距離が生まれるみたい。 こういう孤独も上級者ならではの悩みだよね
- 81 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 14:30:50 ID:bk64Ra9f]
- 自由度が高い分だけめちゃめちゃ遅い点はあまりつっこまれない、なんで?
- 82 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 16:47:53 ID:ooF5RpWW]
- 遅いって何が?
- 83 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 18:45:10 ID:saotQS84]
- たぶんこの辺の話
pc11.2ch.net/test/read.cgi/tech/1217813098/985
- 84 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 19:01:12 ID:Bp8RkerR]
- 仮想関数まで否定することになるな
- 85 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 02:36:48 ID:SVunqIhe]
- なぜタスクシステムを嫌うのですか?(上位5回答)
1.名前が気に入らない 2.名前を付けた人物が気に入らない 3.名前の「システム」の部分が気に入らない 4.自由度が高いのが気に入らない 5.隣のプロジェクトが気に入らない
- 86 名前:名前は開発中のものです。 [2008/11/16(日) 03:11:11 ID:DYIhu6LD]
- 「気に入らないから叩かれてるに過ぎない」として批判を過小評価したがってる様子が
ひしひしと伝わってくるけど、そういうワンパターンなかわし方を続けるのってのもどうなんだろうね
- 87 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 06:15:12 ID:SBJGjbor]
- カプの開発で大規模に作っちゃったもんが
タスクシステム使いまくりでバグりまくりなので そもそもの構造からいってすでにまずいってことがわかると困る人がいるのです
- 88 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 07:03:30 ID:SVunqIhe]
- >>86
いやいや、俺はタスク使わんし・・・ 批判の仕方が感情的だっつってんの タスク派も嫌タスク派も、なんで自分のやり方が一番いいと思えるんだ?
- 89 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 07:44:51 ID:SBJGjbor]
- >>88
二つの方法ですでに開発したことがあって比較した上での結論
- 90 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 08:44:31 ID:SVunqIhe]
- 早いレスども
タスクシステムという名称は新しいものらしいけれど、 それ自体はかなり古い手法だろ? 当時対比されるべき「もう一つのやり方」は アセンブリで非構造化の逐次プログラミングだったはず 当時のタスクの本質がコンポーネント指向にあったんだろうと考えれば 取り込む要素があると思いこそすれ、非難する気には全然ならないんだよね なんつーか、フラッシュ使いがハイパーカードを非難してるようなモヤモヤを感じる
- 91 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 08:50:18 ID:fOiOPCuz]
- ギャラクシアン - Wikipedia
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年代
- 92 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 08:56:45 ID:SVunqIhe]
- ちなみに旧ナ○コ系の一部では
ジョブコン(ジョブコントローラー)と呼ばれていたらしい 他にも派閥によって呼び名が・・・おっとだれか来たようだ
- 93 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 14:53:09 ID:ekn4SUba]
- >>87
以前このスレでも話が出たMTなんとかのことですか?
- 94 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 22:47:39 ID:JDXMEp1E]
- >>90
> 取り込む要素があると思いこそすれ、非難する気には全然ならないんだよね C++ で仮想関数として取り込み済み。
- 95 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 23:43:18 ID:fOiOPCuz]
- 70年代の技術でオブジェクト指向を表現したのがタスクシステム
- 96 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 00:52:54 ID:d4ix+Z90]
- 別にゲームに限らず、関数ポインタ+データブロックという構造はよく使われてたけどな。
UNIX のデバイスドライバとか UNIX V6 の頃から、こんな作りだ。
- 97 名前:名前は開発中のものです。 mailto:sage [2008/11/18(火) 00:07:12 ID:jVsaZ2Nt]
- >>92
だっせー
- 98 名前:名前は開発中のものです。 mailto:sage [2008/11/18(火) 01:47:54 ID:2bcqSLD5]
- 当時としてはすごい技術だったという話は
・いまタスク使ってるやつは擁護になってないからスルー ・アンチはそんなの知ったことじゃないから叩く 技術史が好きなヤツにしか意味のない話です
- 99 名前:名前は開発中のものです。 mailto:sage [2008/11/18(火) 02:15:13 ID:0/4z+Eh4]
- だからタスクシステムの要点は
・メモリ管理 ・タスク管理 だって言ったじゃん メモリフラグメントに対して固定長データという回答を出したのがタスクシステムの功績 そして扱うべきデータがどんなデータであれ管理レベルでは等価である事がタスクシステムか否かの分岐点だと思うね ちなみに継承+多態はメモリ管理、タスク管理のどちらから見ても最悪なばかりか速度まで低下して何のメリットもない プログラムも複雑化してタスクシステムより尚悪い あと余計な事かもしれないけど、このスレが迷走しやすいのは「何を解決するのか」を定義しないで話を進めるからだよ 例えば「ジャンルにとらわれない万能オブジェクト管理システム」なんていう途方もない事であっても目的があるとないのでは 議論の濃さが全然違う 最後に何度も言ってるけど、・・・タスクシステムを使うには現在のPCはオーバースペックすぎると思うよ HSPでよくみかける固定長配列での管理よりわかりやすく速度的にも有利なタスクシステムなんて見たことないし 有意な差が出るとも思えない
- 100 名前:名前は開発中のものです。 [2008/11/18(火) 07:37:14 ID:P1O//Y8n]
- わけのわからんこと言い出すからレスが止まっちゃっただろ
- 101 名前:名前は開発中のものです。 mailto:sage [2008/11/18(火) 08:29:07 ID:RCT5hNLc]
- >ちなみに継承+多態はメモリ管理、タスク管理のどちらから見ても最悪なばかりか速度まで低下して何のメリットもない
>プログラムも複雑化してタスクシステムより尚悪い お前は継承も使わずにプログラムしてんのか?
- 102 名前:名前は開発中のものです。 mailto:sage [2008/11/18(火) 09:07:44 ID:HHT2Kui7]
- Cには継承ないよ
haskellには継承なんてないけどそれでも綺麗なコードの実用プログラムが沢山書かれてるよ
- 103 名前:名前は開発中のものです。 mailto:sage [2008/11/18(火) 12:59:38 ID:k/xr4HgC]
- なんで唐突に Haskell が出てくるのかわからんが
deriving とか知らないのか? で、必死になってメモリ管理とか叫んでるひととか、バカにしようと必死な人とかは スルーしたほうがいい気がする。
- 104 名前:名前は開発中のものです。 mailto:sage [2008/11/18(火) 16:11:47 ID:jVsaZ2Nt]
- >>99
>タスクシステムっていうのは > ・メモリ管理 > ・タスク管理 >の2種類から構成されている 前スレログ読みましたが、クラスを使うとフラグメントが発生どうのとかよく分からない話をして 数人から突っ込まれてたID:IuSgJyHuさんですか?たぶんそうだろうかと私は思うのですが。 ところであなたの言う「タスクシステム」とやらは具体的に何なのでしょう。これと思う実装例が あるならそれを示してくれませんか。人によって定義が千差万別の俺俺システム「タスクシステム」 ですから、その言葉を発する人間が登場する度にこうやって確認せざるをえないわけで。 このように、確固たる出典がない、言い方を変えれば権威が不在というのは不便なものです。 技術用語としての存在価値が疑問視され、所詮はローカル用語といわれるのも頷けます >メモリフラグメントに対して固定長データという回答を出したのがタスクシステムの功績 ん?70年代中期・末期において主記憶をページング方式で管理することに新規性があったと。 簡単のために操作対象を固定長に分割・管理する、つまり固定長レコード方式というものに 新規性があったと。そういうお考えで? 当時のソフトウェアエンジニアの通念というものが集計できるならば、あなたの考えは当時としても 非常に珍しい類のものだろうと思います。かなりエキセントリックだろうと思います まぁ確かに、計算機についての基礎教養が欠乏、というかむしろ知的水準が絶望的に低い人間 にとっては世の中のあらゆる仕組みはあらゆる時代を通じて常に新規性に満ちた凄いテクノロジー なのでしょうけど… そういう知的弱者・情報弱者・底辺階級をターゲットにした功績話を絶叫するのはあなたの趣意ですか?
|

|