{"id":22487116,"url":"https://github.com/tera-arise/arise","last_synced_at":"2025-08-02T19:33:59.949Z","repository":{"id":186382509,"uuid":"562932791","full_name":"tera-arise/arise","owner":"tera-arise","description":"A game resurrection project for the final build of TERA EU.","archived":false,"fork":false,"pushed_at":"2024-10-29T14:07:13.000Z","size":47154,"stargazers_count":29,"open_issues_count":17,"forks_count":2,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-10-29T17:14:26.242Z","etag":null,"topics":["avalonia","client","csharp","dotnet","gaming","modding","server","tera","web","xaml"],"latest_commit_sha":null,"homepage":"https://tera-arise.io","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tera-arise.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-AGPL-3.0","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"tera-arise","open_collective":"tera-arise"}},"created_at":"2022-11-07T15:02:52.000Z","updated_at":"2024-10-29T14:07:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"d7d35141-6e5d-47e4-b46c-fc468404cfcd","html_url":"https://github.com/tera-arise/arise","commit_stats":{"total_commits":796,"total_committers":2,"mean_commits":398.0,"dds":0.207286432160804,"last_synced_commit":"0b3dfff435bc185794f8fc23880081d2c35fb481"},"previous_names":["tera-arise/arise"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tera-arise%2Farise","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tera-arise%2Farise/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tera-arise%2Farise/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tera-arise%2Farise/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tera-arise","download_url":"https://codeload.github.com/tera-arise/arise/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228017911,"owners_count":17856833,"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":["avalonia","client","csharp","dotnet","gaming","modding","server","tera","web","xaml"],"created_at":"2024-12-06T17:15:54.874Z","updated_at":"2025-08-02T19:33:59.935Z","avatar_url":"https://github.com/tera-arise.png","language":"C#","funding_links":["https://github.com/sponsors/tera-arise","https://opencollective.com/tera-arise"],"categories":[],"sub_categories":[],"readme":"# TERA Arise\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"vnd/assets/image_logo.webp\"\n         height=\"256\"\n         alt=\"TERA Arise\" /\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![License](https://img.shields.io/github/license/tera-arise/arise?color=brown)](LICENSE-AGPL-3.0)\n[![Commits](https://img.shields.io/github/commit-activity/m/tera-arise/arise/master?label=commits\u0026color=slateblue)](https://github.com/tera-arise/arise/commits/master)\n[![Build](https://img.shields.io/github/actions/workflow/status/tera-arise/arise/build.yml?branch=master)](https://github.com/tera-arise/arise/actions/workflows/build.yml)\n[![Discord](https://img.shields.io/discord/1049553965987143750?color=peru\u0026label=discord)](https://discord.gg/tera-arise)\n\n\u003c/div\u003e\n\n--------------------------------------------------------------------------------\n\n**TERA Arise** is a game resurrection project for the final build of\n[TERA](https://en.wikipedia.org/wiki/TERA_(video_game)) EU, 115.02 (r387486),\nwhich was released a couple of months prior to the game's official shutdown on\nJune 30, 2022.\n\nThis project is still in heavy development.\n\n## Philosophy\n\nUnlike typical server emulation projects, TERA Arise is not trying to replicate\nthe original game. Rather, we are using the game client and assets as a base to\nbuild upon, with the goal of eventually producing a better experience than the\noriginal game. We will essentially start from scratch, with an empty data center\nfile, and work our way from there. Our overarching design goals are laid out on\nour [GitBook space](https://tera-arise.gitbook.io/tera-arise).\n\nOnce the project progresses far enough, our goal is to run official TERA Arise\nservers. That said, anyone is welcome to run their own public servers, as long\nas the [licensing terms](#licensing) are observed.\n\n## Usage\n\nBuilding and running TERA Arise requires the following:\n\n* Windows 10 22H2+ or Ubuntu 22.04+\n* .NET SDK 9.0.101\n* PostgreSQL 16.0+\n\nDevelopment will typically require one of the following editors:\n\n* Visual Studio 2022\n* Visual Studio Code\n* JetBrains Rider\n* JetBrains Fleet\n\nNote that you must clone the Git repository with the `--recursive` option as we\nmake use of submodules.\n\nSimply run `./cake` (a [Bash](https://www.gnu.org/software/bash) script) to\nbuild client artifacts for Windows (x64) and server artifacts for the current\nplatform (Windows or Linux, x64 or Arm64). This will use the `Debug`\nconfiguration by default, which is suitable for development and debugging. Pass\n`-c Release` instead to use that configuration, resulting in an optimized build.\n\nNote that `Debug` and `Release` configurations are orthogonal to whether the\nresulting artifacts are suitable for deployment; see the\n[vendoring instructions](#vendoring).\n\nYou will need to set up one or more databases to run the server daemon(s). Below\nis one possible way to do it which will match the expectations of the default\nconfiguration files.\n\nCreate a user called `arise`:\n\n```sql\nCREATE USER arise PASSWORD 'arise';\n```\n\nCreate a database called `arise`, owned by `arise`:\n\n```sql\nCREATE DATABASE arise OWNER 'arise' TEMPLATE 'template0' ENCODING 'utf8' ICU_LOCALE 'und' LOCALE_PROVIDER 'icu';\n```\n\nFinally, while connected to the `arise` database, create schemas for each kind\nof environment:\n\n```sql\nCREATE SCHEMA development AUTHORIZATION arise;\nCREATE SCHEMA production AUTHORIZATION arise;\nCREATE SCHEMA staging AUTHORIZATION arise;\n```\n\n(The latter two are only required for non-development deployments.)\n\nWith this setup, and assuming you have PostgreSQL listening locally, you should\nnow be able to successfully do `dotnet run --project src/daemons/uniond`.\n\n## Vendoring\n\nIn order to deploy TERA Arise in non-development scenarios, it is necessary to\nset up a so-called vendor project. This project provides network certificates,\ndata center parameters, and more. A default vendor project intended for\ndevelopment purposes is included in the [`vnd`](vnd) directory and serves as a\nbase for customization.\n\nThe vendor project path can be overridden by passing `--vendor \u003cpath\u003e` to\n`./cake`. The recommended setup is to have a repository with the TERA Arise\nrepository as a submodule, alongside a custom vendor project. A small build\nscript can then invoke something like\n`arise/cake -c Release --vendor vendor/vendor.proj`.\n\nAdditionally, for the server daemons, an extra configuration file is required,\nnamed either `arised.staging.json` or `arised.production.json` depending on\nenvironment. The following is an example of a bare-bones production\nconfiguration:\n\n```json\n{\n  \"Storage\": {\n    \"ConnectionString\": \"Host=storage.my-tera.com; Username=arise; Password=arise; Database=production; Root Certificate=postgresql.pem; SSL Mode=VerifyCA\"\n  },\n  \"Kestrel\": {\n    \"Certificates\": {\n      \"Default\": {\n        \"Path\": \"web.pem\",\n        \"KeyPath\": \"web.key\"\n      }\n    },\n    \"Endpoints\": {\n      \"Gateway\": {\n        \"Url\": \"https://my-tera.com:443\"\n      }\n    }\n  },\n  \"Gateway\": {\n    \"EmailAddress\": \"system@my-tera.com\",\n    \"SendGridKey\": \"\u003cSendGrid API key\u003e\"\n  },\n  \"Game\": {\n    \"Endpoints\": [\n      \"0.0.0.0:7801\",\n      \":::7801\"\n    ]\n  }\n}\n```\n\nIf you intend to run the separate gateway and game daemons rather than the union\ndaemon, you can also include the service name in the file name:\n`arise-gatewayd.json`, `arise-gamed.staging.json`, etc.\n\n## License\n\nServer emulation for online games has traditionally suffered from bad actors\ntaking and modifying the open source code, running for-profit servers, and then\ncontributing nothing back to the project. To combat this, TERA Arise is licensed\nunder the [GNU Affero General Public License 3.0](LICENSE-AGPL-3.0). This means\nthat anyone running TERA Arise *must* provide the full source code of the client\nand server components to users.\n\nTo be clear, this license only applies to TERA Arise itself; the original TERA\ngame client and its assets are not subject to it.\n\n## Development\n\nFor development purposes, you will likely want to make some adjustments to the\ndefault submodule setup:\n\n* `git submodule foreach git checkout master`: Switch all submodules from\n  detached `HEAD` to tracking the actual branch. Without this, commits made in\n  submodules might be lost.\n* `git submodule foreach git fetch --unshallow`: Make available the entire\n  history of all submodules. Without this, tools like `git log` and `git blame`\n  will be largely useless.\n\nAdditionally, to verify commit signatures from other authors, you may wish to\nadd this to your `.git/config` file (or similar):\n\n```gitconfig\n[gpg.ssh]\n    allowedSignersFile = allowed_signers\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftera-arise%2Farise","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftera-arise%2Farise","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftera-arise%2Farise/lists"}