メガドライブのゲーム画面が表示されなかった理由
Androidでメガドライブのゲーム画面の代わりにエラーが出る問題を直しました。画面データを一時的に収めるために、アプリが用意していた領域が小さすぎたことが原因でした。
Androidタブレットで機種ごとに動作を確認していたところ、メガドライブの画面が表示されない問題を見つけました。自作のテスト用プログラムを実行すると、ゲーム画面ではなくエラーメッセージが出ました。
アプリはゲーム画面を表示する前に、画面データを一時的に収める領域を用意します。ところがメガドライブの画面サイズを実際より小さく記録していたため、用意する領域も不足していました。画面全体のデータが収まらず、エラーになっていたのです。
iOSは画面データの扱い方が違うため、同じ問題は起きませんでした。また、既存の自動テストには、Androidで画面全体のデータを収められるかを確認する項目がありませんでした。テストはすべて通っていても、実際のタブレットでは画面が出なかったのです。
記録していた画面サイズを直し、必要な領域を確保できるようにしました。同じ間違いを見逃さないよう、メガドライブと同じ仕組みでゲームを動かすほかの機種にも、実際の画面サイズがアプリに記録したサイズを超えていないか確認するテストを追加しました。
修正後、同じタブレットでテスト用プログラムをもう一度実行し、画面の出力も確認しました。ただし、簡単なプログラムでの確認なので、実際のゲームを長時間遊んでも問題がないかは別に確かめる必要があります。
あわせて読みたい開発の話
- 開発の話v0.9.11アルファテスト
広い画面でもDSを遊びやすく
横幅に余裕のある縦画面では、DSの上画面を大きくし、タッチ画面を方向キーとボタンの間に置けるようにしました。2つの画面を離して配置すると、空いているスペースを使えます。
- 開発の話v0.2.0初期開発
複数のゲーム機を1つのアプリに
機種が変わっても同じライブラリでゲームを選び、セーブデータを管理できるよう、複数のエミュレーターコアを組み合わせました。