Search Unity

most used technology

Discussion in 'Scripting' started by Masoodt2011, Jul 3, 2022.

  1. Masoodt2011

    Masoodt2011

    Joined:
    Sep 7, 2020
    Posts:
    4
    Hello guys.

    I had some interviews and found out there are some technologies or tools that are most used in AA or AAA companies.
    I noticed them before but I never thought they are useful.
    Let me share some of the titles:
    1- zenject
    2- uniRx
    3- Unitask
    4- MVC /MVP/ MVVM
    5- Scriptable Objects

    I just want to ask you what are the other most used technology in big companies.
    for example, for MVVM I need good data binding tools but I don't know how the big companies do that. I know that some of them make it themselves but if you know about the technology or any most used tool, let us know and please mention them.
     
  2. Kurt-Dekker

    Kurt-Dekker

    Joined:
    Mar 16, 2013
    Posts:
    38,726
    We just use ScriptableObjects. The only concern is reasoning how a shared ScriptableObject will be serialized when you divide your content up for late delivery using something like Addressables.

    Zenject is a nightmare in Unity. We tried it and it was a complete disaster to every common workflow.

    The main reason Zenject caused us problems is because the code is not the application. Unity is the application:

    https://forum.unity.com/threads/res...-problem-when-using-ioc.1283879/#post-8140583
     
    Ryiah likes this.
  3. FaithlessOne

    FaithlessOne

    Joined:
    Jun 19, 2017
    Posts:
    320
    Dependency injection can be considered a best practice. Sadly Unity itself has nothing to offer in this regard. Instead you can fiddle with the dependencies in the editor and/or old school in your code. If you want to use DI it is not that advisable to use one of the C# DI frameworks out there because they do not include the Unity specific part, so you had to put much additional effort into the DI framework to be really useful. But here comes Zenject - a Unity specific DI framework.

    But as Kurt-Dekker states they had bad experiences. Because by using Zenject dependencies are defined in code, but they wanted to define the dependencies in Unity. Thats a problem with Zenject. An approach would have been implementing some editor extensions to configure and manage the dependencies in the Unity editor for Zenject. But this means additional effort and may not work as desired for their workflow.

    I personally use Zenject in my game project and I am mostly enthused about it because it helps me organizing the dependencies in a consistent and easy to manage way. But I am a coder, so sure I love manging dependencies in code. I find it the most important technology to use aside from Unity itself.

    I also totally understand that Zenject in general is on the list above. It simply helps developing a clean coded and structured game but it is not an axiomatic prerequisite.
     
  4. Kurt-Dekker

    Kurt-Dekker

    Joined:
    Mar 16, 2013
    Posts:
    38,726
    TOTALLY disagree. Make a special "testing" scene or "debug" scene or whatever, leave it turned off until you need it. Done.

    Screen Shot 2022-07-03 at 12.16.06 PM.png

    OR.. use two different ScriptableObjects: one for testing, one for release

    OR... have a config file that drives behaviours of singletons and other service providers.
     
    Ryiah likes this.
  5. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,175
    passerbycmc and Kurt-Dekker like this.
  6. passerbycmc

    passerbycmc

    Joined:
    Feb 12, 2015
    Posts:
    1,741
    agreed, personally i do DI in most of my work both games and general programming but find DI frameworks just complicate things and make the flow harder to follow