Original Post

Hi all,
the mandelbrot zoomer was actually just a testbed for that shrinked affine worlds in 13 dither shades approach. I only use it to write 2×2 pixels with a single byte store. It has nothing to do with the ‘3D’ or ‘perspective’ here.
Without that working out, the voxel engine would have been little fun.
After quite some time spent optimizing routines and rewriting the algorithms from scratch a couple of times, I feel that it had become fast enough to be actually useful:

(it runs considerably slower on real hardware compared to this mednafen recording but still at about 9 FPS).

You find the binary attached below:
It’s fully interactive (it would have been much simpler to code otherwise):
left pad:
left/right: rotate
up/down: forward/backwards
right pad:
left/right: strafe
up/down: increase/decrease rendering depth (starting at max).
This is fully written in v810 assembly (ISAS) and a couple of cache tests performed before also helped a bit.

The engine plots into a mosaic of 3×2 affine worlds for each eye, 12 worlds in total.
I will likely reduce the visiable area on the screen some more to bring it down to 2×2 and safe memory as well as CPU speed 🙂
The hex digits in the upper left are: time spent per frame (in 100us), depth (non-linear), rotation angle, xposition, yposition.

  • This topic was modified 11 months ago by enthusi.
  • This topic was modified 11 months ago by enthusi.
  • This topic was modified 11 months ago by enthusi.
  • This topic was modified 11 months ago by enthusi.
  • This topic was modified 11 months ago by enthusi.
  • This topic was modified 11 months ago by enthusi.
  • This topic was modified 10 months, 3 weeks ago by enthusi.
6 Replies

Holy crap! That’s amazing!

Wow, just wow. Really flexing some technical skills here, and it has great potential to make a game out of to boot. It almost feels scandalous to see a single other reply.

Yeah, did everybody go to some other website and leave us? Im shocked there isn’t more replies here. Would make a jaw dropping RPG overworld for sure!

As a follow-up question, from what data is this world generated? Is there a premade map for which you are rendering, or is it generated some other way? Also, is the map static or can it be modified? Like, could you take a block out somewhere, or add a new block somewhere?

I’m very hit and miss on reading vs logging in and I haven’t checked in since late last year. This is impressive. I’ve loved voxel work since putting way many hours on the old Maximum Overkill Comanche DOS PC game in the earlier 90s.

This is something if it grew into a full fun game in some future period I’d be intent on following.

this isn’t fully dead. Just put on ice for other projects and some priorities during yes, the pandemic.
I kept the source in a rather clean state (as far as I recall 😉 so I intend to pick it up one day.
Tracing actual objects IN this voxel world is very tricky and I havent fully made up my mind which approach to follow.
Probably NOT the one I used so far:

So when firing bullets, tracing them along the terrain (works) having them impact the terrain and even modifying it (works) but also showing a resulting explosion at the proper position while moving (OUCH, that’s terrible 😉

  • This reply was modified 2 weeks, 6 days ago by enthusi.


Write a reply

You must be logged in to reply to this topic.