Pseudo 3D Challenge

I was busy last week doing a game for a little challenge that took place over the YoYoGames forums. The idea was to create a pseudo 3D game using Game Maker without using any of the d3d functions that the program offers.
 
 
So I decided to go with something simple, a raycaster engine in GML, I’ve done many raycasters previously in JS so I’m very familiar to how it works, since the other participants were doing amazing 3D projects I decided to aim to the “fun” category so I took one of the pieces of my last current project (also in GM) Wraith and did a First Person Shooter / Tower Defense mix.
 
 
There were 3 categories in which the games were qualified and I made it at the top 3 of those 3 categories:

3D Rendering
1. Xor
2. orange451
3. Jucarave

Gameplay/fun
1. RoundCircleandSphere314628
2. Jucarave
3. Klong

speed/performance (In no particular order)
RoundCircleandSphere314628
Jucarave
lolslayer

So I’m very pleased with the results 🙂

 
The versión of the contest can be found here:
 

2 comments

  1. Hello,

    I’ve found your website by chance. I’m coding demos on the c64 and recently I’ve been interested in how to do angled walls in a raycaster. I’ve seen you done it in one of your demos. It would make me very happy if you could tell me how it is done.

    Kind regards,
    Zoltan Tallosy

    1. Hello,

      I didn’t continue working on that system but this is what I had so far:

      I raycasted to both ends of the wall (near and far) to get the two distances to that wall, after that I just interpolate through those values, the problem with this aproach is that if one of the ends of the wall is behind the camera you get a incorrect distance, the best way to solve this (I think) is to project the position of the camera onto the wall to get the nearest point in the wall and then raycast to the furthest wall and do the interpolation.

      Good luck with your project, I always like to see people working on this kind of stuff.

      Best regards.
      Camilo Ramírez

Leave a Reply

Your email address will not be published. Required fields are marked *