N-EMU · レトロゲームエミュレーターv1.10.1
開発の話投稿日 thorv1.1.0

折りたたみ端末を携帯ゲーム機のように開く

開いた画面を上下に分け、上にゲーム画面、下に操作ボタンを配置しました。ニンテンドーDSのタッチ画面はボタンの間に置き、開いた状態のボタン位置は別に保存します。

クローズドベータテスト

折りたたみ端末を開くと、一般的なスマートフォンとは画面比率が大きく変わります。従来のN-EMUはウィンドウが横長か縦長かだけで配置を選んでいました。ほぼ正方形の内側画面にはどちらも合わないため、開いた状態専用の配置を追加しました。

配置はニンテンドーDSを参考にしました。上にゲーム画面、下に操作ボタンを置く構成です。ヒンジの向きにかかわらず上下に分け、半分開いた状態では折り目の位置に合わせて境界を調整します。

下半分のボタンは実機の配置に従いました。LとRは折り目のすぐ下、十字キーとボタンは中央の高さ、SelectとStartは一番下です。ニンテンドーDSは上画面が上半分を埋め、下半分の中央に4:3のタッチ画面が入ります。横向きに開くと下半分が低くなるため、タッチ画面は帯の高さに合わせて小さくしますが、2つの画面を上にまとめて置いた場合より小さくはなりません。

開いた状態のボタン位置は通常の縦向き・横向きとは別に保存します。既存の保存形式に専用の項目を追加し、以前のバージョンでも縦向き・横向きの配置を読めるようにしました。ただし、以前のバージョンでは開いた状態の配置を読めず、再保存するとボタン配置の情報が失われる場合があります。

折り目の位置と状態にはOSの情報を使います。AndroidではJetpack WindowManager、iOS 27.1 SDKでビルドしたアプリではiOSの折りたたみ情報を読み取ります。iOSで情報を取得できない場合は、ウィンドウのサイズクラスで開いた状態を判定します。配置計算は自動テストで、画面はiOSシミュレータとAndroidエミュレータで確認しました。Androidではテスト用の折りたたみ情報を使っており、実機検証はまだ残っています。

開閉してもゲームは止まりません。押していたボタンは離されます。画面が切り替わる瞬間、指の下に何があるか分からないからです。

  1. 開発の話v1.1.1クローズドベータテスト

    本のように開く端末でニンテンドーDSの画面を広げた理由

    折りたたみ端末を本のように持つと、以前の配置ではニンテンドーDSのタッチ画面が小さくなっていました。2画面を中央に、操作ボタンを両側に移して、タッチできる領域を広げました。

  2. 開発の話v1.0.8クローズドベータテスト

    コントローラー接続時にゲーム表示を広げた理由

    タッチボタンが消えても、ゲーム表示は元の大きさのままでした。空いた領域を活用し、DSの2画面配置も操作方法に合わせて切り替えるようにしました。

  3. 開発の話v0.2.0初期開発

    複数のゲーム機を1つのアプリに

    機種が変わっても同じライブラリでゲームを選び、セーブデータを管理できるよう、複数のエミュレーターコアを組み合わせました。

一覧に戻る対応機種と機能