Here is a new update on my new engine (WIP!) on real hardware.
I didn't implement back the physics/controls, so don't pay attention to that.
What's new : compressed per-vertex animation with interpolation (a bit like Crash Bandicoot and Quake 2), VDP2 transparency fade in, per-vertex realtime lightning (on Sonic only), audio using tones, splitscreen (not seen here), octree instead of an uniform grid for culling/collision, paletted/CLUT sprites, LOD model autogenerated for distant quads and probably many other things I forgot to mention.
It's not optimized yet, so there is room for lot of improvement.
Here is splitscreen in action.
I should be able to optimize it enough for a stable 30 fps.
But 800 drawn quads on screen at 30 fps is quite amazing!
The gouraud shaded untextured quads also look great and are cheap to render, I guess I should find a way to use more untextured quads.
Out of curiosity, since this project is quite huge for a single person, is there anyone here who would be interested and could invest time who would like to join if I decide to make it more "open"?
I always intented to make the FPS demo the open source project while I keep working on my own on Sonic Z-Treme, but it's a bit overwhelming at times since I often need to rewrite huge portions of my code, while there are still so many things I would like to do.
Now, it doesn't mean I will make it more "open" or accept any random people who can't code but want their name next to project (I already saw 2 people online claiming it's their work even if they never coded a single line) but I'd just like your input.
I think it's doable to have community based feedback and support.
For programmers, the best way to get started is to get the project version controlled (git). If you use Bitbucket, they allow private repositories. You can then bring in contributors in privately to help you.
You could also then make a public repo where people (the community) can submit bugs/issues, etc. This repo won't have any source code.
Thanks for your input, I will certainly consider this option.
SAGE as been pushed back one month, which is a very good news since I wouldn't have been able to get a good demo in time.
I've since added support for very (very) basic world lightning (per face only) using palettes, so it comes at no costs, looks alright and allows to keep transparency.
Even with Quake maps it looks good enough since these have more often than not axis-aligned planes, which isn't the case in a game like Nights where you have curves everywhere.
I might still use gouraud for a bump mapping effect.
See here the images "AKIRA3" and "Chrome" for that bump mapping effect for those who never saw it.
I managed to use this technique in my own game, but I added green and blue gouraud to shift palettes and add transparency respectively.
It should allow - with some adjustments - some pseudo environment mapping at zero cost.
It works on real hardware, but doesn't work well on emulators.
See the picture here (emulator) :
Here it is with both the metal effect (working on real hardware nicely) using both green gouraud shifts (when the metal player is invincible) and red gouraud (both when invincible and not).
I added global lightning to the maps using per-vertex lightning and averaging the results to get a per-quad flat lightning shifting palettes.
I also added back rings and ennemies, but the ennemies are static since I didn't code in an insertion function for the octree nodes.