SAGE 2021 - Demo Hellslave : Project Z-Treme

Overview

Hellslave : Project Z-Treme, SAGE 2021 deathmatch demo



-Complete deathmatch experience, including against humans or bots, with up to 8 players.
-Fully 3D engine, the Z-Treme Engine, expanding on the Sonic Z-Treme engine from 2018 - but almost everything was rewritten, so at this point it's not the same thing at all - which makes uses of both SH2 cpus, SCU DSP, VDP1 and VDP2.
-4 players splitscreen deathmatch!
-Gouraud shading lighting everywhere, with realtime lighting supporting up to 9 dynamic light sources per vertex.
-Fully 3D weapons and enemies with AI, animation and lighting - Even the flying body parts have realtime lighting applied to them!
-High res 64x64 textures (for the Saturn)
-Brand new original 3d rendering code, matrix, vertex transformation, lighting system, polygon creation, collision, AI, etc.
-Fully 3d engine using binary space partition (BSP) with a PVS+portals occlusion culling system : somewhat similar to the technology used in Quake on PC, but fully running on the Saturn!
-Real transparency : water, light flares, clouds, windows, etc.
-Realtime reflections.
-Realtime reflections + dynamic lighting + realtime transparency : Look at a window, and you might see yourself and the room you are in... and also see the outside world! Try that on the PS1!
-Volumetric fog (faked, but still...)
-Depth shading
-Way improved culling and low distortion (no more polygons disappearing in your face, no more polygons dancing in your face à la PS1).
-No draw distance limit : the engine doesn't even have a far plane for frustum culling!
-New and fully original matrix, vertex transformation, lighting calculation, polygon creation and polygon sorting code, mostly in C.
-High amount of particles and flying body parts everywhere.
-3d pad optimized. 4 players Mouse and keyboards supported! Just plug your mouses in the mutitap in port 2, while the gamepads or keyboards will go to the multitap in port 1.


A small word on the engine :
I started working on this version of the engine in 2019, but I started working on my BSP compiler in the end of 2018 after SAGE 2018.
It's a BSP based engine using a PVS (potential visibility set) and extra portals for occlusion culling.
Similar to Quake, but quite different at the same time.


The transparency is achieved by rendering offscreen : the Saturn's dual framebuffers are 256 kb each, so there is a lot of wasted memory since 352x224 at 16 bpp =154 kb.
I render the transparent elements using additive blending (and unshaded transparent polygons to hide them with walls and doors) offscreen, transfer that area of the framebuffer to the main ram via SCU DMA, then transfer that again to VDP2 ram via DMA transfers.
It's pretty simple, but the sorting and syncing a real issues with this technique, which requires to draw opaque polygons offscreen to prevent seeing the transparent stuff behind walls and doors.
The VDP1 supports half-transparency, but for flares and other light effects you need additive transparency, which isn't supported by the VDP1, but the VDP2 does, which is why I need this fancy technique.
The other way to achieve this would be to do like Scorcher did (at least my understanding of it) and software render the effects directly in the framebuffer, which is probably too slow to be worth it and won't scale well with more lights.
I am also now embracing the mesh transparency effect as the VDP2 effect is doing additive, but for reflections you need half-transparency. It looks totally fine using composite cables, but not as great with component or better.

The 3d animations are done with vertex animation, using 32 bits vertices (3 bytes for XYZ and 1 byte for the normal) for each vertex for each keyframe, which allows "free" animations in terms of CPU ressources as I just need to update the vertex's starting pointer.

All the audio had to be placed using old Sega sound tools within an old Mac (68k) emulator... I plan to remove it and use a homebrew driver in the near future.

All the engine's code for 3d, rendering, collision, AI, etc. is original, while the Sega Game Library is still used for controlling some system registers and timers - causing more problems than anything - but I hope someday to flush all of Sega's libraries.

The engine isn't optimized yet (almost everything is in C except a little function for the vertex transformation), so please keep that in mind when the framerate drops in some busy areas.
But it shouldn't really drop below 20 fps in single player mode, unless you are playing in hard or nightmare mode (20+ enemies on screen in some areas...).
Both SH2s are used, while the SCU DSP is used to help the main CPU with 3d models (such as enemies).
Both the 68k and SCSP DSP (sound CPU and sound DSP) are pretty much unused, only telling the SCSP to play PCM files.
I took lots of inspiration from Quake, Duke Nukem 3d, Powerslave and Unreal.
ALL THE ASSETS/SFX ARE TEMPORARY!

Known issues :

-Not PAL optimized : The PAL version (50 hrz) will play slower, I plan to fix that in the future.
-The bots' AI isn't optimized at all, so it's pretty CPU intensive. Playing against 7 bots will cause slowdowns.
-Sound effects sometimes don't play. I need to write my own sound driver or figure out what needs to be done to make the old Saturn sound tools working properly.
-In single player, the framerate can dip to 20 fps in some areas. It's mostly CPU related, with some rarer cases of VDP1 bottleneck. (Single player disabled for this demo)
-Polygons sometimes get the wrong sorting order (z fighting).
-The framerate while in splitscreen 4 players deathmatch can get low, like Goldeneye 64 low (cpu again, needs optimizations).
-The game saves, but doesn't load games, so continuing is the same as a new game (but with so few levels, I don't think anyone truly need to save!)
-Some assets/animations look bad, I didn't spend much time on it
-THE GAME ISN'T OPTIMIZED YET!


Controls

Using digital controls, if you ever played one of Lobotomy's Saturn FPS, you will feel right at home!
The analog controls are based on the "Jevon" controls in Saturn Quake, aka Turok style controls, instead of the traditional "joystick to move/rotate".
It will feel weird at first since the face buttons aren't in a traditionnal 4 buttons "+" shape, but once you get used to it you might prefer it : YZBC are for movement, the analog stick for look, L to jump, R to shoot, D-pad to switch weapons.
You can also play using mouse+keyboard or mouse+controler : just plug the mouse in port 2 when you boot the game. If you want to play with mouse and keyboard in a 4 players game, all the mouses should be plugged in the second multitap in the same order as the controllers/keyboards in the first multitap.

Some future things I am working on right now :
There is a ton of under the hood work that I need to do, so the progression in the following months might seem small, but it will benefit the engine in the long run. New things coming out in the following months :
-New maps (duh)
-New enemies and pack enemy models per map (allowing more diversity since it doesn't need to stay in ram for each map).
-Better texture tiling, allowing both better visuals and less wasted memory (hopefully)
-4 players link cable and/or online support (a huge maybe as I don't have the proper testing environement)
-Improving the code overall for more speed
-Add save/load support with a better UI


Cheat codes (all ingame) :
-L+START/R+START : Switch between wireframe and normal mode. Useful to see the overdraw and how the transition from normal to LOD model goes.
-UP+START : Skip level
-DOWN+START : Cycle the max framerate. It will get very very low (for testing collision), then get back up to a target of 60 (target, it won't reach it often)
-B+START : Cycle debug stats on and off

Final note :
-I do not accept any game making requests or port requests (don't bother asking for Doom or Quake 2, I am not interested in porting them)
-And on a final note, no, Vasectomy Software is not a real thing! It's just meant to be a nod at Lobotomy's software as their work inspired me to make this game.
-EMULATORS AND ODEs ARE NOT SUPPORTED! Many of them can't support some of the advanced effects seen in the game. Mednafen seems accurate, but I can't guarantee the resultats. The Satiator ODE works with my game, but it might not work with other ODEs.
-Use a Pseudo Saturn, a modchip or the swap trick to play the game if it doesn't work with your ODE. Burn it using the free app imgBurn.

Credits

Huge thanks to the folks at SegaXTreme :
-Game, game engine, bsp compiler and other tools by Maxime "XL2"
-Anton for the human enemy models and animation
-Ponut64 for some weapon models
-ReyeMe and Josh_7774 for some of the maps
-Corvusd for some weapon and dog animation/model. And also for always challenging me to push the graphics further with his insane challenges!
-Faffling, Mrkotfw and Jollyroger for their tips and technical knowledge of the Saturn hardware
-Café Alpha for building my USB dev cart and also helping me integrate it to my code (I haven't burned a single disc for over a year and I can do crazy tests for free! Very useful when making a game aiming at pushing the system to its limits!)
-Johannes Fetz for the inspiration and making me join the Saturn homebrew community
-Danny for helping me setup the dev environment back in 2017
-Emerald Nova, Cerv3ro and all the others who playtested the game
-SaturnDave for the Vasectomy Software logo
-And many others!

Music by Sergio Enrique Nunez Stroller, with some tracks from Fleshfield

Comments

Hi, the cue is looking for a track 11 that isn't in the zip
My bad, the zip was over 500 mb so I cut one track out to make it fit. You can open the cue sheet and remove the last 3 lines (FILE "TRACK11.WAV" WAVE
TRACK 12 AUDIO
INDEX 01 00:00:00"

I will try to update it, but it's slow....
 
My bad, the zip was over 500 mb so I cut one track out to make it fit. You can open the cue sheet and remove the last 3 lines (FILE "TRACK11.WAV" WAVE
TRACK 12 AUDIO
INDEX 01 00:00:00"

I will try to update it, but it's slow....
Thanks, just wasn't sure.
 
Hi, I would like to make remarks.

Remember that I always go straight to the point, if the words sound harsh, I'm just simplifying and being objective.

So let's go! grab the popcorn and big text.

About Fps, extremely fluid and with perfect gameplay.


If your game wants to be popular , it has to have some basic mechanics , adopted in games since the early 90s

Continued progression - In which the game starts off easy and gradually becomes difficult.

As in Street Fighter 2 , I deposit adopted by SNK in metal Slung , The King Of Fighters , used in Mario in Donkey Kong etc.

The initial challenge is to present All the mechanics to the Player, in which he himself is perfecting.

In FPS the Home Map, it should be clearer, simpler, that anyone even who has never played, knows exactly where he is and where to go.

I'm not talking to make a map, bad, silly and boring, but not confusing.

Respawn of enemies should be well calculated, preferably never being close to the player.

Respaw protection must also be important and frustrating to die as soon as we are born.

And if you have a single player mode, let us explore the map, learn the mechanics of the game, no potent enemies at first.

If the Game gives us a strong enemy it gives us a strong weapon, let it be that enemy's weak point.

Making the player understand while playing.

Getting too hardcore in the beginning will drive away the causal and intermediate Public.

I saw many technical details of dynamic lighting and such, but I believe that in some places it can be removed, for the PLAYER visibility is more important than having a dark environment that lights up when he shoots.

Not to look like a TEC DEMO.

Hug and be at peace , just watching any player , the will can be ignored , hugo
 

Item information

Added by
XL2
Views
2,407
Comments
4
Last update

Downloads

More in Original Games

More from XL2

Share this item