2020年 5月 5日
5月 3日
続き。
まず double内の配列変数の番号に足し算してる箇所の修正。
こんな感じ。
全部で 20数箇所くらいあった。
修正して PCで実行テスト、動いてはいるがどんなバグが新たに発生してるやら・・・。
それではビルドして転送してスマホで実行。
動くこいつ動くぞ、て感じでした、はあ。
でもまだ何かしようとすると落ちます。
unknown binary event type 105
ググっても分からないのでソースで対処するしかない。
一番問題ありそうな戦闘は動いてる。
プレイヤー変更も機能してる。
属領一覧も見れる。
オプション画面も OK。
これまた問題ありそうなセーブロードも機能してる。
その他の政府、ユニット一覧、アイテム一覧と、国のインフォメーション画面で落ちる。
一つ々潰して行くしかない。
まず PCでの起動でも落ちるかどうか確かめる、色々いじったからなあ。
PCでは問題なく動いてるので、やはり ANDROIDとの仕様の違いらしい。
5月 4日
同じように少しずつ開放しながらテストしていくと問題の箇所が分かった。
str(ud(ug+26))
doubleだけじゃなくて strでもカッコ内で配列変数の番号を計算すると ANDROIDでは落ちるという事だ。
という事は ANDROIDでは関数カッコ内での配列変数の番号計算は全部 NGの可能性がある。
問題の箇所を修正して
表示された。
早速全ソース内の STRを調査する、めんどくさいなあ。
まあ 10数箇所くらいだった。
ビルドして転送してテスト。
今度は落ちなくなった。
これにて実機テストは一応成功「はあ、なんとかなった」という感想。
テストプレイをしていけばバグはまだあると思うけど、それはともかく次の問題は画像と音声のファイル上限。
まず画像の読み込み枚数上限はスマホの機種依存らしいので N05Dだと何枚なのか探ってみる。
エフェクトの画像が 107枚あるので、これだけを取り込んで表示するテストをする。
枚数的には 107枚、4枚番号使ってないから 103枚表示されます。
ではエフェクト以外の画像も全部読み込んでやってましょう。
エフェクト以外の表示ソースをつけて
これだと一切なにも表示されずに真っ黒になる。
mes命令の表示さえされないのはなぜ?
それではとエフェクトの読み込みをしないようにする。
これだと読み込み枚数は 70枚。
まあ表示されてる内容はともかく 69番まで表示されるので、これはソース的に最大 69だったので読み込みに問題は無い。
今日はここまで。
5月 5日
N05Dの画像読み込みテストを続ける。
まず 128個読み込みと予想して画像を読み込んでみる。
初期の画像読み込みが 70枚だからエフェクトを 57枚読み込みにしてみる。
欠番があるので 60番まで。
初期の 70番までOK
128番目と思われるエフェクトの 60番目もOK
では 129番目だと思われるエフェクトの 61番を開放してみる。
うーん 128枚じゃないのか。
それじゃ +10枚くらい開放してみるか。
表示されるのでさらに 10枚。
表示されなくなりました、ここまでのどこかが上限のようです。
メイン画面である 0番がクラッシュするようなので、何も表示されなくなります。
エフェクトの 78番目まで OKで、79番から NGでした、3枚欠番で 75枚です。
70枚 + 75枚 + 0メイン 1枚とすると 146枚ですね、これまた半端な数だなあ。
メモリの関係なのか確かめるために初期の画像ファイルで大きいものを 2つコメントアウトして、エフェクトのを 3枚追加してみる。
表示されなくなったので画像は枚数上限で間違いないようです。
さて、これどうしたものか N05D用に 146枚で調整しても機種それぞれで違うんじゃなあ。
とりあえず SO-02Kの方で上限が無いか確認してみる。
全部表示されました。
ANDROIDのバージョンは N05Dが 4.0.4で、SO-02Kが 9 です。
次は音声ですけど、音声ファイルは読み込み上限が 30枚という情報がありましたので、これは前回やったのと同じ数なので確認済みです。
途中欠番があるので 36で 30枚です。
これにて、いくつかのエフェクト画像と SE(効果音)に制限はありますが N05Dでもゲームができるようになりました。
やれやれ。
以上で実機テストは終了です。
今度は画像ファイルと音声ファイルの上限に、どう合わせるかの改造ですね。
オマケ情報。
ビルド時に #deffuncの総数で落ちる現象を少し検証してみました。
まず現在の状態で #deffuncが後いくつでビルドエラーになるのか調べます。
後 34個まではOK、35個から NDKビルドエラーです。
ソース内の総数は 250個程で、それに足した数です。
しかしこれ前の調整の時より許容数がかなり増えてる感じがするんだけど・・・・。
前回の調整の時、ここに書いた数は 33個までOKで 34個からエラーだった。
しかしその数は strategy.hspを全部封印した時の数だし、そもそも strategy.hsp内の #deffuncの数がたしか34個くらいだった。
???
もう少し #deffuncの位置とかネストとか別の理由があるのかもしれない。
この状態で読み出しをしてみます。
これは問題無し。
数を増やしてみます。
問題無し。
こんどは *ラベルを足してみます。
これも問題無し。
数を増やしてみます。
これも問題無し。
*ラベルの次に #deffuncを足してみます。
なぜかこれは通ります、なぜ?
続けてみる。
これはエラー。
それではと増やしてみる。
これもエラー。
という事でした。
理由も理屈も自分にはさっぱり分かりませんけど、とりあえず #deffuncの総数で NDKビルドエラーになる感じです。
deffuncの上限について参考になります。
画像上限はAndroid4の機種では数枚かと思っていましたが、100枚以上は平気なんですね。手間ですがエフェクト等をまとめたら数十枚にはなるのではないでしょうか。
あとは音源も同じですが、同時読み込み数に制限があるので、戦闘やマップなどでcelload, mmloadするファイルを区別して同じIDを使い回せばファイルを減らさずに対応出来る気もします。
MZKさんの情報を元に画像と音声の取り回しの構造を練ってます、情報ありがとうございました。
プログラムはこういう時パズルみたいで面白いです。
画像についてはおっしゃる通りですけど、とりあえず同じ大きさの画像を 1枚にまとめる構想をしてますけど何十枚か削減できるでしょう。
しかしいずれにせよおっしゃる通り、機種によっては限界があるでしょうね。
それと本記事にもちらほらありますけど画像が真っ白な感じなので、PNGコーディックの問題なのか、これも探らないといけません。
現在やってる作業はとりあえず βテスト番をアプリストアに公開できないか思考錯誤してます。