These type of videos is why I've been following this channel for so long, clear in-depth behind-the-scenes work explained in simple terms, very few do it this well. Added game to Wishlist ofc. Would love to see a tutorial on the trees, they look really nice.
I really appreciate that. I will add more videos like this shortly, I am just editing the next one that looks at the progress after each 10 hours up until 400 hours =)
I cannot wait until you complete the course, and make it available. This is exactly what I've been looking for, since I decided to get involved with game development. Please keep us informed. Great video, and it looks like an amazing game !!!
Hey, thanks! I found it fun and addictive to play during development, but it's funny how small changes can have a big impact on fun-factor. I increased the durability of the blocks and slowed down the bullet rate for a while, and it took all the fun away. Now you feel powerful and "in-the-flow" when you play so it's pretty interesting how two small number changes can have such a big impact. Will be excited to release the course later :)
Amazing! Thanks a lot for sharing this behind the scenes to how a game is made. As a game dev myself I find this super inspiring and informative. Hats off!
This video has so much value. It's nice to see a fully functioning game behind the scenes with all of its quirks and tricks to make the game what it is. As a new dev, this is invaluable.
Is there a reason for doing the hole game in one scene? or is it just for this type of games? I thought that, for a non infinite pre made game, doing everything in scenes and loading them asynchronously was the best choice so you are not having big fps drops when things load Either way, I learned a lot of random things, thanks!
I find the workflow to be faster when I work in a single scene and since the level modules are instantiated from a random selection depending on how far into the game you get, there was no benefit of building something in a scene. As someone pointed out too, for large worlds it would be better to do scenes as all referenced prefabs are loaded into memory, but for this small game there would be no benefit to have multiple scenes. Transitioning from Menu to Play can be done without any scene-loading this way.
What an awesome Creator you are :D I'm using you sound FX asset in my game ! Thank you so much ! I love what I do.... one suggestion! Could you please consider disabling the faces/vertexes behind the blocka and grass to same on overdraw? Should be an easy model edit :D +also wishlisted! One more thing... It seems Turrican was a great inspiration here!!! Awesome music! Chris Huelsbeck would be happy!
Thank you so much!! Great to hear you like Universal Sound FX too. Another big USFX update is coming adding more than 1000 new sounds in the next few days. Reducing overdraw could be good optimization especially for trees. Otherwise backfaces are already culled by the shader. I also rotate the tiles in all 6 directions to get variations. Yes, Turrican is a great inspiration and so is music by Chris Huelsbeck - it's an honor to have it mentioned here so thank you =)
@@Imphenzia I'm so happy we have you ! :D Awesome thank you do optimizations via shader. Glad and also honored to be among people like yourself! Please continue and I can't wait for the update! My game is alive and I will finish it soon + many more!
Thanks! Yes, it was a full focus effort every day (between 8-14 hours every day). The game was pretty playable after one week, but it is easy to underestimate the extra time required for polish and things like controller remapping etc.
Unity has now scrapped the runtime fee as of a few days ago and for Unity Personal, they have increased the revenue and funding ceiling from £100K to £200K. With all this in mind and kicking out the god awful CEO John and the Applovin directors, I’d now pick Unity over Godot as Unity simply outperforms Godot in every way.
Yeah, I couldn't agree more. You can earn $200K in a year before you have to pay anything at all and if you earn between $200K and $25M you have to spend $2200 for a pro license which is a bargain for such a powerful and feature-packed engine. That is the equivalent of a revenue share between 1.1% and and 0.0088% with no admin of tracking sales.
@@Imphenzia "In a year" is also something people miss the importance off, they only charge you if you recently made money in a short amount of time :D not 200k total
As an indie, I highly doubt you’d ever take full advantage of Unitys features for it to be “better than Godot”. That Road to Vostok game is a perfect example (in an interview he said he didn’t need to modify the engine either to make it)
Really interesting video! I'm curious how many tris and draw calls you're making atm - Do you have specific thresholds you try to keep below when developing for PC and consoles?
Thanks! 1957 batches, 1.5M tris, 2.9M verts, 82 setpass calls, 1051 shadow casters when I paused the game just now. The high vert count comes from me using flat shading instead of smoothshading so the GPU needs to duplicate all the verts to show flat normals for each surface. But That vert count is fine even if it sounds high. In Line War we have about 3-4M verts on screen and in PC games sometimes characters alone can have up to a million verts (at extreme closeup). I implemented reduced graphics quality alternatives too especially to remove realtime shadows. I think a lot of optimization would be needed for mobile to not burn up the battery :)
@@Imphenzia Thanks so much man, that's really helpful. Puts my mind to rest because I've always been paranoid if I see *a million* triangles lol. Good luck on your game! 😄
An excellent overview. Having a large number of separate components on your gameObjects makes it easy to keep track of your code, but how do you communicate between these components ie costly invocations? Do you use unity events all over or also c# events, a bus, direct dependencies, or a mix?
Thanks! I am actually using UnityEvents for that purpose for the first time. It's not super performant probably, but I found them easier to code and keep track of compared to C# events and the added bonus that they can be hooked up in the inspector too (even if I don't use that in this game). I try to only call on events, and I never use it during the update loop. So, OnDeath, OnDamage, OnJump, OnJumpLand, OnDash, OnShoot, OnFall are examples of Unity events that local gameobject components (like Animator, Sounds) and global comments (like Statistics, Particle Effects, Game Manager) are listening to. I will look into a bus method too. I think this is the trickiest part in gamedev to solve in a nice way.
@@Imphenzia Thank you for a detailed reply. UnityEvents sounds like a good choice. I am currently implementing Unity-Event-Bus in my ongoing project, and it is very efficient but needs a lot of scaffolding.
A playable demo would be amazing. I know releasing full project files is complicated, but that would also be useful for us trying to learn. Paid plugins and other things make that hard! Looking forward to hearing more about the course.
Hi, a free playable demo is coming in October during Steam Next Fest so hope you get to test it out then. I am looking into sharing the entire project when I release my Indie Game Dev course. I would need to clean out API keys and some Steam integration code, but I try to not use any paid assets or plugins so from that perspective it should be ok!
cool behind the scenes, lots of great unity performance tips. your organization [folders/heirarchy] in unity is very tidy. btw what specs is your pc for developing games? [cpu/gpu/ram]
Hey, glad you like it! For this project I keep a simple asset-type based organization (scripts, textures, audio, prefabs, etc.) but in other projects like Line War we moved to a domain-based organization so all files specific to an entity, like a Tank, Factory, Infantry, Cruiser are stored in the same folder mixing scripts, sounds, meshes, that are specific to those entities. For simpler projects I prefer the approach I use in this game though. My PC is a bit too over-powered, I should be using a lower spec PC to get better performance out of the box. I have an Intel i13900K with an RTX 4080TI and 32GB ram. I should probably get a minimum-spec PC as a test rig.
Do you ever use the Unity Performance profiler ? You covered quite a bit here on optimisation hints and pooling. A Tutorial on the use of the Unity Performance Profiler would be nice. Welcome Back to Unity.
Hi, since it's not needed to break them on the fly I use a pre-cellfractured object from blender where each rock has it's on collider and rigidbody. For more sophisticated fracturing I found a git repo once that also helps keeping structural integrity, but I can't remember the name of it, but it's free. Hmm, I think it was this one: github.com/U3DC/unity-libre-fracture
I really want to play this game it looks so good. I’ll also buy the making off the game tutorial. It would be great if this were to be ported over to UE5, I’d buy that tutorial too!
That's awesome to hear. It'll be released end of next month! And doing a UE5 port would be an excellent training exercise to learn UE better and see how things translate.
@@Imphenzia about halfway down the game's Steam page, it's showing an error message, just above the “About this game” section. This error message seems to only be on the iPhone Steam app but not the Windows desktop Steam program.
The course is not specifically a Unity course and you can follow it regardless of whether you use Unity, Unreal Engine and Godot as the majority of the content revolves around building a game and not specifically the tool. But saying that, all my footage to show how things were made will be from the recorded footage of making this game, and the resource files that come with the first version of the course will be from this game. Basically, Ultranova is similar to how this game was made but with bigger worlds, more resources, and more features.
2.5D is when you use 3D engine to make a 2D-looking game. So it's all in 3D but with a fixed side view and everything plays out in the XY plane. I use 3D features for everything, depth in the background, physics, and all the assets render in 3D but they are on a locked Z-axis.
The game is very good, I just wanted to remind you one detail in case it would be useful. while playing, I want to move forward and shoot ... in the meantime, if there is a stone in front of me, I want to jump, but the three actions cannot be done at the same time, I have to stop shooting. this disrupts the flow.
Creating levels as prefabs is a very bad approach, because when loading the game, Unity looks at the references left for these prefabs and loads them into RAM. This leads to the fact that if there are 100 levels there, your RAM will be filled to 100% and the loading time will be about a minute on a weak device. Scenes are created to provide management in RAM. You can place a prefab with static settings on each of the scenes to facilitate the processes of balancing and setting up basic scripts and lighting.
Good point to keep in mind for some games, but not a problem for this one or most other games I make. If there are larger worlds with unique and very memory intensive meshes, it would probably be wise to use scenes instead. I find that scenemanagement is pretty problematic and slows down the workflow otherwise, unless you have specific memory budgets for levels to adhere to. We went from multiple scenes in Line War back to one as the worlds are generated procedurally and it reduced the headache of scene-transition-persistent objects. But thanks for sharing this, I will make sure to keep that in mind!
yes, unity. A battle tested simple to use game engine with a great api. You know, the ones used for games like rust, escape from tarakov, fall guys and probably a million others you've played yourself. It's an actual game engine despite your knowledge of it being limited to, I'm assuming from your condescending "lol", the run time fee controversy.
These type of videos is why I've been following this channel for so long, clear in-depth behind-the-scenes work explained in simple terms, very few do it this well. Added game to Wishlist ofc.
Would love to see a tutorial on the trees, they look really nice.
I really appreciate that. I will add more videos like this shortly, I am just editing the next one that looks at the progress after each 10 hours up until 400 hours =)
I cannot wait until you complete the course, and make it available. This is exactly what I've been looking for, since I decided to get involved with game development. Please keep us informed. Great video, and it looks like an amazing game !!!
Thanks happy to hear that!! A lot of work still for the course material but I will keep you posted on this channel.
This looks incredible, looking forward to the tutorials!
Thanks! More to come =)
Great to see how many things go on in the background and the things you had to overcome. Fun to watch and also quite educational.
You're welcome, glad you like it!
that looks very good man, the game seems super fun to play, well done! Can't wait to see your course when it'll be out :)
Hey, thanks! I found it fun and addictive to play during development, but it's funny how small changes can have a big impact on fun-factor. I increased the durability of the blocks and slowed down the bullet rate for a while, and it took all the fun away. Now you feel powerful and "in-the-flow" when you play so it's pretty interesting how two small number changes can have such a big impact. Will be excited to release the course later :)
Really awesome video. I was always wondering how a more or less finished game would look like inside a game engine!
Cool, I will be happy to share more!
I love these Unity videos. Well explained, especially the performance stuff was very helpful for me.
That's great to hear, glad you find it useful!
Amazing! Thanks a lot for sharing this behind the scenes to how a game is made. As a game dev myself I find this super inspiring and informative. Hats off!
Thanks, very happy to hear that. Another video about this game development journey is coming soon!
Such an informational video! The game looks and sounds awesome. Great tips for performance too.
Thanks, glad you like it! I :D
This video has so much value. It's nice to see a fully functioning game behind the scenes with all of its quirks and tricks to make the game what it is. As a new dev, this is invaluable.
Thanks, I will follow up with more videos on this!
This is the exact content I need! More like this please!
Great to hear as I have many more ideas for videos like this :)
It's amazing! You're really cool!
Good video for beginners. Not many videos like that. Most people just copy an old tutoral and push it out. This provides them with proper insights.
Thanks, will.cover more topics specifically like this.
@@ImphenziaI was thinking of the same. I am happy to see it is a good idea.
this is so awesome
This was super interesting. Thanks for the walkthrough.
Thanks - more will follow shortly!
Thank you for the great insight! Really cool to see what goes into the game 😅
You're welcome!
Is there a reason for doing the hole game in one scene? or is it just for this type of games?
I thought that, for a non infinite pre made game, doing everything in scenes and loading them asynchronously was the best choice so you are not having big fps drops when things load
Either way, I learned a lot of random things, thanks!
I find the workflow to be faster when I work in a single scene and since the level modules are instantiated from a random selection depending on how far into the game you get, there was no benefit of building something in a scene. As someone pointed out too, for large worlds it would be better to do scenes as all referenced prefabs are loaded into memory, but for this small game there would be no benefit to have multiple scenes. Transitioning from Menu to Play can be done without any scene-loading this way.
Honestly, this is a great idea for a series. Thanks ❤
That's great, I will make more videos about the making of this game!
What an awesome Creator you are :D I'm using you sound FX asset in my game ! Thank you so much ! I love what I do.... one suggestion! Could you please consider disabling the faces/vertexes behind the blocka and grass to same on overdraw? Should be an easy model edit :D +also wishlisted! One more thing... It seems Turrican was a great inspiration here!!! Awesome music! Chris Huelsbeck would be happy!
Thank you so much!! Great to hear you like Universal Sound FX too. Another big USFX update is coming adding more than 1000 new sounds in the next few days. Reducing overdraw could be good optimization especially for trees. Otherwise backfaces are already culled by the shader. I also rotate the tiles in all 6 directions to get variations. Yes, Turrican is a great inspiration and so is music by Chris Huelsbeck - it's an honor to have it mentioned here so thank you =)
@@Imphenzia I'm so happy we have you ! :D
Awesome thank you do optimizations via shader. Glad and also honored to be among people like yourself! Please continue and I can't wait for the update! My game is alive and I will finish it soon + many more!
This is so cool thank you!
2 months? That's impressive!
Thanks! Yes, it was a full focus effort every day (between 8-14 hours every day). The game was pretty playable after one week, but it is easy to underestimate the extra time required for polish and things like controller remapping etc.
this idea is new. thank you for this
You're welcome - more to come!
Unity has now scrapped the runtime fee as of a few days ago and for Unity Personal, they have increased the revenue and funding ceiling from £100K to £200K. With all this in mind and kicking out the god awful CEO John and the Applovin directors, I’d now pick Unity over Godot as Unity simply outperforms Godot in every way.
Yeah, I couldn't agree more. You can earn $200K in a year before you have to pay anything at all and if you earn between $200K and $25M you have to spend $2200 for a pro license which is a bargain for such a powerful and feature-packed engine. That is the equivalent of a revenue share between 1.1% and and 0.0088% with no admin of tracking sales.
@@Imphenzia "In a year" is also something people miss the importance off, they only charge you if you recently made money in a short amount of time :D not 200k total
Hey, it's not Applovin, but Ironsource.
As an indie, I highly doubt you’d ever take full advantage of Unitys features for it to be “better than Godot”. That Road to Vostok game is a perfect example (in an interview he said he didn’t need to modify the engine either to make it)
@@cweasegaming2692 🤣
awesome and wonderful insights to learn from an expert👍
Thanks! Expert is a powerful word, maybe "Experienced" is better =)
That's why I love your Videos. Great. More deeply Tutorial about the fluffy trees should be good. Thanks
Great, thank you so much! There is a great tutorial on those that I followed: ruclips.net/video/iASMFba7GeI/видео.html
More videos to come!
Really interesting video! I'm curious how many tris and draw calls you're making atm - Do you have specific thresholds you try to keep below when developing for PC and consoles?
Thanks! 1957 batches, 1.5M tris, 2.9M verts, 82 setpass calls, 1051 shadow casters when I paused the game just now. The high vert count comes from me using flat shading instead of smoothshading so the GPU needs to duplicate all the verts to show flat normals for each surface. But That vert count is fine even if it sounds high. In Line War we have about 3-4M verts on screen and in PC games sometimes characters alone can have up to a million verts (at extreme closeup). I implemented reduced graphics quality alternatives too especially to remove realtime shadows. I think a lot of optimization would be needed for mobile to not burn up the battery :)
@@Imphenzia Thanks so much man, that's really helpful. Puts my mind to rest because I've always been paranoid if I see *a million* triangles lol. Good luck on your game! 😄
Nice video about the Unity gameplay framework at runtime.
Thanks!
Awesome Video :D
An excellent overview. Having a large number of separate components on your gameObjects makes it easy to keep track of your code, but how do you communicate between these components ie costly invocations? Do you use unity events all over or also c# events, a bus, direct dependencies, or a mix?
Thanks! I am actually using UnityEvents for that purpose for the first time. It's not super performant probably, but I found them easier to code and keep track of compared to C# events and the added bonus that they can be hooked up in the inspector too (even if I don't use that in this game). I try to only call on events, and I never use it during the update loop. So, OnDeath, OnDamage, OnJump, OnJumpLand, OnDash, OnShoot, OnFall are examples of Unity events that local gameobject components (like Animator, Sounds) and global comments (like Statistics, Particle Effects, Game Manager) are listening to. I will look into a bus method too. I think this is the trickiest part in gamedev to solve in a nice way.
@@Imphenzia Thank you for a detailed reply. UnityEvents sounds like a good choice. I am currently implementing Unity-Event-Bus in my ongoing project, and it is very efficient but needs a lot of scaffolding.
Its awesome, would love to see the state manager a little more in depth.
Great idea, I will cover that more.
just amazing
3:53 how do you make the camera switch interpolate/smooth? Transitions="none"?
The Cinemachine Brain has a default interpolation transition time of a hald a second I think.
A playable demo would be amazing. I know releasing full project files is complicated, but that would also be useful for us trying to learn. Paid plugins and other things make that hard! Looking forward to hearing more about the course.
Hi, a free playable demo is coming in October during Steam Next Fest so hope you get to test it out then. I am looking into sharing the entire project when I release my Indie Game Dev course. I would need to clean out API keys and some Steam integration code, but I try to not use any paid assets or plugins so from that perspective it should be ok!
@@Imphenzia that's awesome! So you planned ahead and read my mind!
Amazing tuto
Thanks!
cool behind the scenes, lots of great unity performance tips. your organization [folders/heirarchy] in unity is very tidy. btw what specs is your pc for developing games? [cpu/gpu/ram]
Hey, glad you like it! For this project I keep a simple asset-type based organization (scripts, textures, audio, prefabs, etc.) but in other projects like Line War we moved to a domain-based organization so all files specific to an entity, like a Tank, Factory, Infantry, Cruiser are stored in the same folder mixing scripts, sounds, meshes, that are specific to those entities. For simpler projects I prefer the approach I use in this game though. My PC is a bit too over-powered, I should be using a lower spec PC to get better performance out of the box. I have an Intel i13900K with an RTX 4080TI and 32GB ram. I should probably get a minimum-spec PC as a test rig.
@@Imphenzia for testing its really nice to use virtual machines using for example Oracle VirtualBox and limiting its cpu power
Do you ever use the Unity Performance profiler ? You covered quite a bit here on optimisation hints and pooling. A Tutorial on the use of the Unity Performance Profiler would be nice.
Welcome Back to Unity.
Hi, I've used it quite a bit in Line War, but not so much for this game. It's a powerful tool, and it's a good point I should cover that in a video.
Will you be posting this game as a course? This is awesome
It will be a course, more to come on this channel about it later.
Did you use an asset for the blocks destruction or your own? If you used an asset which one was it, or do you know which one is best performent...?
Hi, since it's not needed to break them on the fly I use a pre-cellfractured object from blender where each rock has it's on collider and rigidbody. For more sophisticated fracturing I found a git repo once that also helps keeping structural integrity, but I can't remember the name of it, but it's free. Hmm, I think it was this one: github.com/U3DC/unity-libre-fracture
I really want to play this game it looks so good. I’ll also buy the making off the game tutorial. It would be great if this were to be ported over to UE5, I’d buy that tutorial too!
That's awesome to hear. It'll be released end of next month! And doing a UE5 port would be an excellent training exercise to learn UE better and see how things translate.
Maybe that could be a series on its own? How things compare and what difficulties to expect. What works and what needs to be rebuilt and so on.
@@Imphenzia about halfway down the game's Steam page, it's showing an error message, just above the “About this game” section. This error message seems to only be on the iPhone Steam app but not the Windows desktop Steam program.
Your game looks gorgeous, I remember seeing it when I first started messing around with Unity, 4 years ago or so, why don't you publish it?
Thanks, yes, many prototypes are before this one =)
Will you teach everything in this course so we could create a game like ultranova ?
The course is not specifically a Unity course and you can follow it regardless of whether you use Unity, Unreal Engine and Godot as the majority of the content revolves around building a game and not specifically the tool. But saying that, all my footage to show how things were made will be from the recorded footage of making this game, and the resource files that come with the first version of the course will be from this game. Basically, Ultranova is similar to how this game was made but with bigger worlds, more resources, and more features.
Where can we sign up for the developer course to learn to create a similar game like this
I will announce more about the course on this channel, it's a few months away still.
@@Imphenzia cant wait :-)
Sorry for stupid question. On the Steam page it says 2.5D platformer. But this seems 3D. In what ways do you use the 3d features?
2.5D is when you use 3D engine to make a 2D-looking game. So it's all in 3D but with a fixed side view and everything plays out in the XY plane. I use 3D features for everything, depth in the background, physics, and all the assets render in 3D but they are on a locked Z-axis.
The game is very good, I just wanted to remind you one detail in case it would be useful. while playing, I want to move forward and shoot ... in the meantime, if there is a stone in front of me, I want to jump, but the three actions cannot be done at the same time, I have to stop shooting. this disrupts the flow.
Creating levels as prefabs is a very bad approach, because when loading the game, Unity looks at the references left for these prefabs and loads them into RAM.
This leads to the fact that if there are 100 levels there, your RAM will be filled to 100% and the loading time will be about a minute on a weak device.
Scenes are created to provide management in RAM.
You can place a prefab with static settings on each of the scenes to facilitate the processes of balancing and setting up basic scripts and lighting.
Good point to keep in mind for some games, but not a problem for this one or most other games I make. If there are larger worlds with unique and very memory intensive meshes, it would probably be wise to use scenes instead. I find that scenemanagement is pretty problematic and slows down the workflow otherwise, unless you have specific memory budgets for levels to adhere to. We went from multiple scenes in Line War back to one as the worlds are generated procedurally and it reduced the headache of scene-transition-persistent objects. But thanks for sharing this, I will make sure to keep that in mind!
It would be cool if it was like Crash Bandicoot.
Broforce 3D
first
Unity? lol
yes, unity. he is still learning UE
Yes, great game engine. More capable than Godot and simpler than UE =)
yes, unity. A battle tested simple to use game engine with a great api. You know, the ones used for games like rust, escape from tarakov, fall guys and probably a million others you've played yourself. It's an actual game engine despite your knowledge of it being limited to, I'm assuming from your condescending "lol", the run time fee controversy.
@@Imphenzia true :D
i love unity, and now the runtime fee is gone