wraithlight / wraithlight-mono

My beloved MMORPG Game. And a whole platform.
GNU General Public License v3.0
1 stars 0 forks source link
game mmorpg platform-engineering

Dedicated to


...beneath the waves, a Raven's spirit tamed,
by bald Kraken's care, their destinies named.
Ambition's lure, a betrayal's cruel rhyme,
dreams embraced, yet Kraken's love the true treasure of time...


wraithlight

An open-source fanatasy pirate based ORPG game. The purposes of this repository:

This repository is the 8th generatorion of the previous platform larvas (raptyle, vampyre, silver-arrow, dnf, dnf-mono, dnf2, nexus-reunion). Some of the code has been merged from them, but most of the current codebase was written inside the repository.

Status

Database

Build
Database GHA - Build

Applications

Build Lint Tests
Applications GHA - Build Applications GHA - Lint Applications GHA - Test

Chore

JSON Schema Knip
Applications GHA - JSON Schema Applications GHA - Knip
Application GHA - Yarn Lock Changes Applications GHA - Deplist
Applications GHA - Readme Check

Links

Documentation

Architecture

Guides

Utils

Credentials

Getting started

Requirements

The section will explain all the required steps to set up your local/dev environment. Please follow the steps propely.

Hosts patch

Since most of the applicaions are using valid URLs instead IP addresses/localhost we have to set up our mock DNS server on the machine itself. This is being done by modifying the hosts file.

# Initialize local environment

gh repo clone wraithlight/wraithlight-mono
cd wraithlight
sudo node .scripts/patch-hosts.mjs

Databases

Currently all of the databases are running in docker containers. The databases are using MySQL and there is a way to setup a phpmyadmin instance for utility. See the related documentation here.

# To run everything locally

gh repo clone wraithlight/wraithlight-mono
cd wraithlight/database
sh ./build.sh # to build the databases
sh ./run.sh   # to run them in docker

Applications

# Set up the local environment

gh repo clone wraithlight/wraithlight-mono
cd wraithlight/applications
yarn

Scripts to use under /applications


nx                    - Utility script to add `nx` to the cli.
knip                  - Runs KNIP on the project.
lerna                 - Utility script to add `lerna` to the cli.
lint                  - Runs ESLint on the project.
lint:quiet            - Runs ESLint on the project. Prints errors only.
build                 - Build everything.
build:changes         - Build the changes since the local main only.
build:tools           - Build the `tools.*` packages only.
build:prod            - DEPRECATED - Production build.
build:guid            - Build `core.guid` only.
postinstall           - Utility script to build some packages after yarn install.
graph                 - Draw NX graph.
test                  - Runs jest on the project.
test:coverage         - Runs jest on the project. Collect coverage per package.
test:mono             - Runs jest on the monorepo.
validate-package-json - Validates `package.json` files.
validate-swagger-json - Validates `swagger.json` files.
guid                  - Generates a new guid.
test-report:collect   - Utility script for test-reporting. Runs jest.
test-report:generate  - Utility script for test-reporting. Runs custom parsing.
test-report:open      - Utility script for test-reporting. Opens the default browser.
test-report           - Collects test-coverage, then opens the result in your browser.
precommit             - Runs `yarn`, `lint`, `knip`, `build` and `test` on the repo.
apply-patches         - Runs `node_modules` patches.
deplist               - Checks for duplicate 3rd party dependencies. Optional flag: --silent
readme-check          - Checks if the readmes are there and has proper title. Optional flag: --silent

Tecnologies we use

This section lists all the technologies that are included in this repository.

Frontend

Status Application Technology
:recycle: Website Angular
:recycle: Forum React
:recycle: Content Mithril
:recycle: Editor Vue
:recycle: Game rich client Electron
:recycle: Game thin client Knockout
:recycle: Logs Aurelia
:recycle: Auth Svelte
:recycle: Notifier QWIK
:recycle: Remote Config Lit

Backend

Most of the backend libraries/applications are written in NodeJS with some custom utility libraries such as node.core. Status Application Technology
:recycle: Website Node
:recycle: Forum Node
:recycle: Content Node
:recycle: Editor Node
:recycle: Game rich client Node
:recycle: Game thin client Node
:recycle: Logs Node
:recycle: Auth Node
:white_check_mark: Notifier Node
:recycle: Remote Config Node

Database

All of the databases are using MySQL, with a custom ORM, called core.orm.

Other technologies used