You are browsing as a guest. Sign up (or log in) to start making projects!

completely normal maze game

  • 1 Devlogs
  • 25 Total hours

traverse a completely normal, euclidean maze rendered with raycasting.

Open comments for this post

24h 56m 31s logged

1. completely normal maze game

ive had this idea for an engine/game for a while now, where you explore some completely normal mazes. im not sure why i wanted to do this, since i wasnt really planning on making the world have anything interesting like portals that you dont notice silently teleport you allowing for impossible geometry or anything like that.

the progress so far

so, super quickly, heres what ive done so far in order:

  1. create some super quick and dirty code to just test the pygame-moderngl setup im using
  2. implemented the proper player and 3d dda setup, with some basic voxel generation
  3. horribly failed at implementing collision
  4. moved to polishing the project with stuff like a RoomBuilder to help create rooms, finalising the general data flow for the rooms, porting over my old implementation of oklab in python
  5. adding some basic portal logic

theres still a lot to take care of, but this is basically all of the core functionality, so hurrah!

some technical details

you can skip over this to the gallery if you just want to see the end result of what ive made, but i want to show off some of the cool implementation details and design decisions (because i like showing off :P)

the world’s data

firstly, the world is stored as voxel data. specifically, each voxel stores 4 channels of data, each having 16 bits. since a cube has 6 faces, im storing the data for 2 faces per channel. so, each face has 8 bits of data, and theres one extra channel left over.

the face data is split in such a way that minimises operations gpu side, and also allows me to store loads of different types of data (like portals, colored/textured walls, or stained glass).

because of this specific setup, there are actually two sources of truth for a specific wall, depending on where youre looking from. this means a wall can be green on one side, and red on the other! its a nice little side-effect thatll be really nice when designing levels later on.

the RoomBuilder

this is a cool one. its a class i made to abstract the lower level details of designing a level. you can design a stage with its methods without ever needing to touch the voxel data by hand. its quite simple so far, but itll grow alongside the project. it will also guide the implementation of the level designer mode, whenever i get around to that 👀

where next?

again, theres a lot of stuff i still want to implement. making it so the portals can rotate your sense of ‘up’ is a big one, but theres also stuff like harnessing the full power of the color system to completely shatter the players understanding of where they are, or getting my revenge on collision. adding entity rendering (hopefully like gmod pngs lol) is something i want aswell. ill keep working on this till i get two blahaj so you probably wont need to wait long for more progress. see you!

0
0
18

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…