This course includes

  • 12 hours of on-demand video

  • Downloadable resources and exercises

  • Full lifetime access

  • Access on mobile and desktop

  • 14 day money back guarantee

  • Secure checkout through PayPal

Prerequisites

Before taking this course you should have:

  • A basic understanding of programming fundamentals, such as variables, conditionals, loops, and functions.
  • Some basic experience with a c-style programming language syntax (such as C++, Java, C#, or JavaScript).

Is this course for you?

*Achtung!* This course covers the full implementation of a raycasting engine using C. The course starts with the explanation of the mathematics behind raycasting and uses JavaScript to create a quick prototype to test the topics covered. Once we are done with the basics, we start using C to create a complete working version of a raycasting engine from scratch, including textured walls. You'll learn the fundamentals of C, use the SDL library to handle graphics and manipulate the bits of the color buffer, using a similar technique used by the classic Wolfenstein 3D game.
Buy $11.99
Is this course for you?
Watch Intro Video

Motivations & Learning Outcomes

  • Activities and Discussions

    Join our community and get the most of our discussion boards

  • Direct instructor contact

    Have direct contact with your instructor at any given time during and after you complete your course

  • Money back guarantee

    We offer a 14 day money back guarantee for all our courses. No questions asked.

Course Content

  • 1
    Introduction and Motivations
    • Welcome
    • Introduction and Learning Outcomes
    • Quick Trigonometry Review
  • 2
    2D Map and Player Movement
    • Defining the 2D Map Grid
    • Coding the Map Class
    • Source Code (Download)
    • Player Movement
    • Implementing Map Collision
    • Source Code (Download)
  • 3
    Ray Casting
    • Defining the Field of View
    • Source Code (Download)
    • Finding Wall Hit
    • Finding Grid Intersections
    • Horizontal Intersections
    • Source Code (Download)
    • Vertical Intersections
    • Source Code (Download)
  • 4
    Rendering Walls
    • Wall Projection
    • Coding the Wall Rendering
    • Source Code (Download)
    • Fixing the Fishbowl Distortion
    • Source Code (Download)
    • Wall Shading (Proposed Activity)
    • Wall Transparency
    • Source Code (Download)
  • 5
    Concluding the JavaScript Project
    • Polishing our Code
    • Source Code (Download)
    • Solid-Color Walls (Proposed Activity)
    • Source Code (Download)
    • Progress Check and Next Steps
  • 6
    Starting our C Project
    • First Steps in C
    • Creating a Makefile
    • Creating a SDL Window
    • Source Code (Download)
    • Rendering SDL Rectangles
    • Source Code (Download)
  • 7
    Creating a Game Loop
    • Fixing the Game Loop Time Step
    • Implementing the Delta Time
    • Source Code (Download)
  • 8
    SDL Map and Player Movement
    • Drawing the 2D Map with SDL
    • SDL Input and Player Movement
    • Wall Collision
    • Source Code (Download)
  • 9
    Ray Casting in C
    • Ray Struct and FOV
    • Horizontal and Vertical Intersections
    • Rendering Rays
    • Source Code (Download)
  • 10
    Color Buffer
    • The Color Buffer
    • Color Buffer Implementation
    • Malloc and Free
    • Source Code (Download)
  • 11
    Wall Projection
    • Creating the Wall Projection
    • Source Code (Download)
    • Ceiling and Floor (Proposed Activity)
    • Ceiling and Floor Implementation
    • Source Code (Download)
  • 12
    Wall Textures
    • Thinking of Textures
    • Creating a Texture
    • Mapping Texture to Wall
    • Applying Textures to Wall Strips
    • Source Code (Download)
    • Multiple Textures
    • Multiple Texture Code
    • Source Code (Download)
    • Loading PNG File Data
    • Source Code (Download)
  • 13
    Finishing Touches and Optimizations
    • Quick Thoughts on C Strings

Instructor

  • Gustavo Pezzi

    Senior Lecturer

    Gustavo Pezzi

    Gustavo teaches computer science and mathematics at BPP University, London. He researches how teaching game programming can help enhance awareness and understanding of mathematics and physics. He is also a professional software engineer with more than 10 years of experience, with an industry background in 3D systems, games, web systems, databases, and data science. His academic path includes institutions such as Pittsburg State University, City University of London, and University of Oxford.