Skip to content
tmoel1Public
forked from HaruSnak/42-cub3d

About

Project 42 | Cub3D involves implementing a 3D game engine using raycasting to create a 3D view from a 2D map. | Level 4 - Common Core

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

49 Commits

Folders and files

Repository files navigation

Cub3D

Well, sort of 2D+ in truth...

Co-created with @HaruSnak

Below is an abbreviated presentation of the project – for a more complete tour, see: https://github.com/HaruSnak/Cub3D/


So, what is this project about?

The final C project in 42's main cursus, Cub3D, is an implementation of a '3D' rendering engine using raycasting, a technique similar to the one used in classic games like Wolfenstein. The main goal is to create a three-dimensional maze from a 2D map, allowing the player to navigate an immersive environment from a first-person perspective. The program first enforces strict parsing of the maps, then the engine relies on a series of calculations to accurately project the rays outwards both horizontally and vertically in real time, giving the impression of a 3D map. The visual component was done largely through using MiniLibX, itself an API of sorts for X11, as imposed by the subject requirements.

game

Sounds fairly simple actually, so how is it laid out?

.
└── 📁Cub3D
    └── 📁assets
        └── 📁textures
            └── EA.PNG
            └── EA.xpm
            └── NO.PNG
            └── NO.xpm
            └── SO.png
            └── SO.xpm
            └── WE.PNG
            └── WE.xpm
        └── 📁ui
            └── main_menu.png
            └── main_menu.xpm
    └── 📁includes
        └── cub3d.h
        └── 📁libft
            └── 📁char
                └── ft_isalnum.c
                └── ft_isalpha.c
                └── ft_isascii.c
                └── ft_isdigit.c
                └── ft_isprint.c
                └── ft_tolower.c
                └── ft_toupper.c
            └── 📁conv
                └── ft_atoi.c
                └── ft_itoa.c
            └── 📁gnl
                └── get_next_line.c
            └── 📁includes
                └── libft.h
            └── 📁lst
                └── ft_lstadd_back_bonus.c
                └── ft_lstadd_front_bonus.c
                └── ft_lstclear_bonus.c
                └── ft_lstdelone_bonus.c
                └── ft_lstiter_bonus.c
                └── ft_lstlast_bonus.c
                └── ft_lstmap_bonus.c
                └── ft_lstnew_bonus.c
                └── ft_lstsize_bonus.c
            └── Makefile
            └── 📁mem
                └── ft_bzero.c
                └── ft_calloc.c
                └── ft_memchr.c
                └── ft_memcmp.c
                └── ft_memcpy.c
                └── ft_memmove.c
                └── ft_memset.c
            └── 📁put
                └── ft_putchar_fd.c
                └── ft_putendl_fd.c
                └── ft_putnbr_fd.c
                └── ft_putstr_fd.c
            └── 📁str
                └── ft_split.c
                └── ft_strchr.c
                └── ft_strcpy.c
                └── ft_strdup.c
                └── ft_striteri.c
                └── ft_strjoin.c
                └── ft_strlcat.c
                └── ft_strlcpy.c
                └── ft_strlen.c
                └── ft_strmapi.c
                └── ft_strncmp.c
                └── ft_strnstr.c
                └── ft_strrchr.c
                └── ft_strtrim.c
                └── ft_substr.c
    └── 📁maps
        └── error1.cub
        └── error10.cub
        └── error11.cub
        └── error12.cub
        └── error13.cub
        └── error14.cub
        └── error15.cub
        └── error16.cub.ber
        └── error17.cub
        └── error18.cub
        └── error19.cub
        └── error2.cub
        └── error20.cub
        └── error21.cub
        └── error22.cub
        └── error23.cub
        └── error24.cub
        └── error25.cub
        └── error26.cub
        └── error27.cub
        └── error28.cub
        └── error29.cub
        └── error3.cub
        └── error30.cub
        └── error31.cub
        └── error32.cub
        └── error33.cub
        └── error34.cub
        └── error35.cub
        └── error36.cub
        └── error37.cub
        └── error38.cub
        └── error39.cub
        └── error4.cub
        └── error40.cub
        └── error41.cub
        └── error42.cub
        └── error43.cub
        └── error44.cub
        └── error45.cub
        └── error46.cub
        └── error47.cub
        └── error48.cub
        └── error49.cub
        └── error5.cub
        └── error50.cub
        └── error51.cub
        └── error52.cub
        └── error53.cub
        └── error54.cub
        └── error55.cub
        └── error56.cub
        └── error57.cub
        └── error6.cub
        └── error7.cub
        └── error8.cub
        └── error9.cub
        └── map1.cub
        └── map2.cub
        └── map3.cub
        └── map4.cub
        └── map5.cub
    └── 📁minilibx-linux
        └── .gitignore
        └── configure
        └── libmlx_Linux.a
        └── libmlx.a
        └── LICENSE
        └── Makefile
        └── Makefile.gen
        └── Makefile.mk
        └── 📁man
            └── 📁man1
                └── mlx_loop.1
                └── mlx_new_image.1
                └── mlx_new_window.1
                └── mlx_pixel_put.1
                └── mlx.1
            └── 📁man3
                └── mlx_loop.3
                └── mlx_new_image.3
                └── mlx_new_window.3
                └── mlx_pixel_put.3
                └── mlx.3
        └── mlx_clear_window.c
        └── mlx_destroy_display.c
        └── mlx_destroy_image.c
        └── mlx_destroy_window.c
        └── mlx_expose_hook.c
        └── mlx_ext_randr.c
        └── mlx_flush_event.c
        └── mlx_get_color_value.c
        └── mlx_get_data_addr.c
        └── mlx_hook.c
        └── mlx_init.c
        └── mlx_int_anti_resize_win.c
        └── mlx_int_do_nothing.c
        └── mlx_int_get_visual.c
        └── mlx_int_param_event.c
        └── mlx_int_set_win_event_mask.c
        └── mlx_int_str_to_wordtab.c
        └── mlx_int_wait_first_expose.c
        └── mlx_int.h
        └── mlx_key_hook.c
        └── mlx_lib_xpm.c
        └── mlx_loop_hook.c
        └── mlx_loop.c
        └── mlx_mouse_hook.c
        └── mlx_mouse.c
        └── mlx_new_image.c
        └── mlx_new_window.c
        └── mlx_pixel_put.c
        └── mlx_put_image_to_window.c
        └── mlx_rgb.c
        └── mlx_screen_size.c
        └── mlx_set_font.c
        └── mlx_string_put.c
        └── mlx_xpm.c
        └── mlx_xpm.c.ok
        └── mlx.h
        └── 📁obj
            └── mlx_clear_window.o
            └── mlx_destroy_display.o
            └── mlx_destroy_image.o
            └── mlx_destroy_window.o
            └── mlx_expose_hook.o
            └── mlx_flush_event.o
            └── mlx_get_color_value.o
            └── mlx_get_data_addr.o
            └── mlx_hook.o
            └── mlx_init.o
            └── mlx_int_anti_resize_win.o
            └── mlx_int_do_nothing.o
            └── mlx_int_get_visual.o
            └── mlx_int_param_event.o
            └── mlx_int_set_win_event_mask.o
            └── mlx_int_str_to_wordtab.o
            └── mlx_int_wait_first_expose.o
            └── mlx_key_hook.o
            └── mlx_loop_hook.o
            └── mlx_loop.o
            └── mlx_mouse_hook.o
            └── mlx_mouse.o
            └── mlx_new_image.o
            └── mlx_new_window.o
            └── mlx_pixel_put.o
            └── mlx_put_image_to_window.o
            └── mlx_rgb.o
            └── mlx_screen_size.o
            └── mlx_set_font.o
            └── mlx_string_put.o
            └── mlx_xpm.o
        └── README.md
        └── rgb2c.pl
        └── 📁test
            └── main.c
            └── main.o
            └── Makefile.gen
            └── Makefile.mk
            └── mlx-test
            └── new_win.c
            └── open.xpm
            └── open24.xpm
            └── open30.xpm
            └── run_tests.sh
    └── 📁srcs
        └── 📁bonus
            └── minimap.c
            └── mouse_rotate.c
        └── cub3d.c
        └── 📁errors
            └── errors.c
        └── 📁game
            └── settings.c
        └── 📁parsing
            └── parsing_map.c
            └── parsing_rgb.c
            └── parsing.c
            └── verify_direction.c
            └── verify_map.c
        └── 📁player
            └── init_player_controls.c
            └── keys.c
            └── player_init_movement.c
            └── player_movement.c
            └── rotate.c
        └── 📁raycasting
            └── raycasting_calcul_bis.c
            └── raycasting_calcul.c
            └── raycasting_draw.c
            └── raycasting_init.c
        └── 📁texturing
            └── init_textures.c
        └── 📁ui
            └── main_menu.c
        └── 📁utils
        └── 📁utils-mlx
            └── function_mlx.c
            └── function_utils.c
            └── parsing_utils.c
    └── cub3d_tester.sh
    └── LICENSE
    └── Makefile
    └── README.md
    └── valgrind_output.txt

So yeah, just like that really.

Try it out if you like - feedback welcome!

About

Project 42 | Cub3D involves implementing a 3D game engine using raycasting to create a 3D view from a 2D map. | Level 4 - Common Core

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages