Great work Gabe!
Incredible job, love the breakdown and can't wait to see what you make next!
Jonas Manke talked about his experiments with a new game Omno (inkyfox.de/omno), and described how he creates clouds, works with environments, puzzles, low poly assets and animation.
My name is Jonas Manke, 32 years old, from Bielefeld, Germany. I live with my wife, 3 kids, and a dog. I have been working as a professional character animator for about 10 years (freelance). As long as I can think I was into art stuff. Although, I had previous experience in the game area (I started modding games in the late 90s), my initial focus when I started out with animation was doing animation feature films. Between those longer movie gigs (plus a few more unlisted ones), I did some commercials and also games (Risen 2, State of Decay, Moonrise, Albion, and a couple more) and gained a lot of production experience by working with many different tools, various production environments, and great artists. Animating for games is quite different than for movies, so it is a nice change in my daily work from time to time.
Working on game projects became more and more important throughout my career. Not only financially, but also artistically.
I’ve been working on a bigger game for a studio in the US for the last year and as a freelance animator in an extremely competitive market, I always try to make it the best possible experience for my clients to work with me. So in order to better understand their animation pipeline, I started learning the engine they were using (UE4). It’s like learning a language. Every evening, as soon as the kids went to bed, and on the weekends, I spent hours and hours learning, watching tutorials, taking notes, trial and error. My production experience as an animator was a big help for sure and my early and basic coding and game design knowledge from more than a decade ago still came in handy in many situations.
After a couple weeks I was able to prototype gameplay ideas and managed to get my own animations running in a game environment. That was a huge breakthrough for me personally. For all those years I was working on a gray background or non-rendered, unlit environments within my 3d packages and so far I was only able to see the final results either in theatre or in the shipped game. It really was an eye-opener seeing my own creation moving in real-time, being perfectly lit and ‘alive’. It really was a big ‘Wow’-moment. I realized how satisfying it was to do more than just animation. Don’t get me wrong, character animation is a super awesome craft and I will enjoy doing animation until I die, trying to master my skills. Nevertheless, I am more than that. I always enjoyed drawing, working with color, shapes, etc.. All that hasn’t been asked for as an animator.
With the newly discovered possibilities, there was no way back. I couldn’t stop myself from building prototypes on a daily basis and doing hundreds of visual experiments. All that while working full time. I definitely sacrificed a lot of family time (and some health probably), but the result is the game I am working on.
Omno is a third person exploration and puzzle platformer with unique gameplay mechanics and a (hopefully) fascinating world to uncover. You will enjoy a very atmosphere driven gameplay while solving monumental puzzles with unusual movement-based powers.
I am convinced that if you know your craft, you can use whatever tool you want to create art. And I don’t like the tedious discussions about which tool is the best and all that. I had to use many 3d packages throughout my career and all of them have pros and cons for sure, but in the end, it’s the art you create that counts. Not the tool you used.
My experiences with other engines (mostly Unity, CryEngine, Source) are limited, but working with UE4 felt surprisingly artist-friendly from the very beginning.
Before working on Omno, I created some high-res models like complex trees with foliage and realistic surfaces, did tests with complex animation rigs including cloth, morph targets and all that stuff and I never had to ‘fight’ with the engine to get things running.
Also, their Blueprint system made it very easy for me to build game logic without the need of refreshing my poor syntax knowledge. So far I did not run into a situation that I couldn’t have solved with Blueprints. It is amazingly well implemented and super intuitive (if you have some coding experience). The guys from Epic Games really do an awesome job documenting their engine and with their tutorial playlists and live streams, it is really enjoyable to learn the engine.
Style and gameplay
Journey is one of my favorite games of all times, it definitely inspired me a lot artistically, but in my view, it is a masterpiece and I doubt that Omno, as a one-man game, could ever compete with a title like that. Thanks for the comparison though – it’s an honor.
While prototyping Omno I was not looking for a ‘fun’ gameplay or mechanic in the first place. It was a very subtle feeling I was trying to achieve. A mixture of loneliness, desire or even loss, nostalgia, but also wonder, mystery, joy of discovery, exploration – some sort of sweet bitterness maybe. Not sure if I can even describe that feeling with words. To achieve that I obviously had to create a huge world and a nonlinear gameplay. Everyone tells you to keep it simple, and that it is impossible to create a visually appealing game with a certain complexity all on your own. Challenge accepted! What if the world remains huge, but the assets become very simple and doable for a one-man team? So I tried to create that feeling that I wanted by using the simplest assets possible.
After many tests, I came up with a forest of super stylized boxy trees, a couple rocks and some low poly grass. To capture that mystical, moody atmosphere I tried to use height fog and some post-processing (depth of field, color grading, etc.). People seemed to totally get the mood and atmosphere and the feedback was surprisingly positive. The biggest challenge now was to find a character design that conveys all those attributes I wanted him to have but still fit that extremely stylized world. There was no distinct gameplay decision made yet, I was focussing entirely on the art. He had to be very simple obviously, but I decided to use smooth shaded edges, to create some visual tension between him and the super edgy environment.
Also, I wanted him to appear a bit more vulnerable so he needed that softness to support that. But in order to make him still fit into this world, I had to keep the overall shape and design very geometrical and simplified. Most games are either entirely low-poly or the opposite, so I feared that this break in style would be disliked by many people – but it didn’t, so I kept going. Without even animating him, I started prototyping. I had the mood, the experience in mind, I knew roughly how the game could look like and now I had to find an engaging gameplay that combines everything into an actual game. The rest of the story is pretty usual game dev stuff I guess. Testing, failing, testing, failing, testing, not failing that much – building up on that, testing, failing, etc… Most of the time I just moved him (stiff as he was) through the test landscape randomly, turned on some moody music and scribbled all the ideas that came to my mind.
While building the actual gameplay I try to iterate as much as possible. I don’t like writing game design documents, it feels very static and simply does not fit my creative way of thinking – I love production plans and organization though. Over the years I learned that ‘talking less and trying more’ is a very efficient way of getting the best results. Losing the fear of a blank sheet of paper, so to speak.
First of all, I think about how the character progresses throughout the game because the landscapes are important as the playground for his skills. Depending on that, I think about which landscape theme fits the most at certain points and I jump right in and try to capture the essence of what the player is supposed to feel. As mentioned before, it is a very atmosphere/mood driven game, so I focus that from early on.
You mentioned the cloudy world, so let me explain on that one, although the shown material just shows the visual exploration results, not the actual game world.
I usually put the player into a blank scene and try to find the atmosphere. In that case, I wanted a blue to purple color scheme so I adjusted the sky colors. I kept the zenith color (the color if you look straight upwards) quite dark and kept the color falloff to the horizon quite low, so the dark blue sky is very dominant. That way you get that feeling of being very high in the sky, at the border of the stratosphere maybe. The actual horizon color had to be quite bright because I wanted it to blend into the clouds later. Usually, I add some post-processing early to push the colors or fine tune them. Adding exponential height fog to the scene is almost obligatory in Omno, because it adds so much depth and atmosphere. For the cloud world, I kept the height falloff quite high (so less fog the higher you go, the air is very thin up in the mountains) and moved the fog’s origin quite low into the scene to create that foggy layer below the gaming area. Having these things set up, I can already feel the world, although there’s only the player character in there. Then I start it using huge BSP brushes to design some very rough shapes. In that case, I was inspired by asian rock formations.
When everything feels good, I try to implement all gameplay elements like puzzles as soon as possible to design the landscape around those. The usual level design work follows: Replacing BSPs with static meshes, adding foliage, animals, lights, etc..
I was not sure about the actual clouds, so I tested several approaches: Using sprite particles only, low poly models, high poly models, etc.. The community seemed to favor the low-poly clouds which I was very happy about because it is huge fun designing those curly or twisted shapes around the mountains. I wasn’t satisfied yet though because they looked static and way too solid. So I first tried using a noise based tessellation shader that looked super fluffy and detailed but still didn’t move and the performance was suffering too much.
So, in the end, I created a simple shader that uses noise based vertex animation. The clouds close to the player are quite high poly to make the vertex animation look smooth enough. Due to the scope of the map I had to create several LODs and adjusted cloud shaders to save the performance. That way all clouds look alive as they do and the performance remains really stable.
All animations are being made in my 3d software and exported as fbx to unreal. No tricks here. As most animators do, I use a lot of reference material. I love the way UE4 handles animations. The ‘state machines’ can be used to quickly combine those animation snippets with the game logic. I focus a lot on finding the right balance between smooth transitions (to make it look good) and tight timing (to make it feel good while playing).
One of the biggest challenges for me as an animator is to NOT use regular anticipations as I would do in movies. Quickly explained: If you toss a ball, your arm goes back to wind up some energy, right? That is what animators call an anticipation. They are everywhere! If you jump up, you first have to go down and bend your knees, to make a step to your right, you need to shift your weight to the left, etc.. It is one of the basic animation principles.
In games you can’t use anticipations in the usual way. Let’s say pressing a button makes the character throw the ball. If he would now do his wind up animation first, it would feel delayed, sluggish. The player wants an instant throw. You have to find the right amount of milliseconds to sell an anticipation without taking away from the direct control feel. Sometimes I even start a motion from the anticipation pose right away.
For Omno I make heavy use of blendspaces. It is a technique of blending several poses into each other depending on some input values. While surfing/snowboarding I calculate the slope of the ground to adjust the character’s speed for instance. Going downhill makes you faster obviously. To visually push that I created animations for ‘idle’ speed, acceleration and deceleration. The speed value drives the amount of those poses being blended into each other. Simple as that. Those blendspaces easily allow me to create all sorts of complex looking animation or even fake some complex physics like those dangling feet while flying arcs while gliding.
So far I was working on it in my spare time besides work and family. The feedback has been overwhelmingly positive and encouraging. To be honest, it is an insane ride and I can’t believe that all this is happening at the moment. Being creatively unleashed is an amazing feeling and I need to finish that game, only to see how this whole trip turns out.
Besides talking to some publishers I seriously consider starting a Kickstarter campaign to stay fully independent and being able to not only focus entirely on Omno but also hire some helpful hands to progress much faster. Working with the community is extremely important to me, so staying independent and doing all the test sessions myself is really a privilege that I don’t want to give up.
Either way, I will definitely put the game on steam and hope to have enough financial background to port to consoles as well. Yes, that includes the Switch.