{"id":13662390,"url":"https://github.com/unity-atoms/unity-atoms","last_synced_at":"2025-05-15T17:04:58.111Z","repository":{"id":37034066,"uuid":"155439499","full_name":"unity-atoms/unity-atoms","owner":"unity-atoms","description":"⚛️ Tiny modular pieces utilizing the power of Scriptable Objects","archived":false,"fork":false,"pushed_at":"2024-08-28T19:34:18.000Z","size":7537,"stargazers_count":1304,"open_issues_count":81,"forks_count":132,"subscribers_count":32,"default_branch":"master","last_synced_at":"2025-05-10T23:55:01.187Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unity-atoms.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-30T18:50:18.000Z","updated_at":"2025-05-10T15:20:08.000Z","dependencies_parsed_at":"2023-02-19T00:01:36.614Z","dependency_job_id":"6837e1ca-d052-4e3f-9459-2aa55ec59791","html_url":"https://github.com/unity-atoms/unity-atoms","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unity-atoms%2Funity-atoms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unity-atoms%2Funity-atoms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unity-atoms%2Funity-atoms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unity-atoms%2Funity-atoms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unity-atoms","download_url":"https://codeload.github.com/unity-atoms/unity-atoms/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254384987,"owners_count":22062422,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T05:01:57.395Z","updated_at":"2025-05-15T17:04:53.103Z","avatar_url":"https://github.com/unity-atoms.png","language":"C#","funding_links":[],"categories":["C#","C\\#"],"sub_categories":[],"readme":"# ⚛️ Unity Atoms\n\n[![openupm](https://img.shields.io/npm/v/com.unity-atoms.unity-atoms-core?label=core\u0026registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.unity-atoms.unity-atoms-core/)\n[![openupm](https://img.shields.io/npm/v/com.unity-atoms.unity-atoms-base-atoms?label=base-atoms\u0026registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.unity-atoms.unity-atoms-base-atoms/)\n[![openupm](https://img.shields.io/npm/v/com.unity-atoms.unity-atoms-fsm?label=fsm\u0026registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.unity-atoms.unity-atoms-fsm/)\n[![openupm](https://img.shields.io/npm/v/com.unity-atoms.unity-atoms-mobile?label=mobile\u0026registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.unity-atoms.unity-atoms-mobile/)\n[![openupm](https://img.shields.io/npm/v/com.unity-atoms.unity-atoms-mono-hooks?label=mono-hooks\u0026registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.unity-atoms.unity-atoms-mono-hooks/)\n[![openupm](https://img.shields.io/npm/v/com.unity-atoms.unity-atoms-tags?label=tags\u0026registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.unity-atoms.unity-atoms-tags/)\n[![openupm](https://img.shields.io/npm/v/com.unity-atoms.unity-atoms-scene-mgmt?label=scene-mgmt\u0026registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.unity-atoms.unity-atoms-scene-mgmt/)\n[![openupm](https://img.shields.io/npm/v/com.unity-atoms.unity-atoms-ui?label=ui\u0026registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.unity-atoms.unity-atoms-ui/)\n[![openupm](https://img.shields.io/npm/v/com.unity-atoms.unity-atoms-input-system?label=input-system\u0026registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.unity-atoms.unity-atoms-input-system/)\n\n_Tiny modular pieces utilizing the power of Scriptable Objects_\n\n## Influences\n\nUnity Atoms is derived from and a continuation of Ryan Hipple's [talk](https://www.youtube.com/watch?v=raQ3iHhE_Kk\u0026t=2787s) from Unite 2017. The original source code can be found [here](https://github.com/roboryantron/Unite2017).\n\n[This](https://www.youtube.com/watch?v=6vmRwLYWNRo\u0026t=738s) talk by Richard Fine is a forerunner to Ryan Hipple's talk during Unite 2016.\n\n## Motivation\n\nThe general approach to building scripts in Unity often generates a code base that is monolithic. This results in that your code is cumbersome to test, non-modular and hard to debug and understand.\n\nUnity Atoms is an open source library that aims to make your game code:\n\n-   📦 Modular _- avoid scripts and systems directly dependent on each other_\n-   ✏️ Editable _- Scriptable Objects makes it possible to make changes to your game at runtime_\n-   🐛 Debuggable _- modular code is easier to debug than tightly coupled code_\n\n## Installation\n\n### NPM\n\n_Prerequisite: Since Unity Atoms is using the Unity Package Manager (UPM) you need to use Unity version 2018.3 \u003e=_\n\nAdd the following to your `manifest.json` (which is located under your project location in the folder `Packages`):\n\n```\n{\n    \"scopedRegistries\": [\n        {\n            \"name\": \"NPM Registry\",\n            \"url\": \"https://registry.npmjs.org\",\n            \"scopes\": [\n                \"com.unity-atoms.unity-atoms-core\",\n                \"com.unity-atoms.unity-atoms-base-atoms\",\n                \"com.unity-atoms.unity-atoms-fsm\",\n                \"com.unity-atoms.unity-atoms-mobile\",\n                \"com.unity-atoms.unity-atoms-mono-hooks\",\n                \"com.unity-atoms.unity-atoms-tags\",\n                \"com.unity-atoms.unity-atoms-scene-mgmt\",\n                \"com.unity-atoms.unity-atoms-ui\",\n\t\t        \"com.unity-atoms.unity-atoms-input-system\"\n            ]\n        }\n    ],\n    \"dependencies\": {\n        ...\n        \"com.unity-atoms.unity-atoms-core\": \"4.5.0\",\n        \"com.unity-atoms.unity-atoms-base-atoms\": \"4.5.0\",\n        \"com.unity-atoms.unity-atoms-fsm\": \"4.5.0\",\n        \"com.unity-atoms.unity-atoms-mobile\": \"4.5.0\",\n        \"com.unity-atoms.unity-atoms-mono-hooks\": \"4.5.0\",\n        \"com.unity-atoms.unity-atoms-tags\": \"4.5.0\",\n        \"com.unity-atoms.unity-atoms-scene-mgmt\": \"4.5.0\",\n        \"com.unity-atoms.unity-atoms-ui\": \"4.5.0\",\n\t    \"com.unity-atoms.unity-atoms-input-system\": \"4.5.0\",\n        ...\n    }\n}\n```\n\nNote that the core and base atoms packages are mandatory while the others are optional. If you don't want a subpackage, simply remove it from your `dependencies`.\nNote that subpackages may have additional dependencies.\n\n### OpenUPM\n\nThe package is available on the [openupm registry](https://openupm.com). It's recommended to install it via [openupm-cli](https://github.com/openupm/openupm-cli).\n\n```\n# required\nopenupm add com.unity-atoms.unity-atoms-core\nopenupm add com.unity-atoms.unity-atoms-base-atoms\n\n# optional\nopenupm add com.unity-atoms.unity-atoms-fsm\nopenupm add com.unity-atoms.unity-atoms-mobile\nopenupm add com.unity-atoms.unity-atoms-mono-hooks\nopenupm add com.unity-atoms.unity-atoms-tags\nopenupm add com.unity-atoms.unity-atoms-scene-mgmt\nopenupm add com.unity-atoms.unity-atoms-ui\nopenupm add com.unity-atoms.unity-atoms-input-system\n```\n\n## Documentation\n\nThe Unity Atoms docs are now published at **https://unity-atoms.github.io/unity-atoms**.\n\n### Blog posts\n\n-   [Unity Atoms — Tiny modular pieces utilizing the power of Scriptable Objects](https://medium.com/@adamramberg/unity-atoms-tiny-modular-pieces-utilizing-the-power-of-scriptable-objects-e8add1b95201)\n-   [Announcing Unity Atoms v2](https://medium.com/@adamramberg/announcing-unity-atoms-v2-1719ef3e587e)\n-   [Unity Atoms v4 is out!](https://medium.com/@adamramberg/unity-atoms-v4-is-out-b15a37da49da)\n\n## How does it work?\n\nRead [this](https://medium.com/@adamramberg/unity-atoms-tiny-modular-pieces-utilizing-the-power-of-scriptable-objects-e8add1b95201) article on Medium for a great introduction to Unity Atoms.\n\n## Looking for support?\n\nFor questions and support please join our [Discord channel](https://discord.gg/W4yd7E7).\n\n## Maintainers\n\n-   [AdamRamberg](https://github.com/AdamRamberg)\n-   [soraphis](https://github.com/soraphis)\n-   [miikalo](https://github.com/miikalo)\n-   [ThimoDEV](https://github.com/ThimoDEV)\n\nWe are looking for more people to join the team! Contact us if you want to jump aboard.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funity-atoms%2Funity-atoms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funity-atoms%2Funity-atoms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funity-atoms%2Funity-atoms/lists"}