In my first post I covered terrain, and level building. I touched upon going for realistic looking approach. I may continue some of that here, but I also will touch upon some other tools.
I was not going to post another unity tutorial today, but I was excited to see that there is actually an interest for this so I am posting another. If it goes well I will likely post another over the weekend. I haven't had anyone tell me what they would like to know about so I am just posting about various things.
These are things I have learned in the past year as I have been buying assets, and I also have been coding and using Unity for 4 or so years at this point.
If you missed them here are my previous unity tutorials:
[Unity Game Development Tutorial: 1] - Assets that are worthy from the asset store
[Unity Game Development Tutorial: 2] - The basics - An Intro to Unity - Layout, Non-Coder, Coder
Assets for Optimization
When working with Unity or any game engine it is easy for our minds to think of really great ideas and start running full tilt towards making a game. Invariably we are going to eventually run into cases where something is not going right and the game is not performing well. In these cases we usually start looking for optimization. I will go into detail on manually optimizing the Unity engine in a future post (actually likely several posts, it is a big topic) but for now I do want to share a few assets I own that can help. There are others I plan to buy and try out at some point, but I promised to only tell you about things that I have some experience with. This section will document the assets I own that help with optimization.
World Streamer
World Streamer is an asset designed to let you break large terrains into chunks and stream them in and out of existence at runtime. There is a competing product called Sectr Stream that I do not own yet, but plan to purchase at some point. I cannot tell you which is better YET. They both seem to have quite a number of people that use them. If you want to build a huge open world environment then you likely will need to either create something like this yourself or buy an asset like this. World Streamer also has solutions to help deal with floating point errors that can happen with large worlds.
World Streamer can be purchased from the asset store for $50 from this location.
Simple LOD
When you are working with meshes (models) they are built out of triangles and the more triangles a mesh has the more work it is for the graphics card. One way to dramatically improve performance is to reduce the number of triangles used in a model as it gets further and further away. This is known as LOD which stands for Level of Detail. LOD is supported by LOD Groups for Unity and is rather easy to setup. The part that is difficult is taking a high detail model and reducing it's polygons (triangles). This is a process known as decimation. This tool Simple LOD can decimate models for you inside of Unity. It is very easy to use. That is not all it does. It can also merge meshes if you say have clothes on a person and want the clothes and person to be treated as a single model, Simple LOD can do that for you. This reduces the complexity and saves on batches and draw calls. That is still not all this does. In unity every specific material requires a batch or draw call. This means when at all possible you want to reduce the number materials you use. You can do this by doing what is referred to as atlasing. You put the textures for different materials onto a single texture and then that texture is used by a single material for multiple objects. This can be one of the most important of optimization techniques. Simple LOD can help you do that as well. You need to mess around with it and find which meshes merge the best together. There are competing projects that do some of these things, but I do not own them all yet. Another popular one is called Mesh Baker yet I do not own it yet, and it's LOD equivalent is a separate asset.
What simple LOD does:
- Decimates and easily creates level of detail (LOD) meshes for you
- Combines meshes you want into a single mesh
- Atlases textures to reduce the number of materials required
The Lab Renderer
I wanted to offer you something FREE that might work for some projects people have. You would not want to use this for any projects that you're trying to get as realistic as possible. It was created by Valve Corporation as an alternative shader to the standard shader. In gaming, lights can be expensive. The more lights you have the more draw calls it takes. This shader can support up to 18 dynamic lights (turning off and on, moving, etc) in a single pass. In other words in a single draw call. So if you don't require realism but you do want to use quite a few moving light sources then this shader package might actually help you out some. I messed with it a bit, but in my case I need a higher level of realism. This was released by Valve with the intentions of being useful for people making VR games for the HTC Vive.
This can be acquired for FREE from the Unity Asset Store.
Particle System Assets
Particle systems are an important part of most games. They typically consist of billboarded sprites (billboarding = always facing the camera) of different colors and blending methods. This is how you make fire, smoke, explosions, snow, rain, force fields, magic spells, laser bolts, flame throwers, jet engines, blowing leaves, flying chunks of debris, swarms of bats, swarms of flies, etc. They are vital to making a scene really come alive in both games and videos.
There are a lot of particle packs on the asset store. Whether they work or not will depend upon whether they will mesh well with your other art style. So keep that in mind. Some particles perform really well, and others might be beautiful but come at a performance hit. Again it is a balancing act. What do you need to achieve your goal, and what can you get away with? Game development is often a lot of tricks and smoke and mirrors. Using things in unsual ways can sometimes result in great effect.
Jean Moreno (JMO)
JMO has a number of low cost particle packs. I am going to show you one I do not own at the end because it is more realistic. I do own all of his Cartoon FX pack 1 - 4. I will you show you those. His packs also come with a useful tool for scaling particle effects.
Cartoon FX
This can be purchased on the asset store for $20 by clicking here. You can also test a web demo by clicking here. For these particle packages I highly recommend trying out the web demos to make sure the effects look like what you need.
Cartoon FX Pack 2
This can also be purchased for $20 from the asset store by clicking here. You can try out the web demo by clicking here.
Cartoon FX Pack 3
This asset can be purchased for $20 from the asset store by clicking here. You can try the web demo by clicking here.
Cartoon FX Pack 4
This asset can be purchased from the asset store for $20 by clicking here. You can also try out the web demo by clicking here.
War FX
I do not own this one. It is made by the same guy, but this is a less expensive pack and it focuses on more realistic explosions, fire, bullet hit, muzzle flash, smoke grenades, etc. In other words it is perfect if you are making a military first person shooter or something along those lines.
It can be purchased from the asset store for $10 by clicking here. You can try out the web demo by clicking here but this one will not work in chrome, try it in Firefox. He hasn't made a WebGL version which will work in Chrome. These demos used to work in Chrome until Google intentionally disabled functionality. This is a trick to know when trying out web based Unity demos. If they don't work it is because the demo is in the older format and you'll need to use FireFox.
Alessandro "NeatWolf" Salvati
NeatWolf makes absolutely massive particle effects. The three packs have 503, 331, and 634 particle systems in them respectively. They may not always be the quality level you need, yet for the sheer volume you can usually find a place holder particle system for almost any situation. Some of them are quite good as well.
The nice thing is all three packs are $10 each. That is a steal for the quantity of particles you get and the amount of time it can save you.
All of these demos will likely not work in Chrome. I use FireFox when using the non-WebGL Unity Demos
Mega 503 Magic Spells FX - NeatWolf's FX Pack 03
This asset can be purchased or reviewed by clicking here. It has two web demos the firs is here and the second is here.
MEGA 331 Water & Blood - NeatWolf FX Pack 02
This asset can be reviewed and purchased by clicking here. An interactive web demo can be tried by clicking here.
NEAT 634+ Fire&Fog (and more) NeatWolf MEGAPack01
This asset can be reviewed and purchased by clicking here. You can try an interactive demo by clicking here.
The video and interactive demo are using 3DForge Tile A Dungeon - Sewer Kit for the level which I listed and described in my first unity tutorial.
Ultimate VFX (v2.2)
This is a particle system pack made by Mirza Beig. These are fancy and high quality particle systems. They look really cool, but you will want to pay attention to performance as you are using them and carefully determine what to use, how many, etc.
This asset is $40 and can be reviewed and purchased by clicking here. It has interactive demos available here.
Sci-fi effects
This pack is made by Forge3D not to be confused with 3DForge. This is a sci-fi focused effect. These are high quality, very performant, and it has a pretty cool interactive demo.
This asset can be purchased for $35 or reviewed by clicking here. You can try out the interactive web demo by clicking here.
There are other great particle effects. It really depends upon what you are looking for. I own all of the DAX Snow, Rain, and Lightning packs as well. Let me know if you want any information about those.
Conclusion
This concludes this tutorial. If you like this and want me to continue making tutorials about Unity and game development please give me your votes. As long as their is continued interest I will continue to make them. If you have specific topics you wish me to cover please let me know. If I do not have requests then I'll likely post tutorials about whatever comes to mind that I find either interesting, potentially helpful to people, or preferably both.
Thank you for your time.