個人的なメモ

Tomohiro Suzuki @hiro128_777 のブログです。Microsoft MVP for Developer Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

Cocos Sharp 入門 (3) DesignResolution について

はじめに

こんにちは、@hiro128_777です。
今回は、Cocos Sharp でゲームを開発する上で大事な概念であるDesignResolutionについてご説明します。

モバイルデバイスでのゲームの解像度の問題

モバイルデバイスで2Dゲームを開発する場合、問題になるのがゲームの解像度です。
PCやゲーム専用機の場合、解像度は機種によって特定の解像度だけを考慮すれば問題ありませんでしたが、モバイルデバイスでのゲーム開発の場合、多種多様の解像度が違うデバイス上で同じようにゲーム画面を表示する必要があります。

でも安心してください! Cocos Sharp には、DesignResolutionと呼ばれる、デバイスのディスプレイ上の物理的なピクセル数に関係なく、ゲーム内のオブジェクトのピクセルサイズを標準化するための便利な方法が準備されています。

DesignResolution

DesignResolutionで設定するものは以下の二つです。

DesignResolution …ゲーム内の仮想解像度。縦横の仮想ピクセル数を指定します。
 ※全てのゲームの処理はこのDesignResolutionを基準にして実行されます。

ResolutionPolicy …ゲームウィンドウを希望の解像度に調整する方法を指定します。

具体的なコードとしては以下のようになります。

using System;
using System.Collections.Generic;
using CocosSharp;
using CocosDenshion;

namespace CocosSharpSample.Core
{
	public static class GameDelegate
	{
		public static void LoadGame(object sender, EventArgs e)
		{
			var gameView = sender as CCGameView;

			// 省略

			// デザイン解像度設定
			gameView.DesignResolution = new CCSizeI(224, 380);
			gameView.ResolutionPolicy = CCViewResolutionPolicy.ShowAll;

			// 省略

		}
	}
}

とっても、簡単ですね!

CCViewResolutionPolicy

CCViewResolutionPolicyはゲームウィンドウを希望の解像度に調整する方法を指定します。

CCViewResolutionPolicy は以下の6つが用意されていますが、実際に使用するのはShowAllのみです。それ以外は画面が歪んだり切れたりするので実際に使うことはありません。

  • ShowAll … アスペクト比を維持した状態で、要求された解像度全体をデバイスの画面に最大になるように表示します。デバイスのアスペクト比とデザイン解像度のアスペクト比が一致しない場合は、上下、または左右に黒い帯ができます。
  • ExactFit … アスペクト比を維持せず、要求された解像度全体をデバイスの画面全体に表示します。デバイスのアスペクト比とデザイン解像度のアスペクト比が一致しない場合は、ゲーム画面がゆがみます。
  • FixedWidth … アスペクト比を維持した状態で、要求された幅全体を表示します。デバイスのアスペクト比とデザイン解像度のアスペクト比が一致しない場合は、画面の上部が切れるか、画面の上部に黒い帯が発生します。
  • FixedHeight … アスペクト比を維持した状態で、要求された高さ全体を表示ます。デバイスのアスペクト比とデザイン解像度のアスペクト比が一致しない場合は、画面の右部が切れるか、画面の右に黒い帯が発生します。
  • NoBorder … アスペクト比を維持したまま高さ全体または幅全体を表示します。デバイスのアスペクト比とデザイン解像度のアスペクト比が一致しない場合は、画面の上下または左右が切れます。
  • Custom-ゲーム画面をデバイスに表示する際の高さおよび幅の比率を自由に設定できます。

まとめ

DesignResolutionのおかげで、Cocos Sharp では、デバイスごとの解像度の差異をまったく気にすることなくゲーム開発ができます。

それでは、ぜひ皆様も Cocos Sharp でゲーム開発にチャレンジしてみてください!