Current state of development

Game Dev

During the year 2021 many things happened. I have been working on this project in my spare time but also taking care of personal stuff in life. You can read more in the previous post.

During the time, I’ve spent a lot of time by learning new stuff, new technologies and tried to do the game better in terms of the architecture. I had to rework a lot of things and scratch as well. This led to the completely new code base and fresh start.

I have been mostly building a foundation for some kind of data management for the game assets and objects within the game. I use Addressables and better memory management in Unity to have more control over the used assets in the game during runtime. Procedural mechanics in the game were scratched, neither ever started because it’s very time consuming. But pay attention please! This doesn’t mean that generated dungeons won’t be available in the game. I just postponed this topic into the near future after I accomplish some more foundational mechanics.

I made FAQ section where you can read a lot of interesting information about the game itself, what I plan and what is the goal.

I also started to be more active on Discord so If you’re not part of the discord community, you can join there and stay tuned and watch all the showcases I present there.

So currently the state of the game is a bit vague and I know many of you might ask me, when I can play the game, when will be the demo? Show us some gameplay! Believe or not, I try and I want to deliver some tech showcase until the end of the year. I also want to start streaming the development again but I spent last couple months by learning Blender and 3D modelling. I just needed to know how does it work because some of the things you have to do by yourself. I will try to split following text into some topics which I focused on.

The actual form and state of the mechanics of the game will be described in the next post.

Third party assets

To be more precise, let’s say I use some of the Asset Packs from the Unity Asset Store. These asset packs are amazing time saver but you have to take in consideration, that many of them are not game ready yet. You always need to check 3D meshes and textures, whether it is sufficient to use them in the game. I try to reach a good performance and hopefully many people will be able to play my game even on the older hardware. The game itself does not look like a nowdays AAA title but even though, you can always hit a bad performance if you don’t care.

Also, there is nothing wrong about using bought assets, just be careful to avoid of looking your game too generic and obvious that you use them, it’s always cool to give the assets a bit of your own flavor. We are just people and it is obvious that I cannot know everything and do everything from scratch. People who hate buying assets and flaming all devs around for doing that have either really a lot of time or they are just so closed minded. I hate asset flips but you need to know what does it actually means. There is a nice video on YouTube explaining this and I won’t talk about that. I respect solo devs who do all the stuff just by themselves but please, do not hate others for not doing the same thing. We all have different work conditions and time management. And for people who want to be so pushy, I would rather suggest you to program your own OS, make your own Engine and do games in that. Don’t use already premade solutions 😀

Code Assets

If I speak about code assets, I mostly don’t use them. If I can give you a good recommendation, do not import any of the code implementation assets directly to your project. It can either run the whole codebase or add new problems. Rather stay isolated and take a look on the asset in the separate project.

I’ve taken a look into several of the assets and most of them are just bad in terms of the code or efficiency on the performance level. Do your research and use them wisely, rather ty to rework their solutions and fit it into your project.

I’m not saying that using of the complete solution for Third Person control from unity or asset store is bad, I also use pre-made solution and modfied it by myself but rather investigate what is done there and adapt it to your code base. I think to make 100th FPS controller by myself is a bit waste of time. I will rather take something as a foundation and extend it to my needs. And about the bad usage and codebase in the assets, I talk about some prepared frameworks like RPG Builder or other bigger solutions. It’s a mess and it cannot be handled well in terms of some code refactoring and further changes which can occur in the future phases of your development. It might be good for a small project for Game Jam or some rapidly developed game in terms of weeks. I dunno, I’m a bit sceptic but these complete frameworks are just not my taste. I need to be sure what kind of code I have in my game.

Last week I thought I will use LowPolyFPSPack but it doesn’t fit in the project. It’s a standalone solution and you need to build your project upon that. That’s no go for me. It’s a cool and working solution but I noticed that projectile spawning is not pooled, there are many things which can cause issues in the bigger scale after you reach certain size of your game. Be careful about that and always care. But what this packs made well is animations. I probably try to extract them and retarget them onto my humanoid characters. I will use it as an inspiration for weapon rigging and animating weapons because it’s AAA quality. For this huge respect to the authors.

3D Modelling

Last week I spent by level designing and playing with the assets, preparing some nice scene, playing with lights, searching for the optimal workflow for creating the world. It’s tedious but it’s worthy because I will take the prototype level, export the prefabs to FBX as a whole composition and merge these meshes manually in Blender. You can combine meshes in Unity through some external scripts but I haven’t invested yet into those and rather I want to prepare solid showcase level by myself and optimize it manually.

Level Optimization

The optimization is crucial and you should focus on that regularly. I have been profiling the scene during building the level and reached something interesting. I built the level from prefabized parts of the level and put the level all together from the pieces. It’s a regular approach many people do but if you ever tried to see what is happening on the background, you will see that your GPU draws a lot of unnecessary stuff you don’t need to. I had about 4.7K draw calls on my GPU after rendering the scene. After I merged these meshes into one which shared one material, I decreased this number to 67. You see the difference?

Many people tell you, use object culling. But object culling is really efficient on the huge scenes like cities and open worlds where many objects like trees and decals, props are being drawn. And also it’s built in Unity solution and it does not have to work as it is intended. 😀 If you are making corridor based game. Try to keep objects separated and after you are done with the prototype, just extract the level foundation like ground, walls, ceilings, static objects and try to merge them. Give them primitive colliders in low number. Don’t use 1000s of Box colliders on each object. There are many ways how to achieve good results and I’m not saying that mine solution is the best. I still investigate and search for better results.

There are also assets which helps you in terms of world building and preparing the levels. I bought GAIA and PGG for some automated way how to generate terrain and place props. This gives me a lot of time to focus on specific details of the level. I also use these assets in the separate project and just preparing the environment which I then export already optimized directly into my game.

Code Base

I’ve never been focusing on this before I got into GameDev. I’ve experienced many companies where I wrote scripts, doing some PHP and web development. None of the professionals ever told me and pushed me into this. A lot of small companies are rather a garage studios and people there might not have a lot of experience from other works. Mostly people who jumped into one project after school and do it for a long time. They might be good, they might not but I felt there is something which does keep me on the Junior level. After I dived into the programming language standards, I realized there is a good reason to follow these rules. Many devs tell it’s not important to know them. But let me ask you? Do you think that you can merge code of 10 different people who write their own code in their style? I don’t think so, and now imagine you work on a huge project consisted of dozens of people and devs. If you follow code standards and learn them, your code became much more readable and not only for the others, but also for you after you come back to some old script which you need to re-edit, refactor or extend. All these code base standards, rules and patters have some reason and pros who came up with them know why. I met a lot of educated and expertised persons during my work career and none of them ever would say that something like this is useles or waste of time. And if you really don’t want to learn it? Just make your own set of rules and share it across the project with your collaborators so you keep the project organized.

Time Management

These two words never stop giving me anxiety. It’s so difficult for me to manage my time but I started to use JetBrains Space after recommendation from my friend. I try to keep stuff organized and have to say that Issue Board and have small tasks can make your life easier. Believe me and start organizing and splitting your development goals into smaller tasks. I still learn the process but it’s better than ever before.

Motivation

I told you I became a father, life got harder, life got more challenging but believe it or not. This gave me a lot of motivation to grow and keep working on this project and my career. Do not lose passion and do not ever think, you’re doing something wrong. To be a good developer, it takes a lot of time and effort and you can became a good developer after you really realize how bad you are so if you are on your knowledge peak now and think, you can do everything, prepare for the drop 😀 I just try to be better, I learn, I buy Udemy courses, watch YouTube videos, read articles. I thought I know a lot after couple years in the IT world but after I got into Game Development, I realized how really I struggle in certain things of programming.

Leave a Reply

Your email address will not be published.