Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Nostalgia Meets Technology: Super Mario with Ty...
Search
Manfred Steyer
PRO
June 30, 2026
330
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Nostalgia Meets Technology: Super Mario with TypeScript
Manfred Steyer
PRO
June 30, 2026
More Decks by Manfred Steyer
See All by Manfred Steyer
Human in the Loop Beyond Approval: Toward True Collaboration @FrontMania 2026 in Utrecht
manfredsteyer
PRO
0
67
Agentic UI: Where the Agent meets the User @FrontMania 2026 in Utrecht
manfredsteyer
PRO
0
68
A2UI as an Architecture Question: Agentic UI Between AI Freedom and Control
manfredsteyer
PRO
0
96
AI-Ready Angular Architectures Architecture as Executable Contract
manfredsteyer
PRO
0
260
Nostalgia Meets Technology: Super Mario with TypeScript @BASTA 2026 in Mainz, Germany
manfredsteyer
PRO
0
64
Beyond Chatbots: Agentic UI with Open Standards @AGNTcon 2026 in Amsterdam
manfredsteyer
PRO
0
150
Next-Level Frontends: Agentic Web UIs Under the Hood
manfredsteyer
PRO
0
110
Agentic UI with Open Standards @ngGraz Sep 2026
manfredsteyer
PRO
0
120
Agentic UI with Open Standards @GDG Salzburg, Bgl & Prishtina
manfredsteyer
PRO
0
100
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.8k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
エンジニアに許された特別な時間の終わり
watany
109
250k
Music & Morning Musume
bryan
48
7.4k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
Google's AI Overviews - The New Search
badams
0
1.6k
Documentation Writing (for coders)
carmenintech
77
5.6k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Unsuck your backbone
ammeep
672
58k
The untapped power of vector embeddings
frankvandijk
2
1.9k
BBQ
matthewcrist
90
10k
Optimizing for Happiness
mojombo
378
71k
Transcript
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten Nostalgia Meets Technology
Super Mario with TypeScript ANGULARarchitects.io
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 2
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 3 1) Just
for Fun! 2) Learning/ Repeating Typical Patterns 3) Nice Programming Exercise Why?
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 4 1) Game
Loop 2) Tiles & Coordinates 3) Gravity 4) Side Scrolling & View Port 5) Collision Detection Agenda
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 5 About Me
(Remote) Angular Workshops and Consulting Google Developer Expert for Angular Blog, Books, Articles, and Talks about Angular Manfred Steyer, ANGULARarchitects.io
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 6 DEMO
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 7 Loading Images
const response = await fetch('/hero.png'); const blob = await response.blob(); const heroTile = await createImageBitmap( blob, 0, // x 8, // y 16, // width 16 // height );
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 8 Game Loop
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 9 A Simple
Game Loop function tick(ctx: HeroContext, timeStamp: number): void { […] }
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 10 A Simple
Game Loop function tick(ctx: HeroContext, timeStamp: number): void { console.log('timeStamp', timeStamp); […] }
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 11 A Simple
Game Loop function tick(ctx: HeroContext, timeStamp: number): void { console.log('timeStamp', timeStamp); if (keyboard.right) { ctx.x += 1; } […] }
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 12 A Simple
Game Loop function tick(ctx: HeroContext, timeStamp: number): void { console.log('timeStamp', timeStamp); if (keyboard.right) { ctx.x += 1; } ctx.context.clearRect(0, 0, 1000, 1000); ctx.context.drawImage(ctx.heroTile, ctx.x, ctx.y, 16, 16); […] }
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 13 A Simple
Game Loop function tick(ctx: HeroContext, timeStamp: number): void { console.log('timeStamp', timeStamp); if (keyboard.right) { ctx.x += 1; } ctx.context.clearRect(0, 0, 1000, 1000); ctx.context.drawImage(ctx.heroTile, ctx.x, ctx.y, 16, 16); requestAnimationFrame((timeStamp) => tick(ctx, timeStamp)); }
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 15 Tiles &
Coordinates
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 16 (Cols, Rows)
vs. (x, y)
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 17 GameGrid gameGrid[0][0]
= { tile: skyTile }; gameGrid[1][0] = { tile: skyTile }; […]
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 18 Gravity
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 19
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 20 WHILE not
at ground Increase y by velocity Increase velocity Idea
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 21 DEMO
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 22 Side Scrolling
& View Port
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 23 View Port
Scroll Offset Scroll Offset + View Port Width x renderX x - renderX
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 24 DEMO
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 25 Collision Detection
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 26 Bounding Boxes
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 27 First, in
1D < <
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 28 First, in
1D < <
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 29 Bounding Boxes
a.left < b.right b.left < a.right a.top < b.bottom b.top < a.bottom a b
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 30 DEMO
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 31 Architecture, Concepts,
Implementation Modern Angular 400+ pages, PDF, EPUB Regular Free Updates! Q1/2026 Waiting List: angular-book.com
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 32 1) Game
Loop: Take Care of Time Delta 2) Tiles & Coordinates 3) Gravity: Increase/ Decrease Velocity 4) Side Scrolling & View Port: Change Offset i/o Hero Coordinates 5) Collision Detection: Bounding Boxes 6) We had fun! Conclusion
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 33 [Social Media]
Manfred Steyer [web] ANGULARarchitects.io Manfred Steyer @ Manfred Steyer Slides, Examples, Book Remote Company Workshops and Consulting http://angulararchitects.io