What would you like to see more?
Temple Run CE
 62%  [ 10 ]
MC 2.0
 37%  [ 6 ]
Total Votes : 16

So... I've had a custom, simple script on a few different platforms to render voxels both quickly and dynamically, sacrificing quality and flexibility (more on that later). I'm working on a version for the TI-84 Plus CE in my free time, but I have a working demo in my Discord here: https://discord.gg/22rfEYgZx4.

So far, with 5 voxels, it gets 30fps on real hardware. Most of this comes from the algorithm, not rendering/framebuffer. I currently have motion in all 3 axis implemented. However, it is VERY unoptimized, and the vertices are calculated every frame as well as being overdrawn...which I will be changing. Basically, improvements coming, contributions and tips/hints greatly appreciated, especially since I have no background in 3D graphics (other than some OpenGL), this is a free time project, and I have school since I'm 15 - turning 16 in two days.

Honestly, I'm kinda surprised there aren't a lot of other projects like this. I'm also planning on doing some work on a lightweight raycaster similar to Cellar, which will hopefully run faster if it has no textures. However, with this "engine", I'm planning on making Temple Run CE or another MC clone. Razz

There is one drawback, though. The thing is, it is only able to rotate in 90 degrees increments (which requires a little bit of computation) which is the reason I'm really liking the idea of Temple Run. For now, everything is just a simple wireframe, but I'll have an option to render voxels fully soon.

So, I'd like to hear y'alls feedback, if you like it or not, any tips, tricks, or pointers, literally anything since I just got the toolchain installed two days ago and am still needing to get fully familiar with the graphx library. Anything is helpful! Very Happy

Screenshot, thanks to Epsilon5:

Sounds like a neat project! Make sure you get the important things done first (as in, the rendering) before you start the game and you'll have the most success. It's very ambitious, and it would be pretty cool to see it completed, so good luck.

Looking forward to more updates!
Wow looking cool! 30fps is encouraging and I always love anything that's 3D Very Happy.

Do you have a screenshot of it in motion?
tr1p1ea wrote:
Do you have a screenshot of it in motion?

Not right now, but I'll have one by tomorrow or Tuesday! I don't have cemu quite set up on my new PC, and my calc's archive is full so I gotta do all that. Smile
Great work! Glad someone else is throwing time at this Smile

There have been other attempts at 3d engines, though no voxels yet IIRC. Virtual3D by TheMachine02 and Quad3D by me!

These kind of projects can be timesinks, I know, so if you have any questions I'd be very happy to answer them. If you aren't already, I'd join the Cemetech discord, since there are channels to bounce any questions you have on C or assembly.
Zaalane wrote:
Virtual3D by TheMachine02

Yeah, I saw Virtual3D and it's quite an impressive project! Unfortunately, it's in assembly (which I don't know) and there isn't much because of the drastic differences in the engine.

Quad3D by me!

Oh wow I remember seeing that! Mine's supposed to be more speed focused (though I obv still need to do some major improvements) but I will definitely take some inspiration from your codebase. Very Happy

These kind of projects can be timesinks, I know, so if you have any questions I'd be very happy to answer them.

Thanks for that, I'll probably take you up on that offer for engine related questions, and use Discord for asking about specific code related questions/help. Good Idea
Little screenshot. Gets 14 FPS in CEmu and 31 on real thing. FOV is a bit weird, so it should look more natural in upcoming screenshots

is this like the voxel flight engine made for the 89 Titanium?
Calculatordream wrote:
is this like the voxel flight engine made for the 89 Titanium?

Never heard of it, so most likely not. I can't seem to find it on Cemetech or Google after a quick minute of searching.
Calculatordream wrote:

Mmmm yeah so this most likely won't ever be on that level of computation. Wink

The main difference here is that my current engine is only capable of rotating at 90 degree angles. However this will have a much higher frame rate, resolution, and more color than the flight simulator you pointed me to.
UPDATE: I just implemented a small code change, and this engine now gets up to 6X the speed boost!!! I will be uploading the source to the GitHub repo shortly (as well as a release for everyone to try out). Real hardware now gets almost 60FPS when rendering 64 voxels on-screen Very Happy

As always, the Discord server is here: https://discord.gg/22rfEYgZx4. Here are some benchmarks for yall! Left is 50 blocks within one, right is 64. CEmu is slower than actual hardware at the moment, so you will be getting higher FPS.

EDIT: I will be adding some features to make them all opaque, so you don't see the wireframe anymore as well as slightly offsetting the player position so situations like the one on the right don't look so weird.
Don't use int_fast16_t. Use int24_t.
For that matter, don't use _fast anything.
This could be gfx_PrintUInt: https://github.com/Kasherpete/wireframe-engine-ce/blob/main/src/main.c#L104
MateoConLechuga wrote:
Don't use int_fast16_t. Use int24_t.
For that matter, don't use _fast anything.
This could be gfx_PrintUInt: https://github.com/Kasherpete/wireframe-engine-ce/blob/main/src/main.c#L104

Noted. I'm still in the process of getting more detailed and specific data types ironed out as I learn more about C. Is there a particular reason _fast data types shouldn't be used? I assumed the toolchain may have them implemented, but I haven't asked.
Another screenshot Smile . Will be optimizing planes and make it a separate function than a single panel, I'm surprised at how well this runs! This exact scene gets extremely smooth 40-60 FPS based off of where you are.

This looks promising, especially the speed. I'm really curious about how it will run with larger scenes. Smile
Good afternoon everyone! Today I have an update. I'll start off with the technical details.
    1. A sorting algorithm to sort geometry based off of its distance from the camera. This is a very useful tool, takes about 0.00025 per item, and is based off of qsort().
    2. Numerous new functions and options. You are able to now draw voxels, panels, and planes with many more subtle additions to make things easier.
    3. Optimizations. I do my best to add these along the way, though I still feel I have more to go.

My Discord server is located right here, the Github is here, and I also have a new website!!! keaganpeterson.dev. I will be adding a blog post about this project soon.

As you can see with the left screenshot, the algorithm that sorts items is ran about once every second, which is plenty, but you can always make it faster with only slightly less lag for faster moving or closer scenes. View the changelog here, it contains much more information than my limited time here!!! See y'all next update Very Happy
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum