With the help of an extension, the game now supports smooth 3D animations. All of this is showcased in 2 Videos.
Posted by DarkLewa on Jul 24th, 2013
Most people think that a software like "Game Maker" is completely underpowered and only serves as a cheap, quick and dirty way of calling himself a "Game Developer". Because the software is easy to use (and the huge amount of "cheap" games which are out there and were made in GM) doesn't necessarily mean that you can't create good games with this software.
It's always about the developer. Not about the software.
Now i want to show you how a little tech-demo which i made using the "d3d_model_load_fast" gex (an extension for game maker)
The creator of this gex reverse-engineered the model-storage of game maker. Because of that knowledge, he was able to modify 3D models with the gex in realtime.
He implemented a morph/interpolation feature.
If you think about it... HEY! You can actually create smooth 3D animations with this technique!
After a bit of testing with this gex, i realized that the results are amazing.
I showcased them in a video:
I was blown away of how well this gex actually worked.
How does the animation actually work? Well, i'm exporting an animation as own 3D models.
As an example: The running animation has 8 frames which are then displayed like a sprite based animation in one order at a given speed. With the gex, i can interpolate between those models to create a much smoother experience.
Of course this isn't the best technique for making 3D animations. If you use a lot of frames with a high-res model, then it can cost you a lot of memory. But hey, it's a very easy way for me to make animations in blender and import them directly into GM. Because the character is a low-poly model (around 500 polygons) the memory usage shouldn't be that high.
I spent a few days for implementing this gex into my current codebase. It worked flawlessly. I also added a second interpolation for animation transitions.
If the player is standing still and starts to run, then the game interpolates between the idle- and the running animation.
The current result can be seen in the following video:
I also optimized the colission engine of the game and changed the scaling of the player.
I wanted to measure the ingame world correctly.
It's very important that you know how big your world really is. (in meter or kilometer)
The player is a reptile/dragon styled creature which has much more power then a "normal" human.
(the player can run much faster and jump much higher then a human.) Because of that, i wanted to scale him a bit up.
16 Pixel in the game are exactly 1 meter. The player stands at 40 Pixel which are exactly 2,5 meters.
So there you have it. A 2,5 meter tall reptile styled creature which is doing parkour on insane heights and speeds.