[{"data":1,"prerenderedAt":855},["ShallowReactive",2],{"doc:\u002Freverse-proxy\u002Ftraffic\u002Fhealth-checks":3,"surround:\u002Freverse-proxy\u002Ftraffic\u002Fhealth-checks":605,"navigation":616},{"id":4,"title":5,"body":6,"description":597,"extension":598,"meta":599,"navigation":600,"path":601,"seo":602,"stem":603,"__hash__":604},"docs\u002F02.reverse-proxy\u002F04.traffic\u002F02.health-checks.md","Health checks",{"type":7,"value":8,"toc":588},"minimark",[9,14,27,37,49,53,131,199,203,257,260,264,319,322,326,332,339,343,390,419,425,429,453,569,584],[10,11,13],"h2",{"id":12},"jak-działa","Jak działa",[15,16,17,18,22,23,26],"p",{},"Health checker co ",[19,20,21],"code",{},"interval"," wysyła probe na ",[19,24,25],{},"path"," każdego backendu. Wyniki przechodzą przez progi:",[28,29,35],"pre",{"className":30,"code":32,"language":33,"meta":34},[31],"language-text","probe OK × healthy_threshold   → healthy\nprobe FAIL × unhealthy_threshold → unhealthy\n","text","",[19,36,32],{"__ignoreMap":34},[15,38,39,40,44,45,48],{},"Domyślnie: ",[41,42,43],"strong",{},"2 sukcesy"," z rzędu oznaczają healthy, ",[41,46,47],{},"3 porażki"," — unhealthy. Asymetria jest celowa: szybkie wykrycie awarii, ostrożne przywracanie.",[10,50,52],{"id":51},"konfiguracja","Konfiguracja",[28,54,58],{"className":55,"code":56,"language":57,"meta":34,"style":34},"language-yaml shiki shiki-themes github-light github-dark","health_check:\n  interval: 5s\n  timeout: 2s\n  path: \u002Fhealth\n  healthy_threshold: 2\n  unhealthy_threshold: 3\n","yaml",[19,59,60,73,86,97,108,120],{"__ignoreMap":34},[61,62,65,69],"span",{"class":63,"line":64},"line",1,[61,66,68],{"class":67},"s9eBZ","health_check",[61,70,72],{"class":71},"sVt8B",":\n",[61,74,76,79,82],{"class":63,"line":75},2,[61,77,78],{"class":67},"  interval",[61,80,81],{"class":71},": ",[61,83,85],{"class":84},"sZZnC","5s\n",[61,87,89,92,94],{"class":63,"line":88},3,[61,90,91],{"class":67},"  timeout",[61,93,81],{"class":71},[61,95,96],{"class":84},"2s\n",[61,98,100,103,105],{"class":63,"line":99},4,[61,101,102],{"class":67},"  path",[61,104,81],{"class":71},[61,106,107],{"class":84},"\u002Fhealth\n",[61,109,111,114,116],{"class":63,"line":110},5,[61,112,113],{"class":67},"  healthy_threshold",[61,115,81],{"class":71},[61,117,119],{"class":118},"sj4cs","2\n",[61,121,123,126,128],{"class":63,"line":122},6,[61,124,125],{"class":67},"  unhealthy_threshold",[61,127,81],{"class":71},[61,129,130],{"class":118},"3\n",[132,133,134,147],"table",{},[135,136,137],"thead",{},[138,139,140,144],"tr",{},[141,142,143],"th",{},"Pole",[141,145,146],{},"Znaczenie",[148,149,150,160,170,179,189],"tbody",{},[138,151,152,157],{},[153,154,155],"td",{},[19,156,21],{},[153,158,159],{},"Czas między rundami sondowania",[138,161,162,167],{},[153,163,164],{},[19,165,166],{},"timeout",[153,168,169],{},"Timeout pojedynczego probe",[138,171,172,176],{},[153,173,174],{},[19,175,25],{},[153,177,178],{},"Endpoint zdrowia na backendzie",[138,180,181,186],{},[153,182,183],{},[19,184,185],{},"healthy_threshold",[153,187,188],{},"Sukcesy z rzędu do przywrócenia",[138,190,191,196],{},[153,192,193],{},[19,194,195],{},"unhealthy_threshold",[153,197,198],{},"Porażki z rzędu do wyłączenia",[10,200,202],{"id":201},"przykład-agresywne-wykrywanie-awarii","Przykład: agresywne wykrywanie awarii",[28,204,206],{"className":55,"code":205,"language":57,"meta":34,"style":34},"health_check:\n  interval: 2s\n  timeout: 1s\n  path: \u002Fhealthz\n  healthy_threshold: 1\n  unhealthy_threshold: 2\n",[19,207,208,214,222,231,240,249],{"__ignoreMap":34},[61,209,210,212],{"class":63,"line":64},[61,211,68],{"class":67},[61,213,72],{"class":71},[61,215,216,218,220],{"class":63,"line":75},[61,217,78],{"class":67},[61,219,81],{"class":71},[61,221,96],{"class":84},[61,223,224,226,228],{"class":63,"line":88},[61,225,91],{"class":67},[61,227,81],{"class":71},[61,229,230],{"class":84},"1s\n",[61,232,233,235,237],{"class":63,"line":99},[61,234,102],{"class":67},[61,236,81],{"class":71},[61,238,239],{"class":84},"\u002Fhealthz\n",[61,241,242,244,246],{"class":63,"line":110},[61,243,113],{"class":67},[61,245,81],{"class":71},[61,247,248],{"class":118},"1\n",[61,250,251,253,255],{"class":63,"line":122},[61,252,125],{"class":67},[61,254,81],{"class":71},[61,256,119],{"class":118},[15,258,259],{},"Backend wypada z rotacji po ~4 s od awarii i wraca po pierwszym udanym probe. Dobre dla stateless API, gdzie szybki failover jest ważniejszy niż ostrożność.",[10,261,263],{"id":262},"przykład-konserwatywne-przywracanie","Przykład: konserwatywne przywracanie",[28,265,267],{"className":55,"code":266,"language":57,"meta":34,"style":34},"health_check:\n  interval: 10s\n  timeout: 3s\n  path: \u002Fready\n  healthy_threshold: 5\n  unhealthy_threshold: 3\n",[19,268,269,275,284,293,302,311],{"__ignoreMap":34},[61,270,271,273],{"class":63,"line":64},[61,272,68],{"class":67},[61,274,72],{"class":71},[61,276,277,279,281],{"class":63,"line":75},[61,278,78],{"class":67},[61,280,81],{"class":71},[61,282,283],{"class":84},"10s\n",[61,285,286,288,290],{"class":63,"line":88},[61,287,91],{"class":67},[61,289,81],{"class":71},[61,291,292],{"class":84},"3s\n",[61,294,295,297,299],{"class":63,"line":99},[61,296,102],{"class":67},[61,298,81],{"class":71},[61,300,301],{"class":84},"\u002Fready\n",[61,303,304,306,308],{"class":63,"line":110},[61,305,113],{"class":67},[61,307,81],{"class":71},[61,309,310],{"class":118},"5\n",[61,312,313,315,317],{"class":63,"line":122},[61,314,125],{"class":67},[61,316,81],{"class":71},[61,318,130],{"class":118},[15,320,321],{},"Backend wraca dopiero po 5 kolejnych sukcesach (~50 s) — dobre dla backendów z długim warmupem (cache, JIT, połączenia do DB).",[10,323,325],{"id":324},"failover-w-praktyce","Failover w praktyce",[28,327,330],{"className":328,"code":329,"language":33,"meta":34},[31],"Backend 1: healthy   ──┐\nBackend 2: healthy   ──┼── picker wybiera oba\n                       │\nBackend 1: 3× FAIL   ──┘── unhealthy → picker wybiera tylko Backend 2\n                       │\nBackend 1: 2× OK     ──── healthy → wraca do rotacji\n",[19,331,329],{"__ignoreMap":34},[15,333,334,335,338],{},"W czasie failoveru requesty idą wyłącznie do zdrowych backendów. Jeśli żaden nie jest dostępny, proxy zwraca ",[19,336,337],{},"503 service_unavailable"," z request ID.",[10,340,342],{"id":341},"metryki","Metryki",[132,344,345,358],{},[135,346,347],{},[138,348,349,352,355],{},[141,350,351],{},"Metryka",[141,353,354],{},"Typ",[141,356,357],{},"Opis",[148,359,360,373],{},[138,361,362,367,370],{},[153,363,364],{},[19,365,366],{},"backend_healthy",[153,368,369],{},"gauge",[153,371,372],{},"1 = healthy, 0 = unhealthy",[138,374,375,380,383],{},[153,376,377],{},[19,378,379],{},"backend_healthchecks_total",[153,381,382],{},"counter",[153,384,385,386,389],{},"Wyniki probe (",[19,387,388],{},"result=\"success|failure\"",")",[28,391,395],{"className":392,"code":393,"language":394,"meta":34,"style":34},"language-bash shiki shiki-themes github-light github-dark","curl -s http:\u002F\u002Flocalhost:8080\u002Fmetrics | grep backend_healthy\n","bash",[19,396,397],{"__ignoreMap":34},[61,398,399,403,406,409,413,416],{"class":63,"line":64},[61,400,402],{"class":401},"sScJk","curl",[61,404,405],{"class":118}," -s",[61,407,408],{"class":84}," http:\u002F\u002Flocalhost:8080\u002Fmetrics",[61,410,412],{"class":411},"szBVR"," |",[61,414,415],{"class":401}," grep",[61,417,418],{"class":84}," backend_healthy\n",[28,420,423],{"className":421,"code":422,"language":33,"meta":34},[31],"backend_healthy{backend=\"http:\u002F\u002Flocalhost:8081\"} 1\nbackend_healthy{backend=\"http:\u002F\u002Flocalhost:8082\"} 0\n",[19,424,422],{"__ignoreMap":34},[10,426,428],{"id":427},"podgląd-stanu","Podgląd stanu",[28,430,432],{"className":392,"code":431,"language":394,"meta":34,"style":34},"curl -H \"Authorization: Bearer $ADMIN_TOKEN\" http:\u002F\u002Flocalhost:8080\u002Fadmin\u002Fbackends\n",[19,433,434],{"__ignoreMap":34},[61,435,436,438,441,444,447,450],{"class":63,"line":64},[61,437,402],{"class":401},[61,439,440],{"class":118}," -H",[61,442,443],{"class":84}," \"Authorization: Bearer ",[61,445,446],{"class":71},"$ADMIN_TOKEN",[61,448,449],{"class":84},"\"",[61,451,452],{"class":84}," http:\u002F\u002Flocalhost:8080\u002Fadmin\u002Fbackends\n",[28,454,458],{"className":455,"code":456,"language":457,"meta":34,"style":34},"language-json shiki shiki-themes github-light github-dark","{\n  \"backends\": [\n    { \"url\": \"http:\u002F\u002Flocalhost:8081\", \"healthy\": true, \"admin_down\": false, \"in_flight\": 2 },\n    { \"url\": \"http:\u002F\u002Flocalhost:8082\", \"healthy\": false, \"admin_down\": false, \"in_flight\": 0 }\n  ]\n}\n","json",[19,459,460,465,473,520,559,564],{"__ignoreMap":34},[61,461,462],{"class":63,"line":64},[61,463,464],{"class":71},"{\n",[61,466,467,470],{"class":63,"line":75},[61,468,469],{"class":118},"  \"backends\"",[61,471,472],{"class":71},": [\n",[61,474,475,478,481,483,486,489,492,494,497,499,502,504,507,509,512,514,517],{"class":63,"line":88},[61,476,477],{"class":71},"    { ",[61,479,480],{"class":118},"\"url\"",[61,482,81],{"class":71},[61,484,485],{"class":84},"\"http:\u002F\u002Flocalhost:8081\"",[61,487,488],{"class":71},", ",[61,490,491],{"class":118},"\"healthy\"",[61,493,81],{"class":71},[61,495,496],{"class":118},"true",[61,498,488],{"class":71},[61,500,501],{"class":118},"\"admin_down\"",[61,503,81],{"class":71},[61,505,506],{"class":118},"false",[61,508,488],{"class":71},[61,510,511],{"class":118},"\"in_flight\"",[61,513,81],{"class":71},[61,515,516],{"class":118},"2",[61,518,519],{"class":71}," },\n",[61,521,522,524,526,528,531,533,535,537,539,541,543,545,547,549,551,553,556],{"class":63,"line":99},[61,523,477],{"class":71},[61,525,480],{"class":118},[61,527,81],{"class":71},[61,529,530],{"class":84},"\"http:\u002F\u002Flocalhost:8082\"",[61,532,488],{"class":71},[61,534,491],{"class":118},[61,536,81],{"class":71},[61,538,506],{"class":118},[61,540,488],{"class":71},[61,542,501],{"class":118},[61,544,81],{"class":71},[61,546,506],{"class":118},[61,548,488],{"class":71},[61,550,511],{"class":118},[61,552,81],{"class":71},[61,554,555],{"class":118},"0",[61,557,558],{"class":71}," }\n",[61,560,561],{"class":63,"line":110},[61,562,563],{"class":71},"  ]\n",[61,565,566],{"class":63,"line":122},[61,567,568],{"class":71},"}\n",[570,571,573],"callout",{"type":572},"tip",[15,574,575,576,579,580,583],{},"Health check a circuit breaker to dwie niezależne warstwy: health check sonduje ",[41,577,578],{},"aktywnie"," w tle, breaker reaguje ",[41,581,582],{},"pasywnie"," na błędy prawdziwych requestów. Razem dają szybszy failover niż każdy z osobna.",[585,586,587],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}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 pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":34,"searchDepth":88,"depth":88,"links":589},[590,591,592,593,594,595,596],{"id":12,"depth":75,"text":13},{"id":51,"depth":75,"text":52},{"id":201,"depth":75,"text":202},{"id":262,"depth":75,"text":263},{"id":324,"depth":75,"text":325},{"id":341,"depth":75,"text":342},{"id":427,"depth":75,"text":428},"Aktywne sondowanie backendów z progami healthy\u002Funhealthy, timeoutami i natychmiastowym failoverem. Konfiguracja i metryki.","md",{},true,"\u002Freverse-proxy\u002Ftraffic\u002Fhealth-checks",{"title":5,"description":597},"02.reverse-proxy\u002F04.traffic\u002F02.health-checks","6BnHUvqxFO28_toQB0iypdFfOel0Iqu3bU_88U05D9M",[606,611],{"title":607,"path":608,"stem":609,"description":610,"children":-1},"Load balancing","\u002Freverse-proxy\u002Ftraffic\u002Fload-balancing","02.reverse-proxy\u002F04.traffic\u002F01.load-balancing","Round Robin, Weighted Round Robin i Least Connections — jak działają, kiedy którą wybrać i jak wygląda failover.",{"title":612,"path":613,"stem":614,"description":615,"children":-1},"Circuit breaker i retry","\u002Freverse-proxy\u002Ftraffic\u002Fresilience","02.reverse-proxy\u002F04.traffic\u002F03.resilience","Maszyna stanów closed → open → half-open, fast-fail, bezpieczna polityka ponowień i koperty błędów z request ID.",[617,736,788],{"title":618,"path":619,"stem":620,"children":621},"2D Game Engine","\u002Fgame-engine","01.game-engine\u002F01.index",[622,624,628,631,635,661,690,703,724,728,732],{"title":623,"path":619,"stem":620},"Przegląd",{"title":625,"path":626,"stem":627},"Szybki start","\u002Fgame-engine\u002Fgetting-started","01.game-engine\u002F02.getting-started",{"title":52,"path":629,"stem":630},"\u002Fgame-engine\u002Fconfiguration","01.game-engine\u002F03.configuration",{"title":632,"path":633,"stem":634},"Architektura","\u002Fgame-engine\u002Farchitecture","01.game-engine\u002F04.architecture",{"title":636,"path":637,"stem":638,"children":639,"page":660},"Rdzeń","\u002Fgame-engine\u002Fcore","01.game-engine\u002F05.core",[640,644,648,652,656],{"title":641,"path":642,"stem":643},"Silnik i cykl życia","\u002Fgame-engine\u002Fcore\u002Fengine","01.game-engine\u002F05.core\u002F01.engine",{"title":645,"path":646,"stem":647},"Czas i pętla gry","\u002Fgame-engine\u002Fcore\u002Ftime","01.game-engine\u002F05.core\u002F02.time",{"title":649,"path":650,"stem":651},"Sceny","\u002Fgame-engine\u002Fcore\u002Fscenes","01.game-engine\u002F05.core\u002F03.scenes",{"title":653,"path":654,"stem":655},"Obiekty i komponenty","\u002Fgame-engine\u002Fcore\u002Fobjects","01.game-engine\u002F05.core\u002F04.objects",{"title":657,"path":658,"stem":659},"Zdarzenia i harmonogram","\u002Fgame-engine\u002Fcore\u002Fevents","01.game-engine\u002F05.core\u002F05.events",false,{"title":662,"path":663,"stem":664,"children":665,"page":660},"Systemy","\u002Fgame-engine\u002Fsystems","01.game-engine\u002F06.systems",[666,670,674,678,682,686],{"title":667,"path":668,"stem":669},"Zasoby (AssetManager)","\u002Fgame-engine\u002Fsystems\u002Fassets","01.game-engine\u002F06.systems\u002F01.assets",{"title":671,"path":672,"stem":673},"Wejście (InputManager)","\u002Fgame-engine\u002Fsystems\u002Finput","01.game-engine\u002F06.systems\u002F02.input",{"title":675,"path":676,"stem":677},"Fizyka (PhysicsManager)","\u002Fgame-engine\u002Fsystems\u002Fphysics","01.game-engine\u002F06.systems\u002F03.physics",{"title":679,"path":680,"stem":681},"Kamera (CameraManager)","\u002Fgame-engine\u002Fsystems\u002Fcamera","01.game-engine\u002F06.systems\u002F04.camera",{"title":683,"path":684,"stem":685},"Audio (AudioManager)","\u002Fgame-engine\u002Fsystems\u002Faudio","01.game-engine\u002F06.systems\u002F05.audio",{"title":687,"path":688,"stem":689},"Tweeny i easing","\u002Fgame-engine\u002Fsystems\u002Ftweens","01.game-engine\u002F06.systems\u002F06.tweens",{"title":691,"path":692,"stem":693,"children":694,"page":660},"Dane i zapisy","\u002Fgame-engine\u002Fdata","01.game-engine\u002F07.data",[695,699],{"title":696,"path":697,"stem":698},"Format projektu","\u002Fgame-engine\u002Fdata\u002Fproject-format","01.game-engine\u002F07.data\u002F01.project-format",{"title":700,"path":701,"stem":702},"Zapisy gry","\u002Fgame-engine\u002Fdata\u002Fsaves","01.game-engine\u002F07.data\u002F02.saves",{"title":704,"path":705,"stem":706,"children":707,"page":660},"Zaawansowane","\u002Fgame-engine\u002Fadvanced","01.game-engine\u002F08.advanced",[708,712,716,720],{"title":709,"path":710,"stem":711},"Pluginy","\u002Fgame-engine\u002Fadvanced\u002Fplugins","01.game-engine\u002F08.advanced\u002F01.plugins",{"title":713,"path":714,"stem":715},"WebAssembly","\u002Fgame-engine\u002Fadvanced\u002Fwasm","01.game-engine\u002F08.advanced\u002F02.wasm",{"title":717,"path":718,"stem":719},"Debugowanie","\u002Fgame-engine\u002Fadvanced\u002Fdebugging","01.game-engine\u002F08.advanced\u002F03.debugging",{"title":721,"path":722,"stem":723},"Wydajność i benchmarki","\u002Fgame-engine\u002Fadvanced\u002Fperformance","01.game-engine\u002F08.advanced\u002F04.performance",{"title":725,"path":726,"stem":727},"Wdrożenie","\u002Fgame-engine\u002Fdeployment","01.game-engine\u002F09.deployment",{"title":729,"path":730,"stem":731},"Przykłady","\u002Fgame-engine\u002Fexamples","01.game-engine\u002F10.examples",{"title":733,"path":734,"stem":735},"Decyzje architektoniczne","\u002Fgame-engine\u002Fadr","01.game-engine\u002F11.adr",{"title":737,"path":738,"stem":739,"children":740},"Reverse Proxy","\u002Freverse-proxy","02.reverse-proxy\u002F01.index",[741,742,745,748,760],{"title":623,"path":738,"stem":739},{"title":625,"path":743,"stem":744},"\u002Freverse-proxy\u002Fgetting-started","02.reverse-proxy\u002F02.getting-started",{"title":52,"path":746,"stem":747},"\u002Freverse-proxy\u002Fconfiguration","02.reverse-proxy\u002F03.configuration",{"title":749,"path":750,"stem":751,"children":752,"page":660},"Ruch i odporność","\u002Freverse-proxy\u002Ftraffic","02.reverse-proxy\u002F04.traffic",[753,754,755,756],{"title":607,"path":608,"stem":609},{"title":5,"path":601,"stem":603},{"title":612,"path":613,"stem":614},{"title":757,"path":758,"stem":759},"Rate limiting","\u002Freverse-proxy\u002Ftraffic\u002Frate-limiting","02.reverse-proxy\u002F04.traffic\u002F04.rate-limiting",{"title":761,"path":762,"stem":763,"children":764,"page":660},"Operacje i wdrożenie","\u002Freverse-proxy\u002Foperations","02.reverse-proxy\u002F05.operations",[765,769,773,777,780,784],{"title":766,"path":767,"stem":768},"Admin API","\u002Freverse-proxy\u002Foperations\u002Fadmin-api","02.reverse-proxy\u002F05.operations\u002F01.admin-api",{"title":770,"path":771,"stem":772},"Metryki i monitoring","\u002Freverse-proxy\u002Foperations\u002Fobservability","02.reverse-proxy\u002F05.operations\u002F02.observability",{"title":774,"path":775,"stem":776},"Bezpieczeństwo","\u002Freverse-proxy\u002Foperations\u002Fsecurity","02.reverse-proxy\u002F05.operations\u002F03.security",{"title":725,"path":778,"stem":779},"\u002Freverse-proxy\u002Foperations\u002Fdeployment","02.reverse-proxy\u002F05.operations\u002F04.deployment",{"title":781,"path":782,"stem":783},"Benchmarki","\u002Freverse-proxy\u002Foperations\u002Fbenchmarks","02.reverse-proxy\u002F05.operations\u002F05.benchmarks",{"title":785,"path":786,"stem":787},"Troubleshooting","\u002Freverse-proxy\u002Foperations\u002Ftroubleshooting","02.reverse-proxy\u002F05.operations\u002F06.troubleshooting",{"title":789,"path":790,"stem":791,"children":792},"Vector Engine","\u002Fvector-engine","03.vector-engine\u002F01.index",[793,794,797,818,831,851],{"title":623,"path":790,"stem":791},{"title":625,"path":795,"stem":796},"\u002Fvector-engine\u002Fgetting-started","03.vector-engine\u002F02.getting-started",{"title":798,"path":799,"stem":800,"children":801,"page":660},"Scena","\u002Fvector-engine\u002Fscene","03.vector-engine\u002F03.scene",[802,806,810,814],{"title":803,"path":804,"stem":805},"Format sceny 1.0","\u002Fvector-engine\u002Fscene\u002Fscene-format","03.vector-engine\u002F03.scene\u002F01.scene-format",{"title":807,"path":808,"stem":809},"Obiekty sceny","\u002Fvector-engine\u002Fscene\u002Fobjects","03.vector-engine\u002F03.scene\u002F02.objects",{"title":811,"path":812,"stem":813},"Gradienty i warstwy","\u002Fvector-engine\u002Fscene\u002Fgradients-layers","03.vector-engine\u002F03.scene\u002F03.gradients-layers",{"title":815,"path":816,"stem":817},"Przykłady scen","\u002Fvector-engine\u002Fscene\u002Fexamples","03.vector-engine\u002F03.scene\u002F04.examples",{"title":819,"path":820,"stem":821,"children":822,"page":660},"Eksport","\u002Fvector-engine\u002Fexport","03.vector-engine\u002F04.export",[823,827],{"title":824,"path":825,"stem":826},"Formaty eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-formats","03.vector-engine\u002F04.export\u002F01.export-formats",{"title":828,"path":829,"stem":830},"Proces eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-workflow","03.vector-engine\u002F04.export\u002F02.export-workflow",{"title":832,"path":833,"stem":834,"children":835,"page":660},"Wnętrze silnika","\u002Fvector-engine\u002Finternals","03.vector-engine\u002F05.internals",[836,839,843,847],{"title":632,"path":837,"stem":838},"\u002Fvector-engine\u002Finternals\u002Farchitecture","03.vector-engine\u002F05.internals\u002F01.architecture",{"title":840,"path":841,"stem":842},"WebAssembly i workery","\u002Fvector-engine\u002Finternals\u002Fwasm","03.vector-engine\u002F05.internals\u002F02.wasm",{"title":844,"path":845,"stem":846},"Workspace i panele","\u002Fvector-engine\u002Finternals\u002Fworkspace","03.vector-engine\u002F05.internals\u002F03.workspace",{"title":848,"path":849,"stem":850},"Breakpointy","\u002Fvector-engine\u002Finternals\u002Fbreakpoints","03.vector-engine\u002F05.internals\u002F04.breakpoints",{"title":852,"path":853,"stem":854},"Wdrożenie na Vercel","\u002Fvector-engine\u002Fdeployment","03.vector-engine\u002F06.deployment",1793986308423]