[{"data":1,"prerenderedAt":1427},["ShallowReactive",2],{"doc:\u002Fgame-engine\u002Fsystems\u002Ftweens":3,"surround:\u002Fgame-engine\u002Fsystems\u002Ftweens":1177,"navigation":1188},{"id":4,"title":5,"body":6,"description":1170,"extension":1171,"meta":1172,"navigation":88,"path":1173,"seo":1174,"stem":1175,"__hash__":1176},"docs\u002F01.game-engine\u002F06.systems\u002F06.tweens.md","Tweeny i easing",{"type":7,"value":8,"toc":1157},"minimark",[9,14,23,160,164,355,359,536,542,546,551,625,629,711,715,787,791,915,924,927,931,986,1045,1049,1139,1153],[10,11,13],"h2",{"id":12},"podstawy","Podstawy",[15,16,17,18,22],"p",{},"Tweeny mutują ",[19,20,21],"strong",{},"zwykłe właściwości"," obiektu (x, y, alpha, scale…) i nigdy nie dotykają renderera bezpośrednio — synchronizacja idzie przez dirty flags.",[24,25,30],"pre",{"className":26,"code":27,"language":28,"meta":29,"style":29},"language-ts shiki shiki-themes github-light github-dark","this.tween(this.player, { x: 400, y: 300 }, { duration: 0.6, easing: 'quad.out' })\n\nthis.tweenFrom(this.title, { alpha: 0, y: 200 }, { duration: 0.5 })\n\nthis.delay(1.2, () => this.spawnBoss())\n","ts","",[31,32,33,83,90,122,127],"code",{"__ignoreMap":29},[34,35,38,42,46,50,53,55,58,61,64,67,70,73,76,80],"span",{"class":36,"line":37},"line",1,[34,39,41],{"class":40},"sj4cs","this",[34,43,45],{"class":44},"sVt8B",".",[34,47,49],{"class":48},"sScJk","tween",[34,51,52],{"class":44},"(",[34,54,41],{"class":40},[34,56,57],{"class":44},".player, { x: ",[34,59,60],{"class":40},"400",[34,62,63],{"class":44},", y: ",[34,65,66],{"class":40},"300",[34,68,69],{"class":44}," }, { duration: ",[34,71,72],{"class":40},"0.6",[34,74,75],{"class":44},", easing: ",[34,77,79],{"class":78},"sZZnC","'quad.out'",[34,81,82],{"class":44}," })\n",[34,84,86],{"class":36,"line":85},2,[34,87,89],{"emptyLinePlaceholder":88},true,"\n",[34,91,93,95,97,100,102,104,107,110,112,115,117,120],{"class":36,"line":92},3,[34,94,41],{"class":40},[34,96,45],{"class":44},[34,98,99],{"class":48},"tweenFrom",[34,101,52],{"class":44},[34,103,41],{"class":40},[34,105,106],{"class":44},".title, { alpha: ",[34,108,109],{"class":40},"0",[34,111,63],{"class":44},[34,113,114],{"class":40},"200",[34,116,69],{"class":44},[34,118,119],{"class":40},"0.5",[34,121,82],{"class":44},[34,123,125],{"class":36,"line":124},4,[34,126,89],{"emptyLinePlaceholder":88},[34,128,130,132,134,137,139,142,145,149,152,154,157],{"class":36,"line":129},5,[34,131,41],{"class":40},[34,133,45],{"class":44},[34,135,136],{"class":48},"delay",[34,138,52],{"class":44},[34,140,141],{"class":40},"1.2",[34,143,144],{"class":44},", () ",[34,146,148],{"class":147},"szBVR","=>",[34,150,151],{"class":40}," this",[34,153,45],{"class":44},[34,155,156],{"class":48},"spawnBoss",[34,158,159],{"class":44},"())\n",[10,161,163],{"id":162},"api","API",[24,165,167],{"className":26,"code":166,"language":28,"meta":29,"style":29},"tweenManager.to(target, props, options?): Tween\ntweenManager.from(target, props, options?): Tween\ntweenManager.delay(seconds, onComplete?, options?): Tween\ntweenManager.sequence(steps, options?): TweenSequence\ntweenManager.add(tween); update(dt); pause(); resume()\ntweenManager.cancel(tween): boolean\ntweenManager.stopOwner(owner): number; stopAll()\ntweenManager.size; activeCount; sequenceCount; isPaused\n\ntween.play(); pause(); resume(); restart(); cancel(); complete()\ntween.progress; totalProgress; values; isPlaying; isPaused; isFinished; isCancelled; stateName\n",[31,168,169,192,209,231,250,278,289,305,311,316,349],{"__ignoreMap":29},[34,170,171,174,177,180,183,186,189],{"class":36,"line":37},[34,172,173],{"class":44},"tweenManager.",[34,175,176],{"class":48},"to",[34,178,179],{"class":44},"(target, props, options",[34,181,182],{"class":147},"?",[34,184,185],{"class":44},")",[34,187,188],{"class":147},":",[34,190,191],{"class":44}," Tween\n",[34,193,194,196,199,201,203,205,207],{"class":36,"line":85},[34,195,173],{"class":44},[34,197,198],{"class":48},"from",[34,200,179],{"class":44},[34,202,182],{"class":147},[34,204,185],{"class":44},[34,206,188],{"class":147},[34,208,191],{"class":44},[34,210,211,213,215,218,220,223,225,227,229],{"class":36,"line":92},[34,212,173],{"class":44},[34,214,136],{"class":48},[34,216,217],{"class":44},"(seconds, onComplete",[34,219,182],{"class":147},[34,221,222],{"class":44},", options",[34,224,182],{"class":147},[34,226,185],{"class":44},[34,228,188],{"class":147},[34,230,191],{"class":44},[34,232,233,235,238,241,243,245,247],{"class":36,"line":124},[34,234,173],{"class":44},[34,236,237],{"class":48},"sequence",[34,239,240],{"class":44},"(steps, options",[34,242,182],{"class":147},[34,244,185],{"class":44},[34,246,188],{"class":147},[34,248,249],{"class":44}," TweenSequence\n",[34,251,252,254,257,260,263,266,269,272,275],{"class":36,"line":129},[34,253,173],{"class":44},[34,255,256],{"class":48},"add",[34,258,259],{"class":44},"(tween); ",[34,261,262],{"class":48},"update",[34,264,265],{"class":44},"(dt); ",[34,267,268],{"class":48},"pause",[34,270,271],{"class":44},"(); ",[34,273,274],{"class":48},"resume",[34,276,277],{"class":44},"()\n",[34,279,281,283,286],{"class":36,"line":280},6,[34,282,173],{"class":44},[34,284,285],{"class":48},"cancel",[34,287,288],{"class":44},"(tween): boolean\n",[34,290,292,294,297,300,303],{"class":36,"line":291},7,[34,293,173],{"class":44},[34,295,296],{"class":48},"stopOwner",[34,298,299],{"class":44},"(owner): number; ",[34,301,302],{"class":48},"stopAll",[34,304,277],{"class":44},[34,306,308],{"class":36,"line":307},8,[34,309,310],{"class":44},"tweenManager.size; activeCount; sequenceCount; isPaused\n",[34,312,314],{"class":36,"line":313},9,[34,315,89],{"emptyLinePlaceholder":88},[34,317,319,322,325,327,329,331,333,335,338,340,342,344,347],{"class":36,"line":318},10,[34,320,321],{"class":44},"tween.",[34,323,324],{"class":48},"play",[34,326,271],{"class":44},[34,328,268],{"class":48},[34,330,271],{"class":44},[34,332,274],{"class":48},[34,334,271],{"class":44},[34,336,337],{"class":48},"restart",[34,339,271],{"class":44},[34,341,285],{"class":48},[34,343,271],{"class":44},[34,345,346],{"class":48},"complete",[34,348,277],{"class":44},[34,350,352],{"class":36,"line":351},11,[34,353,354],{"class":44},"tween.progress; totalProgress; values; isPlaying; isPaused; isFinished; isCancelled; stateName\n",[10,356,358],{"id":357},"tweenoptions","TweenOptions",[24,360,362],{"className":26,"code":361,"language":28,"meta":29,"style":29},"type TweenOptions = {\n  duration?: number\n  delay?: number\n  easing?: string | ((t: number) => number)\n  repeat?: number\n  yoyo?: boolean\n  owner?: string\n  onStart?: () => void\n  onUpdate?: () => void\n  onRepeat?: () => void\n  onComplete?: () => void\n  onCancel?: () => void\n}\n",[31,363,364,378,390,399,433,442,452,462,477,490,503,516,530],{"__ignoreMap":29},[34,365,366,369,372,375],{"class":36,"line":37},[34,367,368],{"class":147},"type",[34,370,371],{"class":48}," TweenOptions",[34,373,374],{"class":147}," =",[34,376,377],{"class":44}," {\n",[34,379,380,384,387],{"class":36,"line":85},[34,381,383],{"class":382},"s4XuR","  duration",[34,385,386],{"class":147},"?:",[34,388,389],{"class":40}," number\n",[34,391,392,395,397],{"class":36,"line":92},[34,393,394],{"class":382},"  delay",[34,396,386],{"class":147},[34,398,389],{"class":40},[34,400,401,404,406,409,412,415,418,420,423,426,428,430],{"class":36,"line":124},[34,402,403],{"class":382},"  easing",[34,405,386],{"class":147},[34,407,408],{"class":40}," string",[34,410,411],{"class":147}," |",[34,413,414],{"class":44}," ((",[34,416,417],{"class":382},"t",[34,419,188],{"class":147},[34,421,422],{"class":40}," number",[34,424,425],{"class":44},") ",[34,427,148],{"class":147},[34,429,422],{"class":40},[34,431,432],{"class":44},")\n",[34,434,435,438,440],{"class":36,"line":129},[34,436,437],{"class":382},"  repeat",[34,439,386],{"class":147},[34,441,389],{"class":40},[34,443,444,447,449],{"class":36,"line":280},[34,445,446],{"class":382},"  yoyo",[34,448,386],{"class":147},[34,450,451],{"class":40}," boolean\n",[34,453,454,457,459],{"class":36,"line":291},[34,455,456],{"class":382},"  owner",[34,458,386],{"class":147},[34,460,461],{"class":40}," string\n",[34,463,464,467,469,472,474],{"class":36,"line":307},[34,465,466],{"class":48},"  onStart",[34,468,386],{"class":147},[34,470,471],{"class":44}," () ",[34,473,148],{"class":147},[34,475,476],{"class":40}," void\n",[34,478,479,482,484,486,488],{"class":36,"line":313},[34,480,481],{"class":48},"  onUpdate",[34,483,386],{"class":147},[34,485,471],{"class":44},[34,487,148],{"class":147},[34,489,476],{"class":40},[34,491,492,495,497,499,501],{"class":36,"line":318},[34,493,494],{"class":48},"  onRepeat",[34,496,386],{"class":147},[34,498,471],{"class":44},[34,500,148],{"class":147},[34,502,476],{"class":40},[34,504,505,508,510,512,514],{"class":36,"line":351},[34,506,507],{"class":48},"  onComplete",[34,509,386],{"class":147},[34,511,471],{"class":44},[34,513,148],{"class":147},[34,515,476],{"class":40},[34,517,519,522,524,526,528],{"class":36,"line":518},12,[34,520,521],{"class":48},"  onCancel",[34,523,386],{"class":147},[34,525,471],{"class":44},[34,527,148],{"class":147},[34,529,476],{"class":40},[34,531,533],{"class":36,"line":532},13,[34,534,535],{"class":44},"}\n",[15,537,538,541],{},[31,539,540],{},"repeat: -1"," = nieskończona pętla.",[10,543,545],{"id":544},"przykłady","Przykłady",[547,548,550],"h3",{"id":549},"pulsujący-przycisk","Pulsujący przycisk",[24,552,554],{"className":26,"code":553,"language":28,"meta":29,"style":29},"this.tween(startButton, { scaleX: 1.08, scaleY: 1.08 }, {\n  duration: 0.7,\n  easing: 'sine.inOut',\n  repeat: -1,\n  yoyo: true\n})\n",[31,555,556,578,589,599,612,620],{"__ignoreMap":29},[34,557,558,560,562,564,567,570,573,575],{"class":36,"line":37},[34,559,41],{"class":40},[34,561,45],{"class":44},[34,563,49],{"class":48},[34,565,566],{"class":44},"(startButton, { scaleX: ",[34,568,569],{"class":40},"1.08",[34,571,572],{"class":44},", scaleY: ",[34,574,569],{"class":40},[34,576,577],{"class":44}," }, {\n",[34,579,580,583,586],{"class":36,"line":85},[34,581,582],{"class":44},"  duration: ",[34,584,585],{"class":40},"0.7",[34,587,588],{"class":44},",\n",[34,590,591,594,597],{"class":36,"line":92},[34,592,593],{"class":44},"  easing: ",[34,595,596],{"class":78},"'sine.inOut'",[34,598,588],{"class":44},[34,600,601,604,607,610],{"class":36,"line":124},[34,602,603],{"class":44},"  repeat: ",[34,605,606],{"class":147},"-",[34,608,609],{"class":40},"1",[34,611,588],{"class":44},[34,613,614,617],{"class":36,"line":129},[34,615,616],{"class":44},"  yoyo: ",[34,618,619],{"class":40},"true\n",[34,621,622],{"class":36,"line":280},[34,623,624],{"class":44},"})\n",[547,626,628],{"id":627},"wejście-obiektu-z-opóźnieniem","Wejście obiektu z opóźnieniem",[24,630,632],{"className":26,"code":631,"language":28,"meta":29,"style":29},"this.tweenFrom(enemy, { alpha: 0, y: enemy.y - 60 }, {\n  duration: 0.4,\n  delay: 0.2,\n  easing: 'back.out',\n  onComplete: () => enemy.addTag('active')\n})\n",[31,633,634,657,666,676,685,707],{"__ignoreMap":29},[34,635,636,638,640,642,645,647,650,652,655],{"class":36,"line":37},[34,637,41],{"class":40},[34,639,45],{"class":44},[34,641,99],{"class":48},[34,643,644],{"class":44},"(enemy, { alpha: ",[34,646,109],{"class":40},[34,648,649],{"class":44},", y: enemy.y ",[34,651,606],{"class":147},[34,653,654],{"class":40}," 60",[34,656,577],{"class":44},[34,658,659,661,664],{"class":36,"line":85},[34,660,582],{"class":44},[34,662,663],{"class":40},"0.4",[34,665,588],{"class":44},[34,667,668,671,674],{"class":36,"line":92},[34,669,670],{"class":44},"  delay: ",[34,672,673],{"class":40},"0.2",[34,675,588],{"class":44},[34,677,678,680,683],{"class":36,"line":124},[34,679,593],{"class":44},[34,681,682],{"class":78},"'back.out'",[34,684,588],{"class":44},[34,686,687,689,692,694,697,700,702,705],{"class":36,"line":129},[34,688,507],{"class":48},[34,690,691],{"class":44},": () ",[34,693,148],{"class":147},[34,695,696],{"class":44}," enemy.",[34,698,699],{"class":48},"addTag",[34,701,52],{"class":44},[34,703,704],{"class":78},"'active'",[34,706,432],{"class":44},[34,708,709],{"class":36,"line":280},[34,710,624],{"class":44},[547,712,714],{"id":713},"własna-krzywa","Własna krzywa",[24,716,718],{"className":26,"code":717,"language":28,"meta":29,"style":29},"this.tween(door, { y: 0 }, {\n  duration: 0.8,\n  easing: (t) => 1 - Math.pow(1 - t, 3)\n})\n",[31,719,720,735,744,783],{"__ignoreMap":29},[34,721,722,724,726,728,731,733],{"class":36,"line":37},[34,723,41],{"class":40},[34,725,45],{"class":44},[34,727,49],{"class":48},[34,729,730],{"class":44},"(door, { y: ",[34,732,109],{"class":40},[34,734,577],{"class":44},[34,736,737,739,742],{"class":36,"line":85},[34,738,582],{"class":44},[34,740,741],{"class":40},"0.8",[34,743,588],{"class":44},[34,745,746,748,751,753,755,757,760,763,766,769,771,773,775,778,781],{"class":36,"line":92},[34,747,403],{"class":48},[34,749,750],{"class":44},": (",[34,752,417],{"class":382},[34,754,425],{"class":44},[34,756,148],{"class":147},[34,758,759],{"class":40}," 1",[34,761,762],{"class":147}," -",[34,764,765],{"class":44}," Math.",[34,767,768],{"class":48},"pow",[34,770,52],{"class":44},[34,772,609],{"class":40},[34,774,762],{"class":147},[34,776,777],{"class":44}," t, ",[34,779,780],{"class":40},"3",[34,782,432],{"class":44},[34,784,785],{"class":36,"line":124},[34,786,624],{"class":44},[10,788,790],{"id":789},"sekwencje","Sekwencje",[24,792,794],{"className":26,"code":793,"language":28,"meta":29,"style":29},"this.tweenSequence([\n  { target: this.hero, props: { x: 300 }, duration: 0.5, easing: 'quad.out' },\n  { target: this.hero, props: { y: 100 }, duration: 0.3, easing: 'quad.in' },\n  { target: this.hero, props: { alpha: 0 }, duration: 0.2 }\n], {\n  owner: this.id,\n  onComplete: () => this.destroyObject(this.hero)\n})\n",[31,795,796,808,832,856,874,879,889,911],{"__ignoreMap":29},[34,797,798,800,802,805],{"class":36,"line":37},[34,799,41],{"class":40},[34,801,45],{"class":44},[34,803,804],{"class":48},"tweenSequence",[34,806,807],{"class":44},"([\n",[34,809,810,813,815,818,820,823,825,827,829],{"class":36,"line":85},[34,811,812],{"class":44},"  { target: ",[34,814,41],{"class":40},[34,816,817],{"class":44},".hero, props: { x: ",[34,819,66],{"class":40},[34,821,822],{"class":44}," }, duration: ",[34,824,119],{"class":40},[34,826,75],{"class":44},[34,828,79],{"class":78},[34,830,831],{"class":44}," },\n",[34,833,834,836,838,841,844,846,849,851,854],{"class":36,"line":92},[34,835,812],{"class":44},[34,837,41],{"class":40},[34,839,840],{"class":44},".hero, props: { y: ",[34,842,843],{"class":40},"100",[34,845,822],{"class":44},[34,847,848],{"class":40},"0.3",[34,850,75],{"class":44},[34,852,853],{"class":78},"'quad.in'",[34,855,831],{"class":44},[34,857,858,860,862,865,867,869,871],{"class":36,"line":124},[34,859,812],{"class":44},[34,861,41],{"class":40},[34,863,864],{"class":44},".hero, props: { alpha: ",[34,866,109],{"class":40},[34,868,822],{"class":44},[34,870,673],{"class":40},[34,872,873],{"class":44}," }\n",[34,875,876],{"class":36,"line":129},[34,877,878],{"class":44},"], {\n",[34,880,881,884,886],{"class":36,"line":280},[34,882,883],{"class":44},"  owner: ",[34,885,41],{"class":40},[34,887,888],{"class":44},".id,\n",[34,890,891,893,895,897,899,901,904,906,908],{"class":36,"line":291},[34,892,507],{"class":48},[34,894,691],{"class":44},[34,896,148],{"class":147},[34,898,151],{"class":40},[34,900,45],{"class":44},[34,902,903],{"class":48},"destroyObject",[34,905,52],{"class":44},[34,907,41],{"class":40},[34,909,910],{"class":44},".hero)\n",[34,912,913],{"class":36,"line":307},[34,914,624],{"class":44},[15,916,917,920,921,45],{},[31,918,919],{},"TweenStep = { target, props, duration?, delay?, easing?, mode?, onStart?, onUpdate?, onComplete? }",".\n",[31,922,923],{},"SequenceOptions = { owner?, repeat?, onStart?, onComplete?, onCancel? }",[15,925,926],{},"Anulowanie kroku anuluje całą sekwencję.",[10,928,930],{"id":929},"easing-28-krzywych","Easing — 28 krzywych",[15,932,933,936,937,940,941,940,944,940,947,940,950,940,953,940,956,940,959,940,962,940,965,940,968,971,972,940,975,940,978,981,982,985],{},[31,934,935],{},"EASINGS"," zawiera 28 krzywych (m.in. ",[31,938,939],{},"linear",", ",[31,942,943],{},"quad",[31,945,946],{},"cubic",[31,948,949],{},"quart",[31,951,952],{},"quint",[31,954,955],{},"sine",[31,957,958],{},"expo",[31,960,961],{},"circ",[31,963,964],{},"back",[31,966,967],{},"elastic",[31,969,970],{},"bounce"," — każda w wariantach ",[31,973,974],{},"in",[31,976,977],{},"out",[31,979,980],{},"inOut","). ",[31,983,984],{},"resolveEasing(name | fn)"," zwraca funkcję.",[24,987,989],{"className":26,"code":988,"language":28,"meta":29,"style":29},"import { EASINGS, resolveEasing } from '@engine'\n\nconst ease = resolveEasing('elastic.out')\nconst y = ease(0.5)\n",[31,990,991,1004,1008,1028],{"__ignoreMap":29},[34,992,993,996,999,1001],{"class":36,"line":37},[34,994,995],{"class":147},"import",[34,997,998],{"class":44}," { EASINGS, resolveEasing } ",[34,1000,198],{"class":147},[34,1002,1003],{"class":78}," '@engine'\n",[34,1005,1006],{"class":36,"line":85},[34,1007,89],{"emptyLinePlaceholder":88},[34,1009,1010,1013,1016,1018,1021,1023,1026],{"class":36,"line":92},[34,1011,1012],{"class":147},"const",[34,1014,1015],{"class":40}," ease",[34,1017,374],{"class":147},[34,1019,1020],{"class":48}," resolveEasing",[34,1022,52],{"class":44},[34,1024,1025],{"class":78},"'elastic.out'",[34,1027,432],{"class":44},[34,1029,1030,1032,1035,1037,1039,1041,1043],{"class":36,"line":124},[34,1031,1012],{"class":147},[34,1033,1034],{"class":40}," y",[34,1036,374],{"class":147},[34,1038,1015],{"class":48},[34,1040,52],{"class":44},[34,1042,119],{"class":40},[34,1044,432],{"class":44},[10,1046,1048],{"id":1047},"własność-i-sprzątanie","Własność i sprzątanie",[24,1050,1052],{"className":26,"code":1051,"language":28,"meta":29,"style":29},"this.tween(coin, { y: coin.y - 30, alpha: 0 }, {\n  duration: 0.5,\n  owner: this.id,\n  onComplete: () => this.destroyObject(coin)\n})\n\nthis.getTweens().stopOwner(this.id)\n",[31,1053,1054,1077,1085,1093,1110,1114,1118],{"__ignoreMap":29},[34,1055,1056,1058,1060,1062,1065,1067,1070,1073,1075],{"class":36,"line":37},[34,1057,41],{"class":40},[34,1059,45],{"class":44},[34,1061,49],{"class":48},[34,1063,1064],{"class":44},"(coin, { y: coin.y ",[34,1066,606],{"class":147},[34,1068,1069],{"class":40}," 30",[34,1071,1072],{"class":44},", alpha: ",[34,1074,109],{"class":40},[34,1076,577],{"class":44},[34,1078,1079,1081,1083],{"class":36,"line":85},[34,1080,582],{"class":44},[34,1082,119],{"class":40},[34,1084,588],{"class":44},[34,1086,1087,1089,1091],{"class":36,"line":92},[34,1088,883],{"class":44},[34,1090,41],{"class":40},[34,1092,888],{"class":44},[34,1094,1095,1097,1099,1101,1103,1105,1107],{"class":36,"line":124},[34,1096,507],{"class":48},[34,1098,691],{"class":44},[34,1100,148],{"class":147},[34,1102,151],{"class":40},[34,1104,45],{"class":44},[34,1106,903],{"class":48},[34,1108,1109],{"class":44},"(coin)\n",[34,1111,1112],{"class":36,"line":129},[34,1113,624],{"class":44},[34,1115,1116],{"class":36,"line":280},[34,1117,89],{"emptyLinePlaceholder":88},[34,1119,1120,1122,1124,1127,1130,1132,1134,1136],{"class":36,"line":291},[34,1121,41],{"class":40},[34,1123,45],{"class":44},[34,1125,1126],{"class":48},"getTweens",[34,1128,1129],{"class":44},"().",[34,1131,296],{"class":48},[34,1133,52],{"class":44},[34,1135,41],{"class":40},[34,1137,1138],{"class":44},".id)\n",[1140,1141,1143],"callout",{"type":1142},"info",[15,1144,1145,1146,1149,1150,1152],{},"Tweeny należą do sceny. Przy ",[31,1147,1148],{},"shutdown()"," silnik woła ",[31,1151,302],{},", więc animacje nie przeżywają sceny i nie mutują martwych obiektów.",[1154,1155,1156],"style",{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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":29,"searchDepth":92,"depth":92,"links":1158},[1159,1160,1161,1162,1167,1168,1169],{"id":12,"depth":85,"text":13},{"id":162,"depth":85,"text":163},{"id":357,"depth":85,"text":358},{"id":544,"depth":85,"text":545,"children":1163},[1164,1165,1166],{"id":549,"depth":92,"text":550},{"id":627,"depth":92,"text":628},{"id":713,"depth":92,"text":714},{"id":789,"depth":85,"text":790},{"id":929,"depth":85,"text":930},{"id":1047,"depth":85,"text":1048},"to, from, delay, sekwencje, 28 krzywych easingu, repeat\u002Fyoyo i anulowanie. Animacje właściwości bez dotykania renderera.","md",{},"\u002Fgame-engine\u002Fsystems\u002Ftweens",{"title":5,"description":1170},"01.game-engine\u002F06.systems\u002F06.tweens","QA1mCRfGVku3Z6f46Am2FB_8l9GcPkYt-wfp8xjk1Go",[1178,1183],{"title":1179,"path":1180,"stem":1181,"description":1182,"children":-1},"Audio (AudioManager)","\u002Fgame-engine\u002Fsystems\u002Faudio","01.game-engine\u002F06.systems\u002F05.audio","Cztery kanały, efektywna głośność, SoundHandle, mute i kolejka autoplay. Jak grać dźwięki bez problemów z blokadą przeglądarki.",{"title":1184,"path":1185,"stem":1186,"description":1187,"children":-1},"Format projektu","\u002Fgame-engine\u002Fdata\u002Fproject-format","01.game-engine\u002F07.data\u002F01.project-format","Wersjonowany JSON projektu (formatVersion 2), walidacja, migracje, import\u002Feksport z sumą kontrolną FNV-1a.",[1189,1299,1360],{"title":1190,"path":1191,"stem":1192,"children":1193},"2D Game Engine","\u002Fgame-engine","01.game-engine\u002F01.index",[1194,1196,1200,1204,1208,1234,1257,1267,1288,1292,1295],{"title":1195,"path":1191,"stem":1192},"Przegląd",{"title":1197,"path":1198,"stem":1199},"Szybki start","\u002Fgame-engine\u002Fgetting-started","01.game-engine\u002F02.getting-started",{"title":1201,"path":1202,"stem":1203},"Konfiguracja","\u002Fgame-engine\u002Fconfiguration","01.game-engine\u002F03.configuration",{"title":1205,"path":1206,"stem":1207},"Architektura","\u002Fgame-engine\u002Farchitecture","01.game-engine\u002F04.architecture",{"title":1209,"path":1210,"stem":1211,"children":1212,"page":1233},"Rdzeń","\u002Fgame-engine\u002Fcore","01.game-engine\u002F05.core",[1213,1217,1221,1225,1229],{"title":1214,"path":1215,"stem":1216},"Silnik i cykl życia","\u002Fgame-engine\u002Fcore\u002Fengine","01.game-engine\u002F05.core\u002F01.engine",{"title":1218,"path":1219,"stem":1220},"Czas i pętla gry","\u002Fgame-engine\u002Fcore\u002Ftime","01.game-engine\u002F05.core\u002F02.time",{"title":1222,"path":1223,"stem":1224},"Sceny","\u002Fgame-engine\u002Fcore\u002Fscenes","01.game-engine\u002F05.core\u002F03.scenes",{"title":1226,"path":1227,"stem":1228},"Obiekty i komponenty","\u002Fgame-engine\u002Fcore\u002Fobjects","01.game-engine\u002F05.core\u002F04.objects",{"title":1230,"path":1231,"stem":1232},"Zdarzenia i harmonogram","\u002Fgame-engine\u002Fcore\u002Fevents","01.game-engine\u002F05.core\u002F05.events",false,{"title":1235,"path":1236,"stem":1237,"children":1238,"page":1233},"Systemy","\u002Fgame-engine\u002Fsystems","01.game-engine\u002F06.systems",[1239,1243,1247,1251,1255,1256],{"title":1240,"path":1241,"stem":1242},"Zasoby (AssetManager)","\u002Fgame-engine\u002Fsystems\u002Fassets","01.game-engine\u002F06.systems\u002F01.assets",{"title":1244,"path":1245,"stem":1246},"Wejście (InputManager)","\u002Fgame-engine\u002Fsystems\u002Finput","01.game-engine\u002F06.systems\u002F02.input",{"title":1248,"path":1249,"stem":1250},"Fizyka (PhysicsManager)","\u002Fgame-engine\u002Fsystems\u002Fphysics","01.game-engine\u002F06.systems\u002F03.physics",{"title":1252,"path":1253,"stem":1254},"Kamera (CameraManager)","\u002Fgame-engine\u002Fsystems\u002Fcamera","01.game-engine\u002F06.systems\u002F04.camera",{"title":1179,"path":1180,"stem":1181},{"title":5,"path":1173,"stem":1175},{"title":1258,"path":1259,"stem":1260,"children":1261,"page":1233},"Dane i zapisy","\u002Fgame-engine\u002Fdata","01.game-engine\u002F07.data",[1262,1263],{"title":1184,"path":1185,"stem":1186},{"title":1264,"path":1265,"stem":1266},"Zapisy gry","\u002Fgame-engine\u002Fdata\u002Fsaves","01.game-engine\u002F07.data\u002F02.saves",{"title":1268,"path":1269,"stem":1270,"children":1271,"page":1233},"Zaawansowane","\u002Fgame-engine\u002Fadvanced","01.game-engine\u002F08.advanced",[1272,1276,1280,1284],{"title":1273,"path":1274,"stem":1275},"Pluginy","\u002Fgame-engine\u002Fadvanced\u002Fplugins","01.game-engine\u002F08.advanced\u002F01.plugins",{"title":1277,"path":1278,"stem":1279},"WebAssembly","\u002Fgame-engine\u002Fadvanced\u002Fwasm","01.game-engine\u002F08.advanced\u002F02.wasm",{"title":1281,"path":1282,"stem":1283},"Debugowanie","\u002Fgame-engine\u002Fadvanced\u002Fdebugging","01.game-engine\u002F08.advanced\u002F03.debugging",{"title":1285,"path":1286,"stem":1287},"Wydajność i benchmarki","\u002Fgame-engine\u002Fadvanced\u002Fperformance","01.game-engine\u002F08.advanced\u002F04.performance",{"title":1289,"path":1290,"stem":1291},"Wdrożenie","\u002Fgame-engine\u002Fdeployment","01.game-engine\u002F09.deployment",{"title":545,"path":1293,"stem":1294},"\u002Fgame-engine\u002Fexamples","01.game-engine\u002F10.examples",{"title":1296,"path":1297,"stem":1298},"Decyzje architektoniczne","\u002Fgame-engine\u002Fadr","01.game-engine\u002F11.adr",{"title":1300,"path":1301,"stem":1302,"children":1303},"Reverse Proxy","\u002Freverse-proxy","02.reverse-proxy\u002F01.index",[1304,1305,1308,1311,1332],{"title":1195,"path":1301,"stem":1302},{"title":1197,"path":1306,"stem":1307},"\u002Freverse-proxy\u002Fgetting-started","02.reverse-proxy\u002F02.getting-started",{"title":1201,"path":1309,"stem":1310},"\u002Freverse-proxy\u002Fconfiguration","02.reverse-proxy\u002F03.configuration",{"title":1312,"path":1313,"stem":1314,"children":1315,"page":1233},"Ruch i odporność","\u002Freverse-proxy\u002Ftraffic","02.reverse-proxy\u002F04.traffic",[1316,1320,1324,1328],{"title":1317,"path":1318,"stem":1319},"Load balancing","\u002Freverse-proxy\u002Ftraffic\u002Fload-balancing","02.reverse-proxy\u002F04.traffic\u002F01.load-balancing",{"title":1321,"path":1322,"stem":1323},"Health checks","\u002Freverse-proxy\u002Ftraffic\u002Fhealth-checks","02.reverse-proxy\u002F04.traffic\u002F02.health-checks",{"title":1325,"path":1326,"stem":1327},"Circuit breaker i retry","\u002Freverse-proxy\u002Ftraffic\u002Fresilience","02.reverse-proxy\u002F04.traffic\u002F03.resilience",{"title":1329,"path":1330,"stem":1331},"Rate limiting","\u002Freverse-proxy\u002Ftraffic\u002Frate-limiting","02.reverse-proxy\u002F04.traffic\u002F04.rate-limiting",{"title":1333,"path":1334,"stem":1335,"children":1336,"page":1233},"Operacje i wdrożenie","\u002Freverse-proxy\u002Foperations","02.reverse-proxy\u002F05.operations",[1337,1341,1345,1349,1352,1356],{"title":1338,"path":1339,"stem":1340},"Admin API","\u002Freverse-proxy\u002Foperations\u002Fadmin-api","02.reverse-proxy\u002F05.operations\u002F01.admin-api",{"title":1342,"path":1343,"stem":1344},"Metryki i monitoring","\u002Freverse-proxy\u002Foperations\u002Fobservability","02.reverse-proxy\u002F05.operations\u002F02.observability",{"title":1346,"path":1347,"stem":1348},"Bezpieczeństwo","\u002Freverse-proxy\u002Foperations\u002Fsecurity","02.reverse-proxy\u002F05.operations\u002F03.security",{"title":1289,"path":1350,"stem":1351},"\u002Freverse-proxy\u002Foperations\u002Fdeployment","02.reverse-proxy\u002F05.operations\u002F04.deployment",{"title":1353,"path":1354,"stem":1355},"Benchmarki","\u002Freverse-proxy\u002Foperations\u002Fbenchmarks","02.reverse-proxy\u002F05.operations\u002F05.benchmarks",{"title":1357,"path":1358,"stem":1359},"Troubleshooting","\u002Freverse-proxy\u002Foperations\u002Ftroubleshooting","02.reverse-proxy\u002F05.operations\u002F06.troubleshooting",{"title":1361,"path":1362,"stem":1363,"children":1364},"Vector Engine","\u002Fvector-engine","03.vector-engine\u002F01.index",[1365,1366,1369,1390,1403,1423],{"title":1195,"path":1362,"stem":1363},{"title":1197,"path":1367,"stem":1368},"\u002Fvector-engine\u002Fgetting-started","03.vector-engine\u002F02.getting-started",{"title":1370,"path":1371,"stem":1372,"children":1373,"page":1233},"Scena","\u002Fvector-engine\u002Fscene","03.vector-engine\u002F03.scene",[1374,1378,1382,1386],{"title":1375,"path":1376,"stem":1377},"Format sceny 1.0","\u002Fvector-engine\u002Fscene\u002Fscene-format","03.vector-engine\u002F03.scene\u002F01.scene-format",{"title":1379,"path":1380,"stem":1381},"Obiekty sceny","\u002Fvector-engine\u002Fscene\u002Fobjects","03.vector-engine\u002F03.scene\u002F02.objects",{"title":1383,"path":1384,"stem":1385},"Gradienty i warstwy","\u002Fvector-engine\u002Fscene\u002Fgradients-layers","03.vector-engine\u002F03.scene\u002F03.gradients-layers",{"title":1387,"path":1388,"stem":1389},"Przykłady scen","\u002Fvector-engine\u002Fscene\u002Fexamples","03.vector-engine\u002F03.scene\u002F04.examples",{"title":1391,"path":1392,"stem":1393,"children":1394,"page":1233},"Eksport","\u002Fvector-engine\u002Fexport","03.vector-engine\u002F04.export",[1395,1399],{"title":1396,"path":1397,"stem":1398},"Formaty eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-formats","03.vector-engine\u002F04.export\u002F01.export-formats",{"title":1400,"path":1401,"stem":1402},"Proces eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-workflow","03.vector-engine\u002F04.export\u002F02.export-workflow",{"title":1404,"path":1405,"stem":1406,"children":1407,"page":1233},"Wnętrze silnika","\u002Fvector-engine\u002Finternals","03.vector-engine\u002F05.internals",[1408,1411,1415,1419],{"title":1205,"path":1409,"stem":1410},"\u002Fvector-engine\u002Finternals\u002Farchitecture","03.vector-engine\u002F05.internals\u002F01.architecture",{"title":1412,"path":1413,"stem":1414},"WebAssembly i workery","\u002Fvector-engine\u002Finternals\u002Fwasm","03.vector-engine\u002F05.internals\u002F02.wasm",{"title":1416,"path":1417,"stem":1418},"Workspace i panele","\u002Fvector-engine\u002Finternals\u002Fworkspace","03.vector-engine\u002F05.internals\u002F03.workspace",{"title":1420,"path":1421,"stem":1422},"Breakpointy","\u002Fvector-engine\u002Finternals\u002Fbreakpoints","03.vector-engine\u002F05.internals\u002F04.breakpoints",{"title":1424,"path":1425,"stem":1426},"Wdrożenie na Vercel","\u002Fvector-engine\u002Fdeployment","03.vector-engine\u002F06.deployment",1793986307731]