Does Having Experience With Dev Make a Difference When Optimizing?
Does Having Experience With Dev Make a Difference When Optimizing? This question is very obvious, anything you do, having experience makes a difference. I decided to start with this question because, when we start the journey of developing digital games, without any previous course, we will make a lot of mistakes.
This question is very obvious, anything you do, having experience makes a difference. I decided to start with this question because, when we start the journey of developing digital games, without any previous course, we will make a lot of mistakes, even in simpler things.
In 2014, I started this journey, developing a game, which would become an extremely audacious project, due to its size and complexity.
Many things have happened in those years, which I would not be able to count here, but in summary: I have all the ideas and planning of a gigantic project that started in 2014 and is not ready yet.
Why? For many reasons:
- The game is too big for one or two people.
- I'm a designer and not a programmer (so here I need someone else, at least)
- Zero budget.
- Lack of knowledge.
- I don't know enough English to understand everything in the documents and videos.
- Without academic training.
Anyway, you already have a notion. At that time, since 2014, I practically went to college, what my father likes to call “Faculty of life”, the practice. I have an office in my home for 2 years, where I learned many things by developing assets for UE4, modeling in Blender, texturing in Substance Painter, and so on ... But it is not enough, after starting to understand a little bit of the engine game, you see that you know nothing.
In a Team of 3 People
We tried several projects, starting and dropping in the middle for some reason that made it unfeasible. Until the beginning of 2019, a time after the UE4 MegaJam, which we participated with the game “Stella”, we decided to make a horror game, in a closed place, with a linear story that was short, but well done and causing fear, obvious.
- At the moment I am writing this text, the game is in the final steps and with several aspects that I would not like it to have. And then you would say, "One more that they will abandon". But no, this time it came to an end. A little crooked, but it came. Like I said, it's like I'm doing my college, I'm learning, and I always will be.
And of course, I learned a lot from this project, we planned something and for lack of experience it came out differently, because of that, we adjusted it. And here's one of the things that most impacted my learning: Knowing how to adjust it. Don't try to keep the planning the way it started, even if it is well designed, there are flaws that need adjustments and that is exactly why planning needs to be monitored.
An adjustment must be made carefully because if you make a mistake again it can be expensive. In our case, the game had low FPS rates due to the environment. There was no optimization. Or rather, what I thought was:
"But it's optimized, all meshes have "LOD", "Cull Distance" is well configured and the textures are in low resolution."
However, the project was still at 25 to 45 FPS, in maximum UE4 configuration, on a machine with an I7 7700K, 32 GB RAM, and a GTX 1080 TI.
Performance information on Montti Constanttini. Compare with the information of Dead Of Mist, further down in this post.
With over a month of researching, I found the information I needed to make it run at 120 FPS, with the same settings. Just remembering, I don't know much English, and all the content I consume is in English or translated with Google Translate. One more problem, I wasn't aware of much important about Unreal Engine, basic things for good optimization, how it communicates with the operating system, for example. Oh, and I live in Brazil, and whoever is BR knows the difficulties of this sector in the country.
And what did I do? I practically merged the entire map and in the middle of this process, I saw improvements, which in fact occurred, but only in the middle of the process... The result, it got heavier and worse, there was no turning back. Joining what is separate is possible, the reverse is not. Now we have a project that has 3000 static meshes with more than 30 materials each, all generating shadows.
Perhaps the bigger our mistake, the more valuable our learning.
If I did Montti Constanttini with the knowledge of now, it would be very different.
What I would do and what it should have to be a more suitable project. (Under optimization)
- Level Streaming / World Composition
- LOD - With the last level with only a material that does not generate shade. In addition to the others having appropriate settings, clearing materials that do not visually affect whether or not there is shade, examples: glasses, screws, grasses, and others.
- Quantity of materials per SM.
- Number of SMs generating shadow. Paying attention to vegetation, small, translucent SMs, and particles. (There is no need to remove the SM, perhaps disabling the shadow will resolve)
- Merging of SMs that can no longer be understood by the engine as an instance, that do not have enough spaces between them for the character to pass, unless they are enterable constructions. In addition, attention to materials, the ideal is to merge SMs that share the same material.
- Always creating packages, to generate a personal log, to perform functionality and performance tests. It is important that you create an executable, as all the possibilities of "play" of UE4 make different executions, that many times fail to catch any error. The packaging does it all.
- To be checking the "Call Draws" that has an interesting behavior, but that would be a lot of information for now.
- Always having control of what is heavier, following the milliseconds in "Frame", "Game", "Draw", "GPU".
So many things have happened in the course of this development. The theme of this text is the experience and how it can affect optimization, but there are other errors in other sectors that I worked on, such as the simple function of opening a door can drastically hinder optimization.
Montti Constanttini was planned to be developed by 3 people, with the intention of selling, but as we did not reach an adequate quality for sale, in our perception, we decided to make it available for free.
You may ask yourself, "But if you think it didn't look good, why are you going to publish?"
Simple. From experience.
Project started after the development of Montti Constanttini. Project named as Dead Of Mist.
I wanted to encourage other devs like me, who study alone or are in a similar situation. Don't give up, my first PC for dev had a GT 720 that barely ran the UE4, I spent years with this video card, to a point that the fan didn't even work anymore, where I left the fan facing the PC to be able to use it the EU4. (One more thing that I know BR will identify with)
For those who follow me on Instagram with the name of WarVision Games Studios, I would like to share that I will be developing assets in the coming months, with my business partner, Gustavo Valente (A mathematician working in programming, the guy is good at logic). Besides that, we will open, soon, a Patreon for you to follow our work of Assets and Dead Of Mist. In addition to helping us to keep developing.
Learn more about the experiences and learnings I learned from all of this and how the DOM (Dead Of Mist) planning is going and how I will develop it, Follow Me on Patreon!
Patreon Dead Of Mist - Click Here! :D
Come and be part of this fantastic universe! - Site Dead Of Mist!
Oh, not least, share your experience with me! :D