======Data Files====== ---- Although it requires a bit of manual setup, it's possible to access custom data stored in JSON files from [[script|scripts]]. To do so, you must first create a subfolder named "data" within your game's project folder and place the desired JSON file into that folder. When [[exporting your game]], the editor will automatically include any files in the data folder having the .json extension. As a simple example, let's say you wanted to maintain a list of [[item|items]] that the [[player character]] should begin the game with without needing to update your game's [[startup script]] every time the list changes. In this scenario, you could create a JSON file within the data folder named "start_items.json" that looks something like this, with an array of [[item]] IDs corresponding to the desired [[item|items]]. [ "ITEM_0001", "ITEM_0002", "ITEM_0003" ] You can then use the "data" syntax to reference the filename and access its data from a [[script]]. In our example, you could use this syntax along with a [[script_syntax|For loop]] to give each [[item]] to the player from your game's [[startup script]]. for $item_id in data["start_items.json"] do give_item($item_id); end; Alternatively, each [[item]] in the list could be accessed using the array index syntax, or you could even randomly select one [[item]] from the list to give to the player. for $i in range(3) do give_item(data["start_items.json"][$i]); end; give_item(data["start_items.json"][random(0, 2)]); This could be expanded further by also providing a count for each of the [[item|items]]. Instead of just a list of string values, the JSON file would have a list of objects, each having a key/value pair for the [[item]] ID and count. [ { "id": "ITEM_0001", "count": 2 }, { "id": "ITEM_0002", "count": 5 } ] Using the expanded JSON file containing counts for each [[item]], the [[script]] below would give the player two of ITEM_0001 and five of ITEM_0002. for $item in data["start_items.json"] do give_item($item["id"], $item["count"]); end; As another example, assume that we want to maintain a list of [[entity]] properties that will be assigned to a [[character]] at some point during the game. A file named "npc_props.json" could be created in the data folder with the following contents (specifically an object with a set of key/value pairs as the root element). { "visited": false, "visit_count": 0, "mood": "happy" } You could then loop through the key/value pairs and assign each value to a property on the [[entity]]. for $prop in data["npc_props.json"] do set_entity_property(entity["npc01"], $prop, data["npc_props.json"][$prop]); end; ~~NOTOC~~