Hey, I've just recently stumbled across the Gamebuino and ordered it right away. And I have to say I'm stunned by the idea, the look and feel, and the huge amount of games. What an awesome project! Thanks, Rodot!
I've seen the 3D engine demo and was very excited about it and decided to try and build a mini Descent-like clone. And it's already in a state that can be tested:
- 20161212_100431.jpg (185.49 KiB) Viewed 24495 times
Source:
https://nhcham.org/descent.inoHEX:
https://nhcham.org/descent.ino.hexRotate with direction keys, press A to go forward, press B to strafe.
- real 3D, 6 DOF movement
- 9 to 19 FPS (enable FPS counter by defining DEBUG)
- collision detection
I've implemented the demo as a portal rendering engine (
https://en.wikipedia.org/wiki/Portal_rendering). The level consists of convex 2D segments which are connected via shared edges. Segments may have different floor and ceiling heights. Currently there are 9 segments in the game.
There's a couple of things still left to do:
- frustum clipping is not always correct for adjacent segments with different floor and ceiling heights
- move level data to PROGMEM to save RAM and have a bigger level
- more compact level data (one byte for combined dx and dy per vertex instead of one byte for each)
- quick face culling based on normal vector (fewer walls to clip against frustum)
- there's an occasional glitch when moving from one segment to the next (only visible for one frame)
- portal walls cannot share the same plane with normal walls, as the normal wall's collision detection will prevent going through the portal
- add sprites, add shooting
Oh, and there's only ~100 bytes of RAM left when running the program, and it won't survive going back to the menu and being restarted, probably because RAM is tight. I'm still trying to figure that one out - I've certainly learned a lot about RAM usage!
Last edited by
nhcham on Mon Dec 12, 2016 10:38 am, edited 1 time in total.