[{"data":1,"prerenderedAt":3234},["ShallowReactive",2],{"doc:\u002Fgame-engine\u002Fexamples":3,"surround:\u002Fgame-engine\u002Fexamples":2983,"navigation":2994},{"id":4,"title":5,"body":6,"description":2974,"extension":2975,"meta":2976,"navigation":60,"path":2977,"seo":2978,"stem":2981,"__hash__":2982},"docs\u002F01.game-engine\u002F10.examples.md","Przykłady",{"type":7,"value":8,"toc":2967},"minimark",[9,14,18,1499,1503,1506,1939,2008,2012,2478,2482,2657,2734,2738,2948,2963],[10,11,13],"h2",{"id":12},"przykład-1-scena-z-ruchem-i-kolizjami","Przykład 1: scena z ruchem i kolizjami",[15,16,17],"p",{},"Kompletna scena: gracz sterowany akcjami, ściany immovable, granice świata i kamera podążająca.",[19,20,26],"pre",{"className":21,"code":22,"filename":23,"language":24,"meta":25,"style":25},"language-ts shiki shiki-themes github-light github-dark","import { Scene, type GameObject } from '@engine'\n\nconst WORLD = { width: 2000, height: 1400 }\n\nexport class CollectScene extends Scene {\n  private player!: GameObject\n  private walls: GameObject[] = []\n  private score = 0\n\n  constructor() {\n    super('collect')\n  }\n\n  declareAssets() {\n    super.declareAssets([\n      { id: 'hero', type: 'image', src: '\u002Fassets\u002Fhero.png' },\n      { id: 'coin', type: 'image', src: '\u002Fassets\u002Fcoin.png' },\n      { id: 'pickup', type: 'audio', src: '\u002Fassets\u002Fpickup.ogg' }\n    ])\n  }\n\n  async preload() {\n    await this.getAssets().load()\n  }\n\n  create() {\n    this.getPhysics().setWorldBounds(0, 0, WORLD.width, WORLD.height)\n\n    this.player = this.createSprite('hero', { x: 200, y: 300, tags: ['player'] })\n    this.getPhysics().attachBody(this.player)\n    this.getPhysics().setCollideWorldBounds(this.player, true)\n\n    const wallSpecs = [\n      { x: 520, y: 420, width: 280, height: 24 },\n      { x: 1200, y: 600, width: 24, height: 320 },\n      { x: 900, y: 1050, width: 400, height: 24 }\n    ]\n    for (const spec of wallSpecs) {\n      const wall = this.createRect(spec.width, spec.height, { x: spec.x, y: spec.y, fill: '#3a4256' })\n      this.getPhysics().attachBody(wall)\n      this.getPhysics().setImmovable(wall, true)\n      this.walls.push(wall)\n    }\n    this.getPhysics().addCollider(this.player, this.walls)\n\n    for (const pos of [{ x: 320, y: 220 }, { x: 780, y: 360 }, { x: 1650, y: 560 }]) {\n      const coin = this.createSprite('coin', { ...pos, tags: ['coin'] })\n      this.tween(coin, { y: coin.y - 8 }, { duration: 0.8, yoyo: true, repeat: -1, easing: 'sine.inOut' })\n    }\n    this.getPhysics().addOverlap(this.player, this.findByTag('coin'), (_p, coin) => {\n      this.collect(coin)\n    })\n\n    this.getCamera().setBounds(0, 0, WORLD.width, WORLD.height)\n    this.getCamera().follow(this.player, 0.08, 0.08)\n\n    this.createText('hud', { x: 16, y: 16, text: '0', fontSize: '20px', color: '#ffffff' })\n      .setScrollFactor(0)\n      .setDepth(1000)\n  }\n\n  fixedUpdate() {\n    const input = this.getInput()\n    const vx = (input.isActionDown('move-right') ? 240 : 0) - (input.isActionDown('move-left') ? 240 : 0)\n    const vy = (input.isActionDown('move-down') ? 240 : 0) - (input.isActionDown('move-up') ? 240 : 0)\n    this.getPhysics().setVelocity(this.player, vx, vy)\n  }\n\n  private collect(coin: GameObject) {\n    this.score += 1\n    this.playSound('pickup', { channel: 'sfx' })\n    this.getCamera().flash(80, 255, 215, 94)\n    this.tween(coin, { alpha: 0, scaleX: 2, scaleY: 2 }, {\n      duration: 0.25,\n      onComplete: () => this.destroyObject(coin)\n    })\n    this.getObject\u003CGameObject>('hud')?.setRender({ type: 'text', text: String(this.score) })\n    this.getEvents().emit('score:changed', { score: this.score })\n  }\n}\n","CollectScene.ts","ts","",[27,28,29,55,62,90,95,117,133,156,169,174,183,198,204,209,217,231,255,274,294,300,305,310,321,344,349,354,362,401,406,448,470,496,501,515,542,566,590,596,616,643,660,681,694,700,725,730,778,811,857,862,912,925,931,936,969,998,1003,1047,1062,1077,1082,1087,1095,1114,1174,1228,1249,1254,1259,1278,1292,1314,1350,1378,1390,1410,1415,1460,1488,1493],"code",{"__ignoreMap":25},[30,31,34,38,42,45,48,51],"span",{"class":32,"line":33},"line",1,[30,35,37],{"class":36},"szBVR","import",[30,39,41],{"class":40},"sVt8B"," { Scene, ",[30,43,44],{"class":36},"type",[30,46,47],{"class":40}," GameObject } ",[30,49,50],{"class":36},"from",[30,52,54],{"class":53},"sZZnC"," '@engine'\n",[30,56,58],{"class":32,"line":57},2,[30,59,61],{"emptyLinePlaceholder":60},true,"\n",[30,63,65,68,72,75,78,81,84,87],{"class":32,"line":64},3,[30,66,67],{"class":36},"const",[30,69,71],{"class":70},"sj4cs"," WORLD",[30,73,74],{"class":36}," =",[30,76,77],{"class":40}," { width: ",[30,79,80],{"class":70},"2000",[30,82,83],{"class":40},", height: ",[30,85,86],{"class":70},"1400",[30,88,89],{"class":40}," }\n",[30,91,93],{"class":32,"line":92},4,[30,94,61],{"emptyLinePlaceholder":60},[30,96,98,101,104,108,111,114],{"class":32,"line":97},5,[30,99,100],{"class":36},"export",[30,102,103],{"class":36}," class",[30,105,107],{"class":106},"sScJk"," CollectScene",[30,109,110],{"class":36}," extends",[30,112,113],{"class":106}," Scene",[30,115,116],{"class":40}," {\n",[30,118,120,123,127,130],{"class":32,"line":119},6,[30,121,122],{"class":36},"  private",[30,124,126],{"class":125},"s4XuR"," player",[30,128,129],{"class":36},"!:",[30,131,132],{"class":106}," GameObject\n",[30,134,136,138,141,144,147,150,153],{"class":32,"line":135},7,[30,137,122],{"class":36},[30,139,140],{"class":125}," walls",[30,142,143],{"class":36},":",[30,145,146],{"class":106}," GameObject",[30,148,149],{"class":40},"[] ",[30,151,152],{"class":36},"=",[30,154,155],{"class":40}," []\n",[30,157,159,161,164,166],{"class":32,"line":158},8,[30,160,122],{"class":36},[30,162,163],{"class":125}," score",[30,165,74],{"class":36},[30,167,168],{"class":70}," 0\n",[30,170,172],{"class":32,"line":171},9,[30,173,61],{"emptyLinePlaceholder":60},[30,175,177,180],{"class":32,"line":176},10,[30,178,179],{"class":36},"  constructor",[30,181,182],{"class":40},"() {\n",[30,184,186,189,192,195],{"class":32,"line":185},11,[30,187,188],{"class":70},"    super",[30,190,191],{"class":40},"(",[30,193,194],{"class":53},"'collect'",[30,196,197],{"class":40},")\n",[30,199,201],{"class":32,"line":200},12,[30,202,203],{"class":40},"  }\n",[30,205,207],{"class":32,"line":206},13,[30,208,61],{"emptyLinePlaceholder":60},[30,210,212,215],{"class":32,"line":211},14,[30,213,214],{"class":106},"  declareAssets",[30,216,182],{"class":40},[30,218,220,222,225,228],{"class":32,"line":219},15,[30,221,188],{"class":70},[30,223,224],{"class":40},".",[30,226,227],{"class":106},"declareAssets",[30,229,230],{"class":40},"([\n",[30,232,234,237,240,243,246,249,252],{"class":32,"line":233},16,[30,235,236],{"class":40},"      { id: ",[30,238,239],{"class":53},"'hero'",[30,241,242],{"class":40},", type: ",[30,244,245],{"class":53},"'image'",[30,247,248],{"class":40},", src: ",[30,250,251],{"class":53},"'\u002Fassets\u002Fhero.png'",[30,253,254],{"class":40}," },\n",[30,256,258,260,263,265,267,269,272],{"class":32,"line":257},17,[30,259,236],{"class":40},[30,261,262],{"class":53},"'coin'",[30,264,242],{"class":40},[30,266,245],{"class":53},[30,268,248],{"class":40},[30,270,271],{"class":53},"'\u002Fassets\u002Fcoin.png'",[30,273,254],{"class":40},[30,275,277,279,282,284,287,289,292],{"class":32,"line":276},18,[30,278,236],{"class":40},[30,280,281],{"class":53},"'pickup'",[30,283,242],{"class":40},[30,285,286],{"class":53},"'audio'",[30,288,248],{"class":40},[30,290,291],{"class":53},"'\u002Fassets\u002Fpickup.ogg'",[30,293,89],{"class":40},[30,295,297],{"class":32,"line":296},19,[30,298,299],{"class":40},"    ])\n",[30,301,303],{"class":32,"line":302},20,[30,304,203],{"class":40},[30,306,308],{"class":32,"line":307},21,[30,309,61],{"emptyLinePlaceholder":60},[30,311,313,316,319],{"class":32,"line":312},22,[30,314,315],{"class":36},"  async",[30,317,318],{"class":106}," preload",[30,320,182],{"class":40},[30,322,324,327,330,332,335,338,341],{"class":32,"line":323},23,[30,325,326],{"class":36},"    await",[30,328,329],{"class":70}," this",[30,331,224],{"class":40},[30,333,334],{"class":106},"getAssets",[30,336,337],{"class":40},"().",[30,339,340],{"class":106},"load",[30,342,343],{"class":40},"()\n",[30,345,347],{"class":32,"line":346},24,[30,348,203],{"class":40},[30,350,352],{"class":32,"line":351},25,[30,353,61],{"emptyLinePlaceholder":60},[30,355,357,360],{"class":32,"line":356},26,[30,358,359],{"class":106},"  create",[30,361,182],{"class":40},[30,363,365,368,370,373,375,378,380,383,386,388,390,393,396,398],{"class":32,"line":364},27,[30,366,367],{"class":70},"    this",[30,369,224],{"class":40},[30,371,372],{"class":106},"getPhysics",[30,374,337],{"class":40},[30,376,377],{"class":106},"setWorldBounds",[30,379,191],{"class":40},[30,381,382],{"class":70},"0",[30,384,385],{"class":40},", ",[30,387,382],{"class":70},[30,389,385],{"class":40},[30,391,392],{"class":70},"WORLD",[30,394,395],{"class":40},".width, ",[30,397,392],{"class":70},[30,399,400],{"class":40},".height)\n",[30,402,404],{"class":32,"line":403},28,[30,405,61],{"emptyLinePlaceholder":60},[30,407,409,411,414,416,418,420,423,425,427,430,433,436,439,442,445],{"class":32,"line":408},29,[30,410,367],{"class":70},[30,412,413],{"class":40},".player ",[30,415,152],{"class":36},[30,417,329],{"class":70},[30,419,224],{"class":40},[30,421,422],{"class":106},"createSprite",[30,424,191],{"class":40},[30,426,239],{"class":53},[30,428,429],{"class":40},", { x: ",[30,431,432],{"class":70},"200",[30,434,435],{"class":40},", y: ",[30,437,438],{"class":70},"300",[30,440,441],{"class":40},", tags: [",[30,443,444],{"class":53},"'player'",[30,446,447],{"class":40},"] })\n",[30,449,451,453,455,457,459,462,464,467],{"class":32,"line":450},30,[30,452,367],{"class":70},[30,454,224],{"class":40},[30,456,372],{"class":106},[30,458,337],{"class":40},[30,460,461],{"class":106},"attachBody",[30,463,191],{"class":40},[30,465,466],{"class":70},"this",[30,468,469],{"class":40},".player)\n",[30,471,473,475,477,479,481,484,486,488,491,494],{"class":32,"line":472},31,[30,474,367],{"class":70},[30,476,224],{"class":40},[30,478,372],{"class":106},[30,480,337],{"class":40},[30,482,483],{"class":106},"setCollideWorldBounds",[30,485,191],{"class":40},[30,487,466],{"class":70},[30,489,490],{"class":40},".player, ",[30,492,493],{"class":70},"true",[30,495,197],{"class":40},[30,497,499],{"class":32,"line":498},32,[30,500,61],{"emptyLinePlaceholder":60},[30,502,504,507,510,512],{"class":32,"line":503},33,[30,505,506],{"class":36},"    const",[30,508,509],{"class":70}," wallSpecs",[30,511,74],{"class":36},[30,513,514],{"class":40}," [\n",[30,516,518,521,524,526,529,532,535,537,540],{"class":32,"line":517},34,[30,519,520],{"class":40},"      { x: ",[30,522,523],{"class":70},"520",[30,525,435],{"class":40},[30,527,528],{"class":70},"420",[30,530,531],{"class":40},", width: ",[30,533,534],{"class":70},"280",[30,536,83],{"class":40},[30,538,539],{"class":70},"24",[30,541,254],{"class":40},[30,543,545,547,550,552,555,557,559,561,564],{"class":32,"line":544},35,[30,546,520],{"class":40},[30,548,549],{"class":70},"1200",[30,551,435],{"class":40},[30,553,554],{"class":70},"600",[30,556,531],{"class":40},[30,558,539],{"class":70},[30,560,83],{"class":40},[30,562,563],{"class":70},"320",[30,565,254],{"class":40},[30,567,569,571,574,576,579,581,584,586,588],{"class":32,"line":568},36,[30,570,520],{"class":40},[30,572,573],{"class":70},"900",[30,575,435],{"class":40},[30,577,578],{"class":70},"1050",[30,580,531],{"class":40},[30,582,583],{"class":70},"400",[30,585,83],{"class":40},[30,587,539],{"class":70},[30,589,89],{"class":40},[30,591,593],{"class":32,"line":592},37,[30,594,595],{"class":40},"    ]\n",[30,597,599,602,605,607,610,613],{"class":32,"line":598},38,[30,600,601],{"class":36},"    for",[30,603,604],{"class":40}," (",[30,606,67],{"class":36},[30,608,609],{"class":70}," spec",[30,611,612],{"class":36}," of",[30,614,615],{"class":40}," wallSpecs) {\n",[30,617,619,622,625,627,629,631,634,637,640],{"class":32,"line":618},39,[30,620,621],{"class":36},"      const",[30,623,624],{"class":70}," wall",[30,626,74],{"class":36},[30,628,329],{"class":70},[30,630,224],{"class":40},[30,632,633],{"class":106},"createRect",[30,635,636],{"class":40},"(spec.width, spec.height, { x: spec.x, y: spec.y, fill: ",[30,638,639],{"class":53},"'#3a4256'",[30,641,642],{"class":40}," })\n",[30,644,646,649,651,653,655,657],{"class":32,"line":645},40,[30,647,648],{"class":70},"      this",[30,650,224],{"class":40},[30,652,372],{"class":106},[30,654,337],{"class":40},[30,656,461],{"class":106},[30,658,659],{"class":40},"(wall)\n",[30,661,663,665,667,669,671,674,677,679],{"class":32,"line":662},41,[30,664,648],{"class":70},[30,666,224],{"class":40},[30,668,372],{"class":106},[30,670,337],{"class":40},[30,672,673],{"class":106},"setImmovable",[30,675,676],{"class":40},"(wall, ",[30,678,493],{"class":70},[30,680,197],{"class":40},[30,682,684,686,689,692],{"class":32,"line":683},42,[30,685,648],{"class":70},[30,687,688],{"class":40},".walls.",[30,690,691],{"class":106},"push",[30,693,659],{"class":40},[30,695,697],{"class":32,"line":696},43,[30,698,699],{"class":40},"    }\n",[30,701,703,705,707,709,711,714,716,718,720,722],{"class":32,"line":702},44,[30,704,367],{"class":70},[30,706,224],{"class":40},[30,708,372],{"class":106},[30,710,337],{"class":40},[30,712,713],{"class":106},"addCollider",[30,715,191],{"class":40},[30,717,466],{"class":70},[30,719,490],{"class":40},[30,721,466],{"class":70},[30,723,724],{"class":40},".walls)\n",[30,726,728],{"class":32,"line":727},45,[30,729,61],{"emptyLinePlaceholder":60},[30,731,733,735,737,739,742,744,747,749,751,754,757,760,762,765,767,770,772,775],{"class":32,"line":732},46,[30,734,601],{"class":36},[30,736,604],{"class":40},[30,738,67],{"class":36},[30,740,741],{"class":70}," pos",[30,743,612],{"class":36},[30,745,746],{"class":40}," [{ x: ",[30,748,563],{"class":70},[30,750,435],{"class":40},[30,752,753],{"class":70},"220",[30,755,756],{"class":40}," }, { x: ",[30,758,759],{"class":70},"780",[30,761,435],{"class":40},[30,763,764],{"class":70},"360",[30,766,756],{"class":40},[30,768,769],{"class":70},"1650",[30,771,435],{"class":40},[30,773,774],{"class":70},"560",[30,776,777],{"class":40}," }]) {\n",[30,779,781,783,786,788,790,792,794,796,798,801,804,807,809],{"class":32,"line":780},47,[30,782,621],{"class":36},[30,784,785],{"class":70}," coin",[30,787,74],{"class":36},[30,789,329],{"class":70},[30,791,224],{"class":40},[30,793,422],{"class":106},[30,795,191],{"class":40},[30,797,262],{"class":53},[30,799,800],{"class":40},", { ",[30,802,803],{"class":36},"...",[30,805,806],{"class":40},"pos, tags: [",[30,808,262],{"class":53},[30,810,447],{"class":40},[30,812,814,816,818,821,824,827,830,833,836,839,841,844,846,849,852,855],{"class":32,"line":813},48,[30,815,648],{"class":70},[30,817,224],{"class":40},[30,819,820],{"class":106},"tween",[30,822,823],{"class":40},"(coin, { y: coin.y ",[30,825,826],{"class":36},"-",[30,828,829],{"class":70}," 8",[30,831,832],{"class":40}," }, { duration: ",[30,834,835],{"class":70},"0.8",[30,837,838],{"class":40},", yoyo: ",[30,840,493],{"class":70},[30,842,843],{"class":40},", repeat: ",[30,845,826],{"class":36},[30,847,848],{"class":70},"1",[30,850,851],{"class":40},", easing: ",[30,853,854],{"class":53},"'sine.inOut'",[30,856,642],{"class":40},[30,858,860],{"class":32,"line":859},49,[30,861,699],{"class":40},[30,863,865,867,869,871,873,876,878,880,882,884,886,889,891,893,896,899,901,904,907,910],{"class":32,"line":864},50,[30,866,367],{"class":70},[30,868,224],{"class":40},[30,870,372],{"class":106},[30,872,337],{"class":40},[30,874,875],{"class":106},"addOverlap",[30,877,191],{"class":40},[30,879,466],{"class":70},[30,881,490],{"class":40},[30,883,466],{"class":70},[30,885,224],{"class":40},[30,887,888],{"class":106},"findByTag",[30,890,191],{"class":40},[30,892,262],{"class":53},[30,894,895],{"class":40},"), (",[30,897,898],{"class":125},"_p",[30,900,385],{"class":40},[30,902,903],{"class":125},"coin",[30,905,906],{"class":40},") ",[30,908,909],{"class":36},"=>",[30,911,116],{"class":40},[30,913,915,917,919,922],{"class":32,"line":914},51,[30,916,648],{"class":70},[30,918,224],{"class":40},[30,920,921],{"class":106},"collect",[30,923,924],{"class":40},"(coin)\n",[30,926,928],{"class":32,"line":927},52,[30,929,930],{"class":40},"    })\n",[30,932,934],{"class":32,"line":933},53,[30,935,61],{"emptyLinePlaceholder":60},[30,937,939,941,943,946,948,951,953,955,957,959,961,963,965,967],{"class":32,"line":938},54,[30,940,367],{"class":70},[30,942,224],{"class":40},[30,944,945],{"class":106},"getCamera",[30,947,337],{"class":40},[30,949,950],{"class":106},"setBounds",[30,952,191],{"class":40},[30,954,382],{"class":70},[30,956,385],{"class":40},[30,958,382],{"class":70},[30,960,385],{"class":40},[30,962,392],{"class":70},[30,964,395],{"class":40},[30,966,392],{"class":70},[30,968,400],{"class":40},[30,970,972,974,976,978,980,983,985,987,989,992,994,996],{"class":32,"line":971},55,[30,973,367],{"class":70},[30,975,224],{"class":40},[30,977,945],{"class":106},[30,979,337],{"class":40},[30,981,982],{"class":106},"follow",[30,984,191],{"class":40},[30,986,466],{"class":70},[30,988,490],{"class":40},[30,990,991],{"class":70},"0.08",[30,993,385],{"class":40},[30,995,991],{"class":70},[30,997,197],{"class":40},[30,999,1001],{"class":32,"line":1000},56,[30,1002,61],{"emptyLinePlaceholder":60},[30,1004,1006,1008,1010,1013,1015,1018,1020,1023,1025,1027,1030,1033,1036,1039,1042,1045],{"class":32,"line":1005},57,[30,1007,367],{"class":70},[30,1009,224],{"class":40},[30,1011,1012],{"class":106},"createText",[30,1014,191],{"class":40},[30,1016,1017],{"class":53},"'hud'",[30,1019,429],{"class":40},[30,1021,1022],{"class":70},"16",[30,1024,435],{"class":40},[30,1026,1022],{"class":70},[30,1028,1029],{"class":40},", text: ",[30,1031,1032],{"class":53},"'0'",[30,1034,1035],{"class":40},", fontSize: ",[30,1037,1038],{"class":53},"'20px'",[30,1040,1041],{"class":40},", color: ",[30,1043,1044],{"class":53},"'#ffffff'",[30,1046,642],{"class":40},[30,1048,1050,1053,1056,1058,1060],{"class":32,"line":1049},58,[30,1051,1052],{"class":40},"      .",[30,1054,1055],{"class":106},"setScrollFactor",[30,1057,191],{"class":40},[30,1059,382],{"class":70},[30,1061,197],{"class":40},[30,1063,1065,1067,1070,1072,1075],{"class":32,"line":1064},59,[30,1066,1052],{"class":40},[30,1068,1069],{"class":106},"setDepth",[30,1071,191],{"class":40},[30,1073,1074],{"class":70},"1000",[30,1076,197],{"class":40},[30,1078,1080],{"class":32,"line":1079},60,[30,1081,203],{"class":40},[30,1083,1085],{"class":32,"line":1084},61,[30,1086,61],{"emptyLinePlaceholder":60},[30,1088,1090,1093],{"class":32,"line":1089},62,[30,1091,1092],{"class":106},"  fixedUpdate",[30,1094,182],{"class":40},[30,1096,1098,1100,1103,1105,1107,1109,1112],{"class":32,"line":1097},63,[30,1099,506],{"class":36},[30,1101,1102],{"class":70}," input",[30,1104,74],{"class":36},[30,1106,329],{"class":70},[30,1108,224],{"class":40},[30,1110,1111],{"class":106},"getInput",[30,1113,343],{"class":40},[30,1115,1117,1119,1122,1124,1127,1130,1132,1135,1137,1140,1143,1146,1149,1151,1153,1155,1157,1159,1162,1164,1166,1168,1170,1172],{"class":32,"line":1116},64,[30,1118,506],{"class":36},[30,1120,1121],{"class":70}," vx",[30,1123,74],{"class":36},[30,1125,1126],{"class":40}," (input.",[30,1128,1129],{"class":106},"isActionDown",[30,1131,191],{"class":40},[30,1133,1134],{"class":53},"'move-right'",[30,1136,906],{"class":40},[30,1138,1139],{"class":36},"?",[30,1141,1142],{"class":70}," 240",[30,1144,1145],{"class":36}," :",[30,1147,1148],{"class":70}," 0",[30,1150,906],{"class":40},[30,1152,826],{"class":36},[30,1154,1126],{"class":40},[30,1156,1129],{"class":106},[30,1158,191],{"class":40},[30,1160,1161],{"class":53},"'move-left'",[30,1163,906],{"class":40},[30,1165,1139],{"class":36},[30,1167,1142],{"class":70},[30,1169,1145],{"class":36},[30,1171,1148],{"class":70},[30,1173,197],{"class":40},[30,1175,1177,1179,1182,1184,1186,1188,1190,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1216,1218,1220,1222,1224,1226],{"class":32,"line":1176},65,[30,1178,506],{"class":36},[30,1180,1181],{"class":70}," vy",[30,1183,74],{"class":36},[30,1185,1126],{"class":40},[30,1187,1129],{"class":106},[30,1189,191],{"class":40},[30,1191,1192],{"class":53},"'move-down'",[30,1194,906],{"class":40},[30,1196,1139],{"class":36},[30,1198,1142],{"class":70},[30,1200,1145],{"class":36},[30,1202,1148],{"class":70},[30,1204,906],{"class":40},[30,1206,826],{"class":36},[30,1208,1126],{"class":40},[30,1210,1129],{"class":106},[30,1212,191],{"class":40},[30,1214,1215],{"class":53},"'move-up'",[30,1217,906],{"class":40},[30,1219,1139],{"class":36},[30,1221,1142],{"class":70},[30,1223,1145],{"class":36},[30,1225,1148],{"class":70},[30,1227,197],{"class":40},[30,1229,1231,1233,1235,1237,1239,1242,1244,1246],{"class":32,"line":1230},66,[30,1232,367],{"class":70},[30,1234,224],{"class":40},[30,1236,372],{"class":106},[30,1238,337],{"class":40},[30,1240,1241],{"class":106},"setVelocity",[30,1243,191],{"class":40},[30,1245,466],{"class":70},[30,1247,1248],{"class":40},".player, vx, vy)\n",[30,1250,1252],{"class":32,"line":1251},67,[30,1253,203],{"class":40},[30,1255,1257],{"class":32,"line":1256},68,[30,1258,61],{"emptyLinePlaceholder":60},[30,1260,1262,1264,1267,1269,1271,1273,1275],{"class":32,"line":1261},69,[30,1263,122],{"class":36},[30,1265,1266],{"class":106}," collect",[30,1268,191],{"class":40},[30,1270,903],{"class":125},[30,1272,143],{"class":36},[30,1274,146],{"class":106},[30,1276,1277],{"class":40},") {\n",[30,1279,1281,1283,1286,1289],{"class":32,"line":1280},70,[30,1282,367],{"class":70},[30,1284,1285],{"class":40},".score ",[30,1287,1288],{"class":36},"+=",[30,1290,1291],{"class":70}," 1\n",[30,1293,1295,1297,1299,1302,1304,1306,1309,1312],{"class":32,"line":1294},71,[30,1296,367],{"class":70},[30,1298,224],{"class":40},[30,1300,1301],{"class":106},"playSound",[30,1303,191],{"class":40},[30,1305,281],{"class":53},[30,1307,1308],{"class":40},", { channel: ",[30,1310,1311],{"class":53},"'sfx'",[30,1313,642],{"class":40},[30,1315,1317,1319,1321,1323,1325,1328,1330,1333,1335,1338,1340,1343,1345,1348],{"class":32,"line":1316},72,[30,1318,367],{"class":70},[30,1320,224],{"class":40},[30,1322,945],{"class":106},[30,1324,337],{"class":40},[30,1326,1327],{"class":106},"flash",[30,1329,191],{"class":40},[30,1331,1332],{"class":70},"80",[30,1334,385],{"class":40},[30,1336,1337],{"class":70},"255",[30,1339,385],{"class":40},[30,1341,1342],{"class":70},"215",[30,1344,385],{"class":40},[30,1346,1347],{"class":70},"94",[30,1349,197],{"class":40},[30,1351,1353,1355,1357,1359,1362,1364,1367,1370,1373,1375],{"class":32,"line":1352},73,[30,1354,367],{"class":70},[30,1356,224],{"class":40},[30,1358,820],{"class":106},[30,1360,1361],{"class":40},"(coin, { alpha: ",[30,1363,382],{"class":70},[30,1365,1366],{"class":40},", scaleX: ",[30,1368,1369],{"class":70},"2",[30,1371,1372],{"class":40},", scaleY: ",[30,1374,1369],{"class":70},[30,1376,1377],{"class":40}," }, {\n",[30,1379,1381,1384,1387],{"class":32,"line":1380},74,[30,1382,1383],{"class":40},"      duration: ",[30,1385,1386],{"class":70},"0.25",[30,1388,1389],{"class":40},",\n",[30,1391,1393,1396,1399,1401,1403,1405,1408],{"class":32,"line":1392},75,[30,1394,1395],{"class":106},"      onComplete",[30,1397,1398],{"class":40},": () ",[30,1400,909],{"class":36},[30,1402,329],{"class":70},[30,1404,224],{"class":40},[30,1406,1407],{"class":106},"destroyObject",[30,1409,924],{"class":40},[30,1411,1413],{"class":32,"line":1412},76,[30,1414,930],{"class":40},[30,1416,1418,1420,1422,1425,1428,1431,1434,1436,1439,1442,1445,1448,1450,1453,1455,1457],{"class":32,"line":1417},77,[30,1419,367],{"class":70},[30,1421,224],{"class":40},[30,1423,1424],{"class":106},"getObject",[30,1426,1427],{"class":40},"\u003C",[30,1429,1430],{"class":106},"GameObject",[30,1432,1433],{"class":40},">(",[30,1435,1017],{"class":53},[30,1437,1438],{"class":40},")?.",[30,1440,1441],{"class":106},"setRender",[30,1443,1444],{"class":40},"({ type: ",[30,1446,1447],{"class":53},"'text'",[30,1449,1029],{"class":40},[30,1451,1452],{"class":106},"String",[30,1454,191],{"class":40},[30,1456,466],{"class":70},[30,1458,1459],{"class":40},".score) })\n",[30,1461,1463,1465,1467,1470,1472,1475,1477,1480,1483,1485],{"class":32,"line":1462},78,[30,1464,367],{"class":70},[30,1466,224],{"class":40},[30,1468,1469],{"class":106},"getEvents",[30,1471,337],{"class":40},[30,1473,1474],{"class":106},"emit",[30,1476,191],{"class":40},[30,1478,1479],{"class":53},"'score:changed'",[30,1481,1482],{"class":40},", { score: ",[30,1484,466],{"class":70},[30,1486,1487],{"class":40},".score })\n",[30,1489,1491],{"class":32,"line":1490},79,[30,1492,203],{"class":40},[30,1494,1496],{"class":32,"line":1495},80,[30,1497,1498],{"class":40},"}\n",[10,1500,1502],{"id":1501},"przykład-2-komponent-zachowania","Przykład 2: komponent zachowania",[15,1504,1505],{},"AI przeciwnika: patrol między punktami i pościg, gdy gracz jest blisko.",[19,1507,1510],{"className":21,"code":1508,"filename":1509,"language":24,"meta":25,"style":25},"import { Component, type GameObject } from '@engine'\n\nexport class PatrolChaser extends Component {\n  phase = 'behavior' as const\n  private dir = 1\n  private speed = 90\n\n  constructor(\n    private minX: number,\n    private maxX: number,\n    private target: GameObject,\n    private chaseRange = 220\n  ) {\n    super()\n  }\n\n  onUpdate(dt: number) {\n    const owner = this.owner\n    const dist = Math.hypot(this.target.x - owner.x, this.target.y - owner.y)\n\n    if (dist \u003C this.chaseRange) {\n      const dx = Math.sign(this.target.x - owner.x)\n      owner.translate(dx * this.speed * 1.6 * dt, 0)\n      owner.setTint(0xff6b6b)\n      return\n    }\n\n    owner.setTint(null)\n    owner.translate(this.dir * this.speed * dt, 0)\n    if (owner.x \u003C= this.minX) this.dir = 1\n    if (owner.x >= this.maxX) this.dir = -1\n  }\n}\n","PatrolChaser.ts",[27,1511,1512,1527,1531,1547,1563,1574,1586,1590,1597,1612,1625,1638,1650,1655,1661,1665,1669,1685,1699,1736,1740,1755,1780,1814,1828,1833,1837,1841,1855,1882,1905,1931,1935],{"__ignoreMap":25},[30,1513,1514,1516,1519,1521,1523,1525],{"class":32,"line":33},[30,1515,37],{"class":36},[30,1517,1518],{"class":40}," { Component, ",[30,1520,44],{"class":36},[30,1522,47],{"class":40},[30,1524,50],{"class":36},[30,1526,54],{"class":53},[30,1528,1529],{"class":32,"line":57},[30,1530,61],{"emptyLinePlaceholder":60},[30,1532,1533,1535,1537,1540,1542,1545],{"class":32,"line":64},[30,1534,100],{"class":36},[30,1536,103],{"class":36},[30,1538,1539],{"class":106}," PatrolChaser",[30,1541,110],{"class":36},[30,1543,1544],{"class":106}," Component",[30,1546,116],{"class":40},[30,1548,1549,1552,1554,1557,1560],{"class":32,"line":92},[30,1550,1551],{"class":125},"  phase",[30,1553,74],{"class":36},[30,1555,1556],{"class":53}," 'behavior'",[30,1558,1559],{"class":36}," as",[30,1561,1562],{"class":36}," const\n",[30,1564,1565,1567,1570,1572],{"class":32,"line":97},[30,1566,122],{"class":36},[30,1568,1569],{"class":125}," dir",[30,1571,74],{"class":36},[30,1573,1291],{"class":70},[30,1575,1576,1578,1581,1583],{"class":32,"line":119},[30,1577,122],{"class":36},[30,1579,1580],{"class":125}," speed",[30,1582,74],{"class":36},[30,1584,1585],{"class":70}," 90\n",[30,1587,1588],{"class":32,"line":135},[30,1589,61],{"emptyLinePlaceholder":60},[30,1591,1592,1594],{"class":32,"line":158},[30,1593,179],{"class":36},[30,1595,1596],{"class":40},"(\n",[30,1598,1599,1602,1605,1607,1610],{"class":32,"line":171},[30,1600,1601],{"class":36},"    private",[30,1603,1604],{"class":125}," minX",[30,1606,143],{"class":36},[30,1608,1609],{"class":70}," number",[30,1611,1389],{"class":40},[30,1613,1614,1616,1619,1621,1623],{"class":32,"line":176},[30,1615,1601],{"class":36},[30,1617,1618],{"class":125}," maxX",[30,1620,143],{"class":36},[30,1622,1609],{"class":70},[30,1624,1389],{"class":40},[30,1626,1627,1629,1632,1634,1636],{"class":32,"line":185},[30,1628,1601],{"class":36},[30,1630,1631],{"class":125}," target",[30,1633,143],{"class":36},[30,1635,146],{"class":106},[30,1637,1389],{"class":40},[30,1639,1640,1642,1645,1647],{"class":32,"line":200},[30,1641,1601],{"class":36},[30,1643,1644],{"class":125}," chaseRange",[30,1646,74],{"class":36},[30,1648,1649],{"class":70}," 220\n",[30,1651,1652],{"class":32,"line":206},[30,1653,1654],{"class":40},"  ) {\n",[30,1656,1657,1659],{"class":32,"line":211},[30,1658,188],{"class":70},[30,1660,343],{"class":40},[30,1662,1663],{"class":32,"line":219},[30,1664,203],{"class":40},[30,1666,1667],{"class":32,"line":233},[30,1668,61],{"emptyLinePlaceholder":60},[30,1670,1671,1674,1676,1679,1681,1683],{"class":32,"line":257},[30,1672,1673],{"class":106},"  onUpdate",[30,1675,191],{"class":40},[30,1677,1678],{"class":125},"dt",[30,1680,143],{"class":36},[30,1682,1609],{"class":70},[30,1684,1277],{"class":40},[30,1686,1687,1689,1692,1694,1696],{"class":32,"line":276},[30,1688,506],{"class":36},[30,1690,1691],{"class":70}," owner",[30,1693,74],{"class":36},[30,1695,329],{"class":70},[30,1697,1698],{"class":40},".owner\n",[30,1700,1701,1703,1706,1708,1711,1714,1716,1718,1721,1723,1726,1728,1731,1733],{"class":32,"line":296},[30,1702,506],{"class":36},[30,1704,1705],{"class":70}," dist",[30,1707,74],{"class":36},[30,1709,1710],{"class":40}," Math.",[30,1712,1713],{"class":106},"hypot",[30,1715,191],{"class":40},[30,1717,466],{"class":70},[30,1719,1720],{"class":40},".target.x ",[30,1722,826],{"class":36},[30,1724,1725],{"class":40}," owner.x, ",[30,1727,466],{"class":70},[30,1729,1730],{"class":40},".target.y ",[30,1732,826],{"class":36},[30,1734,1735],{"class":40}," owner.y)\n",[30,1737,1738],{"class":32,"line":302},[30,1739,61],{"emptyLinePlaceholder":60},[30,1741,1742,1745,1748,1750,1752],{"class":32,"line":307},[30,1743,1744],{"class":36},"    if",[30,1746,1747],{"class":40}," (dist ",[30,1749,1427],{"class":36},[30,1751,329],{"class":70},[30,1753,1754],{"class":40},".chaseRange) {\n",[30,1756,1757,1759,1762,1764,1766,1769,1771,1773,1775,1777],{"class":32,"line":312},[30,1758,621],{"class":36},[30,1760,1761],{"class":70}," dx",[30,1763,74],{"class":36},[30,1765,1710],{"class":40},[30,1767,1768],{"class":106},"sign",[30,1770,191],{"class":40},[30,1772,466],{"class":70},[30,1774,1720],{"class":40},[30,1776,826],{"class":36},[30,1778,1779],{"class":40}," owner.x)\n",[30,1781,1782,1785,1788,1791,1794,1796,1799,1801,1804,1807,1810,1812],{"class":32,"line":323},[30,1783,1784],{"class":40},"      owner.",[30,1786,1787],{"class":106},"translate",[30,1789,1790],{"class":40},"(dx ",[30,1792,1793],{"class":36},"*",[30,1795,329],{"class":70},[30,1797,1798],{"class":40},".speed ",[30,1800,1793],{"class":36},[30,1802,1803],{"class":70}," 1.6",[30,1805,1806],{"class":36}," *",[30,1808,1809],{"class":40}," dt, ",[30,1811,382],{"class":70},[30,1813,197],{"class":40},[30,1815,1816,1818,1821,1823,1826],{"class":32,"line":346},[30,1817,1784],{"class":40},[30,1819,1820],{"class":106},"setTint",[30,1822,191],{"class":40},[30,1824,1825],{"class":70},"0xff6b6b",[30,1827,197],{"class":40},[30,1829,1830],{"class":32,"line":351},[30,1831,1832],{"class":36},"      return\n",[30,1834,1835],{"class":32,"line":356},[30,1836,699],{"class":40},[30,1838,1839],{"class":32,"line":364},[30,1840,61],{"emptyLinePlaceholder":60},[30,1842,1843,1846,1848,1850,1853],{"class":32,"line":403},[30,1844,1845],{"class":40},"    owner.",[30,1847,1820],{"class":106},[30,1849,191],{"class":40},[30,1851,1852],{"class":70},"null",[30,1854,197],{"class":40},[30,1856,1857,1859,1861,1863,1865,1868,1870,1872,1874,1876,1878,1880],{"class":32,"line":408},[30,1858,1845],{"class":40},[30,1860,1787],{"class":106},[30,1862,191],{"class":40},[30,1864,466],{"class":70},[30,1866,1867],{"class":40},".dir ",[30,1869,1793],{"class":36},[30,1871,329],{"class":70},[30,1873,1798],{"class":40},[30,1875,1793],{"class":36},[30,1877,1809],{"class":40},[30,1879,382],{"class":70},[30,1881,197],{"class":40},[30,1883,1884,1886,1889,1892,1894,1897,1899,1901,1903],{"class":32,"line":450},[30,1885,1744],{"class":36},[30,1887,1888],{"class":40}," (owner.x ",[30,1890,1891],{"class":36},"\u003C=",[30,1893,329],{"class":70},[30,1895,1896],{"class":40},".minX) ",[30,1898,466],{"class":70},[30,1900,1867],{"class":40},[30,1902,152],{"class":36},[30,1904,1291],{"class":70},[30,1906,1907,1909,1911,1914,1916,1919,1921,1923,1925,1928],{"class":32,"line":472},[30,1908,1744],{"class":36},[30,1910,1888],{"class":40},[30,1912,1913],{"class":36},">=",[30,1915,329],{"class":70},[30,1917,1918],{"class":40},".maxX) ",[30,1920,466],{"class":70},[30,1922,1867],{"class":40},[30,1924,152],{"class":36},[30,1926,1927],{"class":36}," -",[30,1929,1930],{"class":70},"1\n",[30,1932,1933],{"class":32,"line":498},[30,1934,203],{"class":40},[30,1936,1937],{"class":32,"line":503},[30,1938,1498],{"class":40},[19,1940,1942],{"className":21,"code":1941,"language":24,"meta":25,"style":25},"const enemy = this.createSprite('enemy', { x: 600, y: 300, tags: ['enemy'] })\nenemy.add(new PatrolChaser(400, 900, this.player))\n",[27,1943,1944,1978],{"__ignoreMap":25},[30,1945,1946,1948,1951,1953,1955,1957,1959,1961,1964,1966,1968,1970,1972,1974,1976],{"class":32,"line":33},[30,1947,67],{"class":36},[30,1949,1950],{"class":70}," enemy",[30,1952,74],{"class":36},[30,1954,329],{"class":70},[30,1956,224],{"class":40},[30,1958,422],{"class":106},[30,1960,191],{"class":40},[30,1962,1963],{"class":53},"'enemy'",[30,1965,429],{"class":40},[30,1967,554],{"class":70},[30,1969,435],{"class":40},[30,1971,438],{"class":70},[30,1973,441],{"class":40},[30,1975,1963],{"class":53},[30,1977,447],{"class":40},[30,1979,1980,1983,1986,1988,1991,1993,1995,1997,1999,2001,2003,2005],{"class":32,"line":57},[30,1981,1982],{"class":40},"enemy.",[30,1984,1985],{"class":106},"add",[30,1987,191],{"class":40},[30,1989,1990],{"class":36},"new",[30,1992,1539],{"class":106},[30,1994,191],{"class":40},[30,1996,583],{"class":70},[30,1998,385],{"class":40},[30,2000,573],{"class":70},[30,2002,385],{"class":40},[30,2004,466],{"class":70},[30,2006,2007],{"class":40},".player))\n",[10,2009,2011],{"id":2010},"przykład-3-menu-z-przejściem-i-fade","Przykład 3: menu z przejściem i fade",[19,2013,2016],{"className":21,"code":2014,"filename":2015,"language":24,"meta":25,"style":25},"import { Scene } from '@engine'\n\nexport class MenuScene extends Scene {\n  constructor() {\n    super('menu')\n  }\n\n  create() {\n    this.getCamera().fadeIn(400)\n    this.playMusic('theme', { loop: true })\n\n    const title = this.createText('title', { x: 640, y: 240, text: 'MOJA GRA', fontSize: '48px', color: '#ffffff' })\n      .setOrigin(0.5, 0.5)\n    this.tweenFrom(title, { alpha: 0, y: 180 }, { duration: 0.6, easing: 'back.out' })\n\n    const start = this.createText('start', { x: 640, y: 420, text: 'Start', fontSize: '24px', color: '#8f96f8' })\n      .setOrigin(0.5, 0.5)\n    this.tween(start, { alpha: 0.5 }, { duration: 0.7, yoyo: true, repeat: -1 })\n  }\n\n  update() {\n    if (this.getInput().isActionPressed('interact') || this.getInput().getPointer().isDown) {\n      this.getAudio().unlock()\n      this.getCamera().fadeOut(350)\n      this.getScheduler().delay(0.4, () => {\n        this.getEvents().emit('request:scene', { to: 'collect' })\n      }, { owner: this.id })\n    }\n  }\n}\n","MenuScene.ts",[27,2017,2018,2029,2033,2048,2054,2065,2069,2073,2079,2098,2119,2123,2169,2187,2218,2222,2267,2283,2313,2317,2321,2328,2369,2385,2405,2431,2456,2466,2470,2474],{"__ignoreMap":25},[30,2019,2020,2022,2025,2027],{"class":32,"line":33},[30,2021,37],{"class":36},[30,2023,2024],{"class":40}," { Scene } ",[30,2026,50],{"class":36},[30,2028,54],{"class":53},[30,2030,2031],{"class":32,"line":57},[30,2032,61],{"emptyLinePlaceholder":60},[30,2034,2035,2037,2039,2042,2044,2046],{"class":32,"line":64},[30,2036,100],{"class":36},[30,2038,103],{"class":36},[30,2040,2041],{"class":106}," MenuScene",[30,2043,110],{"class":36},[30,2045,113],{"class":106},[30,2047,116],{"class":40},[30,2049,2050,2052],{"class":32,"line":92},[30,2051,179],{"class":36},[30,2053,182],{"class":40},[30,2055,2056,2058,2060,2063],{"class":32,"line":97},[30,2057,188],{"class":70},[30,2059,191],{"class":40},[30,2061,2062],{"class":53},"'menu'",[30,2064,197],{"class":40},[30,2066,2067],{"class":32,"line":119},[30,2068,203],{"class":40},[30,2070,2071],{"class":32,"line":135},[30,2072,61],{"emptyLinePlaceholder":60},[30,2074,2075,2077],{"class":32,"line":158},[30,2076,359],{"class":106},[30,2078,182],{"class":40},[30,2080,2081,2083,2085,2087,2089,2092,2094,2096],{"class":32,"line":171},[30,2082,367],{"class":70},[30,2084,224],{"class":40},[30,2086,945],{"class":106},[30,2088,337],{"class":40},[30,2090,2091],{"class":106},"fadeIn",[30,2093,191],{"class":40},[30,2095,583],{"class":70},[30,2097,197],{"class":40},[30,2099,2100,2102,2104,2107,2109,2112,2115,2117],{"class":32,"line":176},[30,2101,367],{"class":70},[30,2103,224],{"class":40},[30,2105,2106],{"class":106},"playMusic",[30,2108,191],{"class":40},[30,2110,2111],{"class":53},"'theme'",[30,2113,2114],{"class":40},", { loop: ",[30,2116,493],{"class":70},[30,2118,642],{"class":40},[30,2120,2121],{"class":32,"line":185},[30,2122,61],{"emptyLinePlaceholder":60},[30,2124,2125,2127,2130,2132,2134,2136,2138,2140,2143,2145,2148,2150,2153,2155,2158,2160,2163,2165,2167],{"class":32,"line":200},[30,2126,506],{"class":36},[30,2128,2129],{"class":70}," title",[30,2131,74],{"class":36},[30,2133,329],{"class":70},[30,2135,224],{"class":40},[30,2137,1012],{"class":106},[30,2139,191],{"class":40},[30,2141,2142],{"class":53},"'title'",[30,2144,429],{"class":40},[30,2146,2147],{"class":70},"640",[30,2149,435],{"class":40},[30,2151,2152],{"class":70},"240",[30,2154,1029],{"class":40},[30,2156,2157],{"class":53},"'MOJA GRA'",[30,2159,1035],{"class":40},[30,2161,2162],{"class":53},"'48px'",[30,2164,1041],{"class":40},[30,2166,1044],{"class":53},[30,2168,642],{"class":40},[30,2170,2171,2173,2176,2178,2181,2183,2185],{"class":32,"line":206},[30,2172,1052],{"class":40},[30,2174,2175],{"class":106},"setOrigin",[30,2177,191],{"class":40},[30,2179,2180],{"class":70},"0.5",[30,2182,385],{"class":40},[30,2184,2180],{"class":70},[30,2186,197],{"class":40},[30,2188,2189,2191,2193,2196,2199,2201,2203,2206,2208,2211,2213,2216],{"class":32,"line":211},[30,2190,367],{"class":70},[30,2192,224],{"class":40},[30,2194,2195],{"class":106},"tweenFrom",[30,2197,2198],{"class":40},"(title, { alpha: ",[30,2200,382],{"class":70},[30,2202,435],{"class":40},[30,2204,2205],{"class":70},"180",[30,2207,832],{"class":40},[30,2209,2210],{"class":70},"0.6",[30,2212,851],{"class":40},[30,2214,2215],{"class":53},"'back.out'",[30,2217,642],{"class":40},[30,2219,2220],{"class":32,"line":219},[30,2221,61],{"emptyLinePlaceholder":60},[30,2223,2224,2226,2229,2231,2233,2235,2237,2239,2242,2244,2246,2248,2250,2252,2255,2257,2260,2262,2265],{"class":32,"line":233},[30,2225,506],{"class":36},[30,2227,2228],{"class":70}," start",[30,2230,74],{"class":36},[30,2232,329],{"class":70},[30,2234,224],{"class":40},[30,2236,1012],{"class":106},[30,2238,191],{"class":40},[30,2240,2241],{"class":53},"'start'",[30,2243,429],{"class":40},[30,2245,2147],{"class":70},[30,2247,435],{"class":40},[30,2249,528],{"class":70},[30,2251,1029],{"class":40},[30,2253,2254],{"class":53},"'Start'",[30,2256,1035],{"class":40},[30,2258,2259],{"class":53},"'24px'",[30,2261,1041],{"class":40},[30,2263,2264],{"class":53},"'#8f96f8'",[30,2266,642],{"class":40},[30,2268,2269,2271,2273,2275,2277,2279,2281],{"class":32,"line":257},[30,2270,1052],{"class":40},[30,2272,2175],{"class":106},[30,2274,191],{"class":40},[30,2276,2180],{"class":70},[30,2278,385],{"class":40},[30,2280,2180],{"class":70},[30,2282,197],{"class":40},[30,2284,2285,2287,2289,2291,2294,2296,2298,2301,2303,2305,2307,2309,2311],{"class":32,"line":276},[30,2286,367],{"class":70},[30,2288,224],{"class":40},[30,2290,820],{"class":106},[30,2292,2293],{"class":40},"(start, { alpha: ",[30,2295,2180],{"class":70},[30,2297,832],{"class":40},[30,2299,2300],{"class":70},"0.7",[30,2302,838],{"class":40},[30,2304,493],{"class":70},[30,2306,843],{"class":40},[30,2308,826],{"class":36},[30,2310,848],{"class":70},[30,2312,642],{"class":40},[30,2314,2315],{"class":32,"line":296},[30,2316,203],{"class":40},[30,2318,2319],{"class":32,"line":302},[30,2320,61],{"emptyLinePlaceholder":60},[30,2322,2323,2326],{"class":32,"line":307},[30,2324,2325],{"class":106},"  update",[30,2327,182],{"class":40},[30,2329,2330,2332,2334,2336,2338,2340,2342,2345,2347,2350,2352,2355,2357,2359,2361,2363,2366],{"class":32,"line":312},[30,2331,1744],{"class":36},[30,2333,604],{"class":40},[30,2335,466],{"class":70},[30,2337,224],{"class":40},[30,2339,1111],{"class":106},[30,2341,337],{"class":40},[30,2343,2344],{"class":106},"isActionPressed",[30,2346,191],{"class":40},[30,2348,2349],{"class":53},"'interact'",[30,2351,906],{"class":40},[30,2353,2354],{"class":36},"||",[30,2356,329],{"class":70},[30,2358,224],{"class":40},[30,2360,1111],{"class":106},[30,2362,337],{"class":40},[30,2364,2365],{"class":106},"getPointer",[30,2367,2368],{"class":40},"().isDown) {\n",[30,2370,2371,2373,2375,2378,2380,2383],{"class":32,"line":323},[30,2372,648],{"class":70},[30,2374,224],{"class":40},[30,2376,2377],{"class":106},"getAudio",[30,2379,337],{"class":40},[30,2381,2382],{"class":106},"unlock",[30,2384,343],{"class":40},[30,2386,2387,2389,2391,2393,2395,2398,2400,2403],{"class":32,"line":346},[30,2388,648],{"class":70},[30,2390,224],{"class":40},[30,2392,945],{"class":106},[30,2394,337],{"class":40},[30,2396,2397],{"class":106},"fadeOut",[30,2399,191],{"class":40},[30,2401,2402],{"class":70},"350",[30,2404,197],{"class":40},[30,2406,2407,2409,2411,2414,2416,2419,2421,2424,2427,2429],{"class":32,"line":351},[30,2408,648],{"class":70},[30,2410,224],{"class":40},[30,2412,2413],{"class":106},"getScheduler",[30,2415,337],{"class":40},[30,2417,2418],{"class":106},"delay",[30,2420,191],{"class":40},[30,2422,2423],{"class":70},"0.4",[30,2425,2426],{"class":40},", () ",[30,2428,909],{"class":36},[30,2430,116],{"class":40},[30,2432,2433,2436,2438,2440,2442,2444,2446,2449,2452,2454],{"class":32,"line":356},[30,2434,2435],{"class":70},"        this",[30,2437,224],{"class":40},[30,2439,1469],{"class":106},[30,2441,337],{"class":40},[30,2443,1474],{"class":106},[30,2445,191],{"class":40},[30,2447,2448],{"class":53},"'request:scene'",[30,2450,2451],{"class":40},", { to: ",[30,2453,194],{"class":53},[30,2455,642],{"class":40},[30,2457,2458,2461,2463],{"class":32,"line":364},[30,2459,2460],{"class":40},"      }, { owner: ",[30,2462,466],{"class":70},[30,2464,2465],{"class":40},".id })\n",[30,2467,2468],{"class":32,"line":403},[30,2469,699],{"class":40},[30,2471,2472],{"class":32,"line":408},[30,2473,203],{"class":40},[30,2475,2476],{"class":32,"line":450},[30,2477,1498],{"class":40},[10,2479,2481],{"id":2480},"przykład-4-autosave-do-indexeddb","Przykład 4: autosave do IndexedDB",[19,2483,2486],{"className":21,"code":2484,"filename":2485,"language":24,"meta":25,"style":25},"import { IndexedDbStore, PlayerSaveRepository } from '@engine'\n\nconst saves = new PlayerSaveRepository(new IndexedDbStore({ database: 'mygame' }))\n\nexport async function autosave(playerId: string, state: PlayerState) {\n  await saves.save(playerId, 'autosave', { ...state, savedAt: Date.now() })\n}\n\nexport async function loadAutosave(playerId: string) {\n  return saves.load\u003CPlayerState>(playerId, 'autosave')\n}\n","save.ts",[27,2487,2488,2499,2503,2534,2538,2573,2603,2607,2611,2632,2653],{"__ignoreMap":25},[30,2489,2490,2492,2495,2497],{"class":32,"line":33},[30,2491,37],{"class":36},[30,2493,2494],{"class":40}," { IndexedDbStore, PlayerSaveRepository } ",[30,2496,50],{"class":36},[30,2498,54],{"class":53},[30,2500,2501],{"class":32,"line":57},[30,2502,61],{"emptyLinePlaceholder":60},[30,2504,2505,2507,2510,2512,2515,2518,2520,2522,2525,2528,2531],{"class":32,"line":64},[30,2506,67],{"class":36},[30,2508,2509],{"class":70}," saves",[30,2511,74],{"class":36},[30,2513,2514],{"class":36}," new",[30,2516,2517],{"class":106}," PlayerSaveRepository",[30,2519,191],{"class":40},[30,2521,1990],{"class":36},[30,2523,2524],{"class":106}," IndexedDbStore",[30,2526,2527],{"class":40},"({ database: ",[30,2529,2530],{"class":53},"'mygame'",[30,2532,2533],{"class":40}," }))\n",[30,2535,2536],{"class":32,"line":92},[30,2537,61],{"emptyLinePlaceholder":60},[30,2539,2540,2542,2545,2548,2551,2553,2556,2558,2561,2563,2566,2568,2571],{"class":32,"line":97},[30,2541,100],{"class":36},[30,2543,2544],{"class":36}," async",[30,2546,2547],{"class":36}," function",[30,2549,2550],{"class":106}," autosave",[30,2552,191],{"class":40},[30,2554,2555],{"class":125},"playerId",[30,2557,143],{"class":36},[30,2559,2560],{"class":70}," string",[30,2562,385],{"class":40},[30,2564,2565],{"class":125},"state",[30,2567,143],{"class":36},[30,2569,2570],{"class":106}," PlayerState",[30,2572,1277],{"class":40},[30,2574,2575,2578,2581,2584,2587,2590,2592,2594,2597,2600],{"class":32,"line":119},[30,2576,2577],{"class":36},"  await",[30,2579,2580],{"class":40}," saves.",[30,2582,2583],{"class":106},"save",[30,2585,2586],{"class":40},"(playerId, ",[30,2588,2589],{"class":53},"'autosave'",[30,2591,800],{"class":40},[30,2593,803],{"class":36},[30,2595,2596],{"class":40},"state, savedAt: Date.",[30,2598,2599],{"class":106},"now",[30,2601,2602],{"class":40},"() })\n",[30,2604,2605],{"class":32,"line":135},[30,2606,1498],{"class":40},[30,2608,2609],{"class":32,"line":158},[30,2610,61],{"emptyLinePlaceholder":60},[30,2612,2613,2615,2617,2619,2622,2624,2626,2628,2630],{"class":32,"line":171},[30,2614,100],{"class":36},[30,2616,2544],{"class":36},[30,2618,2547],{"class":36},[30,2620,2621],{"class":106}," loadAutosave",[30,2623,191],{"class":40},[30,2625,2555],{"class":125},[30,2627,143],{"class":36},[30,2629,2560],{"class":70},[30,2631,1277],{"class":40},[30,2633,2634,2637,2639,2641,2643,2646,2649,2651],{"class":32,"line":176},[30,2635,2636],{"class":36},"  return",[30,2638,2580],{"class":40},[30,2640,340],{"class":106},[30,2642,1427],{"class":40},[30,2644,2645],{"class":106},"PlayerState",[30,2647,2648],{"class":40},">(playerId, ",[30,2650,2589],{"class":53},[30,2652,197],{"class":40},[30,2654,2655],{"class":32,"line":185},[30,2656,1498],{"class":40},[19,2658,2660],{"className":21,"code":2659,"language":24,"meta":25,"style":25},"class CollectScene extends Scene {\n  shutdown() {\n    void autosave('player-1', {\n      score: this.score,\n      position: { x: this.player.x, y: this.player.y }\n    })\n  }\n}\n",[27,2661,2662,2675,2682,2697,2707,2722,2726,2730],{"__ignoreMap":25},[30,2663,2664,2667,2669,2671,2673],{"class":32,"line":33},[30,2665,2666],{"class":36},"class",[30,2668,107],{"class":106},[30,2670,110],{"class":36},[30,2672,113],{"class":106},[30,2674,116],{"class":40},[30,2676,2677,2680],{"class":32,"line":57},[30,2678,2679],{"class":106},"  shutdown",[30,2681,182],{"class":40},[30,2683,2684,2687,2689,2691,2694],{"class":32,"line":64},[30,2685,2686],{"class":36},"    void",[30,2688,2550],{"class":106},[30,2690,191],{"class":40},[30,2692,2693],{"class":53},"'player-1'",[30,2695,2696],{"class":40},", {\n",[30,2698,2699,2702,2704],{"class":32,"line":92},[30,2700,2701],{"class":40},"      score: ",[30,2703,466],{"class":70},[30,2705,2706],{"class":40},".score,\n",[30,2708,2709,2712,2714,2717,2719],{"class":32,"line":97},[30,2710,2711],{"class":40},"      position: { x: ",[30,2713,466],{"class":70},[30,2715,2716],{"class":40},".player.x, y: ",[30,2718,466],{"class":70},[30,2720,2721],{"class":40},".player.y }\n",[30,2723,2724],{"class":32,"line":119},[30,2725,930],{"class":40},[30,2727,2728],{"class":32,"line":135},[30,2729,203],{"class":40},[30,2731,2732],{"class":32,"line":158},[30,2733,1498],{"class":40},[10,2735,2737],{"id":2736},"rejestracja-wszystkiego","Rejestracja wszystkiego",[19,2739,2742],{"className":21,"code":2740,"filename":2741,"language":24,"meta":25,"style":25},"import { createEngine } from '@engine'\nimport { MenuScene } from '.\u002Fscenes\u002FMenuScene'\nimport { CollectScene } from '.\u002Fscenes\u002FCollectScene'\n\nconst engine = createEngine({\n  parent: 'app',\n  width: 1280,\n  height: 720,\n  fixedStep: { hz: 60 },\n  seed: 20260\n})\n\nengine.registerScene(new MenuScene())\nengine.registerScene(new CollectScene())\n\nengine.on\u003C{ to: string }>('request:scene', ({ to }) => engine.startScene(to))\n\nengine.start('menu')\n","main.ts",[27,2743,2744,2755,2767,2779,2783,2798,2808,2818,2828,2838,2846,2851,2855,2872,2886,2890,2931,2935],{"__ignoreMap":25},[30,2745,2746,2748,2751,2753],{"class":32,"line":33},[30,2747,37],{"class":36},[30,2749,2750],{"class":40}," { createEngine } ",[30,2752,50],{"class":36},[30,2754,54],{"class":53},[30,2756,2757,2759,2762,2764],{"class":32,"line":57},[30,2758,37],{"class":36},[30,2760,2761],{"class":40}," { MenuScene } ",[30,2763,50],{"class":36},[30,2765,2766],{"class":53}," '.\u002Fscenes\u002FMenuScene'\n",[30,2768,2769,2771,2774,2776],{"class":32,"line":64},[30,2770,37],{"class":36},[30,2772,2773],{"class":40}," { CollectScene } ",[30,2775,50],{"class":36},[30,2777,2778],{"class":53}," '.\u002Fscenes\u002FCollectScene'\n",[30,2780,2781],{"class":32,"line":92},[30,2782,61],{"emptyLinePlaceholder":60},[30,2784,2785,2787,2790,2792,2795],{"class":32,"line":97},[30,2786,67],{"class":36},[30,2788,2789],{"class":70}," engine",[30,2791,74],{"class":36},[30,2793,2794],{"class":106}," createEngine",[30,2796,2797],{"class":40},"({\n",[30,2799,2800,2803,2806],{"class":32,"line":119},[30,2801,2802],{"class":40},"  parent: ",[30,2804,2805],{"class":53},"'app'",[30,2807,1389],{"class":40},[30,2809,2810,2813,2816],{"class":32,"line":135},[30,2811,2812],{"class":40},"  width: ",[30,2814,2815],{"class":70},"1280",[30,2817,1389],{"class":40},[30,2819,2820,2823,2826],{"class":32,"line":158},[30,2821,2822],{"class":40},"  height: ",[30,2824,2825],{"class":70},"720",[30,2827,1389],{"class":40},[30,2829,2830,2833,2836],{"class":32,"line":171},[30,2831,2832],{"class":40},"  fixedStep: { hz: ",[30,2834,2835],{"class":70},"60",[30,2837,254],{"class":40},[30,2839,2840,2843],{"class":32,"line":176},[30,2841,2842],{"class":40},"  seed: ",[30,2844,2845],{"class":70},"20260\n",[30,2847,2848],{"class":32,"line":185},[30,2849,2850],{"class":40},"})\n",[30,2852,2853],{"class":32,"line":200},[30,2854,61],{"emptyLinePlaceholder":60},[30,2856,2857,2860,2863,2865,2867,2869],{"class":32,"line":206},[30,2858,2859],{"class":40},"engine.",[30,2861,2862],{"class":106},"registerScene",[30,2864,191],{"class":40},[30,2866,1990],{"class":36},[30,2868,2041],{"class":106},[30,2870,2871],{"class":40},"())\n",[30,2873,2874,2876,2878,2880,2882,2884],{"class":32,"line":211},[30,2875,2859],{"class":40},[30,2877,2862],{"class":106},[30,2879,191],{"class":40},[30,2881,1990],{"class":36},[30,2883,107],{"class":106},[30,2885,2871],{"class":40},[30,2887,2888],{"class":32,"line":219},[30,2889,61],{"emptyLinePlaceholder":60},[30,2891,2892,2894,2897,2900,2903,2905,2907,2910,2912,2915,2917,2920,2922,2925,2928],{"class":32,"line":233},[30,2893,2859],{"class":40},[30,2895,2896],{"class":106},"on",[30,2898,2899],{"class":40},"\u003C{ ",[30,2901,2902],{"class":125},"to",[30,2904,143],{"class":36},[30,2906,2560],{"class":70},[30,2908,2909],{"class":40}," }>(",[30,2911,2448],{"class":53},[30,2913,2914],{"class":40},", ({ ",[30,2916,2902],{"class":125},[30,2918,2919],{"class":40}," }) ",[30,2921,909],{"class":36},[30,2923,2924],{"class":40}," engine.",[30,2926,2927],{"class":106},"startScene",[30,2929,2930],{"class":40},"(to))\n",[30,2932,2933],{"class":32,"line":257},[30,2934,61],{"emptyLinePlaceholder":60},[30,2936,2937,2939,2942,2944,2946],{"class":32,"line":276},[30,2938,2859],{"class":40},[30,2940,2941],{"class":106},"start",[30,2943,191],{"class":40},[30,2945,2062],{"class":53},[30,2947,197],{"class":40},[2949,2950,2952],"callout",{"type":2951},"tip",[15,2953,2954,2955,2958,2959,2962],{},"Więcej działających przykładów znajdziesz w repozytorium: ",[27,2956,2957],{},"apps\u002Fplayground\u002Fsrc\u002Fscenes\u002FGameScene.ts"," (pełna gra z zapisami, colliderami i HUD) oraz ",[27,2960,2961],{},"apps\u002Fplayground\u002Fsrc\u002Fcomponents\u002F"," (PlayerController, Bobbing, CollectEffect, Sparkle).",[2964,2965,2966],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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":25,"searchDepth":64,"depth":64,"links":2968},[2969,2970,2971,2972,2973],{"id":12,"depth":57,"text":13},{"id":1501,"depth":57,"text":1502},{"id":2010,"depth":57,"text":2011},{"id":2480,"depth":57,"text":2481},{"id":2736,"depth":57,"text":2737},"[object Object]","md",{},"\u002Fgame-engine\u002Fexamples",{"title":5,"description":2979},{"Kompletne, działające przykłady":2980},"scena z ruchem i kolizjami, zbieranie przedmiotów z feedbackiem, zapisy i menu z przejściem.","01.game-engine\u002F10.examples","Dxm_uCW2NTse-wP9KdID0ahWxC6Q-BSYveJTedbtm0M",[2984,2989],{"title":2985,"path":2986,"stem":2987,"description":2988,"children":-1},"Wdrożenie","\u002Fgame-engine\u002Fdeployment","01.game-engine\u002F09.deployment","Dwie konfiguracje Vite, względne base, brak SPA fallback, CSP z hashem, cache immutable i gotowe konfiguracje hostingu.",{"title":2990,"path":2991,"stem":2992,"description":2993,"children":-1},"Decyzje architektoniczne","\u002Fgame-engine\u002Fadr","01.game-engine\u002F11.adr","Dziewięć rekordów ADR — decyzje, których cofnięcie kosztowałoby więcej niż tydzień pracy. Kontekst, decyzja, konsekwencje.",[2995,3106,3167],{"title":2996,"path":2997,"stem":2998,"children":2999},"2D Game Engine","\u002Fgame-engine","01.game-engine\u002F01.index",[3000,3002,3006,3010,3014,3040,3069,3082,3103,3104,3105],{"title":3001,"path":2997,"stem":2998},"Przegląd",{"title":3003,"path":3004,"stem":3005},"Szybki start","\u002Fgame-engine\u002Fgetting-started","01.game-engine\u002F02.getting-started",{"title":3007,"path":3008,"stem":3009},"Konfiguracja","\u002Fgame-engine\u002Fconfiguration","01.game-engine\u002F03.configuration",{"title":3011,"path":3012,"stem":3013},"Architektura","\u002Fgame-engine\u002Farchitecture","01.game-engine\u002F04.architecture",{"title":3015,"path":3016,"stem":3017,"children":3018,"page":3039},"Rdzeń","\u002Fgame-engine\u002Fcore","01.game-engine\u002F05.core",[3019,3023,3027,3031,3035],{"title":3020,"path":3021,"stem":3022},"Silnik i cykl życia","\u002Fgame-engine\u002Fcore\u002Fengine","01.game-engine\u002F05.core\u002F01.engine",{"title":3024,"path":3025,"stem":3026},"Czas i pętla gry","\u002Fgame-engine\u002Fcore\u002Ftime","01.game-engine\u002F05.core\u002F02.time",{"title":3028,"path":3029,"stem":3030},"Sceny","\u002Fgame-engine\u002Fcore\u002Fscenes","01.game-engine\u002F05.core\u002F03.scenes",{"title":3032,"path":3033,"stem":3034},"Obiekty i komponenty","\u002Fgame-engine\u002Fcore\u002Fobjects","01.game-engine\u002F05.core\u002F04.objects",{"title":3036,"path":3037,"stem":3038},"Zdarzenia i harmonogram","\u002Fgame-engine\u002Fcore\u002Fevents","01.game-engine\u002F05.core\u002F05.events",false,{"title":3041,"path":3042,"stem":3043,"children":3044,"page":3039},"Systemy","\u002Fgame-engine\u002Fsystems","01.game-engine\u002F06.systems",[3045,3049,3053,3057,3061,3065],{"title":3046,"path":3047,"stem":3048},"Zasoby (AssetManager)","\u002Fgame-engine\u002Fsystems\u002Fassets","01.game-engine\u002F06.systems\u002F01.assets",{"title":3050,"path":3051,"stem":3052},"Wejście (InputManager)","\u002Fgame-engine\u002Fsystems\u002Finput","01.game-engine\u002F06.systems\u002F02.input",{"title":3054,"path":3055,"stem":3056},"Fizyka (PhysicsManager)","\u002Fgame-engine\u002Fsystems\u002Fphysics","01.game-engine\u002F06.systems\u002F03.physics",{"title":3058,"path":3059,"stem":3060},"Kamera (CameraManager)","\u002Fgame-engine\u002Fsystems\u002Fcamera","01.game-engine\u002F06.systems\u002F04.camera",{"title":3062,"path":3063,"stem":3064},"Audio (AudioManager)","\u002Fgame-engine\u002Fsystems\u002Faudio","01.game-engine\u002F06.systems\u002F05.audio",{"title":3066,"path":3067,"stem":3068},"Tweeny i easing","\u002Fgame-engine\u002Fsystems\u002Ftweens","01.game-engine\u002F06.systems\u002F06.tweens",{"title":3070,"path":3071,"stem":3072,"children":3073,"page":3039},"Dane i zapisy","\u002Fgame-engine\u002Fdata","01.game-engine\u002F07.data",[3074,3078],{"title":3075,"path":3076,"stem":3077},"Format projektu","\u002Fgame-engine\u002Fdata\u002Fproject-format","01.game-engine\u002F07.data\u002F01.project-format",{"title":3079,"path":3080,"stem":3081},"Zapisy gry","\u002Fgame-engine\u002Fdata\u002Fsaves","01.game-engine\u002F07.data\u002F02.saves",{"title":3083,"path":3084,"stem":3085,"children":3086,"page":3039},"Zaawansowane","\u002Fgame-engine\u002Fadvanced","01.game-engine\u002F08.advanced",[3087,3091,3095,3099],{"title":3088,"path":3089,"stem":3090},"Pluginy","\u002Fgame-engine\u002Fadvanced\u002Fplugins","01.game-engine\u002F08.advanced\u002F01.plugins",{"title":3092,"path":3093,"stem":3094},"WebAssembly","\u002Fgame-engine\u002Fadvanced\u002Fwasm","01.game-engine\u002F08.advanced\u002F02.wasm",{"title":3096,"path":3097,"stem":3098},"Debugowanie","\u002Fgame-engine\u002Fadvanced\u002Fdebugging","01.game-engine\u002F08.advanced\u002F03.debugging",{"title":3100,"path":3101,"stem":3102},"Wydajność i benchmarki","\u002Fgame-engine\u002Fadvanced\u002Fperformance","01.game-engine\u002F08.advanced\u002F04.performance",{"title":2985,"path":2986,"stem":2987},{"title":5,"path":2977,"stem":2981},{"title":2990,"path":2991,"stem":2992},{"title":3107,"path":3108,"stem":3109,"children":3110},"Reverse Proxy","\u002Freverse-proxy","02.reverse-proxy\u002F01.index",[3111,3112,3115,3118,3139],{"title":3001,"path":3108,"stem":3109},{"title":3003,"path":3113,"stem":3114},"\u002Freverse-proxy\u002Fgetting-started","02.reverse-proxy\u002F02.getting-started",{"title":3007,"path":3116,"stem":3117},"\u002Freverse-proxy\u002Fconfiguration","02.reverse-proxy\u002F03.configuration",{"title":3119,"path":3120,"stem":3121,"children":3122,"page":3039},"Ruch i odporność","\u002Freverse-proxy\u002Ftraffic","02.reverse-proxy\u002F04.traffic",[3123,3127,3131,3135],{"title":3124,"path":3125,"stem":3126},"Load balancing","\u002Freverse-proxy\u002Ftraffic\u002Fload-balancing","02.reverse-proxy\u002F04.traffic\u002F01.load-balancing",{"title":3128,"path":3129,"stem":3130},"Health checks","\u002Freverse-proxy\u002Ftraffic\u002Fhealth-checks","02.reverse-proxy\u002F04.traffic\u002F02.health-checks",{"title":3132,"path":3133,"stem":3134},"Circuit breaker i retry","\u002Freverse-proxy\u002Ftraffic\u002Fresilience","02.reverse-proxy\u002F04.traffic\u002F03.resilience",{"title":3136,"path":3137,"stem":3138},"Rate limiting","\u002Freverse-proxy\u002Ftraffic\u002Frate-limiting","02.reverse-proxy\u002F04.traffic\u002F04.rate-limiting",{"title":3140,"path":3141,"stem":3142,"children":3143,"page":3039},"Operacje i wdrożenie","\u002Freverse-proxy\u002Foperations","02.reverse-proxy\u002F05.operations",[3144,3148,3152,3156,3159,3163],{"title":3145,"path":3146,"stem":3147},"Admin API","\u002Freverse-proxy\u002Foperations\u002Fadmin-api","02.reverse-proxy\u002F05.operations\u002F01.admin-api",{"title":3149,"path":3150,"stem":3151},"Metryki i monitoring","\u002Freverse-proxy\u002Foperations\u002Fobservability","02.reverse-proxy\u002F05.operations\u002F02.observability",{"title":3153,"path":3154,"stem":3155},"Bezpieczeństwo","\u002Freverse-proxy\u002Foperations\u002Fsecurity","02.reverse-proxy\u002F05.operations\u002F03.security",{"title":2985,"path":3157,"stem":3158},"\u002Freverse-proxy\u002Foperations\u002Fdeployment","02.reverse-proxy\u002F05.operations\u002F04.deployment",{"title":3160,"path":3161,"stem":3162},"Benchmarki","\u002Freverse-proxy\u002Foperations\u002Fbenchmarks","02.reverse-proxy\u002F05.operations\u002F05.benchmarks",{"title":3164,"path":3165,"stem":3166},"Troubleshooting","\u002Freverse-proxy\u002Foperations\u002Ftroubleshooting","02.reverse-proxy\u002F05.operations\u002F06.troubleshooting",{"title":3168,"path":3169,"stem":3170,"children":3171},"Vector Engine","\u002Fvector-engine","03.vector-engine\u002F01.index",[3172,3173,3176,3197,3210,3230],{"title":3001,"path":3169,"stem":3170},{"title":3003,"path":3174,"stem":3175},"\u002Fvector-engine\u002Fgetting-started","03.vector-engine\u002F02.getting-started",{"title":3177,"path":3178,"stem":3179,"children":3180,"page":3039},"Scena","\u002Fvector-engine\u002Fscene","03.vector-engine\u002F03.scene",[3181,3185,3189,3193],{"title":3182,"path":3183,"stem":3184},"Format sceny 1.0","\u002Fvector-engine\u002Fscene\u002Fscene-format","03.vector-engine\u002F03.scene\u002F01.scene-format",{"title":3186,"path":3187,"stem":3188},"Obiekty sceny","\u002Fvector-engine\u002Fscene\u002Fobjects","03.vector-engine\u002F03.scene\u002F02.objects",{"title":3190,"path":3191,"stem":3192},"Gradienty i warstwy","\u002Fvector-engine\u002Fscene\u002Fgradients-layers","03.vector-engine\u002F03.scene\u002F03.gradients-layers",{"title":3194,"path":3195,"stem":3196},"Przykłady scen","\u002Fvector-engine\u002Fscene\u002Fexamples","03.vector-engine\u002F03.scene\u002F04.examples",{"title":3198,"path":3199,"stem":3200,"children":3201,"page":3039},"Eksport","\u002Fvector-engine\u002Fexport","03.vector-engine\u002F04.export",[3202,3206],{"title":3203,"path":3204,"stem":3205},"Formaty eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-formats","03.vector-engine\u002F04.export\u002F01.export-formats",{"title":3207,"path":3208,"stem":3209},"Proces eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-workflow","03.vector-engine\u002F04.export\u002F02.export-workflow",{"title":3211,"path":3212,"stem":3213,"children":3214,"page":3039},"Wnętrze silnika","\u002Fvector-engine\u002Finternals","03.vector-engine\u002F05.internals",[3215,3218,3222,3226],{"title":3011,"path":3216,"stem":3217},"\u002Fvector-engine\u002Finternals\u002Farchitecture","03.vector-engine\u002F05.internals\u002F01.architecture",{"title":3219,"path":3220,"stem":3221},"WebAssembly i workery","\u002Fvector-engine\u002Finternals\u002Fwasm","03.vector-engine\u002F05.internals\u002F02.wasm",{"title":3223,"path":3224,"stem":3225},"Workspace i panele","\u002Fvector-engine\u002Finternals\u002Fworkspace","03.vector-engine\u002F05.internals\u002F03.workspace",{"title":3227,"path":3228,"stem":3229},"Breakpointy","\u002Fvector-engine\u002Finternals\u002Fbreakpoints","03.vector-engine\u002F05.internals\u002F04.breakpoints",{"title":3231,"path":3232,"stem":3233},"Wdrożenie na Vercel","\u002Fvector-engine\u002Fdeployment","03.vector-engine\u002F06.deployment",1793986307963]