This course includes

  • 6 hours of on-demand video

  • Downloadable resources and exercises

  • Full lifetime access

  • Access on mobile and desktop

Watch Intro Video

Motivations & Learning Outcomes

Is this course for you?

This course explains the technique used to create ray casting 3D scenes. The main technique covered is similar to the one used by IdSoftware in the Wolfenstein 3D source code. You will understand the mathematics used for ray casting, and implement a full-featured projected environment using a language called JavaScript. To make the most out of this course, you should be familiar with the basic building blocks of programming, such as variables, conditionals, loops, and functions.
Free enrollment
Is this course for you?
  • Activities and Discussions

    Join our community and get the most of our discussion boards

Course Content

  • 2
    Quick Trigonometry Review
  • 3
    Map and Player Movement
    • Defining the 2D Map Grid
    • Coding the Map Class
    • Player Movement
    • Coding the Player Movement
    • Exercise: Map Collision
    • Implementing Map Collision
  • 4
    Ray Casting
    • Defining the Field of View
    • Coding the Field of View Ray Increments
    • Finding Wall Hits
    • Finding Horizontal Intersections
    • Finding Vertical Intersections
    • Finding the Intersection with the Grid Cells
    • Coding the Horizontal Wall Intersection
    • Coding the Vertical Intersection
    • Fixing the Intersection Offset Error
  • 5
    Rendering Wall Projection
    • Wall Projection
    • Visualizing the Minimap
    • Coding the Wall Projection
    • Fixing the Fishbowl Distortion
    • Exercise: Wall Shading by Depth
    • Coding Wall Shading by Depth
    • Bright/Dark Wall Sides
  • 6
    Conclusion and Next Steps
    • Exercise: Colored Walls
    • Coding Walls with Different Colors
    • Next Steps
    • Lua / PICO-8 Raycasting Code
    • Moving Forward

Instructor

  • Gustavo Pezzi

    Senior Lecturer

    Gustavo Pezzi

    Gustavo teaches computer science and mathematics at BPP University, London. He studies how teaching game programming can help enhance awareness and understanding of basic 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, systems, databases, and data analysis. His academic path includes institutions such as Pittsburg State University, City University of London, and University of Oxford.

Reviews

  • Clearly explained with some great extra tasks

    Llewelyn Griffiths

    I really enjoyed this course, lots of information but clearly explained. There are also some optional extra tasks to do along the way as "homework" all of wh...

    Read More

    I really enjoyed this course, lots of information but clearly explained. There are also some optional extra tasks to do along the way as "homework" all of which felt challenging but not too overwhelming.

    Read Less
  • Excellent, very well explained. Not need programming skills.

    David Bravo

    I think all explanations are clear, much clearer than when I studied those subjects long ago. Up until the end, everything is well explained and understable.

    I think all explanations are clear, much clearer than when I studied those subjects long ago. Up until the end, everything is well explained and understable.

    Read Less
  • Amazing course!

    christian clark

    I completed this course last summer while I was on a weekend vacation and got interested in Raycasting. This course explained the algorithms and math much be...

    Read More

    I completed this course last summer while I was on a weekend vacation and got interested in Raycasting. This course explained the algorithms and math much better than most of the articles and tutorials I had found before discovering Pikuma. I really like Gustavo's teaching style and methods. By the time I was finished with this class I had a working raycaster and was able to expand and build upon it because I understood how it was working. I will definitely be getting the raycasting in C course now. Thank you so much Gustavo for making courses like these.

    Read Less
  • great lesson's

    thijs van slooten

    i was looking to make a 3d game like wolfenstein 3d but could never find a good tutorial/ course. but when i found this i was instandly hooked its ez to unde...

    Read More

    i was looking to make a 3d game like wolfenstein 3d but could never find a good tutorial/ course. but when i found this i was instandly hooked its ez to understand and follow. and its a lot of fun

    Read Less
  • Just wow!

    David Martins

    Without a doubt these are the best lessons I've found about the subjec by far! Gustavo's explanations are crystal clear and he takes the time to make sure yo...

    Read More

    Without a doubt these are the best lessons I've found about the subjec by far! Gustavo's explanations are crystal clear and he takes the time to make sure you understand everything. I've been struggling with the maths behind raycasting for a while, but after following this course I'm amazed at how simple everything is. I guess I just needed a good teacher. Great job Gustavo, you're amazing!!!

    Read Less
  • Raycasting Basics with JavaScript - a quick review

    Oliver Doyle

    This is an excellent course for those looking to understand old school raycasting engines and for the price of free you will surprised at the quality of the ...

    Read More

    This is an excellent course for those looking to understand old school raycasting engines and for the price of free you will surprised at the quality of the course material. Gustavo gives clear and repeated explanations of each step and follows each step with detailed source code listings. Presentation throughout is brilliant. I liked this so much I've bought 2 of Gustavo's follow on courses and will look forward to those. A great effort all round.

    Read Less
  • Very interesting

    Gilles Sagnard

    I have loved te way you have explained this course. In additional of my own research of the raycasting technic I can develop a little project in Lua with wal...

    Read More

    I have loved te way you have explained this course. In additional of my own research of the raycasting technic I can develop a little project in Lua with wall, floor and ceilling textures. It's very clear for me now ! The challenge is to draw doors now :) Thank yoou very much

    Read Less
  • AWESOME!

    M D

    Learned a lot about trig, ray casting and helped me learn some things about javascript as well! awesome layout and explanation of the math and code!

    Learned a lot about trig, ray casting and helped me learn some things about javascript as well! awesome layout and explanation of the math and code!

    Read Less
  • Excellent

    fatimzahra Saghir

    Excellent course , with great explanation!! Thanks!

    Excellent course , with great explanation!! Thanks!

    Read Less
  • Great tutorial

    kora nonta

    Easy to understand and follow Do make more courses

    Easy to understand and follow Do make more courses

    Read Less
  • Amazing Teacher! and Amazing Course!

    George Adrian

    Thank you so much for making this course, everything was very easy to follow and i had lots of fun learning about raycasting!

    Thank you so much for making this course, everything was very easy to follow and i had lots of fun learning about raycasting!

    Read Less
  • Clear as water.

    Joel López

    It's so easy to follow along all the process, and even the trigonometry! Thanks!

    It's so easy to follow along all the process, and even the trigonometry! Thanks!

    Read Less