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

Поділитися
Вставка
  • Опубліковано 28 тра 2024
  • 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

  • @AntonQvarfordt
    @AntonQvarfordt Рік тому +84

    "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 Рік тому +1

      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 Рік тому +1

      ​@@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 8 місяців тому

      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 8 місяців тому +1

      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 8 місяців тому

      @@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 Рік тому +15

    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.

  • @joelbedard7350
    @joelbedard7350 Рік тому +32

    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?

  • @cosminmahalu9594
    @cosminmahalu9594 Рік тому +3

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

  • @FrotteeVDH
    @FrotteeVDH Рік тому +1

    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!

  • @aleph618
    @aleph618 Рік тому +1

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

  • @biogic9566
    @biogic9566 3 місяці тому

    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

  • @adrianopiro5240
    @adrianopiro5240 Рік тому +2

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

  • @thekite3h
    @thekite3h Рік тому +3

    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.

  • @livelively3845
    @livelively3845 Рік тому

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

  • @JesusNoland
    @JesusNoland Рік тому

    Thank you for explaining your optimization process!

  • @ploopploop
    @ploopploop Рік тому +1

    Very interesting and insightful, thank you for sharing this!

  • @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

  • @rambii.
    @rambii. Рік тому +4

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

    • @johnleorid
      @johnleorid Рік тому +1

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

  • @ronjart
    @ronjart Рік тому

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

  • @bhaumikpatel4959
    @bhaumikpatel4959 Рік тому

    Thanks for this fantastic talk, very useful!

  • @KhuramSaddique-kg9gm
    @KhuramSaddique-kg9gm Рік тому

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

  • @tamasbella3395
    @tamasbella3395 Рік тому +4

    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.

  • @gamheroes
    @gamheroes Рік тому +1

    Practical and clear explanation!

  • @gabdejesus4013
    @gabdejesus4013 Рік тому +2

    That's some really nice tooling.

  • @slick3d392
    @slick3d392 Рік тому

    Excellent presentation.

  • @suryakamalnd9888
    @suryakamalnd9888 Рік тому +4

    Amazing video bro

  • @tatoforever
    @tatoforever Рік тому +54

    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 Рік тому +4

      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 місяців тому +5

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

    • @kingconstantinusthesadisti133
      @kingconstantinusthesadisti133 8 місяців тому +2

      ​@@Rogueixpresentsescape from tarkov?

  • @dertom1895
    @dertom1895 Рік тому

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

  • @SVAFnemesis
    @SVAFnemesis Рік тому +1

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

  • @simonjkendrew
    @simonjkendrew Рік тому

    Great presentation

  • @mrjohncrumpton
    @mrjohncrumpton Рік тому +5

    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 Рік тому +6

      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

  • @ComputerLunch
    @ComputerLunch Рік тому

    Great work

  • @TorQueMoD
    @TorQueMoD Рік тому +1

    @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.

  • @impheris
    @impheris Рік тому

    very useful info

  • @knightoftheblood1841
    @knightoftheblood1841 Рік тому +5

    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.

  • @nankinink
    @nankinink Рік тому +5

    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 Рік тому +1

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

    • @nankinink
      @nankinink Рік тому +1

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

  • @GameDevEFacil
    @GameDevEFacil Рік тому +10

    Unity is really amazing.

    • @AntonQvarfordt
      @AntonQvarfordt Рік тому +2

      Are you a bot?

    • @GameDevEFacil
      @GameDevEFacil Рік тому +1

      @@AntonQvarfordt lol why?

    • @LCStudiosMC
      @LCStudiosMC Рік тому +1

      @@GameDevEFacil some people thinks unity is bad recently

    • @deepfakescoverychannel6710
      @deepfakescoverychannel6710 Рік тому +1

      @@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

  • @richiebee33
    @richiebee33 Рік тому +5

    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 😂

  • @TYNEPUNK
    @TYNEPUNK Рік тому +1

    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.

  • @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

  • @Ecker00
    @Ecker00 Рік тому +2

    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?

  • @Maskedmous
    @Maskedmous Рік тому +4

    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.

  • @RADkate
    @RADkate Рік тому +1

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

  • @micmacha
    @micmacha Рік тому

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

  • @egunan
    @egunan Рік тому +2

    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.

  • @AntonQvarfordt
    @AntonQvarfordt Рік тому +3

    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?

  • @majort9703
    @majort9703 Рік тому +5

    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 Рік тому +1

      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.

  • @rogercabo5545
    @rogercabo5545 Рік тому

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

  • @hammerofjustice
    @hammerofjustice Рік тому +1

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

    • @user-gb6vn5kv5w
      @user-gb6vn5kv5w Рік тому

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

  • @Texellent
    @Texellent Рік тому

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

  • @juicedup14
    @juicedup14 Рік тому +6

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

  • @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 🙂

  • @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 Рік тому +1

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

  • @SAMACSTUDIOS
    @SAMACSTUDIOS Рік тому +7

    "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 Рік тому +3

      😭😭😭😭😭😭😭😭

    • @BeatleGeuse_
      @BeatleGeuse_ Рік тому +2

      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...

  • @homemacai
    @homemacai Рік тому

    Awesome talk!

  • @artyquantum7283
    @artyquantum7283 Рік тому +1

    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 Рік тому +3

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

  • @SozINh
    @SozINh 9 місяців тому

    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 👽🖖❤🧡💛💚💙💜🤎🤍