« アプリストアレビューの問題点と改善案 | メイン | pee ( Particle Effect Editor)ベータ版 »

2012年12月09日

吉里吉里Java:: Android化で困る部分の考察

    

吉里吉里2をAndroidに移植するにあたって困った部分などについての考察。

・OS固有のGUI周り
メニューやウィンドウスタイル等のGUI周りはプラットフォーム差が大きいし、スクリプトである程度まで再現も出来るので、OS固有の機能を取り入れるのは回避した方が良さげ。
また、(今までの) PC だとマルチウィンドウは問題なく扱えていたが、スマートフォンは全画面で画面切り換えが前提だし、Windows8 の Modern UI などもそう。
Android の画面切り換え ( Activity切り換え ) は、バックに行った Activity のメモリ解放リスクもあるから、OS の画面切り換えを積極的に使うのは避けたいところ。
羽々斬では Activity 切り換えはしない形になっている。
この辺りは普通のスクリプトで実現できるので、OS固有の機能をあえて使う必要性は薄い。
ただ、これらはゲーム用として見た場合なので、ツールなどの用途の場合使い勝手が落ちることに繋がる。
吉里吉里2/KAG3 の場合、KAG3 が所々ダイアログを別ウィンドウで出しているので厳しかったが、ゲームシステム側はそのような固有機能を使わない実装になっているのなら、固有機能があって障害になることは少ないとも考えられる(より多くのプラットフォームで動かしたいのはゲームであると考えられるため)。

・入力デバイス
PC はマウス、スマートフォンはタッチが前提にあるので、その入力方法の違いによって不便が生じる。
今後は PC でもタッチ操作が増えるだろうから、タッチ優先のデザインの方が良いと考えられる。
PC では、ダウン、(ムーブ)、クリック、アップと言うイベント順(クリックは位置間違っているかも)だけど、Android は、ダウン、(ムーブ)、アップでクリックがない。
クリックは、OS 側の判断で入っていると考えられるので、環境差の発生を考えると、システムのイベントは無視してしまった方が良いと思われる。
また、マウスとタッチで大きく違うのは現在位置の有無。要はマウスオーバー系の操作がタッチではないこと。
マウスオーバーでツールチップなどの簡易ヘルプ表示の様な操作系がタッチでは出来ない。
ゲームUIでもこれを前提に作られていると、タッチの時分かりづらくなることが考えられる。
イベントとしてあっても良いと思うが、ゲームUI等のデザインではよく考えた方がいいというか、なくして代替案を考えた方が良いのではないかと考えている。
タッチデバイスの時は完全に別 UI とするのなら気にすることではないが。

・マルチメディア系
音声や動画などはスマートフォンはまだ貧弱。
Android で音声をサンプル単位で何か処理するのは現時点では辛い。
効果音等で無圧縮の音声ファイルを使うのであれば可能だが、Ogg Vorbis 等を基準とするのなら制約が多い。
ただ、スマートフォンの CPU パワーはかなりの勢いで伸びているし、音声周りの API も整備されていっているので、近い内に解決する問題と思える。
そのため、しばらくはスマートフォンで制約があるだろうが、それに合わせて仕様を絞る必要は感じない。
動画も同じようにスマートフォンは貧弱。
ただ、動画は音声に比べるとかなりの CPU パワーが必要なので、PC のパワーに合わせた仕様にするのは悩む部分。
まあ、仕様絞って何かメリットあるかというと特に感じないので、スマートフォン版は制約が多いと言うことでも問題ないかもしれない。

・プラグイン
もっともやっかい。
環境ごとに作らなければならないし、言語が違うとなると作り直さなければならないので大変。
スクリプトがネイティブに近い速度で動作するのならプラグインを使う場面は減少するので、そちら方向への注力は必要と思われる。環境固有の機能を使いたいなどの場合は、別々に作る必要が生じるのでどうしようもない。

・OggVorbis コードブック共有化
Android では、データの開始位置と長さを指定して再生するので、コードブックが共有化されていると困る。
圧縮率向上のためにあると考えられるが、切り捨ててしまってもいいのではないかと考えられるところ。

・リジューム
PC 版では中断/再開はセーブ/ロードを基準にしても問題ないが、スマートフォンなどの場合はリジューム出来ないと辛い。
ただ、エンジンがサポートしていなくても、スクリプトで細かくオートセーブするなどし、リスタート時に自動読込みするかどうか確認する等すればある程度回避可能。
音声や動画の途中再開等厳しい部分もあるので、中断可能な部分を判断しやすいスクリプト側で対処をする方が好ましいかもしれない。


すぐに思い出されるのはこれくらい。
また思い出したり、気付いたことがあれば書く。



投稿者 Takenori : 2012年12月09日 18:04




comments powered by Disqus
Total : Today : Yesterday : なかのひと