Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Open sourced games and bought assets

Discussion in 'General Discussion' started by Dakali, Mar 7, 2020.

  1. Dakali

    Dakali

    Joined:
    Oct 1, 2017
    Posts:
    4
    Hey, I'm developing open sourced games which are public repos for everyone to download. I want to buy some assets from the asset store, but I imagine that those should not be included in the repo commits and should be ignored. How can I gurantee help from the community if I can't share the bought assets? Is there an established workflow already with this case? (like, define the assets that should be imported from the asset store somewhere in the project configuration and each contributor should buy them).

    I understand commiting free assets from the asset store to my Github repos would be ok? Or is that still not correct? I'm interested in hearing your replies.
     
  2. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,554
    Yes, this is correct.

    You cannot. Whoever uses your project will have to buy the assets you used.

    You have an option of developing your version of assets and making it public. (Mit, Zlib, BSD licensed), but that's the extent for it.

    There's no established workflow for that, you can write used assets in a readme or installation instructiosn.

    No, asset store agreement forbids redistribution of ALL assets that use default license, it doesn't matter if they're free or not.

    The exception is assets from asset store which use custom license. There might be something MIT/BSD/ZLib licensed (like UMA). Those can be placed into repo. Anything else should be removed from repository.
     
    Ony likes this.
  3. Balthamet

    Balthamet

    Joined:
    Jan 25, 2014
    Posts:
    56
    Maybe it is just me but creating an open source game that uses a closed source engine seems to kinda conflict with the whole idea of open source.

    Did you give any thought of using something open like Godot? I believe that it supports C# these days.
     
    Ony likes this.
  4. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,554
    It is perfectly fine, as long as you don't try to make your codebase GPL. Because GPL is incompatible with unity license.

    Keep in mind that windows has opensource software, despite being proprietary system.
     
  5. Dakali

    Dakali

    Joined:
    Oct 1, 2017
    Posts:
    4
    Thanks for your replies.

    As pointed out, you can have open source projects using propetary game engines. Simply share the yaml files unity uses and ignore all the boilerplate code it generates. There's a json file with the unity version that should be used.

    Thanks for this, I'm not a license expert so I wouldn't know the corner cases where this applies.

    I think it would be a nice addition to unity. Today I can put the instructions on the readme file, but if I enumerate the dependant assets in the asset store then unity would automatically download those dependencies (giving a warning on paid ones).

    I'll continue to create open sourced games with unity following these standards. I hope there's room in the future to develop this feature.
     
  6. Deleted User

    Deleted User

    Guest

    @OP I would check that the github projects you're using have granted licenses to anyone who downloads them...
     
  7. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,754
    I would consider 3 approaches.

    1. Build your project into dll files, allowing player to replace modules. This way, you don't need share whole game, but relevant parts.

    2. Check if assets can be compiled as dll, if they are not yet and if that can be compliant with its licence.

    VS project can be linked with relevant libraries, even if they are inside the game installed directory. So that can be the route, for partially closed software.

    2. Make game data driven, as much as possible.
     
  8. Deozaan

    Deozaan

    Joined:
    Oct 27, 2010
    Posts:
    707
    In my opinion, if the people you're working with are capable enough to clone a git repository and contribute to the project, they should be capable enough to read the README.md of said repository which you can make sure includes instructions and links to which Asset Store assets to buy/import.
     
    Last edited: Mar 7, 2020
  9. Dakali

    Dakali

    Joined:
    Oct 1, 2017
    Posts:
    4
    The code shared publicly is my own, under Apache License 2.0. The problem is sharing assets from the asset store, the solution I'm implementing now is linking the assets used on the README file, putting all downloaded assets in a third party folder and adding that folder in the gitignore file. This way I instruct contributors to download/purchase the assets in order to contribute to the game.

    The problem is people wouldn't be able to load the project to edit in Unity, am I wrong to think this? Assets are pretty much YAML files, so compiling them into DLL wouldn't be able to import into the Unity editor, right?

    That's the goal.

    Yes, hence my solution in the first reply.
     
  10. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,754
    That is project killer.

    1. People my don't like, or not have Unity and account, to be able access asset store. (probably least of an issue)
    2. People often don't bother downloading dozens of little assets, to be able mods. But probably not major issue either.
    3. Modding people offer mostly free work and won't be willing to spend a dim, on 3rd party assets. Also that leads, they may want to use own assets, causing the game potential issues with licencing.

    4. If not for all above, then major part will be, assets depreciation tendency on Asset Store. Soon no one will be able to mod your game. So big NO-NO.
     
  11. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,754
    Unity YAML that tends to be config files. I.e. scene.
    Any example, of YAML used as third party licenced asset?

    But probably assets from Asset Store you may be using, will include c# and media files? (My guess) Which are most of your concern, in terms of licencing.
     
  12. Deozaan

    Deozaan

    Joined:
    Oct 27, 2010
    Posts:
    707
    I was validating your idea. :)


    An alternative is to just use free assets, like the ones from Kenney. Of course, that assumes the assets are art and not tools.

    I think without knowing specifically what you're trying to accomplish, people might not be able to give very helpful replies.
     
  13. Dakali

    Dakali

    Joined:
    Oct 1, 2017
    Posts:
    4
    My goal is to create open sourced games where closed sourced assets (as in multimedia files, prefabs, terrains, etc...) can be used. If contributors really want to contribute and already have Unity then it's a matter of downloading the right assets in the asset store (or anywhere it needs to be downloaded).

    I know this is tedious and would deter many, but I think it's valuable to release a game where the code is open sourced and people can help coding features and fixing bugs.

    This is an extract of the Ethan character from the standard assets pack:
    Code (CSharp):
    1. %YAML 1.1
    2. %TAG !u! tag:unity3d.com,2011:
    3. --- !u!1 &104036
    4. GameObject:
    5.   m_ObjectHideFlags: 1
    6.   m_PrefabParentObject: {fileID: 0}
    7.   m_PrefabInternal: {fileID: 100100000}
    8.   serializedVersion: 4
    9.   m_Component:
    10.   - 4: {fileID: 424594}
    11.   m_Layer: 0
    12.   m_Name: EthanRightHandRing1
    13.   m_TagString: Untagged
    14.   m_Icon: {fileID: 0}
    15.   m_NavMeshLayer: 0
    16.   m_StaticEditorFlags: 0
    17.   m_IsActive: 1
    18. --- !u!1 &104158
    19. GameObject:
    20.   m_ObjectHideFlags: 1
    21.   m_PrefabParentObject: {fileID: 0}
    22.   m_PrefabInternal: {fileID: 100100000}
    23.   serializedVersion: 4
    24.   m_Component:
    25.   - 4: {fileID: 495782}
    26.   m_Layer: 0
    27.   m_Name: EthanRightHandIndex2
    28.   m_TagString: Untagged
    29.   m_Icon: {fileID: 0}
    30.   m_NavMeshLayer: 0
    31.   m_StaticEditorFlags: 0
    32.   m_IsActive: 1
    33. --- !u!1 &106620
    34. GameObject:
    35.   m_ObjectHideFlags: 1
    36.   m_PrefabParentObject: {fileID: 0}
    37.   m_PrefabInternal: {fileID: 100100000}
    38.   serializedVersion: 4
    39.   m_Component:
    40.   - 4: {fileID: 481360}
    41.   m_Layer: 0
    42.   m_Name: EthanRightHandIndex3
    43.   m_TagString: Untagged
    44.   m_Icon: {fileID: 0}
    45.   m_NavMeshLayer: 0
    46.   m_StaticEditorFlags: 0
    47.   m_IsActive: 1
    48. --- !u!1 &107218
    49.  
    50. <REDACTED>
     
    Deozaan likes this.
  14. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,965
    Check out Unity's Addressables system. One of the ways you can use it is to load assets at runtime that have been built for a different project. With this you should be able to distribute the content without breaking any licenses.

    https://docs.unity3d.com/Packages/c...adContentCatalog_System_String_System_String_
    https://forum.unity.com/threads/res...bles-exported-from-a-separate-project.642793/