10/01/31 20:38:10 CeH4M0fL
> 古典的タスクシステム≠FSM=何かの自己流C++タスクシステム
> という意味なのかな?
そうです。
> Cでは古典タスクシステムしか組めないとなる理由=Cがチューリング完全でないから?
Cは実行時のプログラミングに関してはチューング完全です。
しかし、コンパイル時ではチューリング完全ではありません。
型に順序を与えたりソートといった動作をするにはチューリング完全である必要があります。
コンパイル時に分かっている情報はその時に処理した方が実行時に処理に負担が掛からず利点があります。
具体的な例を挙げればリストに重複した種類のタスクを単一しか存在できないものとして入れてしまい
それをエラーとして扱いたい場合があります。
assertマクロを使えばその様な事態はとりあえず実行時にエラーが出る事によって検出できますが
設置したそのステートメントを実行するまで気付きませんし、動的にタスクに種類の情報を与える方法では
実行前に意図したものが原因か、あるいはロジックの不正でデータが書き換わったのか区別できません。
回避するにはそもそもコンパイルできない様にすればいいのですが、型の区別、重複検索はチューリング完全でなえれば実装できません。
他にも人間のミスを予め阻止する予防線を作る必要があります。(読み取り専用のメモリに対する不正な型変換など)
> つまりタスクシステムというより並列処理の話なのかな?
OSなどに並列の管理を依存するとゲームプログラム自体が同じ状態でも
ゲームが干渉できない部分が原因でタスクの前後関係が狂い、再現性がなくなってしまうのでは?といった
懸念がありました。
並列処理に関しては僕はまだ勉強不足な様です。
再現性があり予測が可能な並列動作やyieldの方法を探してきます。
388:名前は開発中のものです。
10/01/31 20:38:40 030VeqOo
>>385
前に書いたんだけどなぁ
リンクとってないだろうなぁ
質問あるたびに上げるのも面倒臭いし
ただ、見て理解できるだろうか?
初心者って設計がどういうものか全くわかってないから
void*やグローバルでのアクセスを単純に技だと思っちゃうでしょ?
そういう勘違いから卒業してないと意味ないと思うんだよね
俺も駆け出しのころそうだったし
インクルードも神ヘッダ(総合ヘッダ)作って全部詰め込んでたよ
でもそれは一番やっちゃいけないことなんだよね
もちろん方針として割り切ってるならそれはアリ
ただ、あるところではカプセル化してあるところではグローバル使いまくりとか
するぐらいだったら設計なんて凝らないほうが吉
389:名前は開発中のものです。
10/01/31 21:19:15 QrJboi/Q
>>387
チューリング完全というよりメタプログラミングのことを言ってるみたいだね。
古典的タスクシステム≠メタプログラミング=君のタスクシステム
C++はテンプレートメタプログラミングができるから君のタスクシステムが実装できて
Cはそれが無いから君のタスクシステムは実装できない。
ゆえにCは古典的タスクシステムしか実装できない、と・・・
集合論的に穴がありそうで突っ込みたくなるけど、まぁそこはいいか。
>ゲームが干渉できない部分が原因でタスクの前後関係が狂い、再現性がなくなってしまうのでは?といった
>懸念がありました。
やっぱり並列プログラミングの話題っぽいね。
ゲーム系でいえばカプコンの MT Framework あたりならネットでそこそこ情報集められて参考になりそう。
390:名前は開発中のものです。
10/01/31 22:28:33 6qSVPUGq
>>378
弾が地形に当たったときの処理として
1. 弾が、地形との衝突を判定して自分で消滅する
2. 地形が、弾との衝突を判定して弾を消滅させる
3. お母さんが、弾と地形との衝突を判定して弾を消滅させる
のうちどれを使うか決めようぜ! ってこと?
3の場合、お母さんが概念的にグローバルな存在になるけど
391:名前は開発中のものです。
10/01/31 23:38:16 PJ5c0R9P
>>385
実際に使ってるのをうpして社内の人間にバレたら給料に影響する
下手すりゃクビ。そこまでして説明したく無い
392:名前は開発中のものです。
10/02/01 00:40:11 1MBMZKlv
まぁ自分で書いたコードでも仕事で使ったものなら
会社の知的財産だからねぇ
会社によってはCEDECとか論文とかならいいよ、というのはあるだろうが
匿名掲示板にコードだしていいよという会社はさすがにないだろうね・・・
まぁ今さらタスクシステムをCEDECなりで発表する会社もないとは思うが。
393:名前は開発中のものです。
10/02/01 00:51:51 UISeaDQt
>>390
ならないよね?
まず、ならないってことに同意してもらわないとその先へ進めないよ
394:名前は開発中のものです。
10/02/01 00:52:59 hPvV+L+/
じゃあ、ここで指摘してくれる人は現場の意見ってことでOK?
395:名前は開発中のものです。
10/02/01 01:00:54 UISeaDQt
>>394
そんなの誰も証明できないよね?
頭悪いなら2chやめたほうがいいんじゃない?
396:名前は開発中のものです。
10/02/01 01:20:11 1MBMZKlv
>>393
なんだか極端にみえるんだけど・・・
C言語の標準出力とかヒープとかはどう考えてるんだろう。
stdoutとかmallocやnewで取るヒープとかはグローバル扱いからは除外?
ANSIで規定されてるからOKとかかな?
397:名前は開発中のものです。
10/02/01 01:24:10 ozNWjQIi
>>393
まじで?どうやってお母さんとお話しするの?お手紙?
398:名前は開発中のものです。
10/02/01 01:26:24 hPvV+L+/
>>397
全タスクはお母さんを知ってるとか?
399:名前は開発中のものです。
10/02/01 01:28:32 UISeaDQt
>>397
ちょっと上のレスすら読まないの?
シーンに持たせるって書いたじゃん
馬鹿にレスつけたくないな
話わからないなら入ってくるなっての
400:名前は開発中のものです。
10/02/01 01:33:39 s6RwCqE5
散々アンチをいじり続けて遊んでいた俺が言うのもなんだが
顔も素性も知らん人間にいきなり「タスクシステム作ってテー」「古典タスクシステムでー」
とか言われてもそれは何の理解の補助にも説明の補足にもならんのよな
顔も素性も知らん人間同士ではエターナルフォースブリザードシステムと等価だ
401:名前は開発中のものです。
10/02/01 01:38:54 s6RwCqE5
基本的には、喧嘩の調停はお母さんに任せましょう、で丸く収まる
402:名前は開発中のものです。
10/02/01 01:43:43 ozNWjQIi
>>398
そのとおり。
>>399
シーンタスクが持つ設計ってダメじゃね? シーンが切り替わるとき
面クリアしたりワープしたりするときに弾はどうなるの?消えるの?
ワープアニメ中に回復アイテム消えたら子供泣くよ?
403:名前は開発中のものです。
10/02/01 01:51:18 s6RwCqE5
泣くよね
404:名前は開発中のものです。
10/02/01 01:52:47 BehLiNNh
ゲームタスクが持てばいいのかな
405:名前は開発中のものです。
10/02/01 01:57:45 1MBMZKlv
個人的には今現在のマップ情報の各種問い合わせぐらいはグローバル関数なり経由しても許容範囲。
特定のシーンでしか使わないイベント情報とか、そーいうのがグローバルなのは許せんけど・・・
そのゲームの固有のシステム、として一貫性があればグローバルでも悪い設計とは思わん。
特定のゲーム用に作ったゲームオブジェのタスクを別のゲームに使うことなんて・・・
現実問題、続編作るときぐらいしかありえないし。
406:名前は開発中のものです。
10/02/01 02:02:07 UISeaDQt
>>402
は?お前の中でシーンがどう定義されてるのか知らないけど
シーンの状態の変化レベルの内容で消えられても困る
ワープだってシーンの1状態でしかないだろ
そしたらワープしても弾消えないよな
そもそもお前、会話がおかしい
思い込みが専攻してて他人の話をまともに聞いてない証拠だろ
俺はこの場では弾と地形が存在するクラスをシーンって話の都合上定義しただけで
このときはどうする?このときはどうする?って逐一状態を定義したわけではない
けどお前はかってに自分の中にあるシーンを俺が言ったシーンだと決め付けて
まず、俺にかってに否定意見を押し付けてるけど
正直それはお前が勝手に定義したシーンであって
俺がいったのは弾と地形を包括するもの程度の意味しかもってないんだけど?
それに実際ゲーム作るとなったらシーンは単体再生だけで済むようなゲーム少ないし
ここでその詳しい仕組みまでもってくることないだろ?
話に関係ないから省いたのに無駄なことするよね君
しかも君の指摘した内容いまの話題に関係あるかね?会社でも君みたいな
話題と全然関係ないこと突然言い出す子がいるけどもっと言動考えてしたらどうなの?小学生じゃないんでしょ?
407:名前は開発中のものです。
10/02/01 02:07:22 ozNWjQIi
>>406
つまり「シーン」がお母さんね。了解しました。
それなら何の矛盾も齟齬も無いので大丈夫。
408:名前は開発中のものです。
10/02/01 02:16:37 UISeaDQt
>>407
ほら、また、勝手に決めた
君のお母さんってのはグローバルじゃないの?
違うじゃない?なんで同じっていうの?
違うって
なんでそうやって勝手に思い込みで話進めるの?
409:名前は開発中のものです。
10/02/01 02:33:20 ozNWjQIi
>>408
概念的にグローバルであればよくて、弾や地形がそれぞれ一意の
お母さんポインタを持ってるってことで、実装の話ではないですよ。
弾や地形のお母さんにもお母さんがいたって不思議じゃないし。
410:名前は開発中のものです。
10/02/01 02:34:28 ozNWjQIi
あ、説明が足りないかも。ま、いっか
411:名前は開発中のものです。
10/02/01 02:35:45 s6RwCqE5
グローバルな存在 ≠ グローバル名前空間
つーことなんでねーの。たぶん
国境を越えて存在するもの。長命インスタンス。
例えばハードウェアリソースの制御・分配を行う低層の色々。
ブート→電源断の間、ずっと生き続ける実行待ちキュー。
412:名前は開発中のものです。
10/02/01 02:40:14 s6RwCqE5
かぶったな。
長命インスタンス → 相対的に長命な存在
413:名前は開発中のものです。
10/02/01 06:35:15 UISeaDQt
>>409
はぁ?逃げるなよ
自分で決めた言葉もう一度定義しなおしたいなら
せめて前にした定義をどう変更するのか明確にしろよ
勝手に会話の中で都合いいように変化させてんじゃねーよ
しかも違うし
違うだろ?
>弾や地形のお母さんにもお母さんがいたって不思議じゃないし。
なんだよ
グローバルなんだろ?
グローバルのグローバルってなんだよ
全然わけわかんねんだよ!
お前技術者やめろよ
414:名前は開発中のものです。
10/02/01 07:09:25 UISeaDQt
仮に彼のいうことを汲んでやったとしても
弾クラスや地形クラスでグローバル的にアクセスできるもんなんてないじゃんw
いつまで自分の世界で話してるんだって思うw
415:名前は開発中のものです。
10/02/01 10:19:55 nwK15Q3Z
>>375のコードってどうなの?
メタプログラミングとやらに馴染みがないので、
ものすごく、いや、有り得ないほどにウザく感じるんだが。
率直な感想を聞きたいね。
みんな、あんなのを保守していきたいと思う?
416:名前は開発中のものです。
10/02/01 10:36:30 hPvV+L+/
>>415
なにこれ。コード読めません。。。。。何をしてるんでしょうか