[{"data":1,"prerenderedAt":873},["ShallowReactive",2],{"doc-global_essentials\u002Fmiscellaneous\u002Fgame_settings":3},{"id":4,"title":5,"body":6,"description":863,"extension":864,"meta":865,"navigation":217,"path":869,"seo":870,"stem":871,"__hash__":872},"docs\u002Fdocs\u002Fglobal_essentials\u002Fmiscellaneous\u002Fgame_settings.md","Game Settings",{"type":7,"value":8,"toc":850},"minimark",[9,14,26,29,32,36,43,48,137,141,264,270,272,275,289,293,299,412,418,421,515,519,522,584,587,658,662,709,742,744,748,846],[10,11,13],"h1",{"id":12},"settings","Settings",[15,16,17,18,22,23,25],"p",{},"The engine provides two separate settings systems: ",[19,20,21],"strong",{},"Engine Settings"," shared across all games, and ",[19,24,5],{}," specific to each game.",[15,27,28],{},"Both are shown to the player in the game menu and can be read\u002Fwritten from scripts.",[30,31],"hr",{},[33,34,21],"h2",{"id":35},"engine-settings",[15,37,38,39,42],{},"Engine-level settings are ",[19,40,41],{},"shared across all games"," and persisted to the browser's localStorage. They survive page refreshes, game restarts, and switching between games.",[44,45,47],"h3",{"id":46},"built-in-settings","Built-in Settings",[49,50,51,70],"table",{},[52,53,54],"thead",{},[55,56,57,61,64,67],"tr",{},[58,59,60],"th",{},"ID",[58,62,63],{},"Type",[58,65,66],{},"Default",[58,68,69],{},"Description",[71,72,73,91,106,121],"tbody",{},[55,74,75,82,85,88],{},[76,77,78],"td",{},[79,80,81],"code",{},"music_volume",[76,83,84],{},"chooseOne (0-100)",[76,86,87],{},"20",[76,89,90],{},"Music volume percentage",[55,92,93,98,100,103],{},[76,94,95],{},[79,96,97],{},"sound_volume",[76,99,84],{},[76,101,102],{},"80",[76,104,105],{},"Sound effects volume percentage",[55,107,108,113,116,118],{},[76,109,110],{},[79,111,112],{},"font_size",[76,114,115],{},"chooseOne (10-40)",[76,117,87],{},[76,119,120],{},"UI font size in pixels",[55,122,123,128,131,134],{},[76,124,125],{},[79,126,127],{},"typing_speed",[76,129,130],{},"chooseOne",[76,132,133],{},"fast",[76,135,136],{},"Text typing animation speed (none, slow, medium, fast, very_fast)",[44,138,140],{"id":139},"api","API",[142,143,148],"pre",{"className":144,"code":145,"language":146,"meta":147,"style":147},"language-js shiki shiki-themes github-light github-dark","\u002F\u002F Read\nconst volume = game.getEngineSetting('music_volume');\nconst speed = game.getEngineSetting('typing_speed');\n\n\u002F\u002F Write (auto-persisted to localStorage)\ngame.setEngineSetting('music_volume', 50);\ngame.setEngineSetting('typing_speed', 'none');\n","js","",[79,149,150,159,191,212,219,225,246],{"__ignoreMap":147},[151,152,155],"span",{"class":153,"line":154},"line",1,[151,156,158],{"class":157},"sJ8bj","\u002F\u002F Read\n",[151,160,162,166,170,173,177,181,184,188],{"class":153,"line":161},2,[151,163,165],{"class":164},"szBVR","const",[151,167,169],{"class":168},"sj4cs"," volume",[151,171,172],{"class":164}," =",[151,174,176],{"class":175},"sVt8B"," game.",[151,178,180],{"class":179},"sScJk","getEngineSetting",[151,182,183],{"class":175},"(",[151,185,187],{"class":186},"sZZnC","'music_volume'",[151,189,190],{"class":175},");\n",[151,192,194,196,199,201,203,205,207,210],{"class":153,"line":193},3,[151,195,165],{"class":164},[151,197,198],{"class":168}," speed",[151,200,172],{"class":164},[151,202,176],{"class":175},[151,204,180],{"class":179},[151,206,183],{"class":175},[151,208,209],{"class":186},"'typing_speed'",[151,211,190],{"class":175},[151,213,215],{"class":153,"line":214},4,[151,216,218],{"emptyLinePlaceholder":217},true,"\n",[151,220,222],{"class":153,"line":221},5,[151,223,224],{"class":157},"\u002F\u002F Write (auto-persisted to localStorage)\n",[151,226,228,231,234,236,238,241,244],{"class":153,"line":227},6,[151,229,230],{"class":175},"game.",[151,232,233],{"class":179},"setEngineSetting",[151,235,183],{"class":175},[151,237,187],{"class":186},[151,239,240],{"class":175},", ",[151,242,243],{"class":168},"50",[151,245,190],{"class":175},[151,247,249,251,253,255,257,259,262],{"class":153,"line":248},7,[151,250,230],{"class":175},[151,252,233],{"class":179},[151,254,183],{"class":175},[151,256,209],{"class":186},[151,258,240],{"class":175},[151,260,261],{"class":186},"'none'",[151,263,190],{"class":175},[15,265,266,267,269],{},"The player can also change these directly via ",[19,268,21],{}," in the game menu.",[30,271],{},[33,273,5],{"id":274},"game-settings",[15,276,277,278,281,282,285,286,288],{},"Game settings are ",[19,279,280],{},"specific to your game"," and persisted in save files. They are defined in the engine editor under ",[19,283,284],{},"General"," tab and shown inside ",[19,287,5],{}," in the game menu (only visible when at least one setting is defined).",[44,290,292],{"id":291},"defining-settings","Defining Settings",[15,294,295,296,298],{},"Open the engine editor and navigate to ",[19,297,5],{},". Each entry has:",[49,300,301,310],{},[52,302,303],{},[55,304,305,308],{},[58,306,307],{},"Field",[58,309,69],{},[71,311,312,322,352,362,372,382,392,402],{},[55,313,314,319],{},[76,315,316],{},[79,317,318],{},"id",[76,320,321],{},"Unique identifier used in code",[55,323,324,329],{},[76,325,326],{},[79,327,328],{},"type",[76,330,331,332,240,335,240,338,240,341,240,344,240,346,240,349],{},"Value type: ",[79,333,334],{},"title",[79,336,337],{},"string",[79,339,340],{},"number",[79,342,343],{},"boolean",[79,345,130],{},[79,347,348],{},"chooseMany",[79,350,351],{},"color",[55,353,354,359],{},[76,355,356],{},[79,357,358],{},"label",[76,360,361],{},"Display name shown in the menu",[55,363,364,369],{},[76,365,366],{},[79,367,368],{},"tooltip",[76,370,371],{},"Optional help text",[55,373,374,379],{},[76,375,376],{},[79,377,378],{},"default_value",[76,380,381],{},"Initial value (as string)",[55,383,384,389],{},[76,385,386],{},[79,387,388],{},"values",[76,390,391],{},"Available options (for chooseOne\u002FchooseMany)",[55,393,394,399],{},[76,395,396],{},[79,397,398],{},"order",[76,400,401],{},"Display order in the menu",[55,403,404,409],{},[76,405,406],{},[79,407,408],{},"localizeValues",[76,410,411],{},"Whether option values should be passed through locale",[15,413,414,415,417],{},"The ",[79,416,334],{}," type creates a section header (not a setting) to organize the menu visually.",[44,419,140],{"id":420},"api-1",[142,422,424],{"className":144,"code":423,"language":146,"meta":147,"style":147},"\u002F\u002F Read\nconst difficulty = game.getGameSetting('difficulty');\nconst showHints = game.getGameSetting('show_hints');\n\n\u002F\u002F Write (persisted in save files)\ngame.setGameSetting('difficulty', 'hard');\ngame.setGameSetting('show_hints', false);\n",[79,425,426,430,451,471,475,480,498],{"__ignoreMap":147},[151,427,428],{"class":153,"line":154},[151,429,158],{"class":157},[151,431,432,434,437,439,441,444,446,449],{"class":153,"line":161},[151,433,165],{"class":164},[151,435,436],{"class":168}," difficulty",[151,438,172],{"class":164},[151,440,176],{"class":175},[151,442,443],{"class":179},"getGameSetting",[151,445,183],{"class":175},[151,447,448],{"class":186},"'difficulty'",[151,450,190],{"class":175},[151,452,453,455,458,460,462,464,466,469],{"class":153,"line":193},[151,454,165],{"class":164},[151,456,457],{"class":168}," showHints",[151,459,172],{"class":164},[151,461,176],{"class":175},[151,463,443],{"class":179},[151,465,183],{"class":175},[151,467,468],{"class":186},"'show_hints'",[151,470,190],{"class":175},[151,472,473],{"class":153,"line":214},[151,474,218],{"emptyLinePlaceholder":217},[151,476,477],{"class":153,"line":221},[151,478,479],{"class":157},"\u002F\u002F Write (persisted in save files)\n",[151,481,482,484,487,489,491,493,496],{"class":153,"line":227},[151,483,230],{"class":175},[151,485,486],{"class":179},"setGameSetting",[151,488,183],{"class":175},[151,490,448],{"class":186},[151,492,240],{"class":175},[151,494,495],{"class":186},"'hard'",[151,497,190],{"class":175},[151,499,500,502,504,506,508,510,513],{"class":153,"line":248},[151,501,230],{"class":175},[151,503,486],{"class":179},[151,505,183],{"class":175},[151,507,468],{"class":186},[151,509,240],{"class":175},[151,511,512],{"class":168},"false",[151,514,190],{"class":175},[44,516,518],{"id":517},"example-difficulty-setting","Example: Difficulty Setting",[15,520,521],{},"Define in the editor:",[49,523,524,533],{},[52,525,526],{},[55,527,528,530],{},[58,529,307],{},[58,531,532],{},"Value",[71,534,535,544,552,561,570],{},[55,536,537,539],{},[76,538,318],{},[76,540,541],{},[79,542,543],{},"difficulty",[55,545,546,548],{},[76,547,328],{},[76,549,550],{},[79,551,130],{},[55,553,554,556],{},[76,555,358],{},[76,557,558],{},[79,559,560],{},"Difficulty",[55,562,563,565],{},[76,564,378],{},[76,566,567],{},[79,568,569],{},"normal",[55,571,572,574],{},[76,573,388],{},[76,575,576,240,579,240,581],{},[79,577,578],{},"easy",[79,580,569],{},[79,582,583],{},"hard",[15,585,586],{},"Use in scripts:",[142,588,590],{"className":144,"code":589,"language":146,"meta":147,"style":147},"const diff = game.getGameSetting('difficulty');\nconst damageMultiplier = diff === 'hard' ? 1.5 : diff === 'easy' ? 0.5 : 1;\n",[79,591,592,611],{"__ignoreMap":147},[151,593,594,596,599,601,603,605,607,609],{"class":153,"line":154},[151,595,165],{"class":164},[151,597,598],{"class":168}," diff",[151,600,172],{"class":164},[151,602,176],{"class":175},[151,604,443],{"class":179},[151,606,183],{"class":175},[151,608,448],{"class":186},[151,610,190],{"class":175},[151,612,613,615,618,620,623,626,629,632,635,638,640,642,645,647,650,652,655],{"class":153,"line":161},[151,614,165],{"class":164},[151,616,617],{"class":168}," damageMultiplier",[151,619,172],{"class":164},[151,621,622],{"class":175}," diff ",[151,624,625],{"class":164},"===",[151,627,628],{"class":186}," 'hard'",[151,630,631],{"class":164}," ?",[151,633,634],{"class":168}," 1.5",[151,636,637],{"class":164}," :",[151,639,622],{"class":175},[151,641,625],{"class":164},[151,643,644],{"class":186}," 'easy'",[151,646,631],{"class":164},[151,648,649],{"class":168}," 0.5",[151,651,637],{"class":164},[151,653,654],{"class":168}," 1",[151,656,657],{"class":175},";\n",[44,659,661],{"id":660},"example-toggle-setting","Example: Toggle Setting",[49,663,664,672],{},[52,665,666],{},[55,667,668,670],{},[58,669,307],{},[58,671,532],{},[71,673,674,683,691,700],{},[55,675,676,678],{},[76,677,318],{},[76,679,680],{},[79,681,682],{},"show_damage_numbers",[55,684,685,687],{},[76,686,328],{},[76,688,689],{},[79,690,343],{},[55,692,693,695],{},[76,694,358],{},[76,696,697],{},[79,698,699],{},"Show Damage Numbers",[55,701,702,704],{},[76,703,378],{},[76,705,706],{},[79,707,708],{},"true",[142,710,712],{"className":144,"code":711,"language":146,"meta":147,"style":147},"if (game.getGameSetting('show_damage_numbers')) {\n    \u002F\u002F display floating damage text\n}\n",[79,713,714,732,737],{"__ignoreMap":147},[151,715,716,719,722,724,726,729],{"class":153,"line":154},[151,717,718],{"class":164},"if",[151,720,721],{"class":175}," (game.",[151,723,443],{"class":179},[151,725,183],{"class":175},[151,727,728],{"class":186},"'show_damage_numbers'",[151,730,731],{"class":175},")) {\n",[151,733,734],{"class":153,"line":161},[151,735,736],{"class":157},"    \u002F\u002F display floating damage text\n",[151,738,739],{"class":153,"line":193},[151,740,741],{"class":175},"}\n",[30,743],{},[33,745,747],{"id":746},"engine-vs-game-settings","Engine vs Game Settings",[49,749,750,760],{},[52,751,752],{},[55,753,754,756,758],{},[58,755],{},[58,757,21],{},[58,759,5],{},[71,761,762,775,788,801,812,829],{},[55,763,764,769,772],{},[76,765,766],{},[19,767,768],{},"Scope",[76,770,771],{},"All games",[76,773,774],{},"One game",[55,776,777,782,785],{},[76,778,779],{},[19,780,781],{},"Persistence",[76,783,784],{},"Browser localStorage",[76,786,787],{},"Save files",[55,789,790,795,798],{},[76,791,792],{},[19,793,794],{},"Defined by",[76,796,797],{},"Engine (built-in)",[76,799,800],{},"Game developer (editor)",[55,802,803,808,810],{},[76,804,805],{},[19,806,807],{},"Menu location",[76,809,21],{},[76,811,5],{},[55,813,814,819,824],{},[76,815,816],{},[19,817,818],{},"Read",[76,820,821],{},[79,822,823],{},"game.getEngineSetting(key)",[76,825,826],{},[79,827,828],{},"game.getGameSetting(key)",[55,830,831,836,841],{},[76,832,833],{},[19,834,835],{},"Write",[76,837,838],{},[79,839,840],{},"game.setEngineSetting(key, value)",[76,842,843],{},[79,844,845],{},"game.setGameSetting(key, value)",[847,848,849],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"title":147,"searchDepth":161,"depth":161,"links":851},[852,856,862],{"id":35,"depth":161,"text":21,"children":853},[854,855],{"id":46,"depth":193,"text":47},{"id":139,"depth":193,"text":140},{"id":274,"depth":161,"text":5,"children":857},[858,859,860,861],{"id":291,"depth":193,"text":292},{"id":420,"depth":193,"text":140},{"id":517,"depth":193,"text":518},{"id":660,"depth":193,"text":661},{"id":746,"depth":161,"text":747},"The engine provides two separate settings systems: Engine Settings shared across all games, and Game Settings specific to each game.","md",{"plugin":866,"category":867,"page":868},"global_essentials","miscellaneous","game_settings","\u002Fdocs\u002Fglobal_essentials\u002Fmiscellaneous\u002Fgame_settings",{"title":5,"description":863},"docs\u002Fglobal_essentials\u002Fmiscellaneous\u002Fgame_settings","vNNhywLqB-R8rc1O4gEAVJqIYef5T-axJV7pBVkF9sk",1779582261771]