カッパでも分かるiOSアプリゲーム開発

カッパがひたすらゲーム制作に関することを書くブログです。Railsに関するTipsもたまにまとめてます。

画面サイズの設定に毎回悩む SKView の size 決め

スポンサードリンク

いろいろな機種がある中で全てに最適なサイズってなんだ……

f:id:InvokeTwoA:20151106031914j:plain

しかも4インチiphone登場の噂もあるし(2016年)

SKView のサイズ決め

基本的に GameViewController で設定したサイズで行くことになる

        self.view = SKView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))

もしくは

        self.view = SKView(size: UIScreen.mainScreen().bounds.size)

どっちでやるのが良いんだろう。

縦横比を維持するか、しないか。
f:id:InvokeTwoA:20151009145746p:plain「aspectFill か aspectFit か 考えることが多すぎます!」

機種もいろいろなサイズがありすぎぃ

参考qiita.com

古い機種(というと失礼だけど)だと320x480
iphone5c あたりだと320x568
iphone6だと 375x667 や 414x736 の巨大サイズがある。

f:id:InvokeTwoA:20151023183618p:plain「ううむ。横幅さえも変わってしまうとは」
f:id:InvokeTwoA:20151009145746p:plain「iphone4 と iphone6 で 1.5 倍くらい高さが違う……」

なるべく多くの機種で遊んでもらいたい

f:id:InvokeTwoA:20151107203453j:plain

ちょこっとサイズが変わるだけで対象外だなんて寂しい。
なので、頑張って複数サイズの機種で遊べるゲーム作りをか投げる。

方法1 最小サイズで作って、それより大きな画面サイズの機種だと開いた箇所は空欄にする

f:id:InvokeTwoA:20151009145746p:plain「作り手的には楽ですね」
f:id:InvokeTwoA:20151023183618p:plain「これだと座標も絶対座標で指定していける。さらに今後どんなサイズの機種が出ても大丈V」
f:id:InvokeTwoA:20151009145746p:plain「でも、折角なら全画面でプレイしたいですよね……」
f:id:InvokeTwoA:20151023183618p:plain「謎の空白があるアプリとかあまり見ないもんね」

方法2 相対座標で頑張る

f:id:InvokeTwoA:20151023183618p:plain「基本的に画面構成はヘッダ、ボディ、フッターの3種類だよね」
f:id:InvokeTwoA:20151009145746p:plain「ですね」
f:id:InvokeTwoA:20151023183618p:plain「ならば、ヘッダとフッターだけ相対座標で書いてしまい、残された部分はボディという大雑把な対応」
f:id:InvokeTwoA:20151009145746p:plain「なるほど。つまり大きなサイズの機種ほど、ボディ部分が大きくなる訳ですね」
f:id:InvokeTwoA:20151023183618p:plain「そうなるね。アクションゲームとかだと、機種によって難易度が変わるような事が起きるかもしれない」

かっぱサーガはこの方法を採用。
ただ、あまりに小さなサイズの機種だと 上からの相対座標の指定と、下からの相対座標の指定で衝突が起こってしまった!!

f:id:InvokeTwoA:20151023183618p:plain「どうせ相対座標でやるならば、全て上からの相対座標にするとか基準を設けた方が良いかもね」
f:id:InvokeTwoA:20151009145746p:plain「フッターはついつい下からの相対座標で書いちゃいたいけど……」

次のアプリではここらちゃんと実装したい。
反省は活かされるだろうか。