|
|
|
CUBE3D
|
|
|
|
===
|
|
|
|
|
|
|
|
[Subject](https://cdn.intra.42.fr/pdf/pdf/48490/fr.subject.pdf)
|
|
|
|
|
|
|
|
## Resources :
|
|
|
|
- [Walls textures](https://opengameart.org/art-search-advanced?field_art_tags_tid=wall)
|
|
|
|
- [Convert to xpm](https://convertio.co/)
|
|
|
|
- [Debug maps (Outdated?)](https://github.com/nsterk/cub3D/tree/main/maps)
|
|
|
|
- [Tester & maps](https://github.com/MichelleJiam/cub3D_tester)
|
|
|
|
|
|
|
|
## Program life cycle :
|
|
|
|
- map parsing :
|
|
|
|
- [o] read file,
|
|
|
|
- [o] extract walls textures,
|
|
|
|
- [o] extract sky and ceil colors
|
|
|
|
- [o] import map into chained list,
|
|
|
|
- [-] comvert list to 2D array.
|
|
|
|
- [ ] save player pos,
|
|
|
|
- [ ] handle errors,
|
|
|
|
- initialize env
|
|
|
|
- generate window
|
|
|
|
- display view
|
|
|
|
- enable commands
|
|
|
|
- react to commands :
|
|
|
|
- calculate new pos,
|
|
|
|
- display new view,
|
|
|
|
- clean and exit
|
|
|
|
|
|
|
|
## thoughts :
|
|
|
|
|
|
|
|
## verify map validity :
|
|
|
|
The map must be closed with the player inside the walls.
|
|
|
|
- calloc a 2D array as X size is the size of the longer
|
|
|
|
line and y is the numbers of map lines.
|
|
|
|
- set the array cells to 1 for floor, 2 for walls
|
|
|
|
- outside cells will be zeros.
|
|
|
|
- read line by line until you encounter first wall then turn around
|
|
|
|
the map following the walls and never going on an already visited
|
|
|
|
wall until you come back to starting pos.
|
|
|
|
|
|
|
|
|
|
|
|
## initialize env :
|
|
|
|
- required datas : initial player pov angle,
|
|
|
|
- walls height
|
|
|
|
- eyes positions from screen ( -> field of view)
|
|
|
|
- calculate fov rays unit vectors,
|
|
|
|
|
|
|
|
|
|
|
|
## display view :
|
|
|
|
- calculate distance between player and intersection between rays and walls
|
|
|
|
- calculate viewed height of walls for each verticle
|
|
|
|
- draw walls, floor and sky
|