タスクシステムについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
とっくん

タスクシステムについて

#1

投稿記事 by とっくん » 14年前

2度目の投稿です。
シューティングゲームの本ではタスクシステムを利用することが便利と書かれていて自分なりに本を読みあさって『複数の処理を並行してそれを双方向連結リスト(自己参照型構造とでもいうのでしょうか?)で管理すれば効率が良い』みたいな事が説明してありましたので、沢山のキャラ等の処理が並行できれば『弾幕シューティング』をつくる時に処理が重くならず効率が良いんだな・・・と思っていた矢先、『四聖龍神録Plus』に出合い動画を見て衝撃を受けました。
C言語初心者の僕には別にタスクシステムを使わなくてもこれだけの表現できるんだと(プログラムの書き方による所が大きいんでしょうけど・・)感動しました。
 そこで質問なのですが、タスクシステムっていうのは本当に必要なのでしょうか?また必要だとすればどのような時でしょうか?
今の自分のC言語レベルでの質問ではないかもしれませんが、どうしても気になるので宜しくお願いします。

softya

Re:タスクシステムについて

#2

投稿記事 by softya » 14年前

>そこで質問なのですが、タスクシステムっていうのは本当に必要なのでしょうか?また必要だとすればどのような時でしょうか?

スレッド(OSのマルチタスク)と混同されているところがあると思います。
タスクシステムは、擬似並列に過ぎませんので高速化する訳ではありません。
で,なんのために使うかというか状態遷移や実行順序などの管理を楽にするためです。
昔のゲーム機だとリソース(メモリ資源)の節約というメリットもありました。

なので楽にするため使うもので必然でありませんが、理解して使えば便利なものではあります。

とっくん(超初心の者)

Re:タスクシステムについて

#3

投稿記事 by とっくん(超初心の者) » 14年前

> >そこで質問なのですが、タスクシステムっていうのは本当に必要なのでしょうか?また必要だとすればどのような時でしょうか?
>
> スレッド(OSのマルチタスク)と混同されているところがあると思います。
> タスクシステムは、擬似並列に過ぎませんので高速化する訳ではありません。
> で,なんのために使うかというか状態遷移や実行順序などの管理を楽にするためです。
> 昔のゲーム機だとリソース(メモリ資源)の節約というメリットもありました。
>
> なので楽にするため使うもので必然でありませんが、理解して使えば便利なものではあります。
>
>

返信ありがとうございます!
そうなんです、マルチタスクの事かと思ってました。
色々本を読んでみると『メモリー確保と開放(僕はCとC++を混同してるようです)C++のnew,deleteを連続使用によるヒープ領域のフラグメンテーション化を防ぐ為にnew,delete演算子をオーバーロードして独自の領域から固定サイズを確保してメモリを効率的に管理するもの』等書いてありましたがsoftyaさんの言われるように必要と思った時に理解すれば良いのでこれに執着してゲーム作りに躓いてしまうのは本末転倒で先ずは自分流の方法で楽しくゲームを完成させる事ですね。

色々ありがとうございました。 画像

ISLe

Re:タスクシステムについて

#4

投稿記事 by ISLe » 14年前

事前に確保したメモリを使い回す機構はタスクシステムに必須というわけではありません。

タスクシステムは、さまざまなオブジェクトをひとつのリストに登録して、共通のメソッドを呼び出すことでそれぞれのオブジェクトが個々に独自の振る舞いをする仕組みです。

ウインドウズアプリではウインドウを作成すると(勝手に)ウインドウプロシージャが呼び出されるようになりますが、この仕組みはタスクシステムそのものです。
ゲームのタスクシステムには必ず1フレームに1回という一定間隔で発生するイベントがあるわけです。

タスクシステムの話を抜きにしても1フレームに1回呼び出される(副作用の少ない)関数を中心にゲーム内のオブジェクトを構築するようにすると何かと効率の良いプログラムになります。

【編集】誤解を招きそうな強調表現を削除 画像

閉鎖

“C言語何でも質問掲示板” へ戻る