I come across this great tutorial while stumbling upon 2D effects for a new mobile game project. Then I wanted to give it a try. This is my result. The tools that the tutorial shows brought many ideas to my mind.
BUG Spring Jam was held in 13-15 April at Bahçeşehir University/ İstanbul. It took 48 hours. We teamed up as Gökhan (3D Art), Cenk (3D Art), Cem (Programmer) and me Günışığı (3D Art). Actually we have already spent a lot time as developer team. Because of that, the jam felt like an ordinary weekend for us. However it was great to work really dedicated on a project from idea to a prototype ( i think the result was little more than a prototype ) without distractions and obstacles.
The theme was ” Death… to the demoness Allegra Geller ” from the movie ” Existenz ”
We had individual ideas before the jam. Nowadays we are playing local multiplayer games such as “Gang Beasts” and “Stick Fight” and we really enjoy these games. We all agreed to create a game like them. We kind of mixed those games with the art of Gang Beasts and the pace of Stick Fight. We also influenced by Flippy Knife.
Game mechanics was cleaned up as;
- Game will be a local multiplayer deathmatch
- Max. 4 players
- Players will spawn at the same time in different spots of the map
- Players must throw the axes that they grab from ground to the enemies
- Axes can be grabbed again after being thrown
- Dead enemies will spawn again immediately
We started to create assets as quick as possible. We shared our needs. I undertook the characters, their textures and animatons and some props for the gameplay area. Gökhan created the axes and their textures and also some props. Cenk mainly worked on environment art. We used no pre-made assets. All the assets we used were created during the jam.
While we were working on models, Cem was working on codes and stuff. There is an early footage of the work.
As I mentioned above, we tried to create a similar atmosphere with Gang Beasts. We used Unity 3D’s standart shader for every 3D model. Environment models have solid colors. The color palette we used is below.
For the characters and axes, we decided to have more detailed 3D models. So for those models we just added substance painter into our pipeline. We detailed them with normal maps, height maps and metalness maps.
To make the characters more distinguishable, I gave them different colors and cosmetics. We are planning to make more hats that player can select. Currently there are 4 different hats as above. Comrade, Janissary, Kendo Guy, American Chief. Ignore the dead guys in the background.
Axes are very detailed and have different shapes according to their effects. They are currently the same but finally they will have different abilities. The first one is more likely to hit and kills instantly but goes shortest or the last one will trace enemy etc.
Here we are presenting our game to the other teams. Cem was talking about game while we were playing it. I really enjoyed the game, i couldn’t even listen the presentation.
We are planning to publish our game to Steam as soon as possible. It can be also published for Xbox and Play Station maybe even for iOS and Android.
GIST 2018 Developers Conference
I explained my previous experiences on VR, mostly about Diesel Express, my workflow that i used in the games, performance in VR and how to optimize 3D models for VR games. There is the workflow diagram i prepared for the presentation below.
I skipped the concept part and started with a pre-made 3D model of a car. Without UVW’s and vertex paint. I created UVW and vertex paint in 3Ds Max. Then i followed the diagram until rendering the final model in Unity3D. It took about 1 hour.
I started to work on a VR game project with Low Poly Style graphics. I am going to announce the new project next months. It’s very crazy and something never been tried. We are realy excited to work on it!
Eventhough, I used to work on Low poly style graphics in 3ds max ( I have even a tutorial post in previous pages), it is quite tricky when working in Unity 3D. When it comes to creating 3D models for VR experiences, keeping the vertex count low is very important. Models must be really low poly and the scene must be very well optimized for a fluid experience.
However, when i export my low poly models with individual smoothing groups per polygon, vertex counts in Unity increases to astronomical numbers. I was very surprised when i realized smooth objects are more performance friendly rather than flat objects (Low poly style). Because i was expecting the opposite.
So I wanted to test what is actually happening.
I created this two geosphere above in 3Ds Max. They are absolutely same, clone geospheres. I named them as “smooth” and “flat”, then i added smooth modifier to the “flat”. Then i lower the smooth treshold like picture below.
Then I exported them to Unity 3D 2017
Keep in mind that an empty scene in Unity 3D causes 5k vertex eventhough there is no object around. It is because of the skybox in the scene. If you clear the skybox from lighting panel you can decrease default vertex count to 4, I assume.
As you see the picture above, you will notice that flat is 4 times more, compare to smooth. In larger scenes, this difference will be beyond acceptable limits.
What is the correct way to create Low Poly Style Scenes?
The best way to solve that issue is creating the low poly style in shaders. Exporting 3D Models with 1 smoothing group is best for performance. Then you can give it low poly look with shader below.
As you see in the picture below, object “smooth” has flat shading material which i downloaded from the link above, has no vertex difference compared to its default.
The result is absolutely wonderful for me.
I hope the post was clear and helpful for the people who stuck in that problem.
A couple months ago i came upon open call for VR Days Europe 2017 volunteers. This kind of events gather many people all around the world from the industry and developers as well as the speakers. It is a great place to meet people and see what is going on in the industry. I applied to the open call and i was selected.
First day started in DeLaMar Theater with an opening speech by Zilah Watson from BBC then continued with conferences of the speakers. Due to i had no shift in the first day, i listened all the speakers and it was really valuable resource for me.
Martin de Ronde from Forcefield talked about his predictions of the second rise of the VR and the similarities of its current situation and mobile games in 2007 according to his observations since then. Leen Segers explained the business side of the industry. Jason Toff from Google, showed some of the first prototypes of google’s VR projects and explained how did they used the prototypes to develop a stable version of their project. He pointed out mostly spending a dedicated time for prototyping, sketching ideas, brainstorming, sharing before being ready and letting people test the prototypes oftenly. Tenderclaws, showed some examples of their project and talked about creating the interaction in VR. Yitian Han explained the current situation of VR Cinema industry in China. Philip Rosedale from High Fidelity made a live VR performance of their massive online multiplayer videogame, Second life. Jeff Burton from Woodside Creek shared his previous experiences as an ex Electronic Arts employee.
So it was an very busy day 🙂
Next day i arrived to the construction of the exhibition place. It was 7 in the morning.
Exhibition hall is completely empty.
In a few hours the hall is getting ready.
This is the hall i actually worked 2 days. It is called Church of VR. I dont know why they named this place as church. Fun fact: I was the only one turkish or from muslim country to work in the church. It was fun though. We had around 15 VR experience and several movies to show. Some of them was really cool. “Gloomy Eyes” and “Chocolate” are my favourites. Visitors also liked the experiences. Their feedbacks were very positive.
This is the choir area. Visitors experienced VR movies with Gear VR. It was like a place from the future. People was looking different places in same movie. I understood the personal space that is offered by virtual reality again. Persoanl space was created with cinema curtain for above a century. But VR will increase it to a upper dimention.
Nice marketing 🙂 Sadly and surprisingly all the beverage and food was on sale. Including coffee and tea. This is the only summit i went and pay for them. Well i actually didnt pay anything because of i rejected to pay. So i bought what i need from markets.
We had a boat which worked between Central station and Exhibition hall (Kromhouthal). I came across it by chance. It was written nowhere in the papers i had. It is a cool thing.
PSVR stand. First time i have tried the PSVR. It was really comfortable. Screen resolution is same as oculus and vive. But the trackers sucks. Or maybe controllers, i dont know. They told me that trackers are interfereing with the others. It makes sense.
Pimax 8k VR headset is something you cant find oftenly. I waited a very long line to try it. It absolutely worth. Resolution is great. Tracking is not worse than Vive. They look very same. Device has a wider screen, so you dont see the end of the screen horizontally as well as vertically. I saw 2 seam lines in middle right and middle left side of the screen. It feels like they connected 3 screens in headset. After all, great device.
This one is the craziest experience i have ever seen. You actually jump in a pool with VR headset and a snorkel to swim with dolphins.
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 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.