Vlad Hristev is currently working on his top-down shooter Supersolar: lots of awesome animation, spaceships, and drones made with 3dsMax and UE4.
My name is Vlad Hristev, I’m from Bucharest, Romania and I’m a senior environment 3D artist. I’ve been working here at AMC Pixel Factory in the game art outsourcing for the past 4 years. Right now I’m a stay-at-home dad. I work mostly on environment sets, vehicles, and props. Notable games I contributed to at AMC include titles like Call of Duty: Black Ops 3 and Atlas Reactor. I wanted to work as an artist on games since high school. With limited education options in my country, I chose architecture and finished an MA in Industrial Design in 2012. Supersolar is a side project, where I tackled all art and design aspects and outsourced programming.
Goals of the Project
I wanted to make a simple game set in space where I could work on art I enjoy a lot – sci-fi setting, spaceships, sprawling levels. Supersolar started as a small shoot’em up. I wanted to do something simple because I didn’t have enough spare time to work on it, but eventually it evolved into something a lot more complex as I kept adding things. Now the direction is very clear, I want to craft an engaging experience and focus on the cool ship and level designs, as well as fun combat scenarios. Supersolar will take players on a journey across different levels in the Solar System as they gather various weapons and gear to battle an alien machine race spawning numerous AI drones. I have a long road ahead, but I hope I will be able to accomplish my goals.
Working on Animation
I was definitely inspired by nature, and there’s a large folder in my references from where I’m taking cues. I also take inspiration from some of my favorite games and films. I wanted a dynamic, cute ship that responded to player controls – the goal is to have a visual treat when controlling the ship (moving, combat, customizing it). Having never done something like this, I came across a lot of trial and error.
First I blocked out my mesh and tested animations inside 3ds Max. This first iteration used 3-4 moving parts and was inspired by the tanks in Battlezone 98 (wings and engines that move when player strafes or rotates the ship). The idea then was to make all animations in the engine – when forward power is applied, rotate this part 45 degrees, when strafing, rotate that one. It sort of worked, but it had a lot of limitations (like no animation blending) and since the game is in the early development, there are constant iterations with a lot of back and forth – it left little room for changes. Plus I felt it wasn’t that interesting to look at, so I made some changes to make it more dynamic and instantly responsive to inputs – I segmented it, made it turn, made wings move and rotate.
I’m still not finished, as I plan to have an interactive control for ship systems – it’s built to expand so players can click on turrets, access sub-systems, engines and other gear.
Achieving Organic Look
I want to add a lot of character to my ships, even go a little over the top – it’s something I enjoy seeing. The final technical solution for the current animations, at the 3rd attempt, is using animation sets and blend spaces in UE4, as if the ship would be a character – but with some simplifications.
I have a very simple rig in 3ds Max – a lot of helper objects linked together in a hierarchy, with correct transforms, fixed pivots, and a limited range of rotation and movement. As I created my high poly parts I also created this rig and linked them together, so I can already animate the range of movements available and test it out. I have a set key interval for each animation – 35 keyframes per movement. Forward Animation, for example, – 15 keys for the ship to reach max forward state (wings rotate back and engines push out), 5 of hold, 15 keys to return to idle. In the animation set, there’s also strafe left and right, mouse rotate left and right (and in the next version up and down), brake, reverse. So I have a movement set just like for a character, but the main difference is that my animations are not loop-able, instead use these three parts.
Once the animation set and the high res is completed, I start working on the low poly meshes. As I model the parts, I link them to the rig and test the animations for issues, intersecting parts, etc. Next, I use the Game Exporter inside 3ds Max to export an FBX for each animation for UE4. It’s a great tool since I can save a preset with all the animations in the set and export them with a single click. For iterative purposes, this means I can modify the low poly mesh and rig on the fly and see the changes in-engine. The helper objects in the rig are treated as bones once imported and I don’t need to create bones or any skinning inside 3ds Max. It saves a lot of time. I’m also using sockets in UE4 to add the four turrets (that rotate independently) and the weapons. Each turret and weapon is a skeletal mesh and also has its own animations (like fire, release weapon, etc).
I’m using standard modeling practices in 3ds Max. My units are very small on screen, so it’s important to have the maximum readability of silhouette and shapes. In early tests, I found that a chunky and a bit stylized look would work great. I’m trying to use clear, large shapes, a bit exaggerated proportions, very soft bevels and small areas with high-frequency details. I also try to make everything fit together and work technically – wings are connected together by rotating elements, engines move on rails, are connected with cables and pipes, etc. For the in-game meshes – a low triangle count, low-resolution textures (512×512 is enough for most things) and relying heavily on normal maps. Even though I start with sketches, I find that it’s easier to explore designs with block-outs, directly in 3D and in the engine as soon as possible, and make constant iterations, while keeping in mind readability and consistent aesthetics.
Baking & Texturing
I’m using Marmoset Toolbag 3 for baking and Substance Painter for texturing. The current workflow I’m using is instancing in 3ds Max my high and low poly meshes, moving them aside, exploding them together for baking and adding occluding boxes for AO if needed. I add a non-destructive Turn to Poly modifier to triangulate my meshes before exporting and use a Soften filter in bakes (it helps a lot to avoid jagged lines in these low-resolution textures).
If I have to change geo or UVs in the low poly, I can work on the final assembled ship and export the changes with the exploded, instanced mesh – I find it’s the least time-consuming method for baking complex models. I always start by exploring an interesting color scheme, then detail the materials with wear, add gradients or color variations. Because of unit scale on screen, I have to exaggerate parts of the texture, like edge wear and soot. I’m trying to use baked normal maps for everything since the texture footprint is low and I prefer the resulting details, but some large parts of the level use tileable textures.
I’ve been using UE4 from the start as I find it very intuitive and artist-friendly. Even though I have very little programming experience, I managed to create complex animated shaders, interface elements and used blueprints for interactive parts of the level, like doors opening, popup messages and more. It’s easy to make assets look great and to light and build levels.
Building the Levels
I made a basic level, as a showcase in the first demo, with a lot of art in the block-out stages. Since the game has a fixed top-down perspective, I’m breaking the environment into different levels of detail: playspace areas, uniquely mapped Greeble sets to add variance, props, and far vista assets (like distant space stations, ships, planets), export them to UE4 as separate assets and assemble it manually. Once I assemble a module (like a bridge) I use the Merge Actors tool to create a new static mesh to duplicate in the level.
I have a lot of work ahead for level design – the next goal for Supersolar is creating a complex demo with most gameplay systems ready (like AI, damage model, weapon switching) and showcasing a completely finished level – a sprawling space station with hangar bays and docks.
Finding a programmer was hard. I think I had the project on hold multiple times for months while I searched. Since Supersolar is still an indie side project, I’m financing outsourcing from my own savings and salary, so I needed someone that could handle most aspects of game dev in UE4. I also had to hire someone for VFX and for sound effects. The blueprints in this prototype are done by Kristoffer Freiholtz from Silver Machine Studios. Another challenging part was finding the time to actually work – most of it was squeezed in an hour or two in the mornings before work, over the course of many months. It’s also draining to go back and forth over design, scratch work or start over completely – but it’s important in the art direction of the game to have everything fit together.