Nanashi-softプログラマ専用BD-J


◇BD-J-テレビ表示領域の問題-

PS3や BDレコーダー向けにソフトを作成する BD-Jでは、テレビ固有の表示問題があります
オーバースキャンによる周囲の表示欠け問題です

例えば、画面隅にパラメータを表示したとすると、テレビによっては表示されない事になります
このオーバースキャンは何ドットと決まっているわけではないので、ゲームを作る上で非常に厄介なものです

どのくらい周囲をカットすれば良いかのヒントは PS3 Linuxにありました
画面モードの話の一覧中、「Full」と付いていないものがオーバースキャン表示です
このサイズでソフトを作成しておけば、大抵どのテレビでも表示可能なわけです

BD-Jには、5つの画面モードが指定できるようで、一般的に日本で売られているテレビは、720x480、1280x720、1920x1080のどれかになるでしょう
故に、576x384、1124x644、1688x964のモードを用意して、中央に表示すれば良いです

但し、今一般的に売られているハイビジョンテレビは普通オーバースキャンは無いので、そこまで映っている可能性を考えて模様を入れておくなり工夫した方が良いでしょう
ちなみに私の作ったソフトでは、メニューで切り替えられるようにしています

○オーバースキャン表示サンプルソース

public void paint(Graphics g){
	int x1, y1, width, height;

	//uraと言う裏イメージを生成して、そこにゲーム画面を描画済みとする

	Dimension size= getSize();

	if(size.height == 480){
		x1= 32;
		y1= 48;
		width= 576;
		height= 384;
	}
	else if(size.height == 720){
		x1= 78;
		y1= 38;
		width= 1124;
		height= 644;
	}
	else{
		x1= 116;
		y1= 58;
		width= 1688;
		height= 964;
	}

	//画面全体を黒で塗りつぶして余白を綺麗にする
	g.setColor(new Color(0));
	g.fillRect(0, 0, size.width, size.height);
	//拡大・縮小して画面に合わせる
	g.drawImage(ura, x1, y1, width, height, 0, 0, ura.getWidth(this), ura.getHeight(this), this);
}


TOPプログラマ専用BD-J

メイナの実験場~小生意気な感じにしてみました~