- 387 名前:名前は開発中のものです。 mailto:sage [2010/01/31(日) 20:38:10 ID:CeH4M0fL]
- > 古典的タスクシステム≠FSM=何かの自己流C++タスクシステム
> という意味なのかな? そうです。 > Cでは古典タスクシステムしか組めないとなる理由=Cがチューリング完全でないから? Cは実行時のプログラミングに関してはチューング完全です。 しかし、コンパイル時ではチューリング完全ではありません。 型に順序を与えたりソートといった動作をするにはチューリング完全である必要があります。 コンパイル時に分かっている情報はその時に処理した方が実行時に処理に負担が掛からず利点があります。 具体的な例を挙げればリストに重複した種類のタスクを単一しか存在できないものとして入れてしまい それをエラーとして扱いたい場合があります。 assertマクロを使えばその様な事態はとりあえず実行時にエラーが出る事によって検出できますが 設置したそのステートメントを実行するまで気付きませんし、動的にタスクに種類の情報を与える方法では 実行前に意図したものが原因か、あるいはロジックの不正でデータが書き換わったのか区別できません。 回避するにはそもそもコンパイルできない様にすればいいのですが、型の区別、重複検索はチューリング完全でなえれば実装できません。 他にも人間のミスを予め阻止する予防線を作る必要があります。(読み取り専用のメモリに対する不正な型変換など) > つまりタスクシステムというより並列処理の話なのかな? OSなどに並列の管理を依存するとゲームプログラム自体が同じ状態でも ゲームが干渉できない部分が原因でタスクの前後関係が狂い、再現性がなくなってしまうのでは?といった 懸念がありました。 並列処理に関しては僕はまだ勉強不足な様です。 再現性があり予測が可能な並列動作やyieldの方法を探してきます。
|

|