1. S2ENGINE HD
  2. News

S2ENGINE HD News

S2ENGINE HD 2020.2 RELEASED

Hi to all,

Today we are proud to announce we have released the update to version 2020.2.

[h2]WHAT'S NEW[/h2]
As usual for standard updates, we have fixed some bugs you can find below in RELEASE NOTES.
In addition we have started to work with new multithreading C++ standard libraries.
Thanks to these we have:
  • Increased the speed of Voxel Lightmaps computation that now is scalable on the number of CPU cores.
  • Increased the speed of a small portion of the occlusion culling system that is now scalable on the number of CPU cores.

These are very small improvements but they are only the beginning and, at the same time, they proves that new C++ code functionalities can improve the things a lot if used in a certain way.

[h3]Inverse Kinematics[/h3]
We have started to implement an Inverse Kinematics system.
In this version we have added a new action in GameMachine called FootIK.
It can be used for foot placement.
Thanks to FootIK you can write a GameMachine that lets character to procedurally place foots on the ground taking into account ground elevation and slope.
In addition, using FootIK, we have improved the soldier GameMachine in the EasyGamePack DLC with a new solution for making characters to maintain still the foots when they are placed on the ground during walking/running independently from the animation speed. This increases the realism of locomotion and it avoids character to "slide" on the ground.



[h3]Screen Space Shadows[/h3]
We have also added a new shader that, basing on depth map, computes sun shadows in screen space.
It compensates the lack of precision of the sun shadowmap, due to shadowmap resolution limits.
This has 2 consequences:
  • It enhances the effect of shadows on small details like character faces, vegetation, etc... expecially when shadows affect translucent / subsurface scattered materials (like human skin)
  • It highly reduces the "peter pan" artifact of the shadowmap (objects seem to fly on ground)

It is of course limited to a small range (infact it is also called "contact shadows" shader) and requires "a bit" of additional computation on GPU, but the results are effective and, once applied, you won't be able to do without it...


[h2]RELEASE NOTES[/h2]

[h3]CORE[/h3]
  • [BUGFIX] Lights Clipper doesn't allow more than one clipper
  • [BUGFIX] RemoveFromLayerMask action do not remove layer if the mask has value "everything"
  • [IMPROVEMENT] Added parameter node into RotateTo action in GameMachine
  • [IMPROVEMENT] Now RigidBody accepts mesh collision if it has mass=0
  • [IMPROVEMENT] Now also convex collision meshes can be scaled (for static and dynamic rigid bodies)
  • [NEW] Added cliff rocks into nature package
  • [BUGFIX] When importing heightmap the terrain collision mesh isn't updated
  • [BUGFIX] Ocean heights used for buoyancy aren't computed well for negative coordinate values
  • [BUGFIX] If sizeVariance parameter of a decalObject ia set to a value < 1 engine crashes
  • [BUGFIX] If Clone button is pressed in the daytime track panel and no keyframe is selected the engine crashes
  • [BUGFIX] If you try to drag n drop something into the editor while game is running it should happen that import dialog appears freezing the program.
  • [BUGFIX] When creating a particle system from scratch it is not visible (you have to reset the Dims parameter)
  • [IMPROVEMENT] Now GameMachine string parameter accepts also nodes
  • [IMPROVEMENT] Now Voxel Lightmap Building is parallelized, so it is faster scaling on number of processors
  • [IMPROVEMENT] Optimized Software occlusion culling (up to 20% faster now, expecially in indoor environments like in HELLSEED)
  • [NEW] Added Screen Space Contact Shadows shader
  • [BUGFIX] When PrefabViewport is visible and a prefab is updated from Prefab Editor the GMS parameters of the prefab aren't showed in the prefab editor.
  • [NEW] Added ObjectIsSleeping action in GameMachine
  • [BUGFIX] When you pause an animation into model editor animationTrack panel and move the timeline the model in modelviewport collapses.
  • [NEW] Added RayCastSync action in GameMachine
  • [BUGFIX] the "speed" InputBox inside the blend2d animation control box doesn't work.
  • [NEW] Added animation rate parameter into modelscripts for controlling the playing rate for animations inside blend1d and blend2d animation types (splits).
  • [BUGFIX] When you insert a prefab with an object with a voxelLightmap attached, the voxel lightmap isn't attached to the object.
  • [BUGFIX] When you click on the trash button into the input map configurator without selecting an action or axis the engine crashes.
  • [NEW] Added GetDistanceFromCurrentCamera action in GameMachine
  • [IMPROVEMENT] Added linearSmooth and angularSmooth parameters into AISetCharacterMaxSpeed GameMachine action
  • [IMPROVEMENT] Added parameter maxDistance to ObjectIsVisible action in GameMachine
  • [BUGFIX] When creating terrains TileRes parameter in CreateTerrainDialog always returns 32 value.
  • [NEW] Now it is possible to use erase terrain ambient occlusion brush by pressing LControl + mouse button
  • [NEW] Pressing LSHIFT + mouse button you are able to pverwrite the current terrain ambient occlusion value of a terrain with the one you are painting, otherwise a MAX operator is used (as before)
  • [BUGFIX] Sometimes engine crashes at start (crash caused by occlusion culling viewport resizing)
  • [BUGFIX] If you leave engine running a scene with characters, after some minutes the framerate drops.

[h3]EGP[/h3]
  • [BUGFIX] PlayerCharacter vibrating when approaching to 3d ocean and buoyancy is enabled
  • [IMPROVEMENT] Improved soldiers animations (added foot IK)
  • [IMPROVEMENT] Added parameter "SleepWhenTaken" to ItemTAG object class


[h2]WHAT'S NEXT[/h2]
We are continuing to write the new manual and we hope it will be available soon.
We have planned another standard update, before focusing on the major 2021.1 version, in which we will insert a very interesting new feature:
Per Object Multiple GameMachines


Hope you enjoy this new version,
Stay tuned!
PROFENIX STUDIO

S2ENGINE HD 2020.1 FINALLY RELEASED!

Hi to all,
Today we have finally released the new major update to S2ENGINE 2020.1 version.
Despite of the name this is the latest version of the engine :D.

[h2]IMPORTANT: READ CAREFULLY BEFORE UPDATE[/h2]
If the first time you start the engine after updating, the message "cannot find Physics DLL" appears, DO NOT WORRY, this is probably due to a local backup of the old configuration that refers to the old physics library.
To Solve the problem simply go to "Steam\\steamapps\\common\\S2ENGINE HD\\ver_1_4_6\\Bin" folder and delete the file "S2Engine.bak".

If the problem persists follow these steps:
  1. Open the file s2engine.cfg located in "Steam\steamapps\common\S2ENGINE HD\ver_1_4_6\Bin" (you can open this with any text editor).
  2. Replace the following line "PhysicsDevice=physxPhysicsDevice" with "PhysicsDevice=physxPhysicsDevice3" and save the changes.
  3. Within the same directory, locate and delete the following S2engine.bak file (if applicable).
WHAT'S NEW


[h2]Physics[/h2]
There are a lot of new things in this version since about 8 months have passed after the last major update.
The most important update regards the physics engine. We have completely rewritten the physics passing from the old Physx 2.8 to the Physx 3.3 version.

This resulted in a number of improvement listed below:

  1. The annoying "Cannot Initialize Physics" problem that affected a number of new installations of the engine is definitely gone :D.

  2. Now, when you scale a static object owning a mesh collider, the collider will scale accordingly.


  3. Convex Hull support. Now you can make the system to automatically create a convex hull mesh as a collider of a dynamic rigid body (including vehicles).


  4. The vehicle physics has been heavily improved. It is much more realistic and better responding than the previous. Furthermore now there is more vehicle data available (speed, gears, tire stiffness) that it is possible to create a HUD like in racing games.
    [previewyoutube][/previewyoutube]
  5. The buoyancy system has been greatly improved. Unlike before, now the buoyancy force is applied on a number of points along the rigid body, this produces much more realistic responce to the water surface. Furthermore, when on the sea, now the ridig body follows the waves movement.


  6. Now UniversalJoint can be attached to a node of a hierarchy (like in skeletal models) and can be breakable (even if this is an experimental feature). In general it is much more easy to setup and robust than before.


  7. Even ragdolls now are much more stable and configurable. You can, for example, via gameMachine, setup the number of iterations physics must do for getting stability, or you can make ragdoll to affect only a branch of a skeletal model, for example the hair ponytail of a human character or the tail of a monster character (even if it is an experimental feature).

  8. Character controller interaction with rigid bodies has been improved. Now characters can push small, light bodies (including ragdoll bones) without being affected by their weight, resulting in a much smoother and stable movement.

    Furthermore, unlike before, you can make a kinematic animated rigid body (for example an opening door) to push away a colliding character (like a player that is too close to an opening door).


[h2]Rendering[/h2]
A couple of improvements have been made about the rendering of some screen-space effect.

  • Improved Motion Blur. It was not so much evident but in the previous version there were some artifacts when 2 moving objects, with motion blur, overlapped on screen or when a moving object was overlapped by a static one. In this update the way in which the velocity buffer, used for the motion blur, is created has been partially rewritten. Now the dynamic objects affected by the motion blur are drawed only one time directly into the Gbuffer. The new code makes the velocity buffer creation to be faster and to avoid these artifacts. A velocity buffer made in a such way opened us the possibility to implement a temporal filter that we used for improving other screen-space effects (SSR and SSGI) and that we'll use for improving Anti-Aliasing in future releases.

  • Improved SSGI. In this version the Screen Space Global Illumination has been heavly improved using 3 new filters we have implemented and shared among screen-space effects:
    • a new temporal filter shader.
    • a new spatial depth/normal aware filter shader.
    • a new upscaling filter shader.

    As showed into the following image, the current version of SSGI is much more effective in diffuse reflection of colors and much more free from noise artifacts:

    A side effect of the new SSGI is that automatically the screen space ambient occlusion quality has increased.

  • Improved SSR. Screen Space Reflections completely changed from previous version. In particular we have tried to better address the responce of reflections to the roughness of a surface. We have left the previous pseudo screen-space cone tracing approach, that was a bit faster but rich of artifacts that pratically made it unuseful, in favour of a stochastic approach (more than one ray is traced per sample using a random pattern and a perturbation vector that increases with the roughness of the surface). This was possible thanks to the 3 new filter shaders, temporal, spatial and upscale, that let us to distribute the samples over many frames and at a reduced resolution.
    In addition, the new effect blends with cubemap reflection in a better way than the previous one.

    The following GIIF shows how the SSR looked changing the roughness in the previous version:


    The following GIIF shows how the SSR looks changing the roughness NOW:


  • Improved sun soft shadows. In the previous version sun soft shadows, at the highest quality, was affected by a lot of disturbing and filckering noise. In this version we have changed the sampling of the noise pattern (from shadow space to screen space) and added a depth/normal aware spatial filter that changes blur radius basing on the penumbra radius of the shadow.
    The combination of these 2 changes greatly reduces the noise even with big penumbra radius (open in new tab for large image):


  • Fixed Shadow leaking. In the previous version there was an undue leaking of local light shadows expecially visible on scattering surfaces. In this version we have introduced a new parameter "angle bias" that helps to almost completely remove the artifact, as showed into the following "before-after" images:


[h2]New Content[/h2]
In order to show the new vehicle system we have added a new reacing project into the basic engine package.
There you will find some new models for populating terrains and the HUD and gameMachine for playing with a vehicle as in a racing game.


We have also improved a bit the city scene in the BuildingGenerator package.
New road textures, new color correction settings and improved night illumination thanks to a new type of light we called FillLight.
FillLights are "no shadow casting" lights that are rendered after the ambient light pass and before the ambient occlusion pass, so they are affected by ambient occlusion shadows.


[h2]Easy Game Pack[/h2]
We are continuing to hardly improve the Easy Game Pack DLC.
This time we have:
  • Improved the player character crouch (thanks to new physics :D).

  • Added GraspableBody, a new kind of rigid body that is graspable by the player character:


  • Added MissionCounter and Mission List. These definitely improve the mission managing in the EasyGamePack.
    In the previous version a mission had to be completed before starting a new one, in a linear fashion.
    Now you can create missions that can be completed in parallel, without a pre-defined order.
    Furthermore, using the new object "MissionCounter", a mission or a set of missions can be "activated" when another group of missions has been completed.
    So you can have many counters that manage different set of missions to be completed in parallel or set of missions dependent by other set of missions and so on.
    At any time the player inventory can show the list of all missions to be completed in a new "missions" tab.


[h2]RELEASE NOTES[/h2]
Other minor improvements and additions have been made as well as Bugfixes and crashfixes.
Here is the release notes list:

[h3]CORE[/h3]
  • [BUGFIX] if a void grass object is inserted into the scene the engine crashes
  • [BUGFIX] In some circumstances Procedural tiles disappear from a scene with it is reloaded
  • [BUGFIX] Engine crashes when changing dim parameters of a .sk2 object in the Physics section of the Class panel
  • [BUGFIX] Engine crashes when selecting dropdown menu in AnimationTrack panel when Model viewport is not the focused window
  • [BUGFIX] Engine crashes when setting tiledim for floor object to a value higher than 2000 and then toggling face visibility
  • [BUGFIX] Engine crashes when setting wallheight for floor object to less than 1
  • [NEW] Added new "EnableInput" action in GameMachine
  • [IMPROVEMENT] Improved SSGI rendering
  • [BUGFIX] IsVisible, CAstShadows, AffectMB flags in model editor don't work
  • [IMPROVEMENT] Auto normalization of vertex weights when importing skin models (useful when exporting from blender)
  • [NEW] Added parameter "CollideToCharacters" in RigidBody (useful for kinematic bodies)
  • [NEW] Added shadowmap "angleBias" parameter in Light and staticLight object classes for improving shadowmap artifacts solving
  • [NEW] Added parameter "AOoverLights" for controlling the Ambient Occlusion stage (before or after lights pass)
  • [IMPROVEMENT] Now SSAO result is merged with VoxelLightmap result and mixed with the sky saturation for adding colours to Sky Occlusion gradient
  • [NEW] Added new method for computing the Ambient Occlusion of the whole terrain in the TerrainOcclusion pass
  • [IMPROVEMENT] New alert message after importing a skeletal model if there are vertices with no bone weights.
  • [BUGFIX] Crash when setting Flocks object height or radius to 0
  • [BUGFIX] when more than one material with emit map are in the scene and one materialis animated, the texture coordinates of the emission map of the other materials are corrupted.
  • [BUGFIX] When launcher doesn't find any project crashes
  • [IMPROVEMENT] Emissive materials now can be applied also to skinned models
  • [BUGFIX] In some cases, alpha blend materials aren't rendered well if applied on skinned models into the model viewport.
  • [NEW] Added "UpdateOneShotAnimation" action to GameMachine
  • [NEW] Added parameter Binary to "SetCollisionMask" action in GameMachine
  • [NEW] Added parameter "soundPitch" to "Switch" object class
  • [NEW] Added parameter "affectedObjects" to "Light" object class
  • [BUGFIX] Alpha blend skinned material do not reflect lights
  • [BUGFIX] Motion blur dynamic object artifacts fixed
  • [NEW] Added AlbedoBrightness and AlbedoContrast parameters into the texture editor.
  • [NEW] Added Buoyancy physics parameters into scene objects.
  • [NEW] Added BuoyancyLinearDamping and BuoyancyAngularDamping physics parameters into scene objects.
  • [NEW] Added WaterMask physics parameters into scene objects.
  • [NEW] Added LinearDamping and AngularDamping physics parameters into scene objects.
  • [NEW] Added buoyancyStrength physics parameter into scene objects.
  • [NEW] Added buoyancySliceCount physics parameter into scene objects.
  • [NEW] Added buoyancyOffset physics parameter into scene objects.
  • [NEW] Added PhySetLinearDamping action in GameMachine
  • [NEW] Added PhyGetLinearDamping action in GameMachine
  • [NEW] Added PhySetAngularDamping action in GameMachine
  • [NEW] Added PhyGetAngularDamping action in GameMachine
  • [NEW] Added PhyRagdollSetAngularDamping action in GameMachine
  • [NEW] Added PhyRagdollSetLinearDamping action in GameMachine
  • [NEW] Added SetMusicGain action in GameMachine
  • [NEW] Added PhyRagdollEnableBuoyancy action in GameMachine
  • [IMPROVEMENT] Improved Screen space reflections
  • [IMPROVEMENT] Improved hi quality sun soft shadows rendering
  • [IMPROVEMENT] Improved camera shaking effect
  • [BUGFIX] Dynamic Reflection Cubemap Shadows update flickering when changing time of day
  • [BUGFIX] Refractive rain becomes black at low altidune when rendering ocean
  • [IMPROVEMENT] Added search in PickWidget dialog
  • [IMPROVEMENT] Added search in PickNode dialog
  • [IMPROVEMENT] A-Z sorting for items in event parameter combobox
  • [NEW] Added FillLight object class
  • [BUGFIX] DDS textures rename or MoveTo make texture to disappear.
  • [IMPROVEMENT] Speeding up dynamic cube reflection shadows rendering by using the same shadowmap of the main viewport.
  • [IMPROVEMENT] Speeding up the sun shadowmap rendering submission by re-organizing the cascade splits distributed update.

[h3]EasyGamePack[/h3]
  • [IMPROVEMENT] Improved PlayerCharacter Crouch
  • [NEW] Added Rigid Body grabbing
  • [NEW] Added MissionCounter object class
  • [NEW] Added missions list tab into the player inventory


WHAT'S NEXT

During these days I've planned to publish a couple of tutorials about setting up a vehicle and about setting up missions in EasyGamePack.
From the next week the first thing to do now is finishing the new manual.
Finally It will contain approximately all you have to know about the engine. I think I'll spend a couple of months for doing this (less more at full time, the rest of the time I'm busy with HELLSEED).


Then the key word will be "optimization". Developing the 2021.1 version I'll spend almost all the time in trying to optimize the code by starting to work at the following objectives:
  • Massive multithreading for optimizing CPU-GPU synchronization.
  • New strategies for Drawcalls reduction.
  • Increasing use of Compute and Geometry shaders.
  • Existing shaders optimization.


FINAL THOUGHTS

During these months I've worked very hard expecially with the new physics. It is not perfect but I'm satisfied for now.
I've also started to organize and write the new manual with a new tool that makes things faster and will help me a lot in future if I need to make changes or additions.
I've done a lot of research on new rendering techniques and multithreading for the current and the future releases.
The way to the perfection is still long but the journey is beautifull thanks to this fantastic growing community :D
[h3]Thank you to all for the support and care that you show every day to have for me and my engine.[/h3]

Enjoy and stay tuned!
PROFENIX STUDIO

WE ARE GOING TO REMOVE CEMETERY PACK

Hi guys,

Today we want to inform you that The "Cemetery for S2ENGINE HD" DLC will be removed from the store in a couple of days.
All who own the DLC will continue to receive updates.

PROFENIX STUDIO

S2ENGINE HD 2020.1 DEVLOG #3

Hi guys,

Sorry for the big delay but the physics is a beast difficult to tame.
After I have added the new buoyancy system, I'm working for various refinements before jumping into updating all DLCs packages and starting the release checklist.

The following is a video showing some improvements of the driving test, the new buoyancy system at work and a small tutorial about how to easily create universal joints in this new physics version:
[previewyoutube][/previewyoutube]

I know many people are waiting for this new update.
Be patient.
Things are going and, soon, they will be ready for all of you :D.

Stay tuned,
PROFENIX

S2ENGINE HD 2020.1 DEVLOG #2

Hi guys,

Today we want to share with you the improvements we are working on for S2ENGINE HD 2020.1 update.

[h2]PHYSICS[/h2]
We are still working on the new physics module.
In particular we have made a big step in improving the the vehicle physics.
In the new version vehicle are much more drivable and stable, they have better controls, they can have gears and accelleration and braking now are treated as different thinks (just as in reality).

In addition when have implemented new GameMachine actions for retrieving some important parameters of the vehicle such as:
  • RPM (as in the previous version),
  • current gear
  • speed (in kilometers / hours)


[previewyoutube][/previewyoutube]

[h2]RENDERING[/h2]
We are also working on rendering, in particular the creation of terrain ambient occlusion as been improved:
In the current version terrain occlusion affects only static objects that are on the terrain, but not the terrain itself.
In the new version we have implemented a new algorithm for building the whole terrain ambient occlusion that is blended with the terrain occlusion of the static object placed on it.
The result is a much more realistic terrain in the distance thanks to color variation given by the ambient occlusion.
The good thing is that computing the ambient occlusion of the terrain is extremely fast.

All the ambient occlusion results (SSAO, terrain AO, Voxel lightmaps) now are mixed into a unique render target that is used in the ambient color pass for occluding and "desaturating" the sky contribution.
Desaturating is the magic word in this case, because, thanks to this little trick, that is applied only to Voxel lightmaps in the current version, the shadows resulting from ambient occlusion have a "coloured ramp" from "blue(sky) to brown(ground)", instead of a simple blue to black gradiation.

We have also started to implementing a new SSGI (Screen Space Global Illumination) system based on screen space raytracing and temporal + spatial sampling.
It is still experimental but results are promising...

SSGI CORNELL BOX


SSGI OFF - SSGI ON

[h2]WHEN IT WILL BE READY?[/h2]
Currently we are still working on refining the physics system before starting the "release" checklist procedure.
We have already used it into the new HELLSEED DEMO and it seems to work very well :)

We hope to officially release it before Crhistmas.


Stay tuned,
PROFENIX STUDIO