Skip to main content

Project and package manager for Unity3D

Project description

Upkit — Unity3D project/package toolkit

Upkit is a command line toolkit that helps create/organize your Unity3D projects. With a simple configuration file, Upkit automatically resolves the project dependencies, symbolic-links them and generates a ready-to-use Unity project for you.

For those in a hurry, please go to Getting Started to see Upkit in action.

Why should you use it?

Our usecase

If you are like us, these are what you need when developing a Unity project:

  • Total separation of 3rd party assets, plugins, dependencies from your assets/codes, to reduce the project size.
  • Quick package swapping for prototyping and production.
  • Simple dependency resolving, from Nuget or Git repositories, or elsewhere.
  • Simple configuration.

Limitations of existing tools

At first glance, Upkit shares some similarities with Projeny, which is a great tool that we frequently used in our team. However, as Projeny model imposes a flat, exclusive package hierarchy, off-the-shelf packages do not often work well together. For example, two packages having the same native library folder Plugins/Android will clash. Even when there are no name clashes, Unity-compatible Nuget packages are not easily linked at times.

Unity 2018 officially comes with an easy-to-use built-in Package Manager. As of this writing, however, most of the Asset Store packages are still unavailable in the Package Manager, except those from Unity Technologies. Another drawback with current Package Manager is that we cannot use it for internal cross-project packages. This means that most of the time, we have to fall back to traditional approaches.

Upkit remedies those issues and adds some more tricks

Upkit was initially designed as our solution to the aforementioned limitations, which is a tool sitting between Nuget (dependency resolving step) and Projeny (project linking step) in our pipeline. As our projects evolve, we decided to simplify the whole process by combining the two steps into Upkit, making it even easier to use by adding the following features:

  • Single (YAML) file configuration, for dependency resolving, linking, etc.
  • Link anything with Linkspec ‐ determining how folders, files are linked to your Unity project.
  • Create distributable packages (with Linkspec).
  • Out-of-the-box support for Nuget and Git dependencies.

Getting Started

These instructions will use upkit to create a simple Unity3D project which depends on Newtonsoft.Json on Nuget Gallery.

The source code to this project can be also found under examples/simple-app.

Prerequisites

  • Python 2.7 or above, with pip.
  • (optional) nuget for resolving Nuget dependencies.
  • (optional) git for resolving Git dependencies.

Installation

$ pip install upkit

Step 1: Create Upkit project

Creating a new Upkit project is as simple as:

$ upkit create-package simple-app

Step 2: Edit Upkit config file upkit.yaml

Upkit will create a new folder named simple-app, where you can find upkit.yaml. This file contains all the information Upkit needs in order to create your Unity project. Now, modify it to let Upkit know the project will depends on NewtonSoft.Json:

# upkit.yaml
params:
  project: '{{__dir__}}/project'

links:
  - target: '{{__assets__}}'    
    source: '{{__dir__}}/assets'
    content: ['*']

  - target: '{{__plugins__}}'
    source: '{{__dir__}}/plugins'
    content: ['*']

  - target: '{{__project__}}/ProjectSettings'
    source: '{{__dir__}}/settings'

  - target: '{{__project__}}/Packages'
    source: '{{__dir__}}/packages'

  # Add project dependencies here: 
  - source: 'nuget:Newtonsoft.Json@11.0.2#lib/net35'
    target: '{{__plugins__}}/Newtonsoft.Json'

Notice the second-last line where we instruct Upkit to resolve a Nuget library with nuget: scheme. Yes, it's that simple!

Step 3: Link to create Unity projects

The final step is to generate a Unity project, by calling:

$ cd simple-app 
$ upkit link 

Upkit will take a few seconds to resolve project's dependencies and generate a Unity project under simple-app/project. Open the folder in Unity as a project and you are ready to go.

Documentation

Go to Project documentation

Authors

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

  • This tool uses xmltodict, pyyaml, yamlordereddictloader, and jinja2 under the hood. Thanks to the respected authors for the hard work.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

upkit-0.4.2.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

upkit-0.4.2-py2-none-any.whl (16.3 kB view details)

Uploaded Python 2

File details

Details for the file upkit-0.4.2.tar.gz.

File metadata

  • Download URL: upkit-0.4.2.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.27.0 CPython/2.7.10

File hashes

Hashes for upkit-0.4.2.tar.gz
Algorithm Hash digest
SHA256 d3ed4753b38b634f54f377d059ca997975d074e516272eb9cd45cc2ed39d2dc7
MD5 a31add34028e3893517d9b3236c6a826
BLAKE2b-256 0cc48e53d08472ddea29b8a27db598a7e42807e84b1f975413beb2b7387ed183

See more details on using hashes here.

File details

Details for the file upkit-0.4.2-py2-none-any.whl.

File metadata

  • Download URL: upkit-0.4.2-py2-none-any.whl
  • Upload date:
  • Size: 16.3 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.27.0 CPython/2.7.10

File hashes

Hashes for upkit-0.4.2-py2-none-any.whl
Algorithm Hash digest
SHA256 909e5871bf4feb91609452ab80b7b088fcd7298ea85002397523004c68db8323
MD5 5a85f9fcb1bd8be0c0745a465cfe4660
BLAKE2b-256 f0e2e1e818e984a507ebdce0625a4f9d813d337cdc6c1812b6b2e028dbfb716a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page