Share
Embed
Nostalgia Meets Technology: Super Mario with TypeScript @BASTA 2026 in Mainz, Germany
Manfred Steyer PRO
September 29, 2026
Transcript
33 slides
-
Mastertextformat bearbeiten • Textmasterformat bearbeiten • Zweite Ebene Nostalgia Meets
Technology Super Mario with TypeScript ANGULARarchitects.io -
Mastertextformat bearbeiten Why? 1) Just for Fun! • Textmasterformat bearbeiten
2) Learning/ Repeating Typical Patterns Zweite Ebene Exercise 3) •Nice Programming 3 -
Mastertextformat bearbeiten Agenda 1) Game Loop • Textmasterformat bearbeiten 2)
Tiles & Coordinates Zweite Ebene 3) •Gravity 4) Side Scrolling & View Port 5) Collision Detection 4 -
Mastertextformat About Me bearbeiten Manfred Steyer, ANGULARarchitects.io • Textmasterformat bearbeiten
• Zweite Ebene (Remote) Angular Workshops and Consulting Google Developer Expert for Angular Blog, Books, Articles, and Talks about Angular 5 -
Mastertextformat Loading Images bearbeiten const response = await fetch('/hero.png'); const
blob = await response.blob(); •const Textmasterformat bearbeiten heroTile = await createImageBitmap( blob, 0, // x 8, // y 16, // width 16 // height ); • Zweite Ebene 7 -
Mastertextformat A Simple Game Loop bearbeiten function tick(ctx: HeroContext, timeStamp:
number): void { •[…]Textmasterformat bearbeiten } • Zweite Ebene 9 -
Mastertextformat A Simple Game Loop bearbeiten function tick(ctx: HeroContext, timeStamp:
number): void { timeStamp); •console.log('timeStamp', Textmasterformat bearbeiten […] • Zweite Ebene } 10 -
Mastertextformat A Simple Game Loop bearbeiten function tick(ctx: HeroContext, timeStamp:
number): void { timeStamp); •console.log('timeStamp', Textmasterformat bearbeiten if (keyboard.right) { ctx.x += 1; } • Zweite Ebene […] } 11 -
Mastertextformat A Simple Game Loop bearbeiten function tick(ctx: HeroContext, timeStamp:
number): void { timeStamp); •console.log('timeStamp', Textmasterformat bearbeiten if (keyboard.right) { ctx.x += 1; } • Zweite Ebene ctx.context.clearRect(0, 0, 1000, 1000); ctx.context.drawImage(ctx.heroTile, ctx.x, ctx.y, 16, 16); […] } 12 -
Mastertextformat A Simple Game Loop bearbeiten function tick(ctx: HeroContext, timeStamp:
number): void { timeStamp); •console.log('timeStamp', Textmasterformat bearbeiten if (keyboard.right) { ctx.x += 1; } • Zweite Ebene ctx.context.clearRect(0, 0, 1000, 1000); ctx.context.drawImage(ctx.heroTile, ctx.x, ctx.y, 16, 16); requestAnimationFrame((timeStamp) => tick(ctx, timeStamp)); } 13 -
Mastertextformat bearbeiten GameGrid gameGrid[0][0] = { tile: skyTile }; gameGrid[1][0]
= { tile: skyTile }; •[…]Textmasterformat bearbeiten • Zweite Ebene 17 -
Mastertextformat bearbeiten Idea WHILE not at ground • Textmasterformat bearbeiten
Increase y by velocity • Zweite Ebene Increase velocity 20 -
Mastertextformat bearbeiten Scroll Offset View Port x - renderX •
Textmasterformat bearbeiten • Zweite Ebene renderX x Scroll Offset + View Port Width 23 -
Mastertextformat Bounding Boxes bearbeiten a • Textmasterformat bearbeiten • Zweite
Ebene b a.left < b.right b.left < a.right a.top < b.bottom b.top < a.bottom 29 -
Modern Angular bearbeiten Mastertextformat Architecture, Concepts, Implementation • Textmasterformat bearbeiten
400+ pages, PDF, EPUB • Zweite Ebene Regular Free Updates! Q1/2026 Waiting List: angular-book.com 31 -
Mastertextformat bearbeiten Conclusion 1) Game Loop: Take Care of Time
Delta • Textmasterformat bearbeiten 2) Tiles & Coordinates ZweiteIncrease/ Ebene Decrease Velocity 3) •Gravity: 4) Side Scrolling & View Port: Change Offset i/o Hero Coordinates 5) Collision Detection: Bounding Boxes 6) We had fun! 32 -
Mastertextformat bearbeiten Manfred Steyer [Social Media] Manfred Steyer • Textmasterformat
bearbeiten [web] ANGULARarchitects.io • Zweite Ebene Slides, Examples, Book Remote Company Workshops and Consulting http://angulararchitects.io @ Manfred Steyer 33