“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

201.HSPでゲームを作ろう:技術研究 HTTPアクセス→JSONフォーマットの操作 その1

2023年のコンテストも終わり、2024年のコンテストも視野に入れつつ、次のゲームを作る準備を始めることにした。
まずは、2年前にうまくいかずに放置した、JSONフォーマットのデータ操作から。

coro3.hatenablog.jp

この時は、hspinet.asをincludeして、httpinfo命令で直接JSONフォーマットをゲットしてきたのがダメかと思っていたが、どうやら、ゲットしたJSONフォーマットの構造に合わせて適切なパース命令を使えてなかったようだ。

wttr.inでは、天気の情報をJSONフォーマットで取得できるパラメータがある。wttr.inのGitHubを見ると、ヘルプには載ってない、2つ目の短めにJSONを取得できるフォーマットを見つけた。
https://wttr.in/628?format=j2

このフォーマットなら、天気情報が、現時点のものだけになり、短くなる。こんな感じ。

{
    "current_condition": [
        {
            "FeelsLikeC": "11",
            "FeelsLikeF": "52",
            "cloudcover": "25",
            "humidity": "94",
            "lang_ja": [
                {
                    "value": "所により曇り"
                }
            ],
            "localObsDateTime": "2024-01-22 11:54 PM",
            "observation_time": "02:54 PM",
            "precipInches": "0.0",
            "precipMM": "0.0",
            "pressure": "1008",
            "pressureInches": "30",
            "temp_C": "11",
            "temp_F": "52",
            "uvIndex": "1",
            "visibility": "10",
            "visibilityMiles": "6",
            "weatherCode": "116",
            "weatherDesc": [
                {
                    "value": "Partly cloudy"
                }
            ],
            "weatherIconUrl": [
                {
                    "value": ""
                }
            ],
            "winddir16Point": "SSE",
            "winddirDegree": "160",
            "windspeedKmph": "17",
            "windspeedMiles": "11"
        }
    ],
    "nearest_area": [
        {
            "areaName": [
                {
                    "value": "Kawaguchi"
                }
            ],
            "country": [
                {
                    "value": "Japan"
                }
            ],
            "latitude": "35.805",
            "longitude": "139.711",
            "population": "468565",
            "region": [
                {
                    "value": "Saitama"
                }
            ],
            "weatherUrl": [
                {
                    "value": ""
                }
            ]
        }
    ],
    "request": [
        {
            "query": "Lat 35.75 and Lon 139.70",
            "type": "LatLon"
        }
    ],
    "weather": [
        {
            "astronomy": [
                {
                    "moon_illumination": "86",
                    "moon_phase": "Waxing Gibbous",
                    "moonrise": "01:28 PM",
                    "moonset": "03:59 AM",
                    "sunrise": "06:48 AM",
                    "sunset": "04:57 PM"
                }
            ],
            "avgtempC": "9",
            "avgtempF": "49",
            "date": "2024-01-22",
            "maxtempC": "11",
            "maxtempF": "51",
            "mintempC": "8",
            "mintempF": "46",
            "sunHour": "7.5",
            "totalSnow_cm": "0.0",
            "uvIndex": "2"
        },
        {
            "astronomy": [
                {
                    "moon_illumination": "93",
                    "moon_phase": "Waxing Gibbous",
                    "moonrise": "02:20 PM",
                    "moonset": "05:00 AM",
                    "sunrise": "06:48 AM",
                    "sunset": "04:58 PM"
                }
            ],
            "avgtempC": "8",
            "avgtempF": "46",
            "date": "2024-01-23",
            "maxtempC": "10",
            "maxtempF": "50",
            "mintempC": "4",
            "mintempF": "39",
            "sunHour": "9.3",
            "totalSnow_cm": "0.0",
            "uvIndex": "2"
        },
        {
            "astronomy": [
                {
                    "moon_illumination": "97",
                    "moon_phase": "Waxing Gibbous",
                    "moonrise": "03:19 PM",
                    "moonset": "05:54 AM",
                    "sunrise": "06:47 AM",
                    "sunset": "04:59 PM"
                }
            ],
            "avgtempC": "5",
            "avgtempF": "41",
            "date": "2024-01-24",
            "maxtempC": "7",
            "maxtempF": "44",
            "mintempC": "3",
            "mintempF": "38",
            "sunHour": "9.8",
            "totalSnow_cm": "0.0",
            "uvIndex": "2"
        }
    ]
}

落とし穴は、配列表記だった。
[…]は、配列の表記になるんだけど、要素が1つでも配列として記述ができる。ま、当たり前。
これを見落としていて、直接配列内の要素を参照しようとしていた。
いくら正しいと思える命令の書き方をしても、取得できなかったのだった。

HSPJSON関連の命令は、配列形式のJSONを直接HSPの配列にしたり、添え字を使って参照ができないのだ。
続く。

200.HSPで作ったAndroidアプリを公開しよう 竜巻鮫

「Digi Mole Attack!」の公開がうまく行ったので、竜巻鮫にも広告を付けて公開することにした。
こちらは、横持ちにしてもらうアプリなので、バナー広告は表示せず、1ゲーム終わるごとに全面広告に切り替わるインタースティシャル広告を表示するようにした。

毎回表示するのもうっとおしいので、3ゲーム毎に1回表示するようにカウンタを追加して、処理を行った。
のだが…現時点では、最初の1回は表示されるが、それ以降表示されない…
HSP3Dishのバグなのか、AdMobの仕様変更なのかは不明。とりあえず、HSP掲示板に不具合報告したものの、しばらく修正されそうにないので、このままリリースすることにww

ま、修正されたら表示されることを確認して、アップデート版として公開しよう。

そして今回も公開申請後、4日目の昼に審査が通って公開された。
んで、さっそくインストールして実行したら…デバッグ用のコードが残ってて、数字が表示されてる…_| ̄|○

やっちまったと思い、すぐに非公開に切り替えた。でも、よくよく考えたら、すぐに検索されないから、このまま公開しておいて、アップデート版にすればいいじゃないかと思いつく。

じゃ、公開に切り替えまーすとGoogle Consoleで設定を変更すると…
非公開→公開の切り替えもGoogle先生の審査がいると…_| ̄|○

ということで、アップデート版の審査と、再公開の審査を同時に行った。
ついでに、公開される国を増やしてみた。一応シャーク〇ードを観たことがありそうな日本とアメリカにしていたが、カナダ、メキシコ、イギリス、オーストラリアを追加した。といっても、英語版は無いから、あまり意味はないかもね。

こうして、再度申請したわけだが、丸々1週間「申請中」…
あまりに長いので、他の人のブログとかを検索してみると、いったん申請を取り消して、再申請すると数時間で公開されたというものがあった。ホントに?と思って実行したら、1時間ちょっとで公開されたww

というわけで、ダウンロードして遊んでもらえると嬉しいです。
play.google.com

199.HSPで作ったAndroidアプリを公開しよう Digi Mole Attack改 その9

アプリの公開申請して待つこと3日。審査が終わって、GooglePlayストアから、Digi Mole Attack! をダウンロードできるようになった。
公開するまでに、テスター20人、2週間テストが必要っていう制限は回避できていて、ホッとした。

自分が作ったアプリが、この表示になるのは、感慨深いものがあるね。

ちなみに、この時点では、直リンクでしかページを開けず、正式なアプリ名を入力しても、検索にはヒットしない。
検索にヒットするまで、公開からさらに4日掛かった。

PCで検索すると、こんな感じに表示される。(もちろんこの画像も自分で用意する)

ということで、よろしければ、インストールして遊んでみてください!
play.google.com

老化防止のために復活した、サンデープログラムだったが、まさかアプリを自分でリリースするまでになるとは思わなかった。
それもこれも、HSP3に出会えたことが大きい。手の込んだゲームは作れないので、これからも昭和レトロ風ゲームを作って、公開していきたいと思う。

198.HSPで作ったAndroidアプリを公開しよう Digi Mole Attack改 その8

※今回のエントリーは、2023年12月末から、2024年1月初めごろの話です。

Google Playに登録するためには、apkファイルではなく、aabファイルなるものを作らないといけないらしい。

aabファイルの作成にも、HSP3Dish helperは対応済み。
公開するための秘密鍵(KEY)を作って、ファイルに保存。KEYとパスワードを設定して、「aab作成」ボタンを押すだけ。
ホント、おにたまさんをはじめ、諸先輩方が簡単に便利にできるようにツールを提供していただいているおかげ。
自分で一からAndroidアプリを作っていたら、途中で投げてただろうなw

そうして作成したaabファイルをGoogle Play Consoleにアップするわけだが…
公開できるようにGoogle先生に審査を頼むためには、いろんな設定などをクリアせねばならないのだ。
エラー項目が何項目あるか表示される。まるでビルド…w

そして、その項目ごとの説明が、日本語でおkって書きたくなるぐらい難解…
単純に、はい・いいえで設定できるものは良いけど、チェック項目が山ほどあるやつ、どうすりゃいいねん!と。
はい。これもすでにどうすればいいか、ネットに情報が転がっておりました。
ホント、諸先輩方、助かります。

設定をクリアしていき、残りは、プライバシーポリシーと、データセーフティの項目。
プライバシーポリシーは、AdMobを使うので、広告を出しますよ。とか、個人情報の収集および取り扱いについてを書いておく必要があるのだが…。設定項目、URLしか書けない…そう。別途ホームページを用意せねばならない。

ブログのエントリーの1つを利用しようと思ったが、記事に混じって表示されるのはよろしくないと思い、十数年ぶりにホームページを開くことにした。
といっても、簡単なトップページと、プライバシーポリシーの、2ページだけにする。

ネットで調べると、無料ホームページで一番評判がよかったのが、「Wix」というサービス。
早速開設。昔はindex.htmlすら自分で書いてアップしなくてはならなかったが、トップページとデザインをいくつかのパターンから選んだら、もう画像入りのページが出来上がってる。
ただ、個人ページではなく、ビジネス寄りのサービスなので、仰々しいテキストと画像が使われていて、ハイスペックすぎる。
そして、Web上でエディタを動かして編集するのだが、勝手がなかなかわからず手間取ってしまう。
各ページの画像なんかをそぎ落として、最低限にするまで時間がかかった。

何とかページも作って、最後の設定も終えて、いよいよ公開!もちろん、Google先生の審査が通ればの話なのだが。
去年のアプリ公開のためには、テスターが20人以上云々という条件は、表示されておらず、ステータスは「審査中」になっている。
あとは公開を待つのみになった。