見出し画像

GDevelopでJSONファイルを読込

前回、GoogleSpreadSheetにリクエストを送信しステージデータを読書きさせるものを作成しました。このままゲーム公開すると毎回ステージデータのリクエストが発生してしまうのでJSONファイルを読み込む処理を作成します。

まず、私はGDevelop5.0.121を使用しており2021年11月20日時点でJSONファイルを読み込む仕組みはGDevelopにないと思われます。公式ドキュメントを調べましたがありませんでした。
そこで、GDevelopコミュニティサイトを調べたところJSONファイルを読み込む方法が書かれていました。とても素晴らしいですね。感動しました。この方もJSONファイルを直接インポートできないと言っており、他にもやり方はあるそうなのですが私はこのやり方がいいと思いました。
https://forum.gdevelop-app.com/t/tutorial-read-data-from-an-external-json-file/25723
コミュニティサイトの記事で十分理解でき分かりやすいと思いますが、英語が苦手でGoogle翻訳も嫌で、画像がいいって方は読んでいってください。

概要

制作しているゲームのgame.jsonをこちょこちょっと修正して、リソースにJSONファイルを読み込ませる。そして、Webサイトにリクエストを送信するアクションでJSONファイルを読込、変数に格納する。

手順

1、JSONファイルを用意します。
 JSONファイルって何?って方はこちらのサイトを見て、このJSON成形サイトで簡単なJSONファイルを作成できるようになった方がいいです。急がば回れと言うやつになります。
今回は、Stage1.jsonとしました。

2、現在作成しているゲームのプロジェクトフォルダの配下に1で作成したJSONファイルを置く。プロジェクトフォルダ?って方はこちらでプロジェクトフォルダを開く方法があります。

スクリーンショット 2021-11-20 21.58.09

3、プロジェクトフォルダ内にあるgame.jsonファイルをテキストエディターなどで開き、リソース(resources)が定義されている場所に追記する。

  "resources": {
   "resources": [
     {
       "alwaysLoaded": false,
       "file": "assets/Close button.png",
       "kind": "image",
       "metadata": "",
       "name": "Close button.png",
       "smoothed": true,
       "userAdded": false,
       "origin": {
         "identifier": "https://resources.gdevelop-app.com/assets/On-Screen Controls/Sprites/Flat Dark/Close button.png",
         "name": "gdevelop-asset-store"
       }
     },
     {
       "disablePreload": false,
       "file": "Stage1.json",    <---JSONファイル名
       "kind": "json",
       "metadata": "",
       "name": "Stage1",                  <---JSONファイル名の拡張子なし
       "userAdded": true
     },   <--- カンマを忘れないこと!!
     {
       "alwaysLoaded": false,
       "file": "assets/Blank button2.png",
       "kind": "image",
       "metadata": "",
       "name": "Blank button.png2",
       "smoothed": true,
       "userAdded": false,
       "origin": {
         "identifier": "https://resources.gdevelop-app.com/assets/On-Screen Controls/Sprites/Flat Dark/Blank button.png",
         "name": "gdevelop-asset-store"
       }
     },

4、GDevelopを閉じて起動し直す。
5、リソースマネージャーを開きJSONファイルがあることを確認。リソースマネージャー?って方はこちら

スクリーンショット 2021-11-20 22.08.28

6、「Webページにリクエストを送信する」アクションでJSONファイルを取得。

スクリーンショット 2021-11-20 21.54.48

7、6で応答を保存した変数をJSONに変換すれば完了ですが、リクエスト送信は非同期処理になるので、リクエストアクション①の後にすぐJSON変換②を行なってもダメです。なので私はリクエスト後に0.01秒待たせてJSON変換しています。これはいいやり方なのか不明ですが、すぐJSON変換しないように気をつけて下さい。私は以前にもここでつまづいたのに、今回もつまづき30分時間を溶かしてしまいました。みなさんは気をつけて下さい。

スクリーンショット 2021-11-20 22.21.13
スクリーンショット 2021-11-20 22.11.11

8、動作確認は、デバッガーで変数を見てみるのが一番早く安全です。

スクリーンショット 2021-11-20 22.14.03

おまけ
私はGoogleSpreadSheetで各種ステータス値、ステージデータを作成してますが、JSONファイルを作成する場合は下記のコマンド1発で作成してます。
あまり大したことではないですが・・・・Windows10でもコマンドプロンプトでcurlが使えるようになったのでいいんじゃないでしょうか!!

curl -L "https://script.google.com/macros/s/デプロイID/exec?StageNo=1" > Stage1.json

私のHPでGDevelopの技術情報をまとめているのでよかったら見て下さい。
https://katakuriko.site/

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