Making Alba: How to build a performant open-world game | Unite 2022

Ойындар

Go behind the scenes with the custom tools and technology ustwo Games built to develop Alba: A Wildlife Adventure. Manesh guides you through the important dos and don’ts the studio followed in order to create this open-world game that runs on low-end mobile devices.
Speaker:
Manesh Mistry, Lead Programmer (ustwo Games)
If you're interested in joining ustwo Games: ustwogames.co.uk/join
Timestamps
00:00 Intro
00:21 usTwo overview
01:46 Alba: A Wildlife Adventure introduction
04:33 World generation
12:10 Performance challenges
19:10 Foliage rendering
22:43 Burst and Jobs driven LOD
24:16 Hard to profile areas
26:01 Photography mechanic
27:19 Miscellaneous improvements
28:41 Custom analysis tools
31:00 Lessons learned

Пікірлер: 90

  • @cosminmahalu9594
    @cosminmahalu9594 Жыл бұрын

    Great talk Manesh, very informative! Thank you and thank you for releasing such a great game!

  • @FrotteeVDH
    @FrotteeVDH Жыл бұрын

    Interesting talk and great presentation, thank you. I've played the game about a year ago - it's a small piece of art, so wholesome and enjoyable!

  • @adrianopiro5240
    @adrianopiro5240 Жыл бұрын

    I was facinated about this video! Congratulations about everything!! 👏👏🚀🚀

  • @aleph618
    @aleph618 Жыл бұрын

    Great and informative talk. I played Alba last year on AppleTV and I can't praise it enough. A genuinely lovely game.

  • @AntonQvarfordt
    @AntonQvarfordt Жыл бұрын

    "Ambition must be informed by reality" I feel like this lesson should be widely established as a core principle almost regardless of your experience level. That being said - sometimes you don't really realize how ambitious your idea is until you're actually trying to make it. The only real way to improve your ability to accurately evaluate this beforehand is just old school basic-ass experience. You probably just can't really reliably estimate what it takes to do a lot of things unless you've done it before. Your mental model of how you'd go about creating some system is going drastically increase in complexity once you actually start doing it :P

  • @CareyMcDuff

    @CareyMcDuff

    Жыл бұрын

    I too thought this was the best point Ina great talk. The discussion around 31:08 applies to so much in life. And agreed that experience is crucial in making this judgment.

  • @AntonQvarfordt

    @AntonQvarfordt

    Жыл бұрын

    ​@@CareyMcDuff Well I actually kind of felt that making this point must surely be redundant at this point. That said it's obviously totally true and ought to be internalized by really anybody that's doing these kinds of things.

  • @jamesclark2663

    @jamesclark2663

    9 ай бұрын

    This is exactly true. It's also why most large companies will no longer hire anyone without a few shipped titles under their belt. They don't have time for those lessons to be learned the hard way and the hard way is the only way it can be learned.

  • @AntonQvarfordt

    @AntonQvarfordt

    9 ай бұрын

    Myeaa but also - it needs to be possible for people to actually get hired on their first game, for that to happen :P Also - if it's a company that align their practices for prosperity in the long term and don't just chase big pay-outs where you view time in terms of fiscal year year report dates and revenue-based bonus deadlines for the management roles.... Then it should make sense to also make more long-terms investments in terms of what talent you decide to hire. I'm starting to get tummy rumbly about how it seems to me there really isn't many companies, even ones that's really big and been around for a long time etc, that makes much of any decision or plan considers anything that's further ahead than 5 years. @@jamesclark2663

  • @jamesclark2663

    @jamesclark2663

    9 ай бұрын

    @@AntonQvarfordt There are plenty of ways to make games that don't require being hired by anyone, especially in this current age of readily available information and high-quality middleware tech. This has its upsides and downsides of course. I'd say the concept of 'growing newhires' over time is more-or-less dead not just in games but in tech overall. Nobody currently wants to bring in what they see as a total loss and a massive risk when they could hire someone that can hit the ground running (in their minds of course). And they absolutely are willing to hold out for those unicorns. Are there exceptions to this? Sure! Is it shortsighted? Yep! Will it burn a lot of them in the long run. You bet! But I feel really bad for anyone trying to get into software of any kind over the next five to ten years until some of the more senior employees start to drift away or retire and companies suddenly realize they should have planned ahead.

  • @buddhathegod
    @buddhathegod Жыл бұрын

    Honestly the game looks beautiful, and the presentation was amazing. I'm not the best at understanding the programming tech part of game dev, but I feel like this was presented so well that I could kind of understand some byte-sized parts of this. I missed this game's free period on Epic, but I actually didn't really hesitate to buy this game and support games that have this kind of aesthetic and gameplay, because I really just want more of these kind of games. Like my dream is to be able to create these games.

  • @biogic9566
    @biogic95663 ай бұрын

    Thank you for opening up about your game and helping others. I really like your approach and it seems that the idea is key and then make it work which I tend to do also with my game development. I wish you luck on your next adventure

  • @livelively3845
    @livelively3845 Жыл бұрын

    Well done, very informative! Thank you for sharing this knowledge with us!

  • @rambii.
    @rambii. Жыл бұрын

    I have been searching for something like this for some time now. Finally, I found something!

  • @johnleorid

    @johnleorid

    Жыл бұрын

    I made a video on that topic and people seem to like it. It focuses more on content loading and workflow.

  • @ploopploop
    @ploopploop Жыл бұрын

    Very interesting and insightful, thank you for sharing this!

  • @gamheroes
    @gamheroes Жыл бұрын

    Practical and clear explanation!

  • @JesusNoland
    @JesusNoland Жыл бұрын

    Thank you for explaining your optimization process!

  • @ronjart
    @ronjart Жыл бұрын

    Great talk, thank you so much for sharing this valuable information 🙏

  • @bhaumikpatel4959
    @bhaumikpatel4959 Жыл бұрын

    Thanks for this fantastic talk, very useful!

  • @joelbedard7350
    @joelbedard7350 Жыл бұрын

    This game is free on Epic right now too! Nice timing.

  • @hellovagim

    @hellovagim

    Жыл бұрын

    Yup just downloaded it yesterday! Haha

  • @richiebee33

    @richiebee33

    Жыл бұрын

    They're letting Unity games on their store, now?

  • @KhuramSaddique-kg9gm
    @KhuramSaddique-kg9gm Жыл бұрын

    Informative and helped me to learned lots of things that are done during game development process specially optiization.

  • @slick3d392
    @slick3d392 Жыл бұрын

    Excellent presentation.

  • @suryakamalnd9888
    @suryakamalnd9888 Жыл бұрын

    Amazing video bro

  • @mehmedcavas3069
    @mehmedcavas3069 Жыл бұрын

    really nice talk and learned tons of new things. have to check out these profillers. I only knew about the normal profiler and frame debugger

  • @gabdejesus4013
    @gabdejesus4013 Жыл бұрын

    That's some really nice tooling.

  • @simonjkendrew
    @simonjkendrew Жыл бұрын

    Great presentation

  • @thekite3h
    @thekite3h Жыл бұрын

    Others solve Foliage in a much simpler way. Essentially alpha cutoff disables earlyZ. This is why you think depth culling is disabled. However, if Ztest equal is used in the gbuffer pass or draw pass after depth prepass, it can be used by activating alpha cutoff and earlyZ. But in the end, high-resolution texture sampling in detph prepass creates a bigger overhead than that. So other developers use SDF textures for alpha cutoff to minimize this overhead. In the meantime, many developers have been talking about the same thing at GDC, but it's just amazing that there are still developers who don't know. If you search for Horizon Zero Dawn Foliage, there is an easy-to-understand GDC lecture.

  • @tamasbella3395
    @tamasbella3395 Жыл бұрын

    Excellent presentation. What caught my ears is the decision to turn from alpha-cutout to opaque foliage as we are developing SW for devices with extremely poor fill-rate with high resolution. I don't really understand how it could have a major impact on performance. In Unity rendering order is determined by the render queue and both opaque and alpha-cutout materials are rendered in front-to-back order by default (if not, you can force it by explicitly setting it on the material). Both write Z-buffer so occluded pixels are not rendered multiple times as they would with alpha blending. Actually, in some cases we do fake alpha blending with dithered alpha cutout and performace is just as good as with opaque material. Of course, occlusion culling does not work in these cases but that was not the problem in your case if I understood you correctly.

  • @ComputerLunch
    @ComputerLunch Жыл бұрын

    Great work

  • @dertom1895
    @dertom1895 Жыл бұрын

    "Discovery based game development...." I can absolutely relate to this term 🤩👍

  • @mrjohncrumpton
    @mrjohncrumpton Жыл бұрын

    Thank you for sharing behind the scenes of the game. I didn't realise how much thought and tools went into creating the island. What assets could have made this easier?

  • @androider1412

    @androider1412

    Жыл бұрын

    I think "World Streamer" would help the stream divided world. "GPU Instancer" and "Amplify Impostors" would help for handling lots of objects. And "Interactor" for creating easy interactions.

  • @xmetax
    @xmetax Жыл бұрын

    This was a very enjoyable game to play

  • @tatoforever
    @tatoforever Жыл бұрын

    Very nice presentation. I just feel sorry for them devs having to write almost an engine within an engine because built-in Unity tools won't scale to large open world games. Btw, the looks gorgeous, grats!

  • @Rogueixpresents

    @Rogueixpresents

    Жыл бұрын

    thats why they should've used Unreal engine, unity is g ood for toy cute games, Unreal is a big engine that can do much more complex words in a easier way.

  • @luisbocanegra3483

    @luisbocanegra3483

    11 ай бұрын

    @@Rogueixpresents Sons of the Forest was made in Unity, just saying :)

  • @kingconstantinusthesadisti133

    @kingconstantinusthesadisti133

    9 ай бұрын

    ​@@Rogueixpresentsescape from tarkov?

  • @impheris
    @impheris Жыл бұрын

    very useful info

  • @TorQueMoD
    @TorQueMoD Жыл бұрын

    @21:23 Yeah, it's crazy how overdraw is a real performance killer. In my experience geometry for foliage is always faster. Granted, I'm not targeting mobile, but still.

  • @SVAFnemesis
    @SVAFnemesis Жыл бұрын

    alba is one of the most beautiful lowpoly game out there.

  • @knightoftheblood1841
    @knightoftheblood1841 Жыл бұрын

    Title: How to build a performant Open-World Game Expectation: Using Unity built-in tool Reality: Make your own tool

  • @TrevorNims
    @TrevorNims Жыл бұрын

    I'm sure there must have been some reason you made the camera the way you did - but my first thought to solve the double rendering issue would have been to make the camera just a frame, and you're literally looking through it at the same render.

  • @Borszczuk
    @BorszczukАй бұрын

    Thanks for interesting talk. The "mobile camera" feature @26:11 - What you see on mobile screen it's exactly the same scene you see normally w/o it, just smaller. So why couldn't you just render the main world to a texture, then scale it down and clip for the mobile? That's should be far faster I guess? What do I miss here? Also where can I find the other talks announced at the end of this video? I'd love to hear mode tech details

  • @TYNEPUNK
    @TYNEPUNK Жыл бұрын

    Great video, I am also making an open world game. I would like to know what you mean by "weight of animators" - I have 250 npcs going around and the animators are the same whether you are close or far away, I am assuming you used some sort of cut down animator somehow? or do you just mean literally turn off the animators.

  • @richiebee33
    @richiebee33 Жыл бұрын

    As one of the devs on the old Spider-Man 2 game, when he was talking about the billboard trees not being performant, I immediately started screaming "ALPHA!!!" My wife was worried about me 😂

  • @GameDevEFacil
    @GameDevEFacil Жыл бұрын

    Unity is really amazing.

  • @AntonQvarfordt

    @AntonQvarfordt

    Жыл бұрын

    Are you a bot?

  • @GameDevEFacil

    @GameDevEFacil

    Жыл бұрын

    @@AntonQvarfordt lol why?

  • @LCStudiosMC

    @LCStudiosMC

    Жыл бұрын

    @@GameDevEFacil some people thinks unity is bad recently

  • @deepfakescoverychannel6710

    @deepfakescoverychannel6710

    Жыл бұрын

    @@LCStudiosMC perhaps they are c++ dinosaurs

  • @GameDevEFacil

    @GameDevEFacil

    Жыл бұрын

    @@LCStudiosMC only the unreal whor think that. Unity has been improving a lot. It's the only option to serious GameDev right now

  • @Ecker00
    @Ecker00 Жыл бұрын

    Great talk! Using Houdini for non-destructive and interactive terrain generation in-engine might be something to consider. The home made solution seemed neat, but quite limiting.

  • @morganlak4337

    @morganlak4337

    Жыл бұрын

    Do you have any resources you could link about this? I'm interested in learning

  • @noadschannel3577
    @noadschannel3577 Жыл бұрын

    Have u used task based async programming?

  • @nankinink
    @nankinink Жыл бұрын

    At 14:00, the "discovery based approach" works fine for low-scale games, but it's the quickest path to spaghetti-code in big games, making it hard to add new features. My own experience. Try to plan the game ahead, at least the core game design before starting the development. So you at least know how to structure. Although... if the spaghetti-code wont be touched, it's ok i guess.

  • @Alphasoldier

    @Alphasoldier

    Жыл бұрын

    You won't touch the spaghet code until you have to optimize, and then it'll be hours of tears.

  • @nankinink

    @nankinink

    Жыл бұрын

    @@Alphasoldier or if your new feature depends with the old spaghettified!

  • @micmacha
    @micmacha Жыл бұрын

    I think we've all had our "Koopa's Submarine" moments...

  • @Texellent
    @Texellent Жыл бұрын

    Just got my copy from Epic Games Store! Will play with my 3.5 y.o . Thanks

  • @RADkate
    @RADkate Жыл бұрын

    and this kids, is why you optimize your game from the begining

  • @Maskedmous
    @Maskedmous Жыл бұрын

    Nice job on the game. It shows that profiling is always important. But it also shows that Unity is still lacking open-world systems to help developers create these type of games. Unity is a great engine but often enough you have to go through lots of hoops and make custom systems to get things to work performance wise. Unity needs more engine developers in several areas.

  • @egunan
    @egunan Жыл бұрын

    21:47 what do you mean "transferred normals"?

  • @sleeplessdev7204

    @sleeplessdev7204

    Жыл бұрын

    It means calculating the normals (finding "up" at each vertex) for a low-resolution version of a model, and applying them to a high-resolution version of the same model. In effect achieving a high res appearance of the geometry, with a low res normal map. The down side of this technique is it can lead to inaccuracies in how light interacts with the model and shader artifacts.

  • @rogercabo5545
    @rogercabo5545 Жыл бұрын

    Does the goal was to make it work on every old laptop?

  • @AntonQvarfordt
    @AntonQvarfordt Жыл бұрын

    Yea, man. I was doing a game that was even dealing exclusively with 2D sprites - and even then, having just semi-transparent sprites on top of other sprites, etc, just completely wrecked performance on phones. It makes sense that on a rendering level that having ambiguity around what's visible and what's not is going to mean having to do a lot more calculations. But maybe there could be some faster or more specialized way of doing these calculations?

  • @homemacai
    @homemacai Жыл бұрын

    Awesome talk!

  • @majort9703
    @majort9703 Жыл бұрын

    Well unfortunately using Unity Terrain Tool without major modifications is simple not recommended for a game like this size. Like he showed in the video.. This game has a very stylized look. What he didn't even touch on are creating stylized Terrain Shaders. For this look you need to create your own Terrrain Shader which behaves differently than any normal Shadergraph Shader. Really painful to do ( not impossible ) in shadergraph. You will hit the node limit very fast. Then you have to get rid of the painting textures blending mode to get more sharper edgers when Texture Painting. Then you have to apply your own shader. It can get trickery and you need to create your own Texture Painting Process because Unity doesn't like it when you change that and won't apply youre Texture Paints to the Terrain. Terrain Tool can be great to get one specific kind of look. Everything else will take some weeks of your time.

  • @AntonQvarfordt

    @AntonQvarfordt

    Жыл бұрын

    I'm guessing that using the terrain system probably does a lot of things for you in terms of performance when rendering trees and detail objects and what not. But honestly, just setting it up with a relatively basic custom terrain workflow I'm sure you could implement relatively equivalent performance optimizations but with the quite huge benefit of maintaining complete control of the system - and avoiding finding out months down the line that the system is kneecapping you on a lot of the things that you're aiming to do. Using the terrain system means subordinating yourself to something that you ultimately can't really control and that might not share your goals in terms of what's optimal.

  • @sameera_viraj_K
    @sameera_viraj_K Жыл бұрын

    You could have used the Camera culling system also to hide and disable objects that is not in view i guess 🙂

  • @hammerofjustice
    @hammerofjustice Жыл бұрын

    Sadly no information on how you dealt with occlusion culling baking after world generation

  • @user-gb6vn5kv5w

    @user-gb6vn5kv5w

    Жыл бұрын

    Тебе нужна не статическая окклюзия, а динамическая. Посмори на роадмапу, там есть пост об этом. Я думаю будет реализовано в unity 2022 lts, весной, наверное)

  • @juicedup14
    @juicedup14 Жыл бұрын

    more vids like this, unity. we don't want metaverse crap

  • @LeGustaVinho
    @LeGustaVinho Жыл бұрын

    I watched the whole video thinking: "Unity was not made to make Open World games, they should have made it in UE5"

  • @NehezTheWrackful

    @NehezTheWrackful

    5 ай бұрын

    Its not...they had to make tons of custom systems, where in UE u just slap World Partition and u are done :). You have landmass, pcg, automaterial (very simple to wire in material editor) and so on :).

  • @sliwilly
    @sliwilly Жыл бұрын

    "this project repesented two and half years of defelopment" Arabic words is reveresed🙂 31:57

  • @SAMACSTUDIOS
    @SAMACSTUDIOS Жыл бұрын

    "We couldn't use unity terrain, so we built our own non-destructive terrain renderer and tools" "We also built our own foliage rendering system" "We also built our own LOD system that uses burst" "We also built dozens of custom analysis tools" Ah yes, welcome to Unity development. Want to make a game? Prepare to spend 70% of development time on tools since Unity couldn't be bothered developing them.

  • @maxjohnson808

    @maxjohnson808

    Жыл бұрын

    😭😭😭😭😭😭😭😭

  • @BeatleGeuse_

    @BeatleGeuse_

    Жыл бұрын

    This is kinda sad. Any advice for someone who's trying to start out? I have lots of pages on how I want my game to be, but I got stuck on unity terrain system because it's tricky to get this stylized art style. I'm a programmer by the way, so I choose unity because of C# instead of unreal visual scripting.

  • @SAMACSTUDIOS

    @SAMACSTUDIOS

    Жыл бұрын

    @@BeatleGeuse_ Unreal Engine supports c++, if that's an option for you. For terrain in unity I don't really have an answer. There isn't really a good workflow available in unity at the moment

  • @LtdJorge
    @LtdJorge Жыл бұрын

    Gamefreak could learn a thing or two...

  • @artyquantum7283
    @artyquantum7283 Жыл бұрын

    The more i listen to these talks the more i am getting convinced that Unity is still a child's play in front of Unreal. Who would want to make an open world game like skyrim or witcher if such a small polygon open world is a pain in Unity.

  • @houtamelocoding

    @houtamelocoding

    Жыл бұрын

    Unity can do the trick when it comes to 2D and small 3D games, trying to make anything above that is masochism.

  • @SozINh
    @SozINh9 ай бұрын

    the big triple AAA studios definitely are not the best at what they do. They just have the most money from flooding the gaming industry with mediocre product to hire the most people to do the most useless things instead of finding a few passionate and skilled people to put together something fun, people care more about gameplay. The more time you spend on random fancy things the less time gets spent on gameplay, thats how the formula goes, AAA studios and big names have a handful of people overdoing 1 task, which means the most of the ideas dont make it into the game because they've already sacrificed most of their gameplay and ideas so that they dont anger the other team members who are too busy making sure a stone in the corner of the map is facing left at 33.6 degrees not 33.7.

  • @dclxviclan
    @dclxviclan Жыл бұрын

    Kids love this, i belive 👽🖖❤🧡💛💚💙💜🤎🤍

Келесі