{"id":20447312,"url":"https://github.com/miniature-studios/miniature-happiness","last_synced_at":"2026-03-27T04:51:26.440Z","repository":{"id":152561237,"uuid":"612360131","full_name":"miniature-studios/miniature-happiness","owner":"miniature-studios","description":"A game about office management","archived":false,"fork":false,"pushed_at":"2024-10-04T10:49:45.000Z","size":93150,"stargazers_count":3,"open_issues_count":14,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-07T18:04:00.247Z","etag":null,"topics":["csharp","game","unity"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/miniature-studios.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2023-03-10T19:14:40.000Z","updated_at":"2024-10-04T10:49:51.000Z","dependencies_parsed_at":"2024-02-19T17:13:15.769Z","dependency_job_id":"cd30640d-6670-4d73-9d7d-f618cc9d6491","html_url":"https://github.com/miniature-studios/miniature-happiness","commit_stats":null,"previous_names":["miniature-studios/miniature-happiness"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/miniature-studios/miniature-happiness","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miniature-studios%2Fminiature-happiness","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miniature-studios%2Fminiature-happiness/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miniature-studios%2Fminiature-happiness/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miniature-studios%2Fminiature-happiness/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/miniature-studios","download_url":"https://codeload.github.com/miniature-studios/miniature-happiness/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miniature-studios%2Fminiature-happiness/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267536854,"owners_count":24103526,"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","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["csharp","game","unity"],"created_at":"2024-11-15T10:25:47.556Z","updated_at":"2026-03-27T04:51:25.057Z","avatar_url":"https://github.com/miniature-studios.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Office architecture\r\n\r\nOffice Architecture (the name is to be changed in future) is the game about micro- and macro- office management. Hire, fire and force to work employees under the pressure of your boss tasks.\r\n\r\n## Game design\r\n\r\nDesign document of the game can be found [here](https://docs.google.com/document/d/1oU3gORNEXA_aJ2D055r1h3WZCSSdT0YQW9pyKb6h8tQ/edit?pli=1#heading=h.ds7p1dprpmt8)[RUS]\r\n\r\n## Code conventions\r\n\r\n### Animators\r\n\r\nSome animators, such as UI animators require their `updateMode` set to `AnimatorUpdateMode.UnscaledTime` but some animators such as employee animators require their `updateMode` set to `AnimatorUpdateMode.Normal` as there's ability to speed up/slow down time in game so UI animators shouldn't depend on `Time.TimeScale`.\r\n\r\nAutomatization of process of assigning correct `updateMode`s is addressed by `Utils.AnimatorTimeScaleSetterTool`. This script adds menu item `Tools -\u003e AnimatorTimeScaleSetter` to set proper `updateMode`s to animators in both scene hierarchy and prefabs folder.\r\n\r\nSeparation into two categories is made according to the following assumptions:\r\n- In scene hierarchy: All the UI animators contain `Canvas` in one of their parent `GameObject`s.\r\n- In prefabs folder: All the UI animators are attached to prefabs found in `Assets\\Prefabs\\UI` directory and all its subdirectories.\r\n\r\nOne can easily override these rules by attaching `Utils.IgnoreAnimatorTimeScaleSetter` script to the target GameObject.\r\n\r\n### Namespaces\r\n\r\nIt's very desirable for classes to belong to some namespace. But for now Unity doesn't support `MonoBehaviour`s that have their name different from the script's name. So the `[AddComponentMenu(\"...\")]` attribute is used to override the component's name when script is attached to `GameObject`.\r\n\r\nLabel in attribute must have two parts:\r\n* Namespace separated with `/` that started with `Scripts`\r\n* Component name that contains namespace with class name\r\n```csharp\r\nnamespace Level.Boss\r\n{\r\n    // Example attribute\r\n    [AddComponentMenu(\"Scripts/Level/Boss/Level.Boss.Model\")]\r\n    public class Model { ... }\r\n}\r\n``` \r\n\r\nWhen the class with name identical to the namespace's one is needed, for example:\r\n```csharp\r\nnamespace Level\r\n{\r\n    [AddComponentMenu(\"Scripts/Level.Level\")]\r\n    public class Level { ... }\r\n}\r\n```\r\n\r\nit should be renamed to `...Impl`:\r\n```csharp\r\nnamespace Level\r\n{\r\n    [AddComponentMenu(\"Scripts/Level.Level\")]\r\n    public class LevelImpl { ... }\r\n}\r\n```\r\nNote: `Impl` is omitted in `AddComponentMenu` attribute.\r\nFor comfortable executing this rules [This Unity Package](https://github.com/Kiuh/Item-Templates-For-Unity) and [This Visual Studio Extension](https://marketplace.visualstudio.com/items?itemName=nikolay-khimich.unity-class-template) can be used. Both package and extension gives opportunity to create unity scripts with proper naming rules in one click. \r\n\r\n### Formatting\r\n\r\nProject uses two formatters: `.NET format` and `CSharpier`.\r\n\r\n- Rules for `.NET format` described in [.editorconfig](https://github.com/miniature-studios/miniature-happiness/blob/main/JamGame/.editorconfig) file.\r\n- Rules for `CSharpier` described in [.csharpierrc.json](https://github.com/miniature-studios/miniature-happiness/blob/main/JamGame/.csharpierrc.json) file.\r\n\r\n\u003cb\u003e.Net format\u003c/b\u003e it's a builtin formatter for .NET and can be found [here](https://github.com/dotnet/format).\\\r\n\u003cb\u003eCSharpier\u003c/b\u003e it's a tool that can be found [here](https://csharpier.com/) and installed for any popular IDE.\r\n\r\n### OdinInspector\r\n\r\n[Odin Inspector](https://odininspector.com/) used in project for comfortable debugging and proper visualization complex data structures in Inspector.\r\n\r\nWhen some variables are private in MonoBehaviour script, but will helpful to see in inspector, Odin provides `[ReadOnly]` attribute:\r\n\r\n```csharp\r\nusing Sirenix.OdinInspector;\r\n...\r\npublic class Model : MonoBehaviour\r\n{\r\n    [ReadOnly]\r\n    [SerializeField]\r\n    private float privateVariable;\r\n    ...\r\n}\r\n...\r\n```\r\n\r\nWhen you need to test some method, `[Button]` attribute used to create button in inspector to invoke that method for testing.\r\n\r\n```csharp\r\nusing Sirenix.OdinInspector;\r\n...\r\npublic class Model : MonoBehaviour\r\n{\r\n    [Button]\r\n    private void SomeAction() { ... }\r\n    ...\r\n}\r\n...\r\n```\r\n \r\n## Pickle settings\r\n\r\nOn first project startup `Pickle` will propose to create `PickleSettings.asset`. *Don't* create it as it's already present at `/Assets/Plugins` folder.\r\n\r\n## License\r\n\r\n[GNU General Public License](https://github.com/miniature-studios/miniature-happiness/blob/main/LICENSE)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminiature-studios%2Fminiature-happiness","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fminiature-studios%2Fminiature-happiness","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminiature-studios%2Fminiature-happiness/lists"}