[{"data":1,"prerenderedAt":462},["ShallowReactive",2],{"navigation_docs":3,"-using-parallax-project-structure":72,"-using-parallax-project-structure-surround":457},[4,26,43],{"title":5,"path":6,"stem":7,"children":8,"page":25},"Using Parallax","\u002Fusing-parallax","1.using-parallax",[9,13,17,21],{"title":10,"path":11,"stem":12},"Getting Started","\u002Fusing-parallax\u002Fgetting-started","1.using-parallax\u002F0.getting-started",{"title":14,"path":15,"stem":16},"Project Structure","\u002Fusing-parallax\u002Fproject-structure","1.using-parallax\u002F1.project-structure",{"title":18,"path":19,"stem":20},"Working with the Agent","\u002Fusing-parallax\u002Fworking-with-agent","1.using-parallax\u002F2.working-with-agent",{"title":22,"path":23,"stem":24},"Deploying Your Game","\u002Fusing-parallax\u002Fdeploying","1.using-parallax\u002F3.deploying",false,{"title":27,"path":28,"stem":29,"children":30,"page":25},"Features","\u002Ffeatures","2.features",[31,35,39],{"title":32,"path":33,"stem":34},"Feature Overview","\u002Ffeatures\u002Foverview","2.features\u002F0.overview",{"title":36,"path":37,"stem":38},"Roadmap","\u002Ffeatures\u002Froadmap","2.features\u002F1.roadmap",{"title":40,"path":41,"stem":42},"Feature Requests","\u002Ffeatures\u002Frequests","2.features\u002F2.requests",{"title":44,"path":45,"stem":46,"children":47,"page":25},"Game Dev","\u002Fgame-dev","3.game-dev",[48,52,56,60,64,68],{"title":49,"path":50,"stem":51},"The Game Developer's Mental Model","\u002Fgame-dev\u002Fmental-model","3.game-dev\u002F0.mental-model",{"title":53,"path":54,"stem":55},"A History of Games","\u002Fgame-dev\u002Fhistory-of-games","3.game-dev\u002F1.history-of-games",{"title":57,"path":58,"stem":59},"Game Categories","\u002Fgame-dev\u002Fgame-categories","3.game-dev\u002F2.game-categories",{"title":61,"path":62,"stem":63},"Theme and Visual Design","\u002Fgame-dev\u002Ftheme-and-design","3.game-dev\u002F3.theme-and-design",{"title":65,"path":66,"stem":67},"Visual Design in Games","\u002Fgame-dev\u002Fvisual-design","3.game-dev\u002F4.visual-design",{"title":69,"path":70,"stem":71},"Theme in Game Design","\u002Fgame-dev\u002Ftheme-in-games","3.game-dev\u002F5.theme-in-games",{"id":73,"title":14,"body":74,"description":449,"extension":450,"links":451,"meta":452,"navigation":454,"path":15,"seo":455,"stem":16,"__hash__":456},"docs\u002F1.using-parallax\u002F1.project-structure.md",{"type":75,"value":76,"toc":443},"minimark",[77,81,85,90,101,105,155,159,164,382,388,392,399,416,439],[78,79,14],"h1",{"id":80},"project-structure",[82,83,84],"p",{},"A Parallax project is a standard Love2D project with a few extra conventions the agent understands.",[86,87,89],"h2",{"id":88},"default-layout","Default layout",[91,92,97],"pre",{"className":93,"code":95,"language":96},[94],"language-text","my-game\u002F\n  main.lua          # Entry point — love.load, love.update, love.draw\n  conf.lua          # Love2D window and module config\n  player.lua        # Player entity (auto-created for non-blank templates)\n  physics.lua       # Physics helpers and collision groups\n  assets\u002F\n    images\u002F         # Sprites and backgrounds (.png)\n    audio\u002F          # Sound effects and music (.ogg, .mp3)\n    fonts\u002F          # Bitmap and TTF fonts\n  lib\u002F              # Third-party Lua libraries (e.g. hump, bump.lua)\n  .parallax\u002F\n    context.json    # Agent context: genre, rules, decisions made\n    history.jsonl   # Local cache of agent conversation\n","text",[98,99,95],"code",{"__ignoreMap":100},"",[86,102,104],{"id":103},"key-files-the-agent-watches","Key files the agent watches",[106,107,108,121],"table",{},[109,110,111],"thead",{},[112,113,114,118],"tr",{},[115,116,117],"th",{},"File",[115,119,120],{},"Purpose",[122,123,124,135,145],"tbody",{},[112,125,126,132],{},[127,128,129],"td",{},[98,130,131],{},"main.lua",[127,133,134],{},"Core game loop — the agent always has this in context",[112,136,137,142],{},[127,138,139],{},[98,140,141],{},"conf.lua",[127,143,144],{},"Window size, enabled modules — agent reads this to understand your canvas",[112,146,147,152],{},[127,148,149],{},[98,150,151],{},".parallax\u002Fcontext.json",[127,153,154],{},"Your game's \"constitution\" — genre, player rules, world rules",[86,156,158],{"id":157},"the-context-file","The context file",[82,160,161,163],{},[98,162,151],{}," is the agent's long-term memory for your project. You can edit it directly:",[91,165,169],{"className":166,"code":167,"language":168,"meta":100,"style":100},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"genre\": \"platformer\",\n  \"player\": {\n    \"speed\": 200,\n    \"jump_force\": 400,\n    \"has_double_jump\": true\n  },\n  \"world\": {\n    \"gravity\": 600,\n    \"tile_size\": 16\n  },\n  \"conventions\": [\n    \"All entities are tables with :update(dt) and :draw() methods\",\n    \"Collision uses bump.lua — never raw AABB\"\n  ]\n}\n","json",[98,170,171,180,208,223,243,260,275,281,295,312,327,332,347,359,370,376],{"__ignoreMap":100},[172,173,176],"span",{"class":174,"line":175},"line",1,[172,177,179],{"class":178},"sMK4o","{\n",[172,181,183,186,190,193,196,199,203,205],{"class":174,"line":182},2,[172,184,185],{"class":178},"  \"",[172,187,189],{"class":188},"spNyl","genre",[172,191,192],{"class":178},"\"",[172,194,195],{"class":178},":",[172,197,198],{"class":178}," \"",[172,200,202],{"class":201},"sfazB","platformer",[172,204,192],{"class":178},[172,206,207],{"class":178},",\n",[172,209,211,213,216,218,220],{"class":174,"line":210},3,[172,212,185],{"class":178},[172,214,215],{"class":188},"player",[172,217,192],{"class":178},[172,219,195],{"class":178},[172,221,222],{"class":178}," {\n",[172,224,226,229,233,235,237,241],{"class":174,"line":225},4,[172,227,228],{"class":178},"    \"",[172,230,232],{"class":231},"sBMFI","speed",[172,234,192],{"class":178},[172,236,195],{"class":178},[172,238,240],{"class":239},"sbssI"," 200",[172,242,207],{"class":178},[172,244,246,248,251,253,255,258],{"class":174,"line":245},5,[172,247,228],{"class":178},[172,249,250],{"class":231},"jump_force",[172,252,192],{"class":178},[172,254,195],{"class":178},[172,256,257],{"class":239}," 400",[172,259,207],{"class":178},[172,261,263,265,268,270,272],{"class":174,"line":262},6,[172,264,228],{"class":178},[172,266,267],{"class":231},"has_double_jump",[172,269,192],{"class":178},[172,271,195],{"class":178},[172,273,274],{"class":178}," true\n",[172,276,278],{"class":174,"line":277},7,[172,279,280],{"class":178},"  },\n",[172,282,284,286,289,291,293],{"class":174,"line":283},8,[172,285,185],{"class":178},[172,287,288],{"class":188},"world",[172,290,192],{"class":178},[172,292,195],{"class":178},[172,294,222],{"class":178},[172,296,298,300,303,305,307,310],{"class":174,"line":297},9,[172,299,228],{"class":178},[172,301,302],{"class":231},"gravity",[172,304,192],{"class":178},[172,306,195],{"class":178},[172,308,309],{"class":239}," 600",[172,311,207],{"class":178},[172,313,315,317,320,322,324],{"class":174,"line":314},10,[172,316,228],{"class":178},[172,318,319],{"class":231},"tile_size",[172,321,192],{"class":178},[172,323,195],{"class":178},[172,325,326],{"class":239}," 16\n",[172,328,330],{"class":174,"line":329},11,[172,331,280],{"class":178},[172,333,335,337,340,342,344],{"class":174,"line":334},12,[172,336,185],{"class":178},[172,338,339],{"class":188},"conventions",[172,341,192],{"class":178},[172,343,195],{"class":178},[172,345,346],{"class":178}," [\n",[172,348,350,352,355,357],{"class":174,"line":349},13,[172,351,228],{"class":178},[172,353,354],{"class":201},"All entities are tables with :update(dt) and :draw() methods",[172,356,192],{"class":178},[172,358,207],{"class":178},[172,360,362,364,367],{"class":174,"line":361},14,[172,363,228],{"class":178},[172,365,366],{"class":201},"Collision uses bump.lua — never raw AABB",[172,368,369],{"class":178},"\"\n",[172,371,373],{"class":174,"line":372},15,[172,374,375],{"class":178},"  ]\n",[172,377,379],{"class":174,"line":378},16,[172,380,381],{"class":178},"}\n",[82,383,384,385,387],{},"The ",[98,386,339],{}," array is especially powerful — add your own coding rules and the agent will follow them.",[86,389,391],{"id":390},"adding-libraries","Adding libraries",[82,393,394,395,398],{},"Drop Lua libraries into ",[98,396,397],{},"lib\u002F"," and require them normally:",[91,400,404],{"className":401,"code":402,"language":403,"meta":100,"style":100},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","local bump = require('lib.bump')\nlocal flux  = require('lib.flux')\n","lua",[98,405,406,411],{"__ignoreMap":100},[172,407,408],{"class":174,"line":175},[172,409,410],{},"local bump = require('lib.bump')\n",[172,412,413],{"class":174,"line":182},[172,414,415],{},"local flux  = require('lib.flux')\n",[82,417,418,419,422,423,422,426,422,429,422,432,422,435,438],{},"The agent knows common Love2D libraries by default: ",[98,420,421],{},"bump.lua",", ",[98,424,425],{},"hump",[98,427,428],{},"flux",[98,430,431],{},"lume",[98,433,434],{},"sti",[98,436,437],{},"anim8",".",[440,441,442],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":100,"searchDepth":182,"depth":182,"links":444},[445,446,447,448],{"id":88,"depth":182,"text":89},{"id":103,"depth":182,"text":104},{"id":157,"depth":182,"text":158},{"id":390,"depth":182,"text":391},"How Parallax organizes your Love2D game files.","md",null,{"ogImage":453,"sync":25},"\u002Flogo.png",true,{"title":14,"description":449},"fOEBmw-yJTEUkZsWSvD8GjdZ58JIPMewZY9fZHavf-4",[458,460],{"title":10,"path":11,"stem":12,"description":459,"children":-1},"Set up Parallax and build your first Love2D game in under 10 minutes.",{"title":18,"path":19,"stem":20,"description":461,"children":-1},"How to prompt the Parallax agent effectively — patterns that work, patterns that don't.",1781007575749]