[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/10 00:46 / Filesize : 159 KB / Number-of Response : 417
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名前は開発中のものです。 mailto:sage [2009/12/13(日) 18:11:06 ID:ESt66YNz]
タスクシステムについての議論、相談、質問、雑談などのスレです

part8 pc11.2ch.net/test/read.cgi/gamedev/1250678891/
part7 pc11.2ch.net/test/read.cgi/gamedev/1241670786/
part6 pc11.2ch.net/test/read.cgi/gamedev/1238725539/
part5 pc11.2ch.net/test/read.cgi/gamedev/1234977661/
part4 pc11.2ch.net/test/read.cgi/gamedev/1233459490/
part3 pc11.2ch.net/test/read.cgi/gamedev/1226199100/
part2 pc11.2ch.net/test/read.cgi/gamedev/1196711513/
part1 pc11.2ch.net/test/read.cgi/gamedev/1173708588/


・タスクと呼ばれる実装は、非常に多岐に渡ります
 古典タスクシステムについての話題は「>>2」と明示してください
 そうでない場合はカスタム版であることを明示してください

・人を憎んで言語を憎まず

381 名前:名前は開発中のものです。 mailto:sage [2010/01/31(日) 19:42:47 ID:Di+guFUQ]
グローバルあかんのやったら何でグローバルが存在すんのよ
別に何でもかんでもグローバルに頼るとは言うてへんやろ
何でもかんでもグローバルあかんと抜かすほうが何も考えてへんのちゃうやろか

382 名前:名前は開発中のものです。 mailto:sage [2010/01/31(日) 19:55:10 ID:WDNFJ5/J]
>>381
グローバルなくてもコードはかけるよ。
グローバルを隠す(さらには静的変数をなくす)のは主に「状態の整合性」の維持かな。

グローバルはとりあえず実装するのには便利だけど、
そのままおいておくと拡張するときに、
状態の整合性の確認のためコードを何度も確認する必要がでてくる。
普通、他人のコードはもちろん自分のコードも細部まで覚えてないからね。
インターフェイスを減らして意味を持たせることによって確認の手間を減らす意味がある。
そういう意味ではこのメリットがほとんどない場合は
グローバルで実装したほうが得ということになる。
また、グローバルを使ってなくても上記のメリットがまったくないコードってのもたくさんある。
やたらメンバ変数の多いクラスとかやたらポインタをすべてにたらい回すとか。

細かく言えばグローバルはオーバーレイでも使わない限りメモリを占有するってのもあるが
これはターゲットによってほとんど無視できることもある。

383 名前:名前は開発中のものです。 mailto:sage [2010/01/31(日) 19:56:13 ID:030VeqOo]
>>381
なんでもかんでもダメだね
ただ、君の方針がそうであるなら下手にカプセル化なんてしないほうがいいと思う
そういう方針であるならもう割り切るべき
設計なんて頭にいれないでデータすべてをエクセルに展開したみたいにすべて並べるように
プログラムを組んだほうがうまくいくと思う

384 名前:名前は開発中のものです。 mailto:sage [2010/01/31(日) 20:00:04 ID:QrJboi/Q]
>タスク方式よりずっと気持ち悪く見えても、これはタスクシステムそのものなんです。
FSMはタスクシステムじゃないけどタスクシステムそのもの・・・
なんだか禅問答みたいですな。
古典的タスクシステム≠FSM=何かの自己流C++タスクシステム
という意味なのかな?

>C言語でもある程度のコンパイル時のプログラミングはできるんですがチューリング完全ではないので
>高度な事はできず、古典タスクシステムしか組めません。
Cでは古典タスクシステムしか組めないとなる理由=Cがチューリング完全でないから?
すいませんがチューリング完全と古典的タスクシステムの関連性が見えません・・・


>microthreadでタスクの順序が保証されない事と共通点があったからであって
つまりタスクシステムというより並列処理の話なのかな?
順番の保証が必要な処理ならスレッドでもタスクシステムでも同期するなり
優先付けるなりする必要があるのでは、という話になるが。

385 名前:名前は開発中のものです。 mailto:sage [2010/01/31(日) 20:23:36 ID:PBTWOUVl]
つーか、現場で働いているゲームプログラマーが実際こうです!って書いてくれたらこんな議論しなくていいのになぁ。
守秘義務ってそうとう厳しいのけ?

386 名前:名前は開発中のものです。 mailto:sage [2010/01/31(日) 20:30:57 ID:SO046r6f]
コードにしたらボロでるじゃん!

387 名前:名前は開発中のものです。 mailto:sage [2010/01/31(日) 20:38:10 ID:CeH4M0fL]
> 古典的タスクシステム≠FSM=何かの自己流C++タスクシステム
> という意味なのかな?
そうです。

> Cでは古典タスクシステムしか組めないとなる理由=Cがチューリング完全でないから?
Cは実行時のプログラミングに関してはチューング完全です。
しかし、コンパイル時ではチューリング完全ではありません。
型に順序を与えたりソートといった動作をするにはチューリング完全である必要があります。
コンパイル時に分かっている情報はその時に処理した方が実行時に処理に負担が掛からず利点があります。
具体的な例を挙げればリストに重複した種類のタスクを単一しか存在できないものとして入れてしまい
それをエラーとして扱いたい場合があります。
assertマクロを使えばその様な事態はとりあえず実行時にエラーが出る事によって検出できますが
設置したそのステートメントを実行するまで気付きませんし、動的にタスクに種類の情報を与える方法では
実行前に意図したものが原因か、あるいはロジックの不正でデータが書き換わったのか区別できません。
回避するにはそもそもコンパイルできない様にすればいいのですが、型の区別、重複検索はチューリング完全でなえれば実装できません。
他にも人間のミスを予め阻止する予防線を作る必要があります。(読み取り専用のメモリに対する不正な型変換など)

> つまりタスクシステムというより並列処理の話なのかな?
OSなどに並列の管理を依存するとゲームプログラム自体が同じ状態でも
ゲームが干渉できない部分が原因でタスクの前後関係が狂い、再現性がなくなってしまうのでは?といった
懸念がありました。
並列処理に関しては僕はまだ勉強不足な様です。
再現性があり予測が可能な並列動作やyieldの方法を探してきます。


388 名前:名前は開発中のものです。 mailto:sage [2010/01/31(日) 20:38:40 ID:030VeqOo]
>>385
前に書いたんだけどなぁ
リンクとってないだろうなぁ
質問あるたびに上げるのも面倒臭いし

ただ、見て理解できるだろうか?
初心者って設計がどういうものか全くわかってないから
void*やグローバルでのアクセスを単純に技だと思っちゃうでしょ?
そういう勘違いから卒業してないと意味ないと思うんだよね
俺も駆け出しのころそうだったし
インクルードも神ヘッダ(総合ヘッダ)作って全部詰め込んでたよ

でもそれは一番やっちゃいけないことなんだよね
もちろん方針として割り切ってるならそれはアリ
ただ、あるところではカプセル化してあるところではグローバル使いまくりとか
するぐらいだったら設計なんて凝らないほうが吉

389 名前:名前は開発中のものです。 mailto:sage [2010/01/31(日) 21:19:15 ID:QrJboi/Q]
>>387
チューリング完全というよりメタプログラミングのことを言ってるみたいだね。
古典的タスクシステム≠メタプログラミング=君のタスクシステム
C++はテンプレートメタプログラミングができるから君のタスクシステムが実装できて
Cはそれが無いから君のタスクシステムは実装できない。
ゆえにCは古典的タスクシステムしか実装できない、と・・・
集合論的に穴がありそうで突っ込みたくなるけど、まぁそこはいいか。

>ゲームが干渉できない部分が原因でタスクの前後関係が狂い、再現性がなくなってしまうのでは?といった
>懸念がありました。
やっぱり並列プログラミングの話題っぽいね。
ゲーム系でいえばカプコンの MT Framework あたりならネットでそこそこ情報集められて参考になりそう。




390 名前:名前は開発中のものです。 mailto:sage [2010/01/31(日) 22:28:33 ID:6qSVPUGq]
>>378
弾が地形に当たったときの処理として
1. 弾が、地形との衝突を判定して自分で消滅する
2. 地形が、弾との衝突を判定して弾を消滅させる
3. お母さんが、弾と地形との衝突を判定して弾を消滅させる
のうちどれを使うか決めようぜ! ってこと?
3の場合、お母さんが概念的にグローバルな存在になるけど

391 名前:名前は開発中のものです。 mailto:sage [2010/01/31(日) 23:38:16 ID:PJ5c0R9P]
>>385
実際に使ってるのをうpして社内の人間にバレたら給料に影響する
下手すりゃクビ。そこまでして説明したく無い

392 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 00:40:11 ID:1MBMZKlv]
まぁ自分で書いたコードでも仕事で使ったものなら
会社の知的財産だからねぇ

会社によってはCEDECとか論文とかならいいよ、というのはあるだろうが
匿名掲示板にコードだしていいよという会社はさすがにないだろうね・・・

まぁ今さらタスクシステムをCEDECなりで発表する会社もないとは思うが。

393 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 00:51:51 ID:UISeaDQt]
>>390
ならないよね?
まず、ならないってことに同意してもらわないとその先へ進めないよ

394 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 00:52:59 ID:hPvV+L+/]
じゃあ、ここで指摘してくれる人は現場の意見ってことでOK?

395 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 01:00:54 ID:UISeaDQt]
>>394
そんなの誰も証明できないよね?
頭悪いなら2chやめたほうがいいんじゃない?

396 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 01:20:11 ID:1MBMZKlv]
>>393
なんだか極端にみえるんだけど・・・

C言語の標準出力とかヒープとかはどう考えてるんだろう。
stdoutとかmallocやnewで取るヒープとかはグローバル扱いからは除外?
ANSIで規定されてるからOKとかかな?

397 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 01:24:10 ID:ozNWjQIi]
>>393
まじで?どうやってお母さんとお話しするの?お手紙?

398 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 01:26:24 ID:hPvV+L+/]
>>397
全タスクはお母さんを知ってるとか?

399 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 01:28:32 ID:UISeaDQt]
>>397
ちょっと上のレスすら読まないの?
シーンに持たせるって書いたじゃん
馬鹿にレスつけたくないな
話わからないなら入ってくるなっての



400 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 01:33:39 ID:s6RwCqE5]
散々アンチをいじり続けて遊んでいた俺が言うのもなんだが
顔も素性も知らん人間にいきなり「タスクシステム作ってテー」「古典タスクシステムでー」
とか言われてもそれは何の理解の補助にも説明の補足にもならんのよな
顔も素性も知らん人間同士ではエターナルフォースブリザードシステムと等価だ


401 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 01:38:54 ID:s6RwCqE5]
基本的には、喧嘩の調停はお母さんに任せましょう、で丸く収まる

402 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 01:43:43 ID:ozNWjQIi]
>>398
そのとおり。
>>399
シーンタスクが持つ設計ってダメじゃね? シーンが切り替わるとき
面クリアしたりワープしたりするときに弾はどうなるの?消えるの?
ワープアニメ中に回復アイテム消えたら子供泣くよ?

403 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 01:51:18 ID:s6RwCqE5]
泣くよね

404 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 01:52:47 ID:BehLiNNh]
ゲームタスクが持てばいいのかな

405 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 01:57:45 ID:1MBMZKlv]
個人的には今現在のマップ情報の各種問い合わせぐらいはグローバル関数なり経由しても許容範囲。
特定のシーンでしか使わないイベント情報とか、そーいうのがグローバルなのは許せんけど・・・

そのゲームの固有のシステム、として一貫性があればグローバルでも悪い設計とは思わん。

特定のゲーム用に作ったゲームオブジェのタスクを別のゲームに使うことなんて・・・
現実問題、続編作るときぐらいしかありえないし。


406 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 02:02:07 ID:UISeaDQt]
>>402
は?お前の中でシーンがどう定義されてるのか知らないけど
シーンの状態の変化レベルの内容で消えられても困る
ワープだってシーンの1状態でしかないだろ
そしたらワープしても弾消えないよな

そもそもお前、会話がおかしい
思い込みが専攻してて他人の話をまともに聞いてない証拠だろ

俺はこの場では弾と地形が存在するクラスをシーンって話の都合上定義しただけで
このときはどうする?このときはどうする?って逐一状態を定義したわけではない
けどお前はかってに自分の中にあるシーンを俺が言ったシーンだと決め付けて
まず、俺にかってに否定意見を押し付けてるけど
正直それはお前が勝手に定義したシーンであって
俺がいったのは弾と地形を包括するもの程度の意味しかもってないんだけど?

それに実際ゲーム作るとなったらシーンは単体再生だけで済むようなゲーム少ないし
ここでその詳しい仕組みまでもってくることないだろ?

話に関係ないから省いたのに無駄なことするよね君
しかも君の指摘した内容いまの話題に関係あるかね?会社でも君みたいな
話題と全然関係ないこと突然言い出す子がいるけどもっと言動考えてしたらどうなの?小学生じゃないんでしょ?

407 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 02:07:22 ID:ozNWjQIi]
>>406
つまり「シーン」がお母さんね。了解しました。
それなら何の矛盾も齟齬も無いので大丈夫。

408 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 02:16:37 ID:UISeaDQt]
>>407
ほら、また、勝手に決めた
君のお母さんってのはグローバルじゃないの?
違うじゃない?なんで同じっていうの?
違うって
なんでそうやって勝手に思い込みで話進めるの?

409 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 02:33:20 ID:ozNWjQIi]
>>408
概念的にグローバルであればよくて、弾や地形がそれぞれ一意の
お母さんポインタを持ってるってことで、実装の話ではないですよ。
弾や地形のお母さんにもお母さんがいたって不思議じゃないし。



410 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 02:34:28 ID:ozNWjQIi]
あ、説明が足りないかも。ま、いっか

411 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 02:35:45 ID:s6RwCqE5]
グローバルな存在 ≠ グローバル名前空間

つーことなんでねーの。たぶん

国境を越えて存在するもの。長命インスタンス。
例えばハードウェアリソースの制御・分配を行う低層の色々。
ブート→電源断の間、ずっと生き続ける実行待ちキュー。

412 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 02:40:14 ID:s6RwCqE5]
かぶったな。
長命インスタンス → 相対的に長命な存在

413 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 06:35:15 ID:UISeaDQt]
>>409
はぁ?逃げるなよ
自分で決めた言葉もう一度定義しなおしたいなら
せめて前にした定義をどう変更するのか明確にしろよ
勝手に会話の中で都合いいように変化させてんじゃねーよ
しかも違うし
違うだろ?

>弾や地形のお母さんにもお母さんがいたって不思議じゃないし。
なんだよ
グローバルなんだろ?
グローバルのグローバルってなんだよ
全然わけわかんねんだよ!
お前技術者やめろよ

414 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 07:09:25 ID:UISeaDQt]
仮に彼のいうことを汲んでやったとしても
弾クラスや地形クラスでグローバル的にアクセスできるもんなんてないじゃんw
いつまで自分の世界で話してるんだって思うw

415 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 10:19:55 ID:nwK15Q3Z]
>>375のコードってどうなの?
メタプログラミングとやらに馴染みがないので、
ものすごく、いや、有り得ないほどにウザく感じるんだが。
率直な感想を聞きたいね。
みんな、あんなのを保守していきたいと思う?

416 名前:名前は開発中のものです。 mailto:sage [2010/02/01(月) 10:36:30 ID:hPvV+L+/]
>>415
なにこれ。コード読めません。。。。。何をしてるんでしょうか






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<159KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef