
Program the Legend of Zelda in JavaScript using the object oriented paradigm to learn video game development and build confidence to finish or start your own game.
Create a 2D canvas game with a game class and initialize, update, render methods. Implement W A S D controls to move the player across a canvas using requestAnimationFrame loop.
Design and implement an entity component system to manage entities, components (position, movement), and systems (movement, render). Handle user input to update velocity and render on the canvas.
Add a sprite component and render system to display Link from a sprite sheet via src rect, then build an animation system with frames, game time, and a should-animate flag.
Use a time-based animation formula to drive frame changes, then render a Zelda-like tile world with screens and padding, and implement a collision system with a debug mode for hitboxes.
Build a door transition to the shop, create transition objects and a transition system, and use an event bus to load new screens while managing player creation and screen resets.
Build an actionable component to trigger the sword pickup animation, swap tiles, pause input, and update Link's inventory as he equips the magical sword.
Implement audio using an audio object that loads overworld or important item mp3s, loops on load, and trigger the inventory sliding with pause to reveal Link's sword from sprite sheet.
Add new areas to explore in a Zelda-style overworld by linking screens a through e with doors and transitions, updating index.js and opening screen logic.
Explore foundations of enemy AI and decision making by building a debug system, rendering tile IDs, and implementing a state machine driven enemy that chases Link.
Explore building a navigable graph, apply binary search and Dijkstra's algorithm to guide an enemy along rails toward Link, using tile-based x/y coordinates and an adjacency list for pathfinding.
Learns to implement hitbox and health components, test overlaps, apply health and invulnerability frames, render hearts for player health, and add knockback and collision handling with movement friction.
Create and integrate a dynamic item drop system for enemies, including a drop table with bombs and rupees, on-death drops, pickup behavior, and inventory updates.
Polish Zelda-style combat by adding a bomb projectile, input handling for C to fire, explosion effects with smoke hitboxes, and event-driven detonation alongside enemy rock attacks.
In this comprehensive video series, you will learn Game Design by coding the 1987 NES classic: The Legend Of Zelda!
The following concepts you will learn include, but are not limited to:
~ ECS (Entity-Component-System) Design & Implementation
~ Javascript Context
~ 2D Sprite Animation
~ Debug System Design
~ Enemy Artificial Intelligence
~ Data Structures & Algorithms
~ Inventory Design Pattern
~ And More!
Throughout the journey, we'll be analyzing the original game's mechanics and design choices to better understand the foundations of effective game design. We will also explore how to adapt and modernize these concepts for contemporary gaming platforms and technologies.
You and I will be coding out the beginning of The Legend Of Zelda to learn the above concepts and implementations. We will not finish it together, but you will be able to finish it yourself, or use these techniques to create another game!
This is not a video about Javascript, but about Game Design and Principles. It is not necessary, but it is recommended that you have at least an intermediate knowledge of Javascript & The Object Oriented Paradigm (OOP) in order to get 100% out of these videos.
By the end of this series, you'll have the skills and knowledge to create your own captivating game projects, or even embark on a rewarding career in the gaming industry. So grab your keyboard, fuel your creativity, and let's dive into the magical world of The Legend of Zelda, and the art/science of Game Design!