From 6688b6f76b79a454baefb4887afc4f81d1edeace Mon Sep 17 00:00:00 2001 From: Jerakin Date: Fri, 10 Oct 2025 19:38:06 +0200 Subject: [PATCH] load json as resource example --- file/json_load/.gitattributes | 42 ++++++++++++++++++++ file/json_load/.gitignore | 11 +++++ file/json_load/example.md | 14 +++++++ file/json_load/example/json_load.collection | 42 ++++++++++++++++++++ file/json_load/example/json_load.script | 30 ++++++++++++++ file/json_load/game.project | 21 ++++++++++ file/json_load/input/game.input_binding | 8 ++++ file/json_load/levels/level_001.json | 3 ++ file/json_load/levels/level_002.json | 3 ++ file/json_load/set_custom_resource.png | Bin 0 -> 35452 bytes 10 files changed, 174 insertions(+) create mode 100644 file/json_load/.gitattributes create mode 100644 file/json_load/.gitignore create mode 100644 file/json_load/example.md create mode 100644 file/json_load/example/json_load.collection create mode 100644 file/json_load/example/json_load.script create mode 100644 file/json_load/game.project create mode 100644 file/json_load/input/game.input_binding create mode 100644 file/json_load/levels/level_001.json create mode 100644 file/json_load/levels/level_002.json create mode 100644 file/json_load/set_custom_resource.png diff --git a/file/json_load/.gitattributes b/file/json_load/.gitattributes new file mode 100644 index 0000000..187cdf4 --- /dev/null +++ b/file/json_load/.gitattributes @@ -0,0 +1,42 @@ +# Defold Protocol Buffer Text Files (https://github.com/github/linguist/issues/5091) +*.animationset linguist-language=JSON5 +*.atlas linguist-language=JSON5 +*.camera linguist-language=JSON5 +*.collection linguist-language=JSON5 +*.collectionfactory linguist-language=JSON5 +*.collectionproxy linguist-language=JSON5 +*.collisionobject linguist-language=JSON5 +*.cubemap linguist-language=JSON5 +*.display_profiles linguist-language=JSON5 +*.factory linguist-language=JSON5 +*.font linguist-language=JSON5 +*.gamepads linguist-language=JSON5 +*.go linguist-language=JSON5 +*.gui linguist-language=JSON5 +*.input_binding linguist-language=JSON5 +*.label linguist-language=JSON5 +*.material linguist-language=JSON5 +*.mesh linguist-language=JSON5 +*.model linguist-language=JSON5 +*.particlefx linguist-language=JSON5 +*.render linguist-language=JSON5 +*.sound linguist-language=JSON5 +*.sprite linguist-language=JSON5 +*.spinemodel linguist-language=JSON5 +*.spinescene linguist-language=JSON5 +*.texture_profiles linguist-language=JSON5 +*.tilemap linguist-language=JSON5 +*.tilesource linguist-language=JSON5 + +# Defold JSON Files +*.buffer linguist-language=JSON + +# Defold GLSL Shaders +*.fp linguist-language=GLSL +*.vp linguist-language=GLSL + +# Defold Lua Files +*.editor_script linguist-language=Lua +*.render_script linguist-language=Lua +*.script linguist-language=Lua +*.gui_script linguist-language=Lua diff --git a/file/json_load/.gitignore b/file/json_load/.gitignore new file mode 100644 index 0000000..0f4d613 --- /dev/null +++ b/file/json_load/.gitignore @@ -0,0 +1,11 @@ +/.editor_settings +/.internal +/build +.externalToolBuilders +.DS_Store +Thumbs.db +.lock-wscript +*.pyc +.project +.cproject +builtins \ No newline at end of file diff --git a/file/json_load/example.md b/file/json_load/example.md new file mode 100644 index 0000000..7684388 --- /dev/null +++ b/file/json_load/example.md @@ -0,0 +1,14 @@ +--- +tags: file +title: Load JSON data +brief: This example shows how to load json data using sys.load_resource(). +author: jerakin +scripts: json_load.script +--- + +The example will load a json file. This can be useful for something like level data. + +Before we can load a resource we need to tell Defold that we have custom resources. +We do this by changing the "custom resources" entry within our game.project file. + +![set-custom-resource](set_custom_resource.png) diff --git a/file/json_load/example/json_load.collection b/file/json_load/example/json_load.collection new file mode 100644 index 0000000..9b8cf8a --- /dev/null +++ b/file/json_load/example/json_load.collection @@ -0,0 +1,42 @@ +name: "main" +scale_along_z: 0 +embedded_instances { + id: "go" + data: "components {\n" + " id: \"json_load\"\n" + " component: \"/example/json_load.script\"\n" + "}\n" + "embedded_components {\n" + " id: \"title\"\n" + " type: \"label\"\n" + " data: \"size {\\n" + " x: 128.0\\n" + " y: 32.0\\n" + "}\\n" + "text: \\\"No level loaded\\\"\\n" + "font: \\\"/builtins/fonts/default.font\\\"\\n" + "material: \\\"/builtins/fonts/label-df.material\\\"\\n" + "\"\n" + " position {\n" + " x: 360.0\n" + " y: 360.0\n" + " }\n" + "}\n" + "embedded_components {\n" + " id: \"Description\"\n" + " type: \"label\"\n" + " data: \"size {\\n" + " x: 128.0\\n" + " y: 32.0\\n" + "}\\n" + "text: \\\"Press \\\\\\\"1\\\\\\\" to load level_001 and \\\\\\\"2\\\\\\\" to to load level_002.\\\"\\n" + "font: \\\"/builtins/fonts/default.font\\\"\\n" + "material: \\\"/builtins/fonts/label-df.material\\\"\\n" + "\"\n" + " position {\n" + " x: 360.0\n" + " y: 50.0\n" + " }\n" + "}\n" + "" +} diff --git a/file/json_load/example/json_load.script b/file/json_load/example/json_load.script new file mode 100644 index 0000000..26cc838 --- /dev/null +++ b/file/json_load/example/json_load.script @@ -0,0 +1,30 @@ +local function load_level(level_name) + local level_path = "/levels/" .. level_name .. ".json" -- <1> + local data = sys.load_resource(level_path) -- <2> + local json_data = json.decode(data) -- <3> + label.set_text("#title", json_data.title) -- <4> +end + +function init(self) + msg.post(".", "acquire_input_focus") +end + + +function on_input(self, action_id, action) + if action_id == hash("key_1") then + if action.released then + load_level("level_001") + end + elseif action_id == hash("key_2") then + if action.released then + load_level("level_002") + end + end +end + +--[[ +1. Convinience sake we only want pass in the name of the level, but to load the resource we need to give it the full path. +2. Load the resource, this will return a string. +3. Use the json.decode to make our string into a lua table. +4. Use the loaded level data in whatever way we want. +--]] diff --git a/file/json_load/game.project b/file/json_load/game.project new file mode 100644 index 0000000..b4033b5 --- /dev/null +++ b/file/json_load/game.project @@ -0,0 +1,21 @@ +[bootstrap] +main_collection = /example/json_load.collectionc + +[script] +shared_state = 1 + +[display] +width = 720 +height = 720 +high_dpi = 1 + +[android] +input_method = HiddenInputField + +[html5] +scale_mode = stretch + +[project] +title = json_load +custom_resources = levels + diff --git a/file/json_load/input/game.input_binding b/file/json_load/input/game.input_binding new file mode 100644 index 0000000..c0119e2 --- /dev/null +++ b/file/json_load/input/game.input_binding @@ -0,0 +1,8 @@ +key_trigger { + input: KEY_1 + action: "key_1" +} +key_trigger { + input: KEY_2 + action: "key_2" +} diff --git a/file/json_load/levels/level_001.json b/file/json_load/levels/level_001.json new file mode 100644 index 0000000..f9bbfc9 --- /dev/null +++ b/file/json_load/levels/level_001.json @@ -0,0 +1,3 @@ +{ + "title": "Starting Area" +} \ No newline at end of file diff --git a/file/json_load/levels/level_002.json b/file/json_load/levels/level_002.json new file mode 100644 index 0000000..e6580de --- /dev/null +++ b/file/json_load/levels/level_002.json @@ -0,0 +1,3 @@ +{ + "title": "Mystic Glades" +} \ No newline at end of file diff --git a/file/json_load/set_custom_resource.png b/file/json_load/set_custom_resource.png new file mode 100644 index 0000000000000000000000000000000000000000..d43dccedf13faa1fd7cfb53c507c1e493858b9c4 GIT binary patch literal 35452 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

*>}(vOms%k1QWmN&7O>QCydi{M~hcvo4RpL{(gp z_wo0;{&bE19a z#_o!$+FwU+)x;koL*fNpvRPd|GAGnsFjce|g0%)i3mGR}CFg_G&%aNwEH4oRoa!Mq zyk*?y`&Hc81Hv+Q5t;ZGgqFar+Kv(k_76OAQ9c5;+M_kMJhMBRw`Ny!cNS_a2l(D{zVsw|iqq5psiX2wZ1S zojQMAM=pH)3)Qx_!rm@Ro>E)d=ni`5fJEU|xmn4vS(z-b_!(vvroWGmYAYJUZziZ< zF1xTZ!{-NRGUoC3W$1&x1I8nw{lGcpXLTQ9G+5;+;IUPL?MOIK~L*jq9!27al<)D zjf-7V(Bf41(Z^a%3wcHUjct-n_IJQY%}fsu+I#G;+U{zZ#RlMQ!AM z$@SB!sLl17XKSs`mflnM`y0K06r;jMdnQe{!5b2oL!{kF3dnL!7&c$mg@oe0P|0km zXR6g7cQ_dMK6ddbMl4llG}n|Vq}G3Eb*TC(^xutu z0?_&?4Ee7#)U>@-46w)z{M?K1*x#*$WrA4Q3|`9?j6U^ZI;@6vZN8_41deC-sZasy&8VLw7%Q(`#8L~jJd_en2i4)*N1G+wRkk2G9T`xU_% zy8BHY2_{h6eGM6s0(lDTIqAA{0s|EZ#3+vskhY}cd2LuI7Px-{v7QsX4CJgwE6IcI z<}%Hg_Xo2x5p1z-$$q0osg)D{YI~Vxr)x$gRt_=QG=KeJoVSs9f6n6Ks}CD@ZRI8f z9S-kDU5>nWV!t>Q7zMe){+DIHzOy+Q_c z!9s^|sWU6wr}}u;eNAYnF!yP~?{ShQ^^mcqI-GhYbVeqn;rrYZ>M-TVjQjn`4@Nx^ z>b-~5M}`TVG3WgNmV~d=r&iBBp2#bzNl)$SO!h%S(LxvMH{lHetnGiE z@u5Dtsl&O_RpeJ~*4!ap@bOKayKIVd)QehVCz$QiI?eTTDR>N4K))?^F8k0ztMJR| z&CkoqHzK%jXFLyGObd3vAIvs$MpxVjAXtyS6gcm$#v&_@^bz*&7$c1W>pcM`GTdVP^tbF0w&HR9ptb z6K0s9!by1qK%2dd7dJ;&dX;-@6U_zjC+%Sa14J1cYH^~fx(yz-mX8EFPyrFnfoHao zT&$mNW>0^~mC?2kA}c1j$qU4`Pg=6zlr