This course is designed to teach you how to build a completeraycasting enginefrom the ground up. By employing an algorithm similar to the one used inWolfenstein 3D, you will create a detailed project using both JavaScript and C, encompassing player movement, 2D map views, 3D wall projections, textured walls, sprites, and various optimization techniques.
Course Structure
The course is divided into two key segments to provide a comprehensive understanding of raycasting engine development:
Part 1: JavaScript Fundamentals
In the first segment, we focus on using JavaScript to cover the theoretical and mathematical foundation of the raycasting algorithm. As a simple, high-level scripting language, JavaScript enables us to concentrate on the core concepts without getting bogged down by implementation intricacies.
Part 2: Advanced C Implementation
The second segment transitions into utilizing the C programming language to develop a compiled version of the raycaster. This part includes the integration of textured walls and sprites, alongside an exploration of essential optimization and performance enhancement techniques.
Required Tools
To participate in this course, you will need:
A web browser capable of running JavaScript.
A small C compiler.
These tools are cross-platform compatible, allowing you to follow along on Windows, macOS, or Linux!
Understanding the Raycasting Algorithm
The Wolfenstein 3D raycasting algorithm relies heavily on trigonometry. Ensure you have pen and paper ready for lectures. We'll thoroughly review and comprehend every formula we encounter throughout the course!
Gustavo Pezzi is a UK-based computer-science lecturer (Pikuma) and one of the most distinctive teachers working at the intersection of low-level programming and game development. His material is unusual in the modern course market for how deep it goes into the foundations: assembly, computer architecture, classical raycasting / rasterisation algorithms, and the math underneath modern graphics.
His CourseFlix listing reflects that range: courses on 3D Computer Graphics Programming, Raycasting Engine Programming, 2D Game Physics Programming, NES Programming with 6502 Assembly, PS1 Programming with MIPS Assembly & C, Atari 2600 Programming, Compilers, Interpreters and Formal Languages, plus C++ engine programming and Lua scripting. Material is paid and aimed at developers who want to understand systems from the ground up rather than ship CRUD apps.
Watch Online 96 lessons
This is a demo lesson (10:00 remaining)
You can watch up to 10 minutes for free. Subscribe to unlock all 96 lessons in this course and access 10,000+ hours of premium content across all courses.
Welcome to our complete Lua scripting course. This course will teach you everything you need to know about the Lua scripting language. We will start from scratc
So you're trying to learn Godot Engine. You've been digging through YouTube videos but there aren't as many learning resources as other engines like Unity or Ga
This course is a comprehensive immersion in the Lua programming language - one of the most popular scripting languages in the world.
13h 59m
Frequently asked questions
What prerequisites are required before taking this course?
Before enrolling in this course, it is important to have a basic understanding of programming concepts, particularly in JavaScript and C. Familiarity with trigonometry and mathematical concepts such as degrees, radians, sine, cosine, and tangent is also necessary, as the raycasting algorithm relies heavily on these mathematical principles.
What will I build by the end of this course?
By the end of the course, you will have developed a complete raycasting engine. This includes implementing player movement, 2D map views, 3D wall projections, textured walls, and sprites. You will also apply various optimization techniques to enhance performance, similar to the technology used in the classic game Wolfenstein 3D.
Who is the target audience for this course?
This course is ideal for programmers who are interested in game development, particularly those who want to understand the fundamentals of building a rendering engine from scratch. It is suitable for learners who have a basic knowledge of JavaScript and C and wish to further their skills in implementing mathematical algorithms within a game context.
How does this course compare in depth to other programming courses?
This course provides a focused look at the implementation of a raycasting engine, specifically mirroring the technology behind Wolfenstein 3D. Unlike broader game development courses, it dives deeply into the mathematics of raycasting and the practical application of building rendering engines using JavaScript and C, offering both theoretical and hands-on coding experience.
What specific tools or platforms will I use in this course?
Throughout the course, you will use a web browser capable of running JavaScript for the initial theoretical part. For the advanced implementation in C, you will need a small C compiler. Additionally, the course involves using SDL for rendering and event polling. These tools are compatible with Windows, macOS, and Linux.
What topics are not covered in this course?
The course does not cover advanced game development topics beyond raycasting, such as full 3D rendering engines, game design principles, or networking. It focuses specifically on the raycasting algorithm, its mathematical foundations, and its implementation in JavaScript and C.
What is the estimated time commitment for completing this course?
The course consists of 96 lessons, which cover both JavaScript fundamentals and advanced C implementation. While the exact runtime is not specified, the course is designed to be comprehensive, requiring a significant time investment to thoroughly understand and implement the concepts taught. Students should allocate time for both learning the material and hands-on practice.