Unite 2016 - Tools, Tricks and Technologies for Reaching Stutter Free 60 FPS in INSIDE

Поделиться
HTML-код
  • Опубликовано: 16 янв 2025

Комментарии • 76

  • @ZoidbergForPresident
    @ZoidbergForPresident 8 лет назад +24

    0:00 Introduction
    1:53 Architecture
    16:18 Inside Tools
    28:34 Scripting Performance

  • @JohnDaniels
    @JohnDaniels 10 месяцев назад +1

    Awesome!! Thank you! I am working on a seamless one level game and this is so helpful.

  • @CynicatPro
    @CynicatPro 8 лет назад +59

    People need to watch the last part about scripting tips. Its so good!

  • @TanukiDigital
    @TanukiDigital 8 лет назад +144

    I think Unity needs to watch this presentation themselves :D

    • @soviut
      @soviut 8 лет назад +9

      I'm sure they already know all about this internally or from working directly with Playdead, but as is the case with any large software project, it can't all get done instantly. What may seem like obvious optimizations to you don't matter to the person who wants physically based shaders or a better audio engine, for example.

    • @youtubesuresuckscock
      @youtubesuresuckscock 6 лет назад +3

      So basically it's more difficult to write high performance games in Unity than it is just writing them in C or C++. Awesome engine!

    • @klarnorbert
      @klarnorbert 4 года назад +4

      @@youtubesuresuckscock They fixed 99% of these issues back in 2017, so you're safe.

    • @milktea0001
      @milktea0001 3 года назад +1

      @@youtubesuresuckscock unity is the best game engine right now, I know it was so many issues back then, but it's alright now

  • @illsaveus
    @illsaveus 4 года назад +18

    Honestly the fact that Unity does not actually make games is a HUGE handicap for them. When he said that, it really resonated with me.

  • @The28studio
    @The28studio 8 лет назад +4

    Congrats on winning best art direction , well deserved

  • @andidroid6465
    @andidroid6465 8 лет назад +22

    "Scripting Performance" at 28:32 !!!!! Awesome ! You have to see!

  • @Xarbrough
    @Xarbrough 8 лет назад +5

    Great info! The first half of the talk felt a little long, but still good information in it. The scripting part was paced perfectly and also had great tips. Thank you!

  • @Radial9Gaming
    @Radial9Gaming 7 лет назад +22

    Unity need to get all these game devs that are optimizing their shit and work together to improve performance immensely

  • @yksnimus
    @yksnimus 7 лет назад +15

    What we learned today? Use unity for the editor only, the rest you redo when possible.

  • @soviut
    @soviut 8 лет назад +9

    The profiling tools (especially the historical ones) are the kind of large-grained analytics that nobody considers until they're neck deep in performance issues and wondering why something that ran just fine last build is broken now. Making decisions based on data, instead of guessing, will save you so much time, money and pain.

  • @minichimera
    @minichimera 7 лет назад +2

    This is great, thank you guys at Playdead!

  • @zorochii
    @zorochii 4 года назад +13

    I'd love to know how some of these optimizations stand as of last versions of Unity, some seem pretty useable no matter the version (reducing the amount of vector maths and stuff), but some others like the Update and FixedUpdate, I'd like to know if that's still the case, if it still holds up the same or if there's been any work done on it. I'm kind of sure there will always be some overhead, but wondering if it got reduced, or not.

    • @w0nnafight
      @w0nnafight 2 года назад +4

      I know its an old comment, but in case anyone is wondering, most of these things got optimized in the latest versions of unity

  • @Bigboi0330
    @Bigboi0330 8 лет назад

    Last presentation was the only thing I can for :)

  • @forestrf
    @forestrf 2 года назад +1

    From 2016 and it's now on Nov. of 2022 when we finally got SetLocalPositionAndRotation(). At least we got it, took a while.

  • @macdx2815
    @macdx2815 5 лет назад +3

    What are those sub-scenes exactly? An actual, just small scene? A prefab?

  • @razzraziel
    @razzraziel 6 лет назад +6

    these optimizations are the reason why most devs using their inhouse engines and c++. its valid for almost all ready to use general products. for example you cant just buy an asset from store and hope for the best, you have to optimize for your specific needs. great talk btw, i wonder how many changed in 2018.3

  • @Wowbagger84
    @Wowbagger84 7 лет назад +6

    How much of the script optimizations are fixed or going to be fixed by unity?

  • @Lilithe
    @Lilithe 7 лет назад +1

    Am I the only one who kept hearing bounds colours? When he finally spelled it on a slide I was like, "OH! That makes FAR more sense."
    XD

  • @lintrami
    @lintrami 8 лет назад

    Great job guys!

  • @ewwitsantonio
    @ewwitsantonio 3 года назад +2

    Can someone help me understand why you can cache Time.deltaTime? Doesn't it need to update every frame?

    • @martinleidel
      @martinleidel Год назад

      Yes it does. But if you use it several times in an inner loop within the same frame, it's better to read it once and use that cached value instead of calling Time.deltaTime multiple times within the same frame. Not sure that's still a thing today with the latest Unity versions though but as there is still that C#/C++ bridge I guess it is.

    • @martinleidel
      @martinleidel Год назад

      Yes it does. But if you use it several times in an inner loop within the same frame, it's better to read it once and use that cached value instead of calling Time.deltaTime multiple times within the same frame. Not sure that's still a thing today with the latest Unity versions though but as there is still that C#/C++ bridge I guess it is.

  • @mcdev6868
    @mcdev6868 7 лет назад +5

    A year after SetLocalPositionAndRotation doesn't seem to be available.

  • @JFrameMan
    @JFrameMan 6 лет назад +3

    Anybody got tips on creating your own update functions? Do you use coroutines to find out when each frame ends?

    • @Aladato
      @Aladato 4 года назад +1

      Give the manager a list of behaviours that need to know when the frame ends and have it notify them the same way it does for the update.

  • @In-N-Out333
    @In-N-Out333 5 лет назад +2

    Sorry for the noob question, but what does he mean by event subscriptions being expensive? Is he talking about a function subscribing to a delegate?

    • @dyemos
      @dyemos 5 лет назад +1

      Hmmm, I feel he may refer to Unity Events, which rely heavily upon reflection?

  • @dino339
    @dino339 7 лет назад +9

    it's funny.. some of scripting tips mentioned are amazing.. these same tips.. i found overtime some devs in unity forums saying those little changes in code don't matter much.. (focus on other things)
    i guess they were amateurs.. everything matters.. and those little things can have a toll on performance if they stack together..

  • @JohnDaniels
    @JohnDaniels 10 месяцев назад

    I love "Foreach"!!, no wait, I love get all actors of class.

  • @AndreaSequenzia
    @AndreaSequenzia 8 лет назад +3

    Where can I find the slide?

    • @KristianKjems
      @KristianKjems 8 лет назад +12

      docs.google.com/presentation/d/1dew0TynVmtQf8OMLEz_YtRxK32a_0SAZU9-vgyMRPlA

    • @AndreaSequenzia
      @AndreaSequenzia 8 лет назад +2

      Thank you for sharing your good work! Playdead's are the best :D

    • @best-tof
      @best-tof 8 лет назад +1

      One thing that has puzzled me since I've watcher your talk is about the sub scenes: are the sub scenes actually prefabs (or similar?) or actual scenes that are loaded additively or are all subscene objects always present, but deactivated, in the main scene?

    • @ZoidbergForPresident
      @ZoidbergForPresident 8 лет назад

      You can load additional scenes in Unity now, I think that's what they've used.

  • @shihmeng91
    @shihmeng91 6 лет назад +1

    anyone can explain to me what he means by build-time at 15:30 ??

    • @DasAntiNaziBroetchen
      @DasAntiNaziBroetchen 6 лет назад +1

      Build time is before you run the game. When you "build" the game, so you can run it later. AKA an offline process.

  • @autorotate1803
    @autorotate1803 5 лет назад +1

    Now there is a method to set rotation and position (SetPositionAndRotation) but not for setting local postion

  • @DommageCollateral
    @DommageCollateral 3 года назад

    how does the voxel grid registeres objects? collision detection?

  • @clalqurbanov3208
    @clalqurbanov3208 7 лет назад +2

    Wow, I didn't know Demon Kane works as programmer after WWE

  • @inkajoo
    @inkajoo 7 лет назад +12

    Yeesh. They might as well have made their own game engine...

  • @faythe03
    @faythe03 5 лет назад +3

    How much of this is relevant with Unity 2018/2019. Does anybody know?

  • @PavelShevaev
    @PavelShevaev 7 лет назад

    Great info especially about recording profiling data! Guys how do you record that stuff?
    Profiling.Profiler.logFile = "profile.log";
    Profiling.Profiler.enableBinaryLog = true;
    Profiling.Profiler.enabled = true;
    Is this the way to go?

  • @HaykAmirbekyanTKD
    @HaykAmirbekyanTKD 5 лет назад

    what of the player is constant;y spinning his view frustum around? doesn't that cause unnecessary loading and unloading of assets which can hinder performance?

    • @forasago
      @forasago Год назад

      The player doesn't control the camera in the game they're talking about. The camera pretty much just follows player movement, and that movement is slow.

  • @nin10dorox
    @nin10dorox 5 лет назад

    39:32
    Why can't they overload the vector math operators to do what they write out in their code? Wouldn't you get the best of both worlds?

    • @sasuke2910
      @sasuke2910 5 лет назад +1

      Probably because it still means calling a function, or making sure inlining is working correctly.
      You also kinda create a non-compliant version of Vector3 that has weird behaviour.
      I'd guess that blowing it all out is easier than messing with compiler settings and overloaded operators.
      It seems like, ideally, you'd want to create your own vector type with that self modifying behaviour.

  • @Exbleative
    @Exbleative 8 лет назад +2

    I wonder how crazy they'd have needed to go with optimizing if they'd not released on consoles, or weren't so bothered with slight fps hitches and/or loading screens?

  • @GameDevASMR
    @GameDevASMR 8 месяцев назад

    I wish Playdead would have made all those amazing tools available before moving to Unreal Engine, even paying on the Asset Store. But maybe too difficult if most of those tools were relying on Unity source code changes :/.

  • @toreole
    @toreole 4 года назад +2

    "unity source code changes"
    ah yes the forbidden fruit

  • @Kolyasisan
    @Kolyasisan 5 лет назад +1

    But wait, the vector math point doesn't make sense at all... Vector multiplications should be automatically done on SIMDs in parallel to actually save on performance. Why exactly is it faster when you create 3 separate mult ops for each of the vector elements instead of just doing one vector mult op? Is it because you need to create a Vector3 struct internally to do that or is there some other reason?

    • @moe4b
      @moe4b 3 года назад

      Most likely Unity's Mono & IL2CPP runtimes don't make use of those instructions

  • @NunSuperior
    @NunSuperior 8 лет назад +7

    If you want source code examples I have a Unity project demonstrating them here : bitbucket.org/GarretPolk/unity-script-performance/overview

  • @jackchu5453
    @jackchu5453 8 лет назад +3

    I wish someone would've asked about coroutines.

    • @TheMeanArena
      @TheMeanArena 8 лет назад +2

      MEC is pretty amazing dealing with coroutines and per frame garbage generation

    • @terrynguyen5609
      @terrynguyen5609 7 лет назад

      What was the name of the post? I was looking through the technology section but couldn't find anything.
      The closest thing I found was "10000 UPDATE() CALLS" which discusses the internal event loop and the pros and cons of running things via Update() vs. creating your own event loop to control the game with.

    • @nikakasradze7344
      @nikakasradze7344 7 лет назад

      hm, sorry I just wrote very stupid comment, thanks for bumping this. Yes I had that article in mind. I guess I should have written 10k Updates vs 1 Update calling 10k ManagedUpdates. I've deleted my old comment

  • @BeLuckyDaf
    @BeLuckyDaf 8 лет назад

    Sorry, I could catch up, why could not they use localposition? What was the problem there?

  • @Sarseth90
    @Sarseth90 4 года назад

    Btw after third presentation - and specially after, dont use update. I'm like... "drop unity, find engine that can render only graphics".

  • @jan050375
    @jan050375 7 лет назад +9

    if a simple sidescroller requires a year of optimizing, i'm really scared to make a 3D game in unity. on the other hand, UE4 is a real pain in the butt and constantly blocking my workflow and i'm sure i'll never get anything done.

  • @angle2890
    @angle2890 7 лет назад

    WWHAT ? SO HOW TO EXPOSE SETLOCALPOSITIONANDROTATION ??

    • @svozmas
      @svozmas 7 лет назад +2

      Paying for it, it's the only way you can access Unity source code.

    • @thomaskey7388
      @thomaskey7388 7 лет назад +1

      I believe SetPositionAndRotation(Vector3, Quaternion) is now exposed, at least as of 5.6. Not sure about SetLocalPositionAndRotation(). See docs.unity3d.com/560/Documentation/ScriptReference/Transform.SetPositionAndRotation.html

    • @SmartK8
      @SmartK8 7 лет назад

      In older versions you should - theoretically - be able to cache reflection (it ignores privacy modifiers). So cache MethodInfo and then just Invoke it manually.

  • @Sarseth90
    @Sarseth90 4 года назад

    39:52 visual manipulation :P I really like the ideas, but I dont like that you've changed street fighter guy size, cause it's making visual mislead. This should not be done, ever. Cause we're losing the scale there. Why? Check getdolphins page for "worst graphs of YYYY".
    But I love the content, I mean all those things you've made there.