Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Nostalgia Meets Technology: Super Mario with Ty...
Search
Manfred Steyer
PRO
June 30, 2026
230
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
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
330
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
160
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
250
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
180
Agentic UI
manfredsteyer
PRO
0
260
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
310
Agentic UI beyond Chats Architecture Patterns & Open Standards @ngMunich 05/2026
manfredsteyer
PRO
0
260
Agentic AI in the Frontend: Architectures with Open Standards @iJS London 2026
manfredsteyer
PRO
0
190
Agentic AI & UI: Arcitecture, HITL, Emerging Standards
manfredsteyer
PRO
0
220
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
67k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
210
Testing 201, or: Great Expectations
jmmastey
46
8.2k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
260
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Crafting Experiences
bethany
1
240
Writing Fast Ruby
sferik
630
63k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
200
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