Skip to content

Part 0: getting started

Dmitry V. Sokolov edited this page Feb 20, 2019 · 1 revision

This video (clickable) shows what lies in this repository: TinyRayCaster

At the time I write this text, the repository contains mere 486 lines of code, that is why I call it tinyraycaster:

haqreu@daffodil:~/tinyraycaster$ cat *.cpp *.h | wc -l
486

This text is written for those who only make first steps in programming. The main idea is to show, step by step, how to make a game à la Wolfenstein 3D. Attention, I am not going to compete with Carmack, he is a genius and his code is stunning. I aim a different goal: I'm using the huge computing power of modern computers to allow my students to create fun projects in very short time (typically few days), without getting stuck in the optimization nightmare. To write a slow code is my intention, it is much shorter and more understandable. While Carmack writes 0x5f3759df, I write 1/sqrt(x). We pursue different goals.

This repository does not contain a complete game. It is meant for you to program. As an example, here are the sources for the game made by my students Salih Nascimento and Stephane Hulot, also check the following youtube video for a preview:

Thanksgiving party

I do believe that, to become a good programmer, one needs to write code for his own pleasure, and not just park his posterior at university programming lectures / work desk. Strangely enough, in our university, future programmers develop endless series of CD/book catalogues and other boring things. Grrhmm. My goal is to show examples of projects that are fun to do. It's a virtuous circle: if it's interesting to do a project, a person spends a lot of time on it, gains experience and sees even more interesting things around (these things become more accessible!), and then dives into a new project again. It is called project based learning, and I am a huge fan of the concept.

Clone this wiki locally