AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

ソースを読みつつリハビリを

プログラムソースをサイズ順にソートすると、一番巨大なのがキャラクターを制御するcharacter.csで、次が全体を制御するmain.cs
それぞれ1.6MBと700KBぐらいあります。
character.csにいたっては、37250行という恐ろしい巨大プログラムになっている(^_^;)
一年近くソースをみてないので、もはや自分でもしばらくはソースを読んでリハビリしないと手が出せない

本来は分散処理でオブジェクトごとにスクリプトをつけて、それぞれが通信しながら互いに中身に干渉しないという作りが現代風なんでしょうけど、私は大昔からプログラミングしてますから、グローバル変数大量につかってて、力技でコードを書いてるので、他人が把握するのは絶対無理でしょうw

20210707165319


アップデートしてくれ!というメールは毎日頂いておりますが、なんとかしたいと思いつつ月日が過ぎてしまった

20210707165334

20210707170801

売上自体は去年と比べても悪くない数字で、アクティブユーザー数も更新してない割に十分維持されてました。
全盛期と比較しても90~85%はあると思います。凄いことに。


車でいうとマイナーチェンジがもはや限界に来てるのは間違いないので、フルモデルチェンジをしないと持たないのも事実なんで、アップデートをした勢いで、このまま次作の開発に入らねばならない
夏休みの宿題をしない性格はこういうところで足を引っ張ってくる(-_-;)

色々不具合がざくざく(^_^;)

遊んでたらx64だからとか関係なく、色んな所に不具合が発見しまくり(^^;)

たとえば、体育館でバスケットボールを拾ったら、もともとはバスケシュートしてたはずなのに
いつのまにか横投げになってるとか、
ヘリで上昇して銃を撃とうとおもったら、右側のどのボタンで銃撃できるかのガイドが非表示になってたり

あとから仕様追加した時に影響をうけて動作が変わってるけど、昔の機能だから確認してなくて気づいてないみたいな
不具合がざっくざっく(^^;)

とにかくリストアップして修正していきます。

とはいえ、実はUnity5.6ではちゃんと動いてて、Unity2017.4のせいの可能性もあるのでそっちも確認してみよう(^^;)

本来、個人開発ゲームだからテスト仕様書は作ったこと無いんだけど、今回は作業抜けを防ぐ意味でも、テスト仕様書を作ってみようと思う。もっとも、覚えてるゲーム仕様の確認にはなるけれど。


あと、私は寝起きの午前中が一番頭が働くので、しばらくは寝る時間を早めて、早起きに移行しようと思う
今夜はさっそく10時には寝て、5時に起きるでやってみよう
カフェインに弱いのでコーヒーは飲まないようにする

内部テスト版 SGS x64をDL

20210706135057

招待URLからGoogle Playに飛んで、そこから無事DLできました。
内部テストでテスター登録が私一人なんで、おそらく他の人はDLできないはず
Xiaomi mi pad4上で動いてます

あとは、Windows上で、動作チェックをしつつ、新機能の追加までやってみましょう
そしたら公開テストで登録して、そこでも動作チェックして、本番にAPKでアップデートという流れで
とりあえず先は見えたので安心しました

あとRTX2060が届きました。昔は新品で40000円切ってたらしいんですが、中古で52000円(-_-)
性能的にGTX1080に負けてるので、レイトレなんか無視してGTXで良かった orz

内部テストとしてApp Bundleをアップロード

これまではアプリはAPKを作ってアップロードしてましたが、現在は、App BundleというAABを作ってアップロードする仕様に変わっているようです
Unity2017.4もBuildシステムをGradleを選ぶと、Build App Bundleのチェックが出てきますのでチェックして作成してみました。
しかし、APKでは実機でbuild&runできたのですが、AABは実機に転送する時にadbからみでエラーで失敗します。JDKが古いせいかもしれない?
ただし、aab自体は作成できているので、PlayConsoleにあげてみましょう。

というわけで、オープンテストは審査が入るらしいので手っ取り早く審査なしの内部テストとしてアップロードしてみます。
f:id:yasu9780:20210706102801p:plain

警告が3つ出てますが、x64が足りてないぞ!的な問題は出てないので、使用してるアセットのpluginの問題などは現時点ではなさそうです
あとはメーリングリストに自分のメルアド登録しておけば私だけはDLできる状態かな?


すでに公開中のアプリのアップデートに関してはAPKはAPKとしてアップデートすればOKらしいので本番アプリはAPKとして作れば大丈夫らしい
aabはapkより小さくなるのが売りらしいですがうちでは1MBでかくなりましたw
もとが32bitでx64+32bitなんででかくなっても仕方ないですけど

www.petitmonte.com

x64でビルドして実機で動作成功

20210705224403

やっとx64ビルドして実機で動きました(^_^;) 半日ハマった orz

Xiaomi tab 4 と Xiaomi max 3 を使ってbuild&runしてたんですが、結論から言うとXiaomiはなんかおかしい
ぐぐるとXiaomiのIDでログインしないとアプリ転送できないみたいな記事があるし

以前はFreeTelという機種で開発してましたが、今は手元になく、HTC製造のNexus9タブレットにつないだら無事成功しました

このタブレットは2014年製で年代物ですが、Android7になっていて、CPUはnVidia製のx64対応CPUです。

結局 Unity hubでUnity2019入れながらAndroid SDKのAPI29をダウンロードして、SDKにはそれを指定して
NDKとJDKは今までのやつでビルド自体はできました(NDKをUnity2019の奴にするとIL2CPPが対応してないと怒られる)

しかし、x64だとIL2CPPなんでビルドが時間がかかるかかる
ビルド中は大相撲の録画を見ながら作業しました

x64オンリーでビルドしたので、アプリ自体は正真正銘のx64アプリだと思いますが、問題はPlayConsoleが受け付けるか次第なので、
明日は、さっそくPlay Consoleにアップロードしてみます。

それでうまく行けば、大筋では技術的には問題はなくなりますので、後は個別機能の確認と新機能の追加をしてアルファー版公開としたいと思います。
しかし、1年11ヶ月ぶりのアップデート(汗


確認事項

  1. Play Consoleでx64として新規アップロードできる
  2. これまでの個別機能にバグがない
  3. 動作が不自然に遅くない
  4. アプリサイズが不自然にでかくない
  5. できればRAM1GBスマホでも32bit版が動く
  6. 新機能はあんなことやあんなことをつける

せっかく、アップデートするんだから、今月からは、SGS2の開発にもとりかかろうと思います
そのためにもこのブログは更新を続ける予定(ブログを書かないとサボるので)

x64でbuildはできるが、build & runはエラーでできない

buildでx64なapk自体は作成できるが、実機にbuildして転送しようとするとadb.exeの転送でエラーになる
はじめUSBデバッグモードの問題かと思っていたが、Android SDK/NDKのバージョンの問題かもしれない

Google Play の対象 API レベルの要件を満たす  |  Android Developers

>2021 年 11 月から、アプリのアップデートは API レベル 30 以降を対象とし

とか書いてあるので、この際 API Level 30を準備するべきかもしれない
NDKは安定版はもうr22らしい現在は

r13を入れてビルドしてたんだけど、かなり浦島太郎かもしれない。
Android StuidoでまずはSDKだけ入れてみる
そもそもUnity2017.4で最新のSDK/NDKで大丈夫なのだろうか?


あと懸念があるのが、有料のアセットとかで内部で32bitコードのプラグインなんかを使ってると、おそらくx64チェックで弾かれると思う
これはPlay Consoleに新規アップロードして、受け付けてくれるかでチェックするしか無いと思うので、なるべく早い段階でまず
そこを試したい
細かいゲーム仕様上のデバッグは後回しでいい。それはただの各論に過ぎない

Unity hubからSDKを入れる機能があるので、とりあえずそっちで入れて見ます

RTX2080TiのせいでPCが起動しない

PCが起動しなくなったので、おそらく電源容量の問題と思ってRTX2080Tiを外したら起動しました。
たしか360Wぐらいの消費電力があります
電源は650Wのゴールドだったので足りないみたいです(^^;)←ゴールドだぞ!

さすがにIntelのCPU内蔵GPUではゲーム開発がやりづらいので、いまさらですがRTX2060を買うことにしました。160W程度。


しかし、RTX2080Tiの中古を65000円で買ってるのに、中古のRTX2060ごときが52000円もしました(-_-)
↑勘違い。ドスパラでの購入79800円 じゃんぱらでの現在の買取上限65000円だった。

ビットコインマイニングの影響かもしれませんが、いまのうちにRTX2080Tiは売ったほうがいいかも(^_^;)
Unityの機械学習も以前試しましたが、自分の考える用途に使うのは厳しいと思いました
学習以前に、学習させる前提とか仕組みに無理がある気がします
強化学習でとりあえず打ち込んでも万能ではないと思うので
自分としてはスポーツなんかで、自分でプログラムを書くのが難しい分野で、機械学習でそれっぽく動くのを期待してたんですが、
フローというか、シナリオ的な順序だった行動を学習させる仕組みが無い感じがします

将棋で言うなら、序盤中盤終盤を認識するような感じですが、昔はそれをやってる人もいましたけど
弱くなるので、今は、評価関数で自己判断させるブラックボックスって感じですよね
進行度とか昔は言ってましたけど