This project is inspired by the world-famous Wolfenstein 3D game, which was the first FPS ever.
It will enable you to explore ray-casting.
Your goal will be to make a dynamic view inside a maze, in which you’ll have to find your way.
This project’s objectives are similar to all this first year’s objectives: Rigor, use of C, use of basic algorithms, information research etc.
As a graphic design project, cub3D will enable you to improve your skills in these areas: windows, colors, events, fill shapes, etc.
To conclude cub3D is a remarkable playground to explore the playful practical applications of mathematics without having to understand the specifics.
With the help of the numerous documents available on the internet, you will use mathematics as a tool to create elegant and efficient algorithms.
For the detailed instructions on the project,check the subject.pdf.
only tested on macOS Catalina (Version 10.15.7)
For all other OS it is not guaranteed to work.
OpenGL and AppKit is required to run it.
If you want to run it on Linux here is a tutorial that might help and here is the required version of miniLibX, this is not tested with our cub3D.
- run
make
ormake all
in the root of the directory - run
./cub3D maps/42.cub
in the root of the directory - move the character with
WASD
- turn the FOV left and right by pressing
arrow_left
andarrow_right
or by moving the mouse right or left
Things to enjoy
- wall collition
- moving hands while walking
- opening and closing doors by walking into them
- fully customizable maps
back to Our cub3D
back to Contents
- decide which texture is displayed on which side
0
define walkable spaces1
define walls2
define doors- the players position is displayed by:
N
player is facing north (top of the 2D map)E
player is facing east (right side of the 2D map)S
player is facing south (bottom of the 2D map)W
player us facing west (left side of the 2D map)
- the map has to be enclosed by walls on all sides
- doors have to have walls on two opposite sides
- any other characters other than the ones above are forbidden
- if there is a
- only one player position is allowed
- you have to set all the textures that should be used as wall texture i.e.
WE images/1.xpm
EA images/2.xpm
SO images/3.xpm
NO images/4.xpm
- you have to set the ceiling color, i.e.:
C 0, 183, 183
- you have to set the floor color, i.e.:
F 141, 1, 126
back to Our cub3D
back to Contents
The wall textures as well as the door texture is interchangeable, as long as:
- the texture is 64 by 64 pixels
- the texture is a .xpm file
- the textures are called
1.xpm
,2.xpm
,3.xpm
,4.xpm
,5.xpm
with5.xpm
being the door
If you want to change the windowsize, this can be done in the cub3d.h file.
But the hands are currently not resized to the windowsize, so either you have to resize the texture itself and replace the existing hand-textures in images or just disble the hands by commenting out line 113 in draw.c.
back to Our cub3D
back to Contents
This is the map file used in the example.
back to Our cub3D
back to Contents