Search Unity

  1. Dismiss Notice
  2. All Pro and Enterprise subscribers: find helpful & inspiring creative, tech, and business know-how in the new Unity Success Hub. Sign in to stay up to date.
    Dismiss Notice

How do you organize your project to reduce its complexity and size?

Discussion in 'General Discussion' started by Rod-Galvao, Apr 13, 2018.

  1. Rod-Galvao

    Rod-Galvao

    Joined:
    Dec 12, 2008
    Posts:
    207
    Hello there,

    You just bought a lot of assets and now you want to put them together to create your game.
    But you end with 50+ gigabytes of assets like SFXes, musics, animations, textures, models etc.
    If you put everything on a single project Unity takes ages to import, search assets or compile/build the game.

    How do you organize so much data and complexity?
    Also, how do you share this mammoth with your team? Specially with those who don't need to deal with code or libraries, like artists.

    I thought about separating art assets to a "prefab factory project" and bring the prefabs, using unitypackages, to the main project after that.

    I also thought about a solution like Projeny but it deals with symbolic links and may not be versionable.

    What is the best approach? What do you suggest instead?

    Regards,
    R.
     
  2. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    11,381
    Hi,

    In a large project, use AssetBundles and DLLs. Make one or more code projects that compile to DLL(s) in your main project. Similarly, make any number of art projects that generate AssetBundles in your main project.

    This way you can make your main project as small as a single "boot" scene with some DLLs and AssetBundles.

    Schell Games' Unite presentation (slides here) was what sold me on this approach.
     
    Kiwasi, Mauri, Rod-Galvao and 3 others like this.
  3. BIGTIMEMASTER

    BIGTIMEMASTER

    Joined:
    Jun 1, 2017
    Posts:
    3,754
    This is a bit beyond my knowledge, but assuming some of these assets you purchased are tools that generate content, you can leave those in a separate project, use them to produce the assets you need, and then export the final result (along with any dependencies).

    Example 1 : You use Gaia to make a terrain with splat maps. Export the terrain and maps, along with the necessary textures, to your final project.

    Example 2 : You have a huge library of textures and vegetation models and materials. You want them all there to pick and choose from, but once you have played around enough to find your bare essentials, you only export those to your level builder project (which may be separated from your prototype mechanics project, and so on).

    Pretty obvious and I think you are already doing this, but maybe it'll help.
     
    Antypodish and Rod-Galvao like this.
  4. Rod-Galvao

    Rod-Galvao

    Joined:
    Dec 12, 2008
    Posts:
    207
    Thanks.
    Do you automate the bundle's generation somehow?
     
  5. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    11,381
    Yes, but I use a tool that's unfortunately deprecated and no longer available. If you search the Asset Store for "assetbundle" you can find a number of tools to help manage assetbundles.
     
    Rod-Galvao likes this.
  6. Rod-Galvao

    Rod-Galvao

    Joined:
    Dec 12, 2008
    Posts:
    207
    Was it uTomate?
    Do you have a suggestion?
     
  7. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    11,381
    Yes.

    I don't have personal experience with any of the others on the store. Hopefully their reviews will help you make a good decision.
     
    Rod-Galvao likes this.
  8. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,314
    TonyLi and Rod-Galvao like this.
  9. Rod-Galvao

    Rod-Galvao

    Joined:
    Dec 12, 2008
    Posts:
    207
    Thank you very much. Very interesting.
     
  10. tuongvu

    tuongvu

    Joined:
    Oct 27, 2015
    Posts:
    2
    Hi Rod-Galvao,

    Short version: I am the author of Upkit, a free and open source tool that may help you solve your problem.
    Github: https://github.com/finderseyes/upkit

    Long version: We also faced your issue too, and created Upkit to solve it. Although our projects are not dozen of GBs, they easily take a few GBs and eat a lot of (network, time) bandwidth. Cloning, opening, building seemed like forever. Even for prototyping, the temporary assets take a large portion of the project space. We wanted to quickly swap packages without having to actually commit them into the repository.

    Initially we decided to use Projeny, and split up the project into different packages, put them on Nuget and Git, then clone them separately, on demand. We had to come up with a tool - Upkit - to let us do this. Yet we kept adding features to the tool and now it replaces Projeny and becomes our project generator and dependency manager. It has a cool feature that let you resolve packages directly from Nuget and Git.

    Regarding to versioning with links, it should not be an issue if you:
    • Only store assets/code in your repository
    • Split your assets/code into smaller units, and put them in multiple Git or Nuget packages
    • Use Upkit to generate the Unity project after cloning/updating your dependencies
    Hope this helps.
     
    Rod-Galvao likes this.
unityunity