ページ 11

ゲームの基本構成について

Posted: 2012年3月25日(日) 10:21
by 権田五秒山
ゲームプログラミングの館でいろいろ勉強させていただきました。
しかし、ゲームの基本構成についてわからないところがあるので質問させていただきます。

ゲームの情報(infoとする)を格納する変数を用意し、メインループでswitch文を用い、それに応じて画面遷移するというロジックを組んだのですがこれは非効率的でしょうか?

コード:

switch( info ){

	case start : start();

	case field : field();

	case battle : battle();

	case shop : shop();

	case end : end();

}
このような感じです。

Re: ゲームの基本構成について

Posted: 2012年3月25日(日) 10:33
by h2so5
素直な方法だと思います。
権田五秒山さんが効率の悪さを感ずる要素がどこかにあるのでしょうか?

あと、省略しているだけなのかもしれませんがこのswitch文はbreakがないので、期待通りに動きません。

Re: ゲームの基本構成について

Posted: 2012年3月25日(日) 11:35
by softya(ソフト屋)
RPGっぽい画面遷移ですがたぶんこれだけでは済まないと思いますね。
ただ、非効率的かというと分かりやすいほうが良いので悪い選択ではないと思います。

効率と状態遷移については最近話題になっていたのでこちらもご覧下さい。
「メインループの考え方でのゲームの設計 (2) • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=10388

Re: ゲームの基本構成について

Posted: 2012年3月25日(日) 11:52
by 権田五秒山
皆さん、返信ありがとうございました。
この方法でやってみようと思います。

重ねて質問したいのですが、

シナリオ(?)を複数用意して1つめのシナリオが終わったら次のシナリオ→次のシナリオが終わったらまた次のシナリオ→……

という感じでやりたいのですが、マップ配列やその他云々を書き換えなければいけないので困っています。
mainでシナリオ毎のファイルをincludeして例えば先の例で行けばfield()の部分で変数を判定してやると言った感じを思いついたのですがソースがごちゃごちゃになってしまいます。

コード:

#include "scene1.h"
#include "scene2.h"

int a;

void field(){
	switch(a){

		case 1:
			scene1_field();
			break;
		case 2:
			scene2_field();
			break;
	
	}
}
何かうまい方法はないでしょうか。

Re: ゲームの基本構成について

Posted: 2012年3月25日(日) 12:11
by softya(ソフト屋)
どういう事をやろうとしているのかシナリオとマップの関係とかイマイチ分かりませんが、ある程度以上の規模のものを組むには情報はファイル化して必要になるたびに読む方が効率化出来ると思います。
少なくともマップとシナリオはファイル化・スクリプト化を考えられたほうが良いと思います。

スクリプトのファイル化に付いては行なっていませんが、私の書いたRPG作成講座です。参考にしてみて下さい。
「マイ 日記 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/blog.php?u=114&sd=a&c=2