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
79
Agentic UI: Where the Agent meets the User @FrontMania 2026 in Utrecht
manfredsteyer
PRO
0
80
A2UI as an Architecture Question: Agentic UI Between AI Freedom and Control
manfredsteyer
PRO
0
100
AI-Ready Angular Architectures Architecture as Executable Contract
manfredsteyer
PRO
0
270
Nostalgia Meets Technology: Super Mario with TypeScript @BASTA 2026 in Mainz, Germany
manfredsteyer
PRO
0
72
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
110
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
430
Marketing to machines
jonoalderson
1
5.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Building Adaptive Systems
keathley
44
3.3k
Designing for Performance
lara
612
70k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
730
A better future with KSS
kneath
240
18k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Building an army of robots
kneath
307
47k
The Cult of Friendly URLs
andyhume
79
7k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Code Review Best Practice
trishagee
74
20k
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