Quick answer: A naive split-by-comma breaks on empty fields and commas inside text. Either author the CSV with no missing fields (use empty string between commas) or switch to JSON.

A weapon spreadsheet loads fine until row 17, where a missing description shifts all the later columns — damage becomes range, range becomes ammo, chaos follows.

Empty Fields Need Empty Quotes

CSV rows must have the same number of commas per row. Missing a field by writing red,,3 is correct (empty string in the middle); writing red,3 drops the field and shifts the rest.

Quote Fields with Commas

If your description text contains a comma, wrap that field in double quotes: "Heavy, slow weapon". A split-by-comma parser breaks on it; a real CSV parser respects the quotes.

Prefer JSON for Game Data

For anything more than a flat table, JSON is more robust — named keys, no positional shifting, structures naturally. Construct’s JSON plugin handles it cleanly:

{"weapons": [{"name":"Pistol","damage":10,"range":20}]}

Designers can edit JSON in a spreadsheet via a converter or directly — the data round-trips without column-shift surprises.

Validate at Load

If you keep CSV, validate that each row has the expected column count and log/flag rows that don’t. Catches authoring mistakes immediately instead of at runtime far from the source.

Verifying

Every weapon’s damage/range/ammo line up with their names. Adding a new weapon with edge-case data (empty fields, commas) imports correctly.

“Naive CSV breaks on empty or comma-containing fields. Quote fields, keep column counts strict, or move to JSON.”

For Google Sheets workflows, export-as-JSON via Apps Script — designers keep the spreadsheet UI, code gets clean structured data.