In my games I have a lot of large tables containing a lot of data. For example:
Map information in Fates of Ort:
M.map_info[hash("forest_tree_h1")] = {script_require = "maps.map_codes.forest_tree_h1", display_name=[[]], biome = "forest", max_level=10, min_level=1, store_level_cap=false, player_tint_add = vmath.vector4(0,0,0,0), player_tint_subtract = vmath.vector4(0,0,0,0), cloud =vmath.vector4(0.15, 0.20, 0.10, 0), border = true, map_zoom = true, music = {id="", force=false, ambient="indoor_empty", ambient_multiplier=1, rest_time=120}}
M.map_info[hash("rusty_fortress_h1")] = {script_require = "maps.map_codes.rusty_fortress_h1", display_name=[[]], biome = "rusty", max_level=10, min_level=1, store_level_cap=false, player_tint_add = vmath.vector4(0,0,0,0), player_tint_subtract = vmath.vector4(0,0,0,0), cloud =nil, border = true, map_zoom = true, music = {id="", force=false, ambient="indoor_empty", ambient_multiplier=1, rest_time=120}}
M.map_info[hash("rusty_huts_h1")] = {script_require = "maps.map_codes.rusty_huts_h1", display_name=[[]], biome = "rusty", max_level=10, min_level=1, store_level_cap=false, player_tint_add = vmath.vector4(0,0,0,0), player_tint_subtract = vmath.vector4(0,0,0,0), cloud =nil, border = true, map_zoom = true, music = {id="", force=false, ambient="indoor_empty", ambient_multiplier=1, rest_time=120}}
Skill information in my alien genetics game:
{skill_name = "LOG-LOG-4", skill_id = 1089, race_ids = {4,4}, category_hash = hash("4-4-"), texture = hash("skill_icons"), flipbook = hash("4-4-"), description = "add 97 crew limit", is_mutation = false, is_variant = true, can_combine = true, show_in_skillcheck = false, texture_string = "skill_icons", flipbook_string = "4-4-", default_unlocked = false, },
{skill_name = "LOG-LOG-5", skill_id = 1090, race_ids = {4,4}, category_hash = hash("4-4-"), texture = hash("skill_icons"), flipbook = hash("4-4-"), description = "remove 38 damage", is_mutation = false, is_variant = true, can_combine = true, show_in_skillcheck = false, texture_string = "skill_icons", flipbook_string = "4-4-", default_unlocked = false, },
{skill_name = "POW-POW-POW-1", skill_id = 1091, race_ids = {1,1,1}, category_hash = hash("1-1-1-"), texture = hash("skill_icons"), flipbook = hash("1-1-1-"), description = "add 21 damage", is_mutation = false, is_variant = true, can_combine = false, show_in_skillcheck = false, texture_string = "skill_icons", flipbook_string = "1-1-1-", default_unlocked = true, },
{skill_name = "POW-POW-POW-2", skill_id = 1092, race_ids = {1,1,1}, category_hash = hash("1-1-1-"), texture = hash("skill_icons"), flipbook = hash("1-1-1-"), description = "add 68 crew limit", is_mutation = false, is_variant = true, can_combine = false, show_in_skillcheck = false, texture_string = "skill_icons", flipbook_string = "1-1-1-", default_unlocked = false, },
This ends up being sometimes hundreds of lines of data, with a lot of stuff (strings, numbers, tables in tables, etc). Since the data is live during development, I end up wanting to change it a lot, add and remove things, etc. It obviously gets unwieldy doing it right in the editor, editing hundreds of lines. Previously I’ve made Google Sheets to handle it. I love spreadsheets but even I will admit this is cumbersome:
="M.map_info[hash("""&B3&""")] = {script_require = ""maps.map_codes."&B3&""", display_name=[["&E3&"]], biome = """&C3&""", max_level="&P3&", min_level="&Q3&", store_level_cap="&R3&", player_tint_add = vmath.vector4("&S3&","&T3&","&U3&","&V3&"), player_tint_subtract = vmath.vector4("&W3&","&X3&","&Y3&","&Z3&"), cloud ="&M3&", border = "&N3&", map_zoom = "&O3&", music = {id="""&H3&""", force="&I3&", ambient="""&K3&""", ambient_multiplier="&L3&", rest_time="&J3&"}}"
Google Sheets does make it a piece of cake to change data, but modifying the data structure is a pain (as you can see from the formula above).
Furthermore, I have been unable to come up with a good solution for handling subtables with a variable number of values in them (none, or one, or multiple). I either have one cell and comma-delineate the values (this is bad because it’s manual, makes it hard to keep track of the data, and eventually begins resembling the reason I implemented the spreadsheet in the first place), or I have x number of columns for each individual data point (this is bad because it is cumbersome to set up and implies a maximum number of values).
What do you use? Is there a tool you can recommend? Free is great, but if it saves time and makes my life easier I’ll gladly pony up.