解決済みの質問
RPGのイベントのプログラミングの良い方法がわかりません(C++)
RPGのイベントのプログラミングの良い方法がわかりません(C++)
自分のイベントのプログラムの考えは、
typedef struct{
int type ;//処理の番号
//(ex.歩く・しゃべる・暗くなる)
int link ;//処理に使う具体的な値の割り当てられた番号
//(ex.どこからどこへ移動・何をしゃべるのか・どこまで暗くするのか)
bool syn ;//イベントを同期でうごかすかどうか
//(ex.キャラクター2人が一緒に動く・しゃべりながら歩く)
}ivent;
上記の構造体を幾つも定義し、ファイルのロードによって値を入れ、
割り当てられた処理を実行すれば出来るような気がするのですが、
これでいいのでしょうか?(割り当てられている具体的な値もロード)
それとも、もっと良い考え方があるのでしょうか?
出来れば、switch文等でイベントの処理を書くのではなくファイルのロードで処理するようにしたいです。
-
- 質問日時:
- 2012/2/14 20:58:13
-
- 解決日時:
- 2012/2/19 22:19:20
-
- 回答数:
- 1
-
- お礼:
- 知恵コイン
- 50枚
-
- 閲覧数:
- 70
-
- ソーシャルブックマークへ投稿:
- Yahoo!ブックマークへ投稿
- はてなブックマークへ投稿
- (ソーシャルブックマークとは)
ベストアンサーに選ばれた回答
ファイルからロードするというとゲームプログラム内に小さなスクリプトエンジンを実装するということでしょうか?
そのやり方は当たりです。とても賢いやり方です。自信を持って下さい。
アドバイスとしてはファイルを先に必要な分だけ読み込んでおくとロードが短くなります。でもRPGなら先読みする必要なんて無いと思いますが、アクションゲームなどでは先読みは基本的なことです。
また今回の質問のソースコードですが、イベント処理をスタックしていく方式ですか?
いくつか基本的な部分が気になります。
例えばint linkですが、一つしか値を遅れないのですか?
もし斜めに移動するイベントを発生させる場合など二つ以上の値が必要な処理はどうするのでしょう?
対処法としては、int型ではなく値受け渡し用の構造体を定義してそれを使うことが考えられます。
イベントを同期で動かすかどうかですが、bool型では何と同期するのかが分かりません。同期してはいけないものや、同期して欲しいイベントなどの切り分けが必要です。
なのでイベントそのものに種類を作り、どの種類のイベントなのかを明確にすると良いかと思います。例えば「int eventType」を追加するなど。
もちろんイベント処理系も種類ごとに分けると楽です。
とりあえず、どの程度のイベント定義なのかが分からないので詳しいアドバイスは難しいですが、もしRPGでお馴染みの操作できない時間のイベントや動作中の細々としたイベント全てを担当するならば値の受け渡し方法に問題があります。
int型で受け渡しするのは小さなモジュールのみですので、イベントという大きなくくりで考えるなら構造体がバンバン出てくると考えて下さい。
typedef struct value{
int x;
int y;
int z;
int vector;
int flagType;
......
.....
....
...
.
};
typedef struct{
int type ;
value link ;
bool syn ;
}ivent;
これらは無駄にリソースを使っているように見えますが、画像などのリソース消費量と比べれば微々たるものです。
結局はメモリをあまり使わないことよりも、プログラムとして簡潔に、拡張性を残して書くほうが無理ゲーになり辛いです。
また今回の質問とは関係ないですが、イベント処理系にイベントを追加可能かどうかを判断する部分を作ると無駄なイベントを積むことを回避できます。また、どのイベントが実行可能かを判断させるとバグが少なくなります。
難しいことは色々あると思いますし、面倒なことも色々あると思いますが頑張ってください。応援しています。
- 違反報告
- 編集日時:2012/2/18 15:46:19
- 回答日時:2012/2/18 15:05:48
- この質問・回答は役に立ちましたか?
- 役に立った!
お役立ち度:
1人が役に立つと評価しています。


質問した人からのコメント
今のご時世『RPGツクール』などが存在して、「このまま作っていて需要あるのかな」なんて思っていたのですが、とても勇気づけられました!w
本当に有り難うございました!