Discussion in 'Sega Saturn Programming and Development' started by XL2, Jul 20, 2017.
It's very interesting watching your progress. Awesome job, keep it up!
That framerate is just excellent for a saturn game engine!
Just a small update video. I had the feature for a couple of weeks already, but I never made a video to show it.
Anyway, here is split screen multiplayer working ingame (don't mind the players' models, they are just a placeholder) :
I've also managed to use the VDP2 transparency (not shown in the video) instead of the depth gouraud shading. It should be faster than gouraud shading and will allow backgrounds to fade in and out of view, but the main issue is that I need to use CRAM for all the sprites (only 2048 colors, but each bank is taking 16 colors and these can't always be shared).
I'd be interested to see how well the frame rate holds up with more complex levels from Saturn Quake loaded in split screen mode, or would that require too much of a reduction in the overall polygon count of stages?
I would guess around 15-30 fps on real hardware.
I also stopped using depth gouraud shading and I am now using vdp2 transparency, which should be a bit faster.
The real issue is that I haven't found a solution to prevent overdraw.
I'm leaning toward either a portal system or a pvs system, but I still have several things to do before that so I haven't put much time on this.
The 2 maps in the video are actually Saturn Quake maps.
Here are the results : 20 to 30 fps.
Most Quake levels go from 15 to 30, but the draw distance is the same as single player mode and the 3d model doesn't have a level of detail reduction. I guess sprites would be better.
You can also see the fade in/out transparency in action.
That's just phenomenal! You're managing to equal the frame rate of Lobotomy's single player work in split screen while pulling off that distance fogging effect their SlaveDriver engine didn't even support (to my knowledge, at least)! Also, there are points where these levels really remind me of GoldenEye 007 for the Nintendo 64 - I'd love for someone to port that onto the Saturn, PlayStation or any other console not so limited by a lack of memory for its textures, not to mention compression and filtering that always made it look as if someone had smeared grease all over your screen. Four-way multiplayer is almost certainly out of the question, but I'm sure a 2PVS mode would be within the Saturn's capabilities, especially based on these incredible results...
I wrote a model converter for entities and added per-vertex normals and realtime gouraud shading.
It just looks great, I think I will downgrade Sonic Z-treme from 60 to 30 fps and add more effects.
The VDP1 could keep up with 7 onscreen models (185 quads each) at 60 fps, while the CPU struggled (so it ran at 30).
The main problem with realtime lightning is memory (each vertex takes 24 bytes (12 bytes for the vertex normals), so with maps having some 25 000 vertices, you can see it's very expensive!).
In the first picture under, you can see Sonic's model (with realtime gouraud) in front of a part of the Saturn Quake title screen (per face lightning, so not as smooth). The other one is a test with 7 models.
Slowly getting there!
I still haven't put back the gameplay in the new version of the engine and I want to add some graphical effects, but I think the draw distance is pretty good so far.
I got the audio part OK (I think), graphics are getting close to be done, so I still need to put gameplay back in and work on the collision system and entities management.
If all goes well I'll have a demo in 2 months, ready in time for SAGE 2018 (fingers crossed).
Wow it looks like the sonic game sega wished it had circa 1990s.
Nicely done. I wish I had as much free time as you do...
Not having kids (yet) and working most of the time away from home certainly helps!
That being said, I just keep small objectives for each week (last week was to implement CD audio, this week was to integrate my model converter, next week will be global lightning or model animation or controls, etc), so I progress slowly overall but with quick visible results which keeps me motivated.
I've been talking about implementing a PVS system for months but I haven't even started as it's a huge task requiring to rewrite huge portions of the code, so that's the kind of stuff I won't be doing until all the pieces start fitting together.
Very nice, I have too many projects and zero time, I am still not sure how I found the time to work on the X-treme code in the first place. At any rate, it is always nice to see what the Saturn can do with enough time and good programming...
This summer I have some tentative plans for some experiments on Saturn, I will get in touch with you at some point.
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.
For a better view on the per-vertex animation :
Very cool. Love the animation demo and its great to see all the progress you've made.
Here is a newer version with some really basic collision detection and physics.
Splitscreen works at mostly 30 fps with some drops, but it can be improved.
Looks amazingly smooth to me.
I'd love to see some larger areas where Sonic can get up to full speed.
Will the pink mushrooms/flowers work like springs later?
Yes, I only need a couple of lines to put back these features from previous versions.
Very cool, amazing progress man!
Your work on Sonic Z-Extreme is AMAZING. I always had the dream to be able to create a game engine from scratch, however I lack the knowledge. My dream is indeed to create a custom game engine for Nintendo 64
I also have this dilemma, much projects, many ideas to create cool things (in game development) and no free time.
I am also working on a 3rd person shooter which I am creating using my modified Unreal Engine 3 (https://assemblergames.com/threads/udk-ultimate-engine-for-ps3-and-xbox360.65800/), however sometimes it seems I will never be able to finish this.
I have a full time job of web designer/developer/social media manager for many clientes (I work at my home), I have a family (wife, little sister, father), don't have children yet, however i only get the maximum of one or two hours by day of free time to work on my game, however, there are many days on which I have zero free time, even on weekends If i can get a full saturday of free time is a trully victory to me.
I also love to play games, recently purchased a PS Vita, however from since this month of june I decided to focus ALL my free time to my project (so I leaved my psvita on the closet), and try to make some free time aswell (I began even to stay overnight some days) to be able to work on my game.
So for me any new feature I add to my game, or bug I fix, it's a victory for me.
It's so cool watching the progress on this game. Split screen looks like it's working so slick!
This just keeps looking better and better, keep it up!
Separate names with a comma.