Super mario 64 tech demo

Super mario demo in development on the game engine I’m working on (sabge aka “stand alone bge”).
I decided to develop this demo to test / debug the game engine and to do some tutorials on the game engine features. The tutorials will be published simultaneously with the first software release.
Thanks to Aryoksini for his large collection of SM64’s animations that I’m using as a reference.
Some animations / states here in this demo are still to be perfected, however, in this section I will publish some updates so any constructive advice or criticism is always welcome!
Software used: blender 2.79b, sabge
Harware used: notebook Asus: gpu: GTX 1050Ti, cpu: i7-8750H, ram: 16 GB

8 Likes

How do you manage blending between animations ?
BTW nice demo.

He probably uses the Animation Actuator blending :slight_smile:

Sabge has a different API for animations. there is the function blendPoses(pose_A,pose_B,interpolationFactor) that returns the blended pose_C.
(You can get a recorded pose using the function armature.getPose(animationName,frame))
It is possible to blend more then two animations in different ways:
for example:
C=blend(A,B)
F=blend(D,E)
result = blend(C,F)
Finally you can apply the resulted pose to all the bones of the skeleton or to only some.

He said the engine will be fully decoupled from Blender and will not be constrained to follow Blender Gpl license.
So i don’t think it uses any Blender agme engine code.

Yep, it is so! I’ve rebuild from scratch a lot of the bge’s API but not using the bge’s source code.
This means that in sabge a lot of functions are called and works in the same way as the equivalent ones that you find in bge/upbge, but in this specific case, the functions related to the animation system are called in a different way, this because I never liked the bge animation system very much :zipper_mouth_face: so I’ve rebuilt it using a different approach

2 Likes

its interesting. But do you have any example in which this will be suitable ? I mean, if we are talking about horizontal blending, when you think about moves, its never more the transition of 2 positions in time . Time is defined by an “before” and an “after” : 2 moments = 2 positions. Time is uni-dimensional.

But maybe you are talking about vertical blending ? = give to a main animation some variations ? influence ? In this case, BGE gives that possibility with the “layers” but it works like a stacked system in which the upper layers have the lead but you can specify a percentage of much the previous layer has influence/blend in the upper layer.

Just saying because lot of people dont make the difference between vertical and horizontal blending.

Also, there’s the matter of the hip bone : blending a whole armature animation can make your character having his feet leave the ground :slight_smile:

it looks like saBGE got a major physics overhaul noice man…
Im looking forward to more new updates!

Fred/K.S

Very good man, looking forward to using saBGE in future maybe i could build something or port my game over and make a separate Special Version of what iam already creating…

This statement scare’s me :cold_face: :cold_sweat: its as if what BGE Currently has is terrible and projects may stagnate because of such limitations.
idk but im curious for more regarding the animation system…

Fred/K.S

saBGE - No Viewport? :thinking:


  • is it just me or does this engine look like it uses Microsoft visual studio’s interface :thinking: are we going to develop using this kind of interface or what why is they a complete change in the UI design from blender, does it even use blender or is blender now an external program?

im just being curious cuz it looks completely different the API looks really different :slightly_smiling_face: is this easier to use or more difficult?

so far im impressed:

  • Lighting looks superb
  • bloom looks up to standard
  • shadows are really accurate from the looks of it
  • Physics are insane man they look like they’ve been heavily improved
  • Logic and player control movement looks smooth

This is some really heavy great work done here @lopas will this compete with GODOT or is it going to be better ?

Fred/K.S

An example is this “onGround” animation in the super mario demo:
I have 3 pure animations:

  • runLeft: Mario runs with his torso tilted and his head tilted to the left.
  • runRight: same as runLeft but mirrored
  • idle: mario remains still and looks around

procedure is as follows:


runAnim = self.armature.blendPoses(
							self.armature.getPose("runLeft",runFrame),
							self.armature.getPose("runRight",runFrame),
							interpolation_factor)
							)
#interpolation_factor is a factor indicating how much mario is curving left / right
#Note that if interpolation_factor == 0.5 Mario does not tend to lean to the right or left but remains balanced in the center

finalAnim = self.armature.blendPoses(
						self.armature.getPose("idle",self.stand_frame),
						runAnim,
						min(1.0,fabs(player_localLinearVelocity.y)*correctionFactor)
						)
#Here the runAnimation ,previously obtained, is mixed with the "idle" animation as a function of the local linear velocity Y (a new blending factor)

Note that all the mixing factors are dynamic (i.e. they may vary during animation) (unlike the bge/upbge)
***Lately I have made the animation even more complex by mixing the runAnimation with a walkAnimation (using the localLinearVelocity.y to build the dynamic interpolation factor) before the final blending with idleAnimation

Don’t you plan to use Physix as it’s open source ?
Thiswould mean advanced physic features and latest improvments or features.

I’m using Eclipse to code, but you can use any code editor to develop a game.

blender is seen as external software, it is necessary to create 3D models and animations and through a series of plug-ins developed by me you export for sabge in formats optimized for sabge

I don’t know what you saw, in the video you linked there was no code. You have probably read some specific classes related to the demo. :thinking: …don’t know…

I can’t make comparisons, and I don’t want to do them, also because I’m not very up to date about the features recently mounted on the other engines. From my point of view, sabge represents flexibility in its pure state, this because having full control over the engine, I can implement whatever I want (the only limit may be my knowledge) and this is worth more to me than any other thing. Keep in mind that at the moment everything is done through code so I can’t say that it is a game engine for everyone since many people needs visual tools.

1 Like

I’m fine with the latest versions of pybullet, but I could have a look at it :slight_smile:

per_object & per_pixel motion blur - (0.50 x speed video)

Only for mario and the boxes the motionBlur is activated. For the various animations of mario the multiplication factor of the motionBlur is modulated at will. In some animations, such as punches and kicks, I want a lot of motionBlur, for others less. In the run animation this value is proportional to the local_linear_velocity.y (for example). In the jump animation, while mario goes up the value is 0.0 and goes to 1.0 during the landing. For boxes, the value is 1.0 and in fact when they quickly switch to the screen the effect is quite evident. Certainly some things can still be improved, but I am satisfied and the effect was then included as an extra feature directly in Sabge.
Probably the quality of the video is not so high beacuse i recorderd two times the video in order to low-down the video speed.

Good demonstration.
(for a game i don’t think it looks good putting so much motion blurr, specially mario games).

The game engine is progressing well, will it have some post effects i find essential for 3D games :

  • good and fast SSAO
  • chromatic aberration effect
  • DOF
  • ACES Tone mapping
  • Good Auto exposure

I have developed many postProcessing effects in recent years, many of which for bge.
At the moment I have ported/implemented the following into sabge:

  • AlchemyAO (best SSAO for quality / performance ratio)
  • SSR
  • Exponential height fog
  • Bloom
  • GodRays
  • Lens flares
  • Sharpness
  • FXAA
  • …and motionBlur :smiley:

I have yet to port others but I have them almost ready, including:

  • chromatic aberration effect
  • DOF
  • different types of tone mapping

About Auto exposure, I remember trying a demo a long time ago for the bge which featured this effect,
if I remember correctly it was controlled by a parameter obtained using the glReadPixels function (openGL), maybe I could find it or implement it anyway, I don’t think it’s a difficult fx to implement

1 Like

Many games don’t use auto exposure, it’s not the most needed until you make realistic games with advanced effects.

*Dynamic global illumination
*Accurate PBR rendering with SSR option per object
*Per object motion blur
*GPU Particles systems
*Two GUI systems (2D overlay / 3D within the game scene)
*Ease in managing a large number of lights using components that transform an object when you want in a light source
*Many post processing effects with an excellent quality / consumption ratio and in game configurable using their specific API (Alchemy mod, SSR, Exponential Height Fog, Bloom, etc)
*…and much more is under development

3 Likes

Is global illumination working with emissive materials ? can it work with materials colors ? Some example scene about dynamic global illumination would be a better illustration.

Needs SSAO, on video beginning rocks are like floating.

I like that :smiley:

So level editing could be entirely made in Blender, does the engine would be able to use Gpu instancing for objects duplicated linked “Alt” “D” ?

What will be the coding language ? How this will work to put code files onto objects (Upbge is brick with a python file selection) ?

BTW Great work.