<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gamifying</title>
    <description>The latest articles on DEV Community by Gamifying (@gamifying).</description>
    <link>https://dev.to/gamifying</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4174185%2Fd54e4806-11c3-458c-839f-75a1fc9c9d98.png</url>
      <title>DEV Community: Gamifying</title>
      <link>https://dev.to/gamifying</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gamifying"/>
    <language>en</language>
    <item>
      <title>How I structure my game design doc so ideas stop getting lost</title>
      <dc:creator>Gamifying</dc:creator>
      <pubDate>Wed, 14 Oct 2026 14:57:44 +0000</pubDate>
      <link>https://dev.to/gamifying/how-i-structure-my-game-design-doc-so-ideas-stop-getting-lost-1352</link>
      <guid>https://dev.to/gamifying/how-i-structure-my-game-design-doc-so-ideas-stop-getting-lost-1352</guid>
      <description>&lt;p&gt;I've been making games as a hobby for about three years, mostly in Unreal Engine (and lately a small browser RPG called MAnimae).&lt;/p&gt;

&lt;p&gt;Making things was never the hard part. Keeping track of what I'd decided was. It's easy for design notes to end up scattered across docs, phone notes and your own head.&lt;/p&gt;

&lt;p&gt;Every time I came back to a project after a break, I'd lose the first evening just working out what I'd already decided. An item's stats or a quest's details can easily end up written down in two different versions without you noticing. Small contradictions pile up fast once a game has more than a handful of characters, items and places.&lt;/p&gt;

&lt;p&gt;The fix for me wasn't a better app. It was a structure. Here's the one I use now. It works in a spreadsheet, a folder of markdown files, Notion, or whatever you already have.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. One idea, one entry
&lt;/h2&gt;

&lt;p&gt;The biggest change: I stopped writing the doc as prose.&lt;/p&gt;

&lt;p&gt;A long document feels nice while you're writing it, but it's terrible to come back to. Everything about a character is spread across "Act 1", "Factions" and "Misc", and you end up with an "Aldric" paragraph in four sections, one of them out of date.&lt;/p&gt;

&lt;p&gt;So now every &lt;em&gt;thing&lt;/em&gt; in the game gets its own entry. A character is an entry. A quest is an entry. A sword is an entry. A town is an entry. A historical event is an entry. If I can point at it and give it a name, it gets a card.&lt;/p&gt;

&lt;p&gt;That sounds obvious, but it changes how you think. When I get an idea in the shower, I don't ask "where in the doc does this go?" I ask "is this a new thing, or a detail of a thing that already exists?" That question takes two seconds to answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Pick a handful of types and stick to them
&lt;/h2&gt;

&lt;p&gt;I use six types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Character&lt;/strong&gt; (includes enemies and NPCs)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location&lt;/strong&gt; (regions, towns, dungeons, single rooms if they matter)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Item&lt;/strong&gt; (weapons, armour, consumables, key items)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quest&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lore&lt;/strong&gt; (history, factions, religions, magic rules)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dialogue&lt;/strong&gt; (only for conversations I've actually written)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Resist the urge to make twenty types. Every new type is another place an idea can hide. If you're not sure where something goes, it's probably Lore.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Give each type a few fixed fields
&lt;/h2&gt;

&lt;p&gt;This is the part that made the biggest difference for me. A blank page per entry is just a smaller version of the giant doc. A few fixed fields force you to make decisions, and they show you what's missing.&lt;/p&gt;

&lt;p&gt;Here's roughly what I use. Keep it short at the start.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Fields&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Character&lt;/td&gt;
&lt;td&gt;name, role, faction, location, wants, secret, status (alive/dead/unknown)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Location&lt;/td&gt;
&lt;td&gt;name, region, who lives there, what you can do there&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Item&lt;/td&gt;
&lt;td&gt;name, type, rarity, slot, what it does, where you get it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quest&lt;/td&gt;
&lt;td&gt;name, giver, location, objectives, rewards, act&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lore&lt;/td&gt;
&lt;td&gt;name, category, when (year/era), who it affects&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The fields with names of other things in them (giver, faction, location, "who it affects") are the important ones. More on that next.&lt;/p&gt;

&lt;p&gt;Every type also gets a free-text &lt;strong&gt;notes&lt;/strong&gt; field. Structure is there to help, not to stop you rambling when you need to.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Link entries instead of repeating them
&lt;/h2&gt;

&lt;p&gt;The rule: if a field refers to another thing, it points at that thing's entry. You don't retype a description of it.&lt;/p&gt;

&lt;p&gt;So the quest "The Salt Road Heist" doesn't say "given by Aldric, a spice merchant in Saltmere who hates the guild". It says &lt;code&gt;giver: Aldric&lt;/code&gt;, and Aldric's own entry says where he lives and what he hates. If I later decide Aldric is actually a guild informant, I change it in one place and every quest he's attached to is still correct.&lt;/p&gt;

&lt;p&gt;In a spreadsheet this is one tab per type with an ID column, and you reference IDs. In Notion it's a relation property. In markdown it's &lt;code&gt;[[wiki links]]&lt;/code&gt;. The tool doesn't matter much. The habit does.&lt;/p&gt;

&lt;p&gt;A nice side effect: links show you holes. If a location has no characters linked to it, that town is probably empty and boring. If a character isn't linked to any quest, why are they there?&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Have one inbox for half-ideas
&lt;/h2&gt;

&lt;p&gt;Not every idea is ready to be an entry. "Something about a lighthouse that's actually a prison?" isn't a location yet.&lt;/p&gt;

&lt;p&gt;I keep a single &lt;strong&gt;inbox&lt;/strong&gt; list for those. One line each, no formatting. Once a week I go through it and each line either becomes an entry, gets merged into an existing one, or gets deleted. Deleting is fine. Plenty of ideas don't survive the week.&lt;/p&gt;

&lt;p&gt;The important part is that there's only &lt;em&gt;one&lt;/em&gt; inbox. Not one per app.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Put time on a timeline, not in paragraphs
&lt;/h2&gt;

&lt;p&gt;Worldbuilding history gets messy fast. "Three hundred years before the game, the Salt War..." ends up in five places with five different numbers.&lt;/p&gt;

&lt;p&gt;I keep a simple timeline: year, event name, and a link to the Lore entry. Story beats for the actual game go on the same timeline, tagged differently, so I can see that the player shows up 47 years after the treaty and not 74. A spreadsheet with a "year" column sorted ascending does the job.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Separate "the world" from "the work"
&lt;/h2&gt;

&lt;p&gt;For a long time my design notes and my to-do list were the same document. That meant "write Act 2 quests" sat next to the lore for Act 2, and I never knew whether a section was finished or just a placeholder.&lt;/p&gt;

&lt;p&gt;Now the world lives in entries, and the work lives on a simple board: Backlog, In progress, Done. A card on the board can link to the entries it's about. When the quest is written, the card moves, and the entry itself stays clean.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Keep it in a shape your engine could read
&lt;/h2&gt;

&lt;p&gt;You don't need this on day one, but it's worth keeping in mind. If your entries have fixed fields and IDs, they're already basically data, and engines are happy to read data. In Unreal, I import DataTables from a JSON array where each object is one row and the &lt;code&gt;Name&lt;/code&gt; field is the row name, so a list of quests or items goes straight into a table instead of being retyped by hand.&lt;/p&gt;

&lt;p&gt;Here's roughly what one quest looks like as data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"quest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"quest_salt_road_heist"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The Salt Road Heist"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"giver"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"char_aldric"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"objectives"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Track the river pirates"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Recover the stolen cargo"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rewards"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"500 XP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"item_merchants_key"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"act"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Even if you never automate it, writing entries as if a program might read them keeps you consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd tell myself three years ago
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Start with types and fields, not with chapters.&lt;/li&gt;
&lt;li&gt;Every name is a link.&lt;/li&gt;
&lt;li&gt;One inbox, emptied weekly.&lt;/li&gt;
&lt;li&gt;History on a timeline, tasks on a board.&lt;/li&gt;
&lt;li&gt;It's fine if the structure is boring. The interesting part is the game.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this needs a special tool. A spreadsheet can do all of it, and if that works for you, keep it.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; after a while I got annoyed enough at keeping all of this in sync by hand that I built a tool for it in my free time. It's called &lt;a href="https://gamifying.dev/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=launch-oct2026&amp;amp;utm_content=worldbuilding-structure" rel="noopener noreferrer"&gt;Gamifying&lt;/a&gt;. It's a browser workspace that does the entries, links and JSON export described above (the board and timeline are on the paid plans). It has an optional AI helper for turning a rough line into a draft entry, but you don't need it, and nothing in this article depends on it. There's a free plan: 1 workspace, 50 entries, JSON export. It's a solo hobby project, so feedback is very welcome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'm curious:&lt;/strong&gt; where does your game's design stuff live right now, and what's the most annoying part of it?&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>design</category>
    </item>
  </channel>
</rss>
