{"id":13661059,"url":"https://github.com/grahamboree/tilde","last_synced_at":"2025-04-10T21:22:10.165Z","repository":{"id":41879616,"uuid":"164748764","full_name":"grahamboree/tilde","owner":"grahamboree","description":"A remote developer console for Unity","archived":false,"fork":false,"pushed_at":"2022-10-16T03:38:25.000Z","size":8606,"stargazers_count":41,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T18:52:25.911Z","etag":null,"topics":["console","csharp","unity","unity-asset","unity-editor","unity-package","unity-scripts","unity2d","unity3d","unity3d-plugin"],"latest_commit_sha":null,"homepage":"","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/grahamboree.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-08T23:12:32.000Z","updated_at":"2025-03-19T20:22:35.000Z","dependencies_parsed_at":"2023-01-20T05:34:41.562Z","dependency_job_id":null,"html_url":"https://github.com/grahamboree/tilde","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grahamboree%2Ftilde","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grahamboree%2Ftilde/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grahamboree%2Ftilde/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grahamboree%2Ftilde/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grahamboree","download_url":"https://codeload.github.com/grahamboree/tilde/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248299024,"owners_count":21080449,"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":["console","csharp","unity","unity-asset","unity-editor","unity-package","unity-scripts","unity2d","unity3d","unity3d-plugin"],"created_at":"2024-08-02T05:01:29.232Z","updated_at":"2025-04-10T21:22:10.141Z","avatar_url":"https://github.com/grahamboree.png","language":"C#","readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"#-quickstart\"\u003e\n      \u003cimg src=\"/Docs~/tilde_title.png\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    A remote developer console for Unity\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://grahamboree.github.io/tilde/\" title=\"HTML5 Demo\"\u003e\u003cimg src=\"https://img.shields.io/badge/Demo-HTML5-red\" /\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/grahamboree/tilde/blob/main/LICENSE.md\" title=\"License\"\u003e\u003cimg src=\"https://img.shields.io/github/license/grahamboree/tilde.svg\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://openupm.com/packages/com.grahamboree.tilde/\" title=\"openupm\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/com.grahamboree.tilde?label=openupm\u0026registry_uri=https://package.openupm.com\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.codefactor.io/repository/github/grahamboree/tilde\" title=\"CodeFactor\"\u003e\u003cimg src=\"https://www.codefactor.io/repository/github/grahamboree/tilde/badge\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# ⚡ Quickstart\n1. In the package manager, select \"Add package from git URL...\" and add tilde using the url `https://github.com/grahamboree/tilde`\n2. Add the `Prefabs/Tilde` prefab to your scene.\n2. Add either the `Prefabs/Drawer Console` or `Prefabs/Windowed Console` prefab to your scene.\n3. Start the game and press the tilde/backtick key to open the console.\n4. Run `help` to list available commands.\n5. Open `localhost:55055` in a web browser to access the remote console.\n\n# 📸 Screenshots\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"/Docs~/drawer.gif\" alt=\"Drawer console prefab\"\u003e \u003cimg src=\"/Docs~/windowed.gif\" alt=\"Windowed console prefab\"\u003e\n\u003c/p\u003e\n\n# ✨ Features\n* Two styles of console prefabs: window (similar to popular MOBAs) and drawer (similar to classic FPS's).\n* Remotely execute commands with a web-based console served by an embedded web server.\n* Automatic command registration via function annotation.\n* Automatic command history.  Cycle through previous commands with the up and down arrow keys.\n* Tab autocomplete.\n* Auto-generated command names, or specify them explicitly.\n* Displays all Unity log, warning, error and exception messages colored as you'd expect.\n* Bind keys to run commands with the `bind` and `unbind` commands.\n* Supports commands with any number of arguments.\n* `help` commmand and basic commmand documentation system.\n\n# 📲 Remote Console\nTilde also provides an embedded web server and web-based console for executing commands remotely.  The default port is `55055`, but it can be specified in the `Tilde Web Console Server` component.  This enables you to remotely execute commands on mobile devices or consoles where bringing up a keyboard and typing a command is difficult.\n\n❗️It's highly recommended that you disable the remote console in shipping versions of your game. To do so, simply remove the `Tilde Web Console Server` component.\n\n# 🏗 Adding Commands\nConsole commands are public, static functions annotated with `[ConsoleCommand]`.  Annotated command functions optionally take an array of strings containing the arguments to that command, and also can optionally return a string to be printed to the console as output.\n```cs\n// Takes no arguments, no output\n[ConsoleCommand] public static void Command1() { ... }\n\n// Takes no arguments, prints some output\n[ConsoleCommand] public static string Command2() { ... }\n\n// Can take some arguments, no output\n[ConsoleCommand] public static void Command3(string[] args) { ... }\n\n// Can take some arguments, prints some output\n[ConsoleCommand] public static string Command4(string[] args) { ... }\n```\n\n## Command Name\nThe name of a console command is generated from the annotated function's name. You can override this by specifying the `name` argument to the `ConsoleCommand` attribute.\n```cs\n// Registers the command \"damageThePlayer\"\n[ConsoleCommand()]\npublic static void damageThePlayer(string[] args) { ... }\n\n// Registeres the command \"heal\"\n[ConsoleCommand(name: \"heal\")]\npublic static void HealThePlayer(string[] args) { ... }\n```\n\n## Doc String\nConsole commands can also have a documentation (doc) string associated with them to provide a brief explination of what the command does and how to use it. To add a doc string to a command, specify the `docs` argument to the `ConsoleCommand` attribute.\n\n```cs\n[ConsoleCommand(name: \"heal\", docs: \"heal the player by the specified amount\")]\npublic static void HealThePlayer(string[] args) { ... }\n```\n\nThe `help` command shows all the registered commands along with the first line of their doc strings. `help \u003ccommand\u003e` shows the full command doc string for a specific command.\n\n## Arguments\nCommands can optionally consume any number of positional arguments. Arguments are split by whitespace and passed as an array of strings to the command function. The command then processes each argument string as it sees fit.\n","funding_links":[],"categories":["C\\#"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrahamboree%2Ftilde","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrahamboree%2Ftilde","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrahamboree%2Ftilde/lists"}