My interview about Diesel Express VR and Lazylab Games has been published in Level Magazine this month. I tried to explain the process of development from begining to publishing the game. I thank to my dear friend and Kendo senpai Ertuğrul Süngü and Level Magazine.
Here is a couple of fast modeling and texturing videos from me. I captured them while modeling a gun to put in Diesel Express VR game. This was my actual modeling way. Eventough we excluded it from game, the video still can be helpful for someone.
It’s been long time since my last post. Since then, i have created a few new media art work, a couple of VR video games and stuff. I also co-created my own game studio “Lazylab Games” with my brother. I already had 2 years experience in video game industry and i wasn’t able to do improve myself anymore in same job. So why don’t i quit my job and making my own game? Then the journey of “Diesel Express VR” has begun.
“Apocalypse brought us freedom” said a stranger man named Marius. Nobody knew him before, but he showed another path beside the one which is going behind the walls that built by who responsible of this breakdown. In a few months he was controlling thousands. Then he ordered men to fill the diesel to the engines…”
Diesel Express is set on an alternative time period of the post-WW2 Europe. The war ended by a ceasefire after desolation of the earth. Only a very small population of people are living safely behind the walls of self governed cities which appeared after the breakdown of the countries. While cities are guarded by walls, outland is under control by a doomsday cult which is led by a stranger man named Marius. As an individualist, Marius convinces groups to act against the cities. His idea spread quickly because of the post war conjunctures. The only transportation way being used between the cities is railroad. All the resource trade is made with highly armored diesel trains called “The Dreadnought”s. Our character takes his place in a dreadnought by joining the “regiment”.
But How Does It Look Like?
The game starts with our duty in a group called “Regiment” who is responsible of defending the trains called “Dreadnought” which is used to transport goods between the cities in a post-apocalyptic world. The game tastes a lot of arcade. Player needs to shoot down enemy cars driver or shooter to secure the train. Or player can shot down enemy cars tyres to make them crash, or shot down the fuel tanks to explode the cars. Hiding behind the barriers is very important when need too. Shortly, action never fades in Diesel Express VR.
From the idea to Publishing
After the idea, we created a Game Design Document to make us sure our path. GDD can be look like waste of time by indie gamers but actually it is very important. With the document, we decided about what features we need to make an MVP(Minimum Viable Product). Then we used a Kanban Board to manage our tasks. Our MVP appeared even in two weeks. I am not sure if we assigned our deadlines generously, we always finished our tasks before the deadlines. In 6-7 months we already published Diesel Express VR as early access in Steam Store.
As the Artist of the game, I mostly used 3Ds Max, Unity3D, almost every product of Adobe, Substance Painter/Designer, World Machine, ZBrush, Marmoset Toolbag.
Currently we updated the game three times since the publishing. We added many features from our plans and steam users demandings.
What was the main problems in production?
Enemy vehicles had to approach our train car, then they had to follow us by keeping their velocity. This was a big problem because we didnt provide any paths for enemy cars. They have their own wheel and gas control. We used an algorithm called PID which is being mainly used in robotics and automation. It solved our problem perfectly.
Enemy cars have their own control. So, there is a simple AI working behind to avoid form obstacles.
VR headsets needs a powerful computer to work. But it doesn’t mean that models can be high quality and high polygon. When working with Oculus Rift and HTC Vive, we needed to reach 90FPS for a fluid experience. We created the models very low poly, sometimes we baked from high poly model. Optimized textures and so on.
But the most unpredictable problem for us is teaching how to shoot to the players who doesn’t know how a pistol works. Because of HTC Vive and Oculus Rift controllers are mapped to the pistols, the game turns to a shooting simulation in a way. Without an accurate aiming, shooting enemies is impossible. So we decided to add a hovering crosshair to improve the shooting experience for unexperienced players.
Concept Of Diesel Express
We are impressed from many materials when we creating the setting and art style. The main material is Mad Max Fury Road for sure. As the art director of the game, it wont be a surprise if i confess i have seen the movie 4 times in theatre. We tried to use the accomplishment of the movie such as desert look, style and art direction as well as the never ending action in a suitable way in our game. But its wrong to say we tried to create something alike Fury Road. Instead of decorated, punk style cars, we wanted to create the cars as if they were repaired after great war more pragmatistically, not cosmetically.
The date of the year is not definitive. We can estimate the production of the cars and weapons as 1940’s. Because of that, firstly we decided to make a dieselpunk style in our models. Weapons, cars, buildings and clothings gives the clue of dieselpunk. But in overall, we created dusty and rusty Dieselpunk style.
We tried to catch the Bioshock Infinite look in 3D models, Camera effects, interiors and characters. We analyzed Bioshock a lot when we deciding the materials and lighting. Camera has saturated colors and bloom effect like Bioshock. Wooden material that usually not used in Dieselpunk style, might be come from that game too.
Diesel Express has awesome music as well. Before the action, in the pub, we listen 1930’s 1940’s musics. When we ride the train, we hear “Battle in the Sky” by Walid Fegahli. I can’t imagine that i could find another music fits Diesel Express more than that. I think the reason that makes this music so magical to us, we frequently listen it while development. We did the alpha tests with this music. So keeping it in our game was a must. Honestly, we paid the most money to this music.
Poster art was created by a very talented concept artist Eren Arık.
VR is good! VR is impressive! VR has future!
VR is not a new thing. The origin of the idea comes from 50’s. But the golden age of VR start with Oculus Rift which is successfully kicked in Kickstarter. VR provides a very huge experiment space to game designers. When you come across to a problem when developing a game, instead of solving the problem by investigating other games, you solve your problem by yourself. Because most of the time you are the only one in universe who come across this problem. I am sure VR will reach more people in future.
Would I Create The Same Game To Another Platform?
Due to our decision to create the game to VR, i can’t imagine Diesel Express in another platform. Because it has a lot of VR only features. But if i would create, i would like to create something in the triangle of “Outlaws” level 3 Train, Western Express Arcade and Kabaneri of the Iron Fortress.
What Did I Learn
- I learned that a two people indie team must choose the boundaries of the game very wisely. Which features are really must have and which features are overkill.
Above left advanced shooting script is a must have while above right is an overkill feature
- Developers himself/herself can become an obstacle. Motivation lose can ruin the project.
- Don’t tell the project to people too much. It starts to feel like it’s already finished.
- Before the actual start of project, a game blog have to be started.
- Working at home in pajamas is not the best way to work.
- Last 10% of the project is equals to the first 90% of the project is a real thing.
- Definition of the “fail” changes in your mind very often. A game financially failed can be priceless for some ways.
- “Indie generalist” is a real thing. Responsibilities oftenly changes.
- Never pleasured in my entire life more than pressing publish button in Steam. It absolutely worth to work really hard.
- Unity Asset Store looks amazing in the first glance, but we actually never able to use any assets form store except some minor ones because of the performance and quality issues.
- Most of the time, modifying a downloaded 3D model takes much time than creating a new one.
- Feedbacks from the players may change the content of the game.
- Try to test your game with hardcore players and causal players. You will learn different things from the players who have different experiences.
- ESRB rating is not just a picture on the DVD Cover. When we try to publish Diesel Express VR in Oculus Store, we face off with some questions that rates the game for the perfect audience. Questions were like “is there any weapon in game?”, “Do they look realistic or fantastic?”, “Is there blood?”, “Does the hero kill humans?”, “Is there swastikas? ( we clicked “no” at least this one)”. We got something like +16. But if i design another game in the future, i will absolutely think about it.
- In the story of the game, the name Marius named after the same named character from the book “The Spell”.
- Some of the weapons we use in game are Nazi-made weapons. But it doesn’t make you nazi. Come on guys!
- Regiment’s logo is an eagle. It was also considered as a Nazi symbol by some people. No. We used this reference as a Roman symbol. Self governed cities, a regiment that defending this structure is too Roman thing.
- Our dreadnought DN-Selandia’s name comes from MS-Selandia, first ship that using a diesel engine.
While making a game, optimisation is one of the most important things that the studio must care. There are various ways to avoid this problem like reducing the poligons, reducing the particle effects details, creating level of detail(LOD) or creating static lights. I will explain how to bake the lights to create static lights in this post.
Basically the static lighting is to create a texture map for objects or environment by baking the effect of the light source on this objects. After we use this baked texture on the objects, we do not need to create a light source in the scene. Even in AAA games, the static lights are commonly used to maximize the performance.
For this tutorial I created this simple scene which contains two boxes and a ground. Then I arrange their UV’s by adding Unwrap UVW modifier as you can see below. This step is important because we need to make sure there must be no overlap.
After packing the UV’s correctly, the scene is ready to bake. Press “Render To Texture” below “Rendering” menu.
Hotkey is “0” by default in 3Ds Max 2014.
It opens the Render To Texture settings as you can see below. It automatically adds the selected object to the Objects to Bake list. In the picture it is Box002.
Below Output rollup press Add… button and select DiffuseMap in popup which appeared. For this example we need to add only DiffuseMap.
After selection, it will be added into Output list. And below the list there are some render settings. The size of “1024” is fine for this scene but keep in mind that texture sizes is a part of optimization as well. Because, while too big decreases the performance, too low decreases the quality.
Another important thing is enabling lighting and shadows. They can be enabled by clicking the ticks which is inside the “Selected Element Unique Settings tab” as you can see I marked with red square. Then press render button at the bottom of the window. You should do the same steps for each object in your scene to have baked texture.
When I baked textures of my scene the result is like below. Shadows, highlights and midtones can be seen on textures.
I added the textures to the objects with %100 self-illumination and I took this render. There is no light source in this scene. Graphics are almost the same but performance will be dramatically increased in huge scenes.
While making an animation which animating one or double hand linked to another object we use IK targets. Linking an IK target saves us from animating objects seperately such as holding sword, rotating a car wheel etc. For sword example, mostly the position and rotation of the sword matters, not the hands. So when animating a sword, we expect that hands follow the sword handle by keeping their position on the sword.
I will explain it with a basic human CAT object. For ones who dont know how to create a CAT object, it can be found below Create Panel> Helpers> CAT Object
If you successfully create the human figure click Motion Panel. You will find the Layer Manager as you can see in left picture. Press and hold the button which I marked with red and release the button on Abs (Absolute Layer). Then press Setup/Animation Mode Toggle button so it will transform from red stop image to green play image.
Select any hand bone. If hand bone selected in the figure, you will see the Limb Animation rollup in Motion Panel. The button which I marked with red, creates the Target Point we need. You should press this button for each hands for this tutorial. If you did it right a cross must show up just front of the hands.
If you move this crosses, hands wont follow it. We will solve it very soon. Now its time to positioning the hands. I created a very basic sword for demonstration as you can see below.
I moved the hands until it looks like the figure is holding the sword with two hands but targets are still keeping their position.
Below the Limb Animation rollup, inside the IK System tab click the button which says Move IKTarget to Palm. This button will relocate the targets to the place where they have to be. Below this tab there are three scrolls as you can see in left picture. The scroll which says IK/FK must be “0,0”. Now the hands will follow the targets. So link the targets to the sword. Now the hands will moved by sword. Try to rotate or move the sword. If you didn’t miss anything, your animation must work well. I showed a picture below when my figure holds the sword.
Tip: After creating the sword, move the pivot point to the middle of the hands. When you rotate the sword the hands will animate very realistic.
For another example the figure below move its hands as the wheel rotates.
I hope it was helpful. If you have any questions leave a comment.
The most shocking thing after I started to create game assets is a huge part of the features of 3Ds Max and Maya are not supported in fbx export. And the only way to export a 3D model into a game engine is exporting the model as a fbx file. Static models like a building, a tree or a car etc. can be easily exported with materials. I had no problem with that. But other than “Skin“, “Physique” and “morpher“, wont be seen in the game engine. So you must do all the animations with bones and morpher targets.
And the other important thing is you should always “collapse all” by right clicking the modifier list just before exporting. Because for example if you want to export a model with turbo smooth, if you dont collapse the modifiers, turbosmooth wont be exported.
Past one year which I was working as a game artist in a game studio has taught me a lot of things. As the only artist in my studio, I have got many responsibilities. Before my professional carreer I always used to create my own, unique stuff. However, I have noticed that to release the game in time, it’s a good idea to take advantage of asset stores. So before a game we start to work, we always check asset store for (trees, cars, rocks etc.) as much as we can. It saves a lot of time and it lets you focus on more important things. Details are neccessary but not need to be totally unique if you are in a indie game studio.
It is important to choose right font. The font must be suitable for different languages in case of translation. Style must be fit on your game as well.
Teaser video of the game matters to make the game to be downloaded. The video must be released in social media or indie game blogs before the games publish. My favorite game teasers have in-game videos which show gameplay, as well as motion graphics and 2D or 3D animations according to the game. Keep in mind that teaser must be released weeks before the game. So the studio can reach as much gamers as possible.
Markets show the icon of the game as feature image and it is the first thing users will see. So the icon matters. It must be clear and must be able to be choosen among the others. Icon better to be designed seasonal-ready. For example in christmas you can be able to put a red hat on the icon.
A proffesional game designer I’ve met in a seminar recommended the “Agile Method” that means creating a playable version of the game immediately. It can be a walk on a line with your character or a car or even a box. Then you can improve graphics and gameplay later.
In this post i will explain how to use path constraint and snapshot tools to create continuous multiple objects. I am using this tools oftenly at work. For small scenes copy-paste could be easier to use but in huge scales snapshotting is much more time saver. I will post a few different renders below the explanation as example.
Before the start I created some kind of coal mine enter as you see above. Its only for the tutorial, I did not spend much time on it. Then I simply created a curved line starting from inside of the gate. It will be the path of our railroad.
Then I fit the line to the earth by playing with vertices. The earth plane has some ups and downs.
I created the wooden rail holder at the left side to put it below the rail.
Under the motion panel and assign controller drop down menu you will see position, rotation and scale. To assign a controller to transformer I selected position and pressed the assign controller button above the selection. After selecting path constraint from the list, it will be added to the object.
After adding path constraint, Path Parameters dropdown menu will show up. Under the menu Add Path button lets you choose which line will be followed by the selected object. I picked the path I created before. Usually the result is out of the rotation than how it must be look like. So I rotate it manually to find a position as I want. I recommend you to press follow button that I marked in the picture above before the manual rotation. Otherwise it will be unrotate again. Follow check lets rotate the object that controlled by path constraint on the way of picked line.
Now the object has a path animation. It can be seen by scrolling the timeline from begining to the end.
Snapshot can be reached under “Tools>Snapshot”. This tool can make a copy of the mesh within any single time or between a range in timeline. I have an animation of object that i want to copy in a range of time. So I checked Range and copied it 12 times as the lenght of my path.
The result is fine to me. I drew two lines more to create rails. And this is how it looks.
I also created the two pictures below. The one with city lamps is for this tutorial and the one with roller coaster is a product.
I designed this concept based on my sketchs in the Codemodon Game Studio that I am currently working, for a commercial. I represented this vehicle as some part of a submarine and some part of a quadrocopter.
In this post I will explain the steps of creating this concept.
I started with this chamfer box with paramaters of 60x60x90 and 7 fillet. Increasing fillet segments is much more easy than adding turbosmooth or meshsmooth.
Then I added “FFD 2x2x2” modifier from modifier list. This modifier lets you to manipulate the mesh by as if the whole mesh is just a box. The submarine cabins roof is wider than the floor.
After giving the exact shape to the body, I divided the borders of glass and door with swift loop tool. “Swift Loop tool” makes easy many things. You can divide polygons with only one click. (Mark 1 shows the button of swift loop. In case if you dont see the panel which has swift loop tool, click to the button which is marked with 2, or your 3Ds Max version doesn’t have it)
Swift loop tool is availible only if you edit the mesh with “editable poly”. I detached the front window and the door just after dividing the edges with swift loop.
After detaching the door the steps that I follow explained above. I scaled down the door, I used boolean tool which is in “create>compound objects>boolean” to make an hole for a window on the door. At last I used shell modifier to make the door volumed.
Below of the vehicle is more primitive. I didnt used any complex shape. I created a construction with boxes and I added some details for the wings. I created some connection parts to make wings more realistic.
There are always many ways to create something in 3Ds Max. For the wings I followed the ways above. I draw a basic wing with line tool, extruded it and manipulated the shape with FFD 4x4x4 for making it look aerodynamic. If you add any material without using UVW, 3Ds Max will give you an error.
After that modifies the result of the construction is below.
I used the materials inside 3Ds Max. The name of the materials are above. I didn’t modified this materials. They come with 3Ds Max by default. After adding some details on door and adding materials the concept has done.
I took this render with Mental Ray.
I hope it was helpful. See you next time.
In this post I will explain the tricks of low poly style landscape render with 3Ds Max.I started the project by creating the plane for the ground base mesh. Its a simple almost square 20×25 segment plane. Then I converted to “Edit Poly” by right clicking the mesh.
After creating ground I heightened the hills and the mountains with “soft selection tool” which is in Soft Selection panel at right side.
When I create the mountain tops I increased the pinch value of the soft selection tool as you see in the picture at left. Pinch value make the vertices which is in the falloff area of the selection stronger or weaker. The graph below values must be seen like a mountain.
Tip: You can start to create mountains with a lower pinch and you can increase the value a little after.
I finally decided to leave the mountains like above.
After finishing the ground, mountains material have to be set up. I decided to paint mountain body to brown and top of the mountain to white. Due to there is only one mesh to paint 3 different materials, the best solution is to use “multi-sub object”. To use this kind of material, Polygon Material ID’s must be grouped. I left the polygons that will be grass to default 1, I set the mountain body to ID 2 and the mountain top to ID 3. It can be set in Polygon Material IDs in the Edit Poly tab. As you can see above. Before setting the IDs the polygons which will be grouped must be already selected.
To create the multi/sub-object, Open the Material tab (press M) then click the button which says “standart” which is shown in the first picture above. It will open a new window. Pick “Multi/Sub-Object”. As you see in the 3rd picture above there is a list of material slots. Due to polygon material groups which is I did before the ID groups of the material will paint them.
1st ID is green for the ground
2nd ID is brown for the mountain body
3rd ID is white for the mountain top
If the material IDs set correctly the mesh will be shown like the picture below.
I created the trees in a very basic way. I created a cone, copied it 4 times and attached with a stick. I set the polygon material groups of the leaves to 2 and left the stick to default 1. I made a new multi sub object material and added it to the tree.
Creating the clouds is a little bit tricky. I created a basic sphere with 16 segment then I used “pro-optimizer” modifier which is in the modifier list menu and I added “smooth” modifier to make it look low poly style. Just copied 3 times and variated it.
Stone is also created with the same modifiers.
To create a forest, copying and copying is not the best way. It takes time and it will be like un aligned by the ground with hills. I think the best way to make a forest is to using the “Object Paint Tool” which is above of the viewport screen. Before using this tool make sure the object that you want to copy is 1 mesh.
Press the button which is marked with the number “1” then click the tree mesh. Press the button which is marked with 2 and you can click to the ground where you want to create a tree. It will copy the tree where you will click. It is also aligned by the Axis “Z”. It means if you click the mountain the tree will not stay below the ground. If new trees are so big you can manipulate the values which is marked with “3” cyan color.
I put the stones with the same tools. I copied some clouds to the sky and added some details like the river, rainbow and stuff.