初めまして。初投稿になります。
マリオカート64やスターフォックス64等のような画面4分割方式での4人対戦型ゲームを作ろうと思っているのですが、画面分割のうまい方法が分かりません。単純に一画面640×480を4分割することも考えたのですが、その場合、画像の表示やスクロールなどの処理が煩雑になってしまい、効率が良くない気がします。もし、座標系を4画面分別々に独立に管理する方法があるのならば、教えていただきたいと思い、質問しました。また、ご存知の方がいましたら、実際にこのような4画面分割型の対戦ゲームを製作する場合、一般にはどのように4画面を管理しているのかを教えていただけると嬉しいです。
なお、私の開発環境は次の通りです。
・Microsoft社製 VisualStudio2005ExpressEdition
・Windows Platform SDK
・Microsoft DirectX SDK
・DXライブラリ VisualC++用(Ver2.23)
C/C++しての一般的な知識はあります。どうぞ宜しくお願いします。
4人対戦型ゲームにおける画面4分割の方法
-
管理人
Re:4人対戦型ゲームにおける画面4分割の方法
うまく関数化してやれば、複雑になることも無いと思います。
例えば
typedef struct{
int x,y;
}ch_t;
ch_t ch[4];
void draw_line(int x, int y){
x,yから45度、20の距離線を引く;
}
main(){
//中略
draw_line(ch[0].x, ch[0].y);
draw_line(ch[1].x, ch[1].y);
draw_line(ch[2].x, ch[2].y);
draw_line(ch[3].x, ch[3].y);
}
上記は単なる例なので、このようには描かないと思いますが、
4つのキャラの情報をキレイに構造体に収めてやり、関数に値を渡して計算する事で、
キャラが沢山になることを苦に思わずに作れると思います。
関数を作るとき、なるべく「汎用的」な関数になるように心がける事が近道になると思います。
キャラのもつ座標の情報は全て同じ種類の座標とし、描画する時にだけ、位置をわけてやればいいんです。
キャラ1もキャラ2も(100,50)という座標を持っていたとしても、描画する時に4つにわけてやれば、重なる事もありません。
描画可能領域は変更可能ですので
http://homepage2.nifty.com/natupaji/DxL ... .html#R4N3
この関数を使うとうまく分割して描画出来ます。
頑張ってください。