A downloadable tool for Windows, macOS, and Linux

Buy Now$9.00 USD or more

RayCoaster is a simple 3D raycaster for easy game making. The source code and executables for Windows and Linux are provided. Download executables for free in a free demo. RayCoaster has been tested in Windows (with 32 bit MinGW) and Linux, but should also be possible to build for Android, macOS and iOS. SDL2 and SDL2_image libraries must to be installed to build RayCoaster. The right to sell and distribute is reserved.


1. What map editor does it have?

This is the map.txt file from RayCoaster that completely defines  the map and the images for walls and sprites (the rest are generated images). Walls and sprites can be different height, partly transparent, clipping or not clipping (eg  c1_ demon2.png  makes the sprite not clipping). The source code has 554 lines of code, can change everything in the map and is made to facilitate making a game.

2. Many simple raycasters have been made, isn't writing another one too out of date?

Most of the simple ones are not really good enough for making a game. Most have walls all the same height, there are no sprites. The engine is often not written good enough, try to move out of the map or even look out of it, and it crashes. The code does not facilitate making a game. Creating a map is inconvenient, the number of walls, etc, that can be used, is too restricted, there is no simple way to change images to be loaded. Often there also are many bugs in the code. So obviously in spite there are many simple raycasters made, there is a lot to improve. Things can always be improved, that something is already there and there is no way to make it better, is almost never true, at least what concerns software.

3. I really don't understand why do i have to pay for a simple thing like this, why cannot it simply be free?

It costs $3, right, and this is likely a big obstacle for many, as all expect it to be free. Making it free looks ideal for many, but does not always look ideal for me. I think there should be something in between commercial closed source and completely free. So that both the users and developers get benefit. Open source with a small price is one such option.

4. I can find a free one, why do i need to pay $3 for only 554 lines of code?

You may search for a free small raycaster engine that has all the features written here, most likely you cannot find any, i at least couldn't find. I did never write such raycaster, not to talk selling it for $3, when there were a similar one free, but better. One may think the code of some free raycaster can be taken, and the necessary features added. I can tell you that it is not that easy, i had a lot of trouble with this, you may save more than a month of your precious time by getting RayCoaster.

5. How is it any better than many simple ones out there?

I love simplicity, clarity, abstraction and easy changeability, so i hope that when you read the RayCoaster code, you get a very clear idea of what raycaster exactly does, in the smallest detail, which i couldn't get before RayCoaster, by reading the code of the other raycasters out there. Thus if your aim is to write a simple raycaster game, i think RoaCoaster will at least be very useful for you, even if you also use some other code or tools or there are things you would like to add to RayCoaster engine. For some simple game the RayCoaster engine alone will likely be enough though.

6. Is it at least as good as Doom or is it yet another primitive Wolfenstein 3D?

The RayCoaster engine is in some way in between Wolfenstein 3D and Doom. It is not so advanced as Doom, but for example you can make a wall or sprite image different height, and in 3D the corresponding wall or sprite will be that height. This enables for example to have buildings and outdoor scenes like in Elder Scrolls Arena or other such games. Yet no simplicity is sacrificed.

7. Why should anyone today use such low resolution images? What is the image format?

Magenta (255, 0, 255) is the transparent color for walls and sprites. It loads png images 64 pixels wide (as it was in the early games like Wolfenstein 3D and Elder Scrolls Arena) with any height, that have no alpha channel. So make sure that there is no alpha channel, if there is one, remove it, otherwise the image will not load.

8. I want to make an advanced 3D game, why do i need things like this that have no features or anything?

You may think it's better to make a more advanced 3D game. Depending on what you can do or want to do, this may be a good idea. But the hell, i need fun, if all the complexity takes all my fun, then what's the use of it?


Buy Now$9.00 USD or more

In order to download this tool you must purchase it at or above the minimum price of $9 USD. You will get access to the following files:

raycoaster-1.0.6.zip 1 MB
if you pay $12 USD or more

Download demo

GayRoaster-demo.zip 1 MB

Development log


Log in with itch.io to leave a comment.

Hey! sounds preety cool. 
To clarify some things, this is C code on top of SDL2, not a "game maker" plugin, right? 
Does It contain some form of documentation?

Also an important one: reading the description I get that it has collision detection between player and walls, but does it have collision detection between proyectiles and sprites or a simple way to add that?

I have a lot more questions that I think might be answered by having a sneak peak to the public interfaces. For example how to add an "enemy" dinamically and how to change it's sprite to make an animation.


(2 edits) (+1)

> To clarify some things, this is C code on top of SDL2, not a "game maker" plugin, right?

Yes, and the code enables to easily make simple games. It is all very simple and minimalist, intentionally made simple.

> I get that it has collision detection between player and walls, but does it have collision detection between proyectiles and sprites or a simple way to add that?

Sprites can be clipping too, but both the sprites and walls can also be made not clipping.

> For example how to add an "enemy" dinamically and how to change it's sprite to make an animation.

The code can change all the map easily, this includes changing the sprite images, so animation is simple to make. Depending on what do you mean by adding an enemy dynamically, if you want it to appear at any location, means that not only in the squares of the map, this needs some change in the code, adding a separate array for sprites. It is intentionally made simple, so that one can easily make a simple game, like a simple RPG, puzzle or strategy game, as well as easily understand how all that works, so that changing it will be easy.

PS Who downloaded the demo, the command line for the executable is

raycoaster [-f] [map_file]

-f means fullscreen.

It actually works, i can make my own map. A 4 year old can do that.