[{"data":1,"prerenderedAt":1278},["ShallowReactive",2],{"doc:\u002Fgame-engine\u002Fadvanced\u002Fdebugging":3,"surround:\u002Fgame-engine\u002Fadvanced\u002Fdebugging":1027,"navigation":1038},{"id":4,"title":5,"body":6,"description":1020,"extension":1021,"meta":1022,"navigation":291,"path":1023,"seo":1024,"stem":1025,"__hash__":1026},"docs\u002F01.game-engine\u002F08.advanced\u002F03.debugging.md","Debugowanie",{"type":7,"value":8,"toc":1010},"minimark",[9,14,61,98,101,104,187,191,367,370,475,478,481,551,569,572,709,727,731,791,836,882,885,889,941,963,967,1006],[10,11,13],"h2",{"id":12},"włączenie","Włączenie",[15,16,21],"pre",{"className":17,"code":18,"language":19,"meta":20,"style":20},"language-ts shiki shiki-themes github-light github-dark","const engine = createEngine({ parent: 'app', debug: true })\n","ts","",[22,23,24],"code",{"__ignoreMap":20},[25,26,29,33,37,40,44,48,52,55,58],"span",{"class":27,"line":28},"line",1,[25,30,32],{"class":31},"szBVR","const",[25,34,36],{"class":35},"sj4cs"," engine",[25,38,39],{"class":31}," =",[25,41,43],{"class":42},"sScJk"," createEngine",[25,45,47],{"class":46},"sVt8B","({ parent: ",[25,49,51],{"class":50},"sZZnC","'app'",[25,53,54],{"class":46},", debug: ",[25,56,57],{"class":35},"true",[25,59,60],{"class":46}," })\n",[62,63,64,67,68,71,72,75,76,71,79,71,82,85,86,89,90,93,94,97],"p",{},[22,65,66],{},"debug: true"," buduje ",[22,69,70],{},"DebugOverlay",", ",[22,73,74],{},"LogBuffer"," (400 wpisów), ",[22,77,78],{},"LogPanel",[22,80,81],{},"DebugViews",[22,83,84],{},"Profiler"," i ",[22,87,88],{},"Diagnostics",". ",[22,91,92],{},"setDebug(false)"," obniża próg logowania do ",[22,95,96],{},"info"," i gasi warstwy widoczne.",[10,99,70],{"id":100},"debugoverlay",[62,102,103],{},"Pokazuje FPS, czas klatki, przejście czasu rzeczywistego w grę, aktywną scenę, obiekty, ciała, pary kolizji, pamięć, audio i najdroższe znaczniki profilera.",[15,105,107],{"className":17,"code":106,"language":19,"meta":20,"style":20},"const overlay = engine.getAdapter().getDebugOverlay()\noverlay.setEnabled(true)\noverlay.setExtra(['Własna linia debug'])\noverlay.getFps()\noverlay.getMemory()\n",[22,108,109,133,150,167,177],{"__ignoreMap":20},[25,110,111,113,116,118,121,124,127,130],{"class":27,"line":28},[25,112,32],{"class":31},[25,114,115],{"class":35}," overlay",[25,117,39],{"class":31},[25,119,120],{"class":46}," engine.",[25,122,123],{"class":42},"getAdapter",[25,125,126],{"class":46},"().",[25,128,129],{"class":42},"getDebugOverlay",[25,131,132],{"class":46},"()\n",[25,134,136,139,142,145,147],{"class":27,"line":135},2,[25,137,138],{"class":46},"overlay.",[25,140,141],{"class":42},"setEnabled",[25,143,144],{"class":46},"(",[25,146,57],{"class":35},[25,148,149],{"class":46},")\n",[25,151,153,155,158,161,164],{"class":27,"line":152},3,[25,154,138],{"class":46},[25,156,157],{"class":42},"setExtra",[25,159,160],{"class":46},"([",[25,162,163],{"class":50},"'Własna linia debug'",[25,165,166],{"class":46},"])\n",[25,168,170,172,175],{"class":27,"line":169},4,[25,171,138],{"class":46},[25,173,174],{"class":42},"getFps",[25,176,132],{"class":46},[25,178,180,182,185],{"class":27,"line":179},5,[25,181,138],{"class":46},[25,183,184],{"class":42},"getMemory",[25,186,132],{"class":46},[10,188,190],{"id":189},"logger-i-logpanel","Logger i LogPanel",[15,192,194],{"className":17,"code":193,"language":19,"meta":20,"style":20},"const logger = engine.getLogger()\nlogger.setLevel('debug')\nlogger.info('Gracz wszedł do strefy', { zone: 'las' })\nlogger.warn('Niski FPS', { fps: 24 })\nlogger.error('Nie znaleziono assetu', { id: 'hero' })\n\nconst child = logger.child('physics')\nchild.debug('Collider dodany')\n\nlogger.addSink((entry) => myExternalService.send(entry))\n",[22,195,196,212,227,246,266,286,293,316,332,337],{"__ignoreMap":20},[25,197,198,200,203,205,207,210],{"class":27,"line":28},[25,199,32],{"class":31},[25,201,202],{"class":35}," logger",[25,204,39],{"class":31},[25,206,120],{"class":46},[25,208,209],{"class":42},"getLogger",[25,211,132],{"class":46},[25,213,214,217,220,222,225],{"class":27,"line":135},[25,215,216],{"class":46},"logger.",[25,218,219],{"class":42},"setLevel",[25,221,144],{"class":46},[25,223,224],{"class":50},"'debug'",[25,226,149],{"class":46},[25,228,229,231,233,235,238,241,244],{"class":27,"line":152},[25,230,216],{"class":46},[25,232,96],{"class":42},[25,234,144],{"class":46},[25,236,237],{"class":50},"'Gracz wszedł do strefy'",[25,239,240],{"class":46},", { zone: ",[25,242,243],{"class":50},"'las'",[25,245,60],{"class":46},[25,247,248,250,253,255,258,261,264],{"class":27,"line":169},[25,249,216],{"class":46},[25,251,252],{"class":42},"warn",[25,254,144],{"class":46},[25,256,257],{"class":50},"'Niski FPS'",[25,259,260],{"class":46},", { fps: ",[25,262,263],{"class":35},"24",[25,265,60],{"class":46},[25,267,268,270,273,275,278,281,284],{"class":27,"line":179},[25,269,216],{"class":46},[25,271,272],{"class":42},"error",[25,274,144],{"class":46},[25,276,277],{"class":50},"'Nie znaleziono assetu'",[25,279,280],{"class":46},", { id: ",[25,282,283],{"class":50},"'hero'",[25,285,60],{"class":46},[25,287,289],{"class":27,"line":288},6,[25,290,292],{"emptyLinePlaceholder":291},true,"\n",[25,294,296,298,301,303,306,309,311,314],{"class":27,"line":295},7,[25,297,32],{"class":31},[25,299,300],{"class":35}," child",[25,302,39],{"class":31},[25,304,305],{"class":46}," logger.",[25,307,308],{"class":42},"child",[25,310,144],{"class":46},[25,312,313],{"class":50},"'physics'",[25,315,149],{"class":46},[25,317,319,322,325,327,330],{"class":27,"line":318},8,[25,320,321],{"class":46},"child.",[25,323,324],{"class":42},"debug",[25,326,144],{"class":46},[25,328,329],{"class":50},"'Collider dodany'",[25,331,149],{"class":46},[25,333,335],{"class":27,"line":334},9,[25,336,292],{"emptyLinePlaceholder":291},[25,338,340,342,345,348,352,355,358,361,364],{"class":27,"line":339},10,[25,341,216],{"class":46},[25,343,344],{"class":42},"addSink",[25,346,347],{"class":46},"((",[25,349,351],{"class":350},"s4XuR","entry",[25,353,354],{"class":46},") ",[25,356,357],{"class":31},"=>",[25,359,360],{"class":46}," myExternalService.",[25,362,363],{"class":42},"send",[25,365,366],{"class":46},"(entry))\n",[62,368,369],{},"Panel logów filtruje bufor 400 wpisów po poziomie, kontekście i treści:",[15,371,373],{"className":17,"code":372,"language":19,"meta":20,"style":20},"logs.filter({ minLevel: 'warn', context: 'physics', text: 'collider' })\nlogs.counts()\nlogs.summary()\nlogs.toJSON()\n\npanel.setVisible(true)\npanel.toggleLevel('debug')\npanel.setFilter({ text: 'spawn' })\n",[22,374,375,402,411,420,429,433,447,460],{"__ignoreMap":20},[25,376,377,380,383,386,389,392,394,397,400],{"class":27,"line":28},[25,378,379],{"class":46},"logs.",[25,381,382],{"class":42},"filter",[25,384,385],{"class":46},"({ minLevel: ",[25,387,388],{"class":50},"'warn'",[25,390,391],{"class":46},", context: ",[25,393,313],{"class":50},[25,395,396],{"class":46},", text: ",[25,398,399],{"class":50},"'collider'",[25,401,60],{"class":46},[25,403,404,406,409],{"class":27,"line":135},[25,405,379],{"class":46},[25,407,408],{"class":42},"counts",[25,410,132],{"class":46},[25,412,413,415,418],{"class":27,"line":152},[25,414,379],{"class":46},[25,416,417],{"class":42},"summary",[25,419,132],{"class":46},[25,421,422,424,427],{"class":27,"line":169},[25,423,379],{"class":46},[25,425,426],{"class":42},"toJSON",[25,428,132],{"class":46},[25,430,431],{"class":27,"line":179},[25,432,292],{"emptyLinePlaceholder":291},[25,434,435,438,441,443,445],{"class":27,"line":288},[25,436,437],{"class":46},"panel.",[25,439,440],{"class":42},"setVisible",[25,442,144],{"class":46},[25,444,57],{"class":35},[25,446,149],{"class":46},[25,448,449,451,454,456,458],{"class":27,"line":295},[25,450,437],{"class":46},[25,452,453],{"class":42},"toggleLevel",[25,455,144],{"class":46},[25,457,224],{"class":50},[25,459,149],{"class":46},[25,461,462,464,467,470,473],{"class":27,"line":318},[25,463,437],{"class":46},[25,465,466],{"class":42},"setFilter",[25,468,469],{"class":46},"({ text: ",[25,471,472],{"class":50},"'spawn'",[25,474,60],{"class":46},[10,476,81],{"id":477},"debugviews",[62,479,480],{},"Widoki rysują obrysy colliderów, siatkę, osie i granice kamery:",[15,482,484],{"className":17,"code":483,"language":19,"meta":20,"style":20},"views.toggle('colliders')\nviews.toggle('grid')\nviews.set({ axes: true, bounds: true })\nviews.getSupport()\nviews.reset()\n",[22,485,486,501,514,533,542],{"__ignoreMap":20},[25,487,488,491,494,496,499],{"class":27,"line":28},[25,489,490],{"class":46},"views.",[25,492,493],{"class":42},"toggle",[25,495,144],{"class":46},[25,497,498],{"class":50},"'colliders'",[25,500,149],{"class":46},[25,502,503,505,507,509,512],{"class":27,"line":135},[25,504,490],{"class":46},[25,506,493],{"class":42},[25,508,144],{"class":46},[25,510,511],{"class":50},"'grid'",[25,513,149],{"class":46},[25,515,516,518,521,524,526,529,531],{"class":27,"line":152},[25,517,490],{"class":46},[25,519,520],{"class":42},"set",[25,522,523],{"class":46},"({ axes: ",[25,525,57],{"class":35},[25,527,528],{"class":46},", bounds: ",[25,530,57],{"class":35},[25,532,60],{"class":46},[25,534,535,537,540],{"class":27,"line":169},[25,536,490],{"class":46},[25,538,539],{"class":42},"getSupport",[25,541,132],{"class":46},[25,543,544,546,549],{"class":27,"line":179},[25,545,490],{"class":46},[25,547,548],{"class":42},"reset",[25,550,132],{"class":46},[62,552,553,554,85,557,560,561,564,565,568],{},"Semantyka idzie przez porty: ",[22,555,556],{},"RenderPort.setDebugLayer",[22,558,559],{},"PhysicsPort.setDebugDraw",". Brak metody w porcie = ",[22,562,563],{},"getSupport()"," zwraca ",[22,566,567],{},"false"," i widok nie jest oferowany — zero błędów runtime.",[10,570,84],{"id":571},"profiler",[15,573,575],{"className":17,"code":574,"language":19,"meta":20,"style":20},"const profiler = engine.getAdapter().getProfiler()\nprofiler.setEnabled(true)\n\nprofiler.begin('ai')\nthis.updateEnemies(dt)\nprofiler.end('ai')\n\nprofiler.record('pathfinding', 3.2)\nprofiler.snapshot()\nprofiler.getAverage('ai')\nprofiler.getFps()\n",[22,576,577,597,610,614,628,642,655,659,678,687,700],{"__ignoreMap":20},[25,578,579,581,584,586,588,590,592,595],{"class":27,"line":28},[25,580,32],{"class":31},[25,582,583],{"class":35}," profiler",[25,585,39],{"class":31},[25,587,120],{"class":46},[25,589,123],{"class":42},[25,591,126],{"class":46},[25,593,594],{"class":42},"getProfiler",[25,596,132],{"class":46},[25,598,599,602,604,606,608],{"class":27,"line":135},[25,600,601],{"class":46},"profiler.",[25,603,141],{"class":42},[25,605,144],{"class":46},[25,607,57],{"class":35},[25,609,149],{"class":46},[25,611,612],{"class":27,"line":152},[25,613,292],{"emptyLinePlaceholder":291},[25,615,616,618,621,623,626],{"class":27,"line":169},[25,617,601],{"class":46},[25,619,620],{"class":42},"begin",[25,622,144],{"class":46},[25,624,625],{"class":50},"'ai'",[25,627,149],{"class":46},[25,629,630,633,636,639],{"class":27,"line":179},[25,631,632],{"class":35},"this",[25,634,635],{"class":46},".",[25,637,638],{"class":42},"updateEnemies",[25,640,641],{"class":46},"(dt)\n",[25,643,644,646,649,651,653],{"class":27,"line":288},[25,645,601],{"class":46},[25,647,648],{"class":42},"end",[25,650,144],{"class":46},[25,652,625],{"class":50},[25,654,149],{"class":46},[25,656,657],{"class":27,"line":295},[25,658,292],{"emptyLinePlaceholder":291},[25,660,661,663,666,668,671,673,676],{"class":27,"line":318},[25,662,601],{"class":46},[25,664,665],{"class":42},"record",[25,667,144],{"class":46},[25,669,670],{"class":50},"'pathfinding'",[25,672,71],{"class":46},[25,674,675],{"class":35},"3.2",[25,677,149],{"class":46},[25,679,680,682,685],{"class":27,"line":334},[25,681,601],{"class":46},[25,683,684],{"class":42},"snapshot",[25,686,132],{"class":46},[25,688,689,691,694,696,698],{"class":27,"line":339},[25,690,601],{"class":46},[25,692,693],{"class":42},"getAverage",[25,695,144],{"class":46},[25,697,625],{"class":50},[25,699,149],{"class":46},[25,701,703,705,707],{"class":27,"line":702},11,[25,704,601],{"class":46},[25,706,174],{"class":42},[25,708,132],{"class":46},[710,711,714],"callout",{"title":712,"type":713},"Profiler poza debug jest darmowy","tip",[62,715,716,717,719,720,722,723,726],{},"Gdy profiler jest wyłączony, ",[22,718,620],{},"\u002F",[22,721,648],{}," zwracają się natychmiast. Po włączeniu każdy znacznik kosztuje dwa odczyty ",[22,724,725],{},"performance.now()",". Możesz zostawić znaczniki w kodzie na stałe.",[10,728,730],{"id":729},"raport-diagnostyczny","Raport diagnostyczny",[15,732,734],{"className":17,"code":733,"language":19,"meta":20,"style":20},"const report = engine.getDiagnosticsReport()\n\nawait navigator.clipboard.writeText(JSON.stringify(report, null, 2))\n",[22,735,736,752,756],{"__ignoreMap":20},[25,737,738,740,743,745,747,750],{"class":27,"line":28},[25,739,32],{"class":31},[25,741,742],{"class":35}," report",[25,744,39],{"class":31},[25,746,120],{"class":46},[25,748,749],{"class":42},"getDiagnosticsReport",[25,751,132],{"class":46},[25,753,754],{"class":27,"line":135},[25,755,292],{"emptyLinePlaceholder":291},[25,757,758,761,764,767,769,772,774,777,780,783,785,788],{"class":27,"line":152},[25,759,760],{"class":31},"await",[25,762,763],{"class":46}," navigator.clipboard.",[25,765,766],{"class":42},"writeText",[25,768,144],{"class":46},[25,770,771],{"class":35},"JSON",[25,773,635],{"class":46},[25,775,776],{"class":42},"stringify",[25,778,779],{"class":46},"(report, ",[25,781,782],{"class":35},"null",[25,784,71],{"class":46},[25,786,787],{"class":35},"2",[25,789,790],{"class":46},"))\n",[62,792,793,794,797,798,71,801,71,804,71,807,71,810,71,813,71,816,71,819,71,821,71,824,71,827,71,830,85,833,635],{},"Format ",[22,795,796],{},"b2d-diagnostics"," v1 zawiera sekcje: ",[22,799,800],{},"engine",[22,802,803],{},"config",[22,805,806],{},"time",[22,808,809],{},"scene",[22,811,812],{},"assets",[22,814,815],{},"audio",[22,817,818],{},"physics",[22,820,571],{},[22,822,823],{},"wasm",[22,825,826],{},"logs",[22,828,829],{},"memory",[22,831,832],{},"environment",[22,834,835],{},"findings",[15,837,839],{"className":17,"code":838,"language":19,"meta":20,"style":20},"diagnostics.report()\ndiagnostics.toJSON()\ndiagnostics.copy()\ndiagnostics.download('diag.json')\n",[22,840,841,851,859,868],{"__ignoreMap":20},[25,842,843,846,849],{"class":27,"line":28},[25,844,845],{"class":46},"diagnostics.",[25,847,848],{"class":42},"report",[25,850,132],{"class":46},[25,852,853,855,857],{"class":27,"line":135},[25,854,845],{"class":46},[25,856,426],{"class":42},[25,858,132],{"class":46},[25,860,861,863,866],{"class":27,"line":152},[25,862,845],{"class":46},[25,864,865],{"class":42},"copy",[25,867,132],{"class":46},[25,869,870,872,875,877,880],{"class":27,"line":169},[25,871,845],{"class":46},[25,873,874],{"class":42},"download",[25,876,144],{"class":46},[25,878,879],{"class":50},"'diag.json'",[25,881,149],{"class":46},[62,883,884],{},"Raport jest gotowy do wklejenia w issue — zawiera wszystko, czego potrzebuje druga osoba, żeby odtworzyć problem.",[10,886,888],{"id":887},"diagnostyka-assetów","Diagnostyka assetów",[15,890,892],{"className":17,"code":891,"language":19,"meta":20,"style":20},"const diagnosis = engine.getAssets().diagnose({\n  usedIds: ['hero', 'coin'],\n  references: []\n})\n",[22,893,894,916,931,936],{"__ignoreMap":20},[25,895,896,898,901,903,905,908,910,913],{"class":27,"line":28},[25,897,32],{"class":31},[25,899,900],{"class":35}," diagnosis",[25,902,39],{"class":31},[25,904,120],{"class":46},[25,906,907],{"class":42},"getAssets",[25,909,126],{"class":46},[25,911,912],{"class":42},"diagnose",[25,914,915],{"class":46},"({\n",[25,917,918,921,923,925,928],{"class":27,"line":135},[25,919,920],{"class":46},"  usedIds: [",[25,922,283],{"class":50},[25,924,71],{"class":46},[25,926,927],{"class":50},"'coin'",[25,929,930],{"class":46},"],\n",[25,932,933],{"class":27,"line":152},[25,934,935],{"class":46},"  references: []\n",[25,937,938],{"class":27,"line":169},[25,939,940],{"class":46},"})\n",[62,942,943,944,71,947,71,950,71,953,71,956,85,959,962],{},"Zwraca ",[22,945,946],{},"registered",[22,948,949],{},"unused",[22,951,952],{},"missing",[22,954,955],{},"failed",[22,957,958],{},"unlicensed",[22,960,961],{},"heaviest"," — szybki audyt pamięci i licencji.",[10,964,966],{"id":965},"przykład-namierzanie-spadku-fps","Przykład: namierzanie spadku FPS",[968,969,970],"steps",{},[971,972,973,980,983,990,997],"ol",{},[974,975,976,977,635],"li",{},"Włącz debug i profiler: ",[22,978,979],{},"engine.setDebug(true)",[974,981,982],{},"Sprawdź overlay — która scena i ile obiektów\u002Fciał jest aktywnych.",[974,984,985,986,719,988,635],{},"Otwórz panel logów i przefiltruj po ",[22,987,252],{},[22,989,272],{},[974,991,992,993,996],{},"Dodaj znaczniki ",[22,994,995],{},"profiler.begin\u002Fend"," wokół podejrzanych systemów.",[974,998,999,1000,1003,1004,635],{},"Pobierz raport ",[22,1001,1002],{},"diagnostics.download()"," i porównaj ",[22,1005,835],{},[1007,1008,1009],"style",{},"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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":20,"searchDepth":152,"depth":152,"links":1011},[1012,1013,1014,1015,1016,1017,1018,1019],{"id":12,"depth":135,"text":13},{"id":100,"depth":135,"text":70},{"id":189,"depth":135,"text":190},{"id":477,"depth":135,"text":81},{"id":571,"depth":135,"text":84},{"id":729,"depth":135,"text":730},{"id":887,"depth":135,"text":888},{"id":965,"depth":135,"text":966},"DebugOverlay, LogBuffer i LogPanel, DebugViews, Profiler i raport diagnostyczny JSON. Kompletny toolbox do diagnozowania gier.","md",{},"\u002Fgame-engine\u002Fadvanced\u002Fdebugging",{"title":5,"description":1020},"01.game-engine\u002F08.advanced\u002F03.debugging","ySm1cD7udzI5Z_DWuqG5Jqcq6jQK6A6LAW1MG_bBTpQ",[1028,1033],{"title":1029,"path":1030,"stem":1031,"description":1032,"children":-1},"WebAssembly","\u002Fgame-engine\u002Fadvanced\u002Fwasm","01.game-engine\u002F08.advanced\u002F02.wasm","Opcjonalny most TS↔WASM dla ciężkiego compute. Instalacja Emscripten, kompilacja C++23, zasady granicy i graceful fallback.",{"title":1034,"path":1035,"stem":1036,"description":1037,"children":-1},"Wydajność i benchmarki","\u002Fgame-engine\u002Fadvanced\u002Fperformance","01.game-engine\u002F08.advanced\u002F04.performance","Zasady gorącej pętli, dirty sync, benchmarki Node z progami regresji i raport rozmiaru bundla. Liczby z pomiarów, nie z obietnic.",[1039,1150,1211],{"title":1040,"path":1041,"stem":1042,"children":1043},"2D Game Engine","\u002Fgame-engine","01.game-engine\u002F01.index",[1044,1046,1050,1054,1058,1084,1113,1126,1138,1142,1146],{"title":1045,"path":1041,"stem":1042},"Przegląd",{"title":1047,"path":1048,"stem":1049},"Szybki start","\u002Fgame-engine\u002Fgetting-started","01.game-engine\u002F02.getting-started",{"title":1051,"path":1052,"stem":1053},"Konfiguracja","\u002Fgame-engine\u002Fconfiguration","01.game-engine\u002F03.configuration",{"title":1055,"path":1056,"stem":1057},"Architektura","\u002Fgame-engine\u002Farchitecture","01.game-engine\u002F04.architecture",{"title":1059,"path":1060,"stem":1061,"children":1062,"page":1083},"Rdzeń","\u002Fgame-engine\u002Fcore","01.game-engine\u002F05.core",[1063,1067,1071,1075,1079],{"title":1064,"path":1065,"stem":1066},"Silnik i cykl życia","\u002Fgame-engine\u002Fcore\u002Fengine","01.game-engine\u002F05.core\u002F01.engine",{"title":1068,"path":1069,"stem":1070},"Czas i pętla gry","\u002Fgame-engine\u002Fcore\u002Ftime","01.game-engine\u002F05.core\u002F02.time",{"title":1072,"path":1073,"stem":1074},"Sceny","\u002Fgame-engine\u002Fcore\u002Fscenes","01.game-engine\u002F05.core\u002F03.scenes",{"title":1076,"path":1077,"stem":1078},"Obiekty i komponenty","\u002Fgame-engine\u002Fcore\u002Fobjects","01.game-engine\u002F05.core\u002F04.objects",{"title":1080,"path":1081,"stem":1082},"Zdarzenia i harmonogram","\u002Fgame-engine\u002Fcore\u002Fevents","01.game-engine\u002F05.core\u002F05.events",false,{"title":1085,"path":1086,"stem":1087,"children":1088,"page":1083},"Systemy","\u002Fgame-engine\u002Fsystems","01.game-engine\u002F06.systems",[1089,1093,1097,1101,1105,1109],{"title":1090,"path":1091,"stem":1092},"Zasoby (AssetManager)","\u002Fgame-engine\u002Fsystems\u002Fassets","01.game-engine\u002F06.systems\u002F01.assets",{"title":1094,"path":1095,"stem":1096},"Wejście (InputManager)","\u002Fgame-engine\u002Fsystems\u002Finput","01.game-engine\u002F06.systems\u002F02.input",{"title":1098,"path":1099,"stem":1100},"Fizyka (PhysicsManager)","\u002Fgame-engine\u002Fsystems\u002Fphysics","01.game-engine\u002F06.systems\u002F03.physics",{"title":1102,"path":1103,"stem":1104},"Kamera (CameraManager)","\u002Fgame-engine\u002Fsystems\u002Fcamera","01.game-engine\u002F06.systems\u002F04.camera",{"title":1106,"path":1107,"stem":1108},"Audio (AudioManager)","\u002Fgame-engine\u002Fsystems\u002Faudio","01.game-engine\u002F06.systems\u002F05.audio",{"title":1110,"path":1111,"stem":1112},"Tweeny i easing","\u002Fgame-engine\u002Fsystems\u002Ftweens","01.game-engine\u002F06.systems\u002F06.tweens",{"title":1114,"path":1115,"stem":1116,"children":1117,"page":1083},"Dane i zapisy","\u002Fgame-engine\u002Fdata","01.game-engine\u002F07.data",[1118,1122],{"title":1119,"path":1120,"stem":1121},"Format projektu","\u002Fgame-engine\u002Fdata\u002Fproject-format","01.game-engine\u002F07.data\u002F01.project-format",{"title":1123,"path":1124,"stem":1125},"Zapisy gry","\u002Fgame-engine\u002Fdata\u002Fsaves","01.game-engine\u002F07.data\u002F02.saves",{"title":1127,"path":1128,"stem":1129,"children":1130,"page":1083},"Zaawansowane","\u002Fgame-engine\u002Fadvanced","01.game-engine\u002F08.advanced",[1131,1135,1136,1137],{"title":1132,"path":1133,"stem":1134},"Pluginy","\u002Fgame-engine\u002Fadvanced\u002Fplugins","01.game-engine\u002F08.advanced\u002F01.plugins",{"title":1029,"path":1030,"stem":1031},{"title":5,"path":1023,"stem":1025},{"title":1034,"path":1035,"stem":1036},{"title":1139,"path":1140,"stem":1141},"Wdrożenie","\u002Fgame-engine\u002Fdeployment","01.game-engine\u002F09.deployment",{"title":1143,"path":1144,"stem":1145},"Przykłady","\u002Fgame-engine\u002Fexamples","01.game-engine\u002F10.examples",{"title":1147,"path":1148,"stem":1149},"Decyzje architektoniczne","\u002Fgame-engine\u002Fadr","01.game-engine\u002F11.adr",{"title":1151,"path":1152,"stem":1153,"children":1154},"Reverse Proxy","\u002Freverse-proxy","02.reverse-proxy\u002F01.index",[1155,1156,1159,1162,1183],{"title":1045,"path":1152,"stem":1153},{"title":1047,"path":1157,"stem":1158},"\u002Freverse-proxy\u002Fgetting-started","02.reverse-proxy\u002F02.getting-started",{"title":1051,"path":1160,"stem":1161},"\u002Freverse-proxy\u002Fconfiguration","02.reverse-proxy\u002F03.configuration",{"title":1163,"path":1164,"stem":1165,"children":1166,"page":1083},"Ruch i odporność","\u002Freverse-proxy\u002Ftraffic","02.reverse-proxy\u002F04.traffic",[1167,1171,1175,1179],{"title":1168,"path":1169,"stem":1170},"Load balancing","\u002Freverse-proxy\u002Ftraffic\u002Fload-balancing","02.reverse-proxy\u002F04.traffic\u002F01.load-balancing",{"title":1172,"path":1173,"stem":1174},"Health checks","\u002Freverse-proxy\u002Ftraffic\u002Fhealth-checks","02.reverse-proxy\u002F04.traffic\u002F02.health-checks",{"title":1176,"path":1177,"stem":1178},"Circuit breaker i retry","\u002Freverse-proxy\u002Ftraffic\u002Fresilience","02.reverse-proxy\u002F04.traffic\u002F03.resilience",{"title":1180,"path":1181,"stem":1182},"Rate limiting","\u002Freverse-proxy\u002Ftraffic\u002Frate-limiting","02.reverse-proxy\u002F04.traffic\u002F04.rate-limiting",{"title":1184,"path":1185,"stem":1186,"children":1187,"page":1083},"Operacje i wdrożenie","\u002Freverse-proxy\u002Foperations","02.reverse-proxy\u002F05.operations",[1188,1192,1196,1200,1203,1207],{"title":1189,"path":1190,"stem":1191},"Admin API","\u002Freverse-proxy\u002Foperations\u002Fadmin-api","02.reverse-proxy\u002F05.operations\u002F01.admin-api",{"title":1193,"path":1194,"stem":1195},"Metryki i monitoring","\u002Freverse-proxy\u002Foperations\u002Fobservability","02.reverse-proxy\u002F05.operations\u002F02.observability",{"title":1197,"path":1198,"stem":1199},"Bezpieczeństwo","\u002Freverse-proxy\u002Foperations\u002Fsecurity","02.reverse-proxy\u002F05.operations\u002F03.security",{"title":1139,"path":1201,"stem":1202},"\u002Freverse-proxy\u002Foperations\u002Fdeployment","02.reverse-proxy\u002F05.operations\u002F04.deployment",{"title":1204,"path":1205,"stem":1206},"Benchmarki","\u002Freverse-proxy\u002Foperations\u002Fbenchmarks","02.reverse-proxy\u002F05.operations\u002F05.benchmarks",{"title":1208,"path":1209,"stem":1210},"Troubleshooting","\u002Freverse-proxy\u002Foperations\u002Ftroubleshooting","02.reverse-proxy\u002F05.operations\u002F06.troubleshooting",{"title":1212,"path":1213,"stem":1214,"children":1215},"Vector Engine","\u002Fvector-engine","03.vector-engine\u002F01.index",[1216,1217,1220,1241,1254,1274],{"title":1045,"path":1213,"stem":1214},{"title":1047,"path":1218,"stem":1219},"\u002Fvector-engine\u002Fgetting-started","03.vector-engine\u002F02.getting-started",{"title":1221,"path":1222,"stem":1223,"children":1224,"page":1083},"Scena","\u002Fvector-engine\u002Fscene","03.vector-engine\u002F03.scene",[1225,1229,1233,1237],{"title":1226,"path":1227,"stem":1228},"Format sceny 1.0","\u002Fvector-engine\u002Fscene\u002Fscene-format","03.vector-engine\u002F03.scene\u002F01.scene-format",{"title":1230,"path":1231,"stem":1232},"Obiekty sceny","\u002Fvector-engine\u002Fscene\u002Fobjects","03.vector-engine\u002F03.scene\u002F02.objects",{"title":1234,"path":1235,"stem":1236},"Gradienty i warstwy","\u002Fvector-engine\u002Fscene\u002Fgradients-layers","03.vector-engine\u002F03.scene\u002F03.gradients-layers",{"title":1238,"path":1239,"stem":1240},"Przykłady scen","\u002Fvector-engine\u002Fscene\u002Fexamples","03.vector-engine\u002F03.scene\u002F04.examples",{"title":1242,"path":1243,"stem":1244,"children":1245,"page":1083},"Eksport","\u002Fvector-engine\u002Fexport","03.vector-engine\u002F04.export",[1246,1250],{"title":1247,"path":1248,"stem":1249},"Formaty eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-formats","03.vector-engine\u002F04.export\u002F01.export-formats",{"title":1251,"path":1252,"stem":1253},"Proces eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-workflow","03.vector-engine\u002F04.export\u002F02.export-workflow",{"title":1255,"path":1256,"stem":1257,"children":1258,"page":1083},"Wnętrze silnika","\u002Fvector-engine\u002Finternals","03.vector-engine\u002F05.internals",[1259,1262,1266,1270],{"title":1055,"path":1260,"stem":1261},"\u002Fvector-engine\u002Finternals\u002Farchitecture","03.vector-engine\u002F05.internals\u002F01.architecture",{"title":1263,"path":1264,"stem":1265},"WebAssembly i workery","\u002Fvector-engine\u002Finternals\u002Fwasm","03.vector-engine\u002F05.internals\u002F02.wasm",{"title":1267,"path":1268,"stem":1269},"Workspace i panele","\u002Fvector-engine\u002Finternals\u002Fworkspace","03.vector-engine\u002F05.internals\u002F03.workspace",{"title":1271,"path":1272,"stem":1273},"Breakpointy","\u002Fvector-engine\u002Finternals\u002Fbreakpoints","03.vector-engine\u002F05.internals\u002F04.breakpoints",{"title":1275,"path":1276,"stem":1277},"Wdrożenie na Vercel","\u002Fvector-engine\u002Fdeployment","03.vector-engine\u002F06.deployment",1793986307932]