見出し画像

LemoNovel Air Mobile アプリの64bit化について

いや……Adobe Air事態がなかなか対応してなくて、結局64bitの対応の締め切りが今年の8月、つまり2020年8月まで伸ばされました。

めんどくさいから、ほったらかしました。え。めんどくさいしかありません。昨年ちょっとだけ触ってみたんですけど、とにかくANEが全部動かなくなりました。つまりLemonovel公式ANE(OBBファイルをDLさせるためのANE)や今まで使ったアプリ内課金ANEが全部無効。しかも、調べたら64bit対応のANEが全部有料です。ちょっと高い。

めんどくさいので、ずっとほったらかして、気づいたら締め切りまであと2~3か月ほど。グーグルストアにあるアプリは10タイトル弱。さてどうしようと。とにかく、OBB(追加データ)対応のANE(プラグイン)がちょっと安いので買ってみました。

OBBファイルのDLと展開

distriqtから15USDでANEプラグインを買って、サンプルも簡単だったので、すぐに導入できました。ただ、ProjectEventがフラッシュのProjectEventとダブってしまってエラーが出たのでこれを修正しないと。で、Unzipのところ、どうやら展開のプロセスが把握できません。いや、展開はできますが、プログラスバーが作れません。展開の間は画面がフリーズしているような感じです。なので、展開だけはcoltwareのairxzipを使いました。こちらはaneじゃなくてswcなので、古くても動きます。ちなみにデフォルトのダウンロード画面がないので、簡単にフラッシュで作っちゃいました。

あ、あと意外なのはhttp://ns.adobe.com/air/application/24.0 から?ユーザーの許可がないとOBBのDLと展開ができないですね。これに驚きました💦一応別ゲームで、OBBじゃなくてアマゾンS3から追加データのZIPフォルダをDLさせたのもありますが、なぜかこれは許可しますか?のメッセージ出さなくても動きます(謎)。

ゲーム実行してみたら、思わぬ悪夢が発生

いや、展開したら、ゲームの構造が今までと変わらないし? 問題なくない? と思ってゲーム実行してみました。じーーーん。動きません。なぜでしょう?

色々調べてみました。とにかく、今までのLemonovelではインストールフォルダにあるファイルのパスは./で始まって、そうでないファイルはすぐにファイル名で始まりましたが、公式OBBのANEが使えないせいか、まったく無視されて、Android Expansionをenabled=trueにしてもenabled=falseにしても、同じく./とすぐにファイル名のパスの両方が、インストールフォルダの中にあるファイルとなりました。これは困った。アンドロイドの100MB制限で、OBBがないとまずい。以前OBBの使い方がわからないときにアマゾンS3使いましたが、フォーマットを変えるのがめんどい!しかもANEも買ったし、何とかならないのかな?

……なんと、アマゾンS3を使ったほうのゲームは問題なく動く(v5.0)。普通にファイルパスを #Path .userDir+/Android/data/(パッケージ名)/files/で動く……でも!!!新しいゲーム(lemonovel v5.33)で同じ方法使おうとしたら全くダメでした! ファイルが見つからないと出ました! lemonovelの更新履歴見ると、なんか5.10にOBB関連の更新があるので、これが原因!と思ったんですが、確か、以前製作者がソースコードなくしたとかで更新できないと伺った気がします。さて、どうしよ。

涙! 涙! そして希望が見えた!

ええ。マジで原因がバージョン違いだとわかるまでの道のりが大変でした!!! もしかして、古い公式ANE入れてなかったせい? もしかして、まずいフォルダに展開させたせい? もう、本当にいろいろ悩みました。2日間あれこれ実験してました。そして原因がわかっていても……

『エンジンの更新が無理。では、どうやって直せる』

という壁にぶつかりました……

とりあえず、as3のloaderについてちょっと勉強しようと思いました。試しにフラッシュでコードを打って、画像だそうとしました。でも、ファイル見つからないというエラーが出ました。

なぜだ……私はこんなにも運が悪いのか……元がグーグルが定めた64bit対応。対応しなくても端末で動いてるのに、なぜか対応させないとストアから削除される。絶望の挙句、ツイッターで叫んだ! 叫びまくった! そして!

ググったらstackoverflowにて、loaderは基本URLの参照なのでPath.●●.nativepathじゃなくてPath.●●.urlにしてという書き込みがあった。

お!?動いた!?でもurlって何?端末内のファイルだとどのようなurlになる?と思ってTraceしてみたら、パスの始まりにfile://ついてますよね。。。あれ?もしかして????

以前外部にある背景を表示させるためのパスは#Path.userDir+/Android/data/(パッケージ名)/files/●●.jpgでしたが、試しにfile://+#Path.userDir+/Android/data/(パッケージ名)/files/●●.jpgにしよう!
と思ったら、出た!!!! 出たぞ!!!! 動いたぞ!!!!

もしかして、笑顔はまだ早すぎる?

一応これで希望が見えたのですが、考えてみるとパスが違うと、「すでに見る処理」が全部初期化されました。つまりスキップ定義に大事な、すでに読んだことのあるラベルや、すでに見たスチルや聞いたBGM。
下手すれば、セーブロードも、スクリプトのパスが変わるので、今あるセーブデータは全部だめになるかもしれません。
一応、前のパスは、64bitだと、インストールフォルダ内になるので、そういうチェックの必要なファイルだけをインストールフォルダに入れるという手もあるのですが……

めんどくさいので、後回しにします。とりあえずゲームして休憩します!🌟

この記事が気に入ったらサポートをしてみませんか?