Skip to content

Commit

Permalink
Merge branch 'main' into hosting-on-windows
Browse files Browse the repository at this point in the history
  • Loading branch information
GeckoEidechse authored Oct 25, 2023
2 parents b36f81b + 343b42c commit 7ef8600
Show file tree
Hide file tree
Showing 45 changed files with 389 additions and 114 deletions.
7 changes: 7 additions & 0 deletions .github/.markdownlinkcheck.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"ignorePatterns": [
{
"pattern": "https://help.ea.com/en/help/pc/link-ea-and-steam/"
}
]
}
16 changes: 16 additions & 0 deletions .github/workflows/add-to-project.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: add-to-project

on:
issues:
types:
- opened

jobs:
add-to-project:
name: Add to project
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
with:
project-url: "https://github.com/orgs/R2Northstar/projects/3"
github-token: "${{ secrets.PROJECT_BOARD_TOKEN }}"
14 changes: 14 additions & 0 deletions .github/workflows/linkcheck.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Linkcheck
on: [push, pull_request]

jobs:
markdown-link-check:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: md-linkcheck
uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
use-quiet-mode: 'yes'
config-file: '.github/.markdownlinkcheck.json'
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
book
26 changes: 26 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,29 @@ This repo contains documentation around the [Northstar mod](https://github.com/R
The `docs/` directory contains the content synchronised to the [GitBook Wiki page](https://r2northstar.gitbook.io/).

Use this repo to perform pull requests and open issues to request changes to the wiki content.

## Building locally

Unfortunately, [GitBook](https://www.gitbook.com/) does not offer a way to work and preview edited content locally.

However, under the hood GitBook just uses [Markdown](https://www.markdownguide.org/) files that can be edited using any text editor.
They can also be previewed to some degree on GitHub directly.

### mdBook

When working locally, [`mdBook`](https://rust-lang.github.io/mdBook/) can be used to render previews by simply running `mdbook serve`.
Note that GitBook has a custom extended markdown syntax that is not supported by mdBook but using mdBook results in a rendered version that is good enough to verify the correctness of most changes.

To install mdBook use the following link if:

- [you have Rust toolchain installed](https://rust-lang.github.io/mdBook/guide/installation.html#build-from-source-using-rust)
- [you **DON'T** have Rust toolchain installed](https://rust-lang.github.io/mdBook/guide/installation.html#pre-compiled-binaries)

#### mdBook-linkcheck
Additionally there's a community-made package that you can use alongside mdBook to show you some potentially broken links in markdown files called [mdBook-linkcheck](https://github.com/Michael-F-Bryan/mdbook-linkcheck)

Although not required, you may find it helpful to use alongside mdBook to ensure you've linked things properly

To install mdBook-linkcheck use the following link if:
- [you have Rust toolchain installed](https://github.com/Michael-F-Bryan/mdbook-linkcheck#getting-started)
- [you DON'T have Rust toolchain installed](https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases/latest) (add `mdBook-linkcheck.exe` to the same folder `mdBook.exe` is located)
13 changes: 13 additions & 0 deletions book.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# This file configures `mdbook` which is used for rendering wiki locally
# See the main README.md for more info

[book]
language = "en"
multilingual = false
src = "docs"
title = "Northstar Wiki"

[output.html]

[output.linkcheck]
optional = true
28 changes: 16 additions & 12 deletions docs/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

## Hosting a server with Northstar

* [Prerequisites](hosting-a-server-with-northstar/prerequisites.md)
* [Getting started](hosting-a-server-with-northstar/getting-started.md)
* [Hosting a Basic Listen Server](hosting-a-server-with-northstar/basic-listen-server.md)
* [Hosting a Dedicated Server](hosting-a-server-with-northstar/dedicated-server/README.md)
* [Best practices](hosting-a-server-with-northstar/dedicated-server/best-practices.md)
Expand All @@ -48,18 +48,22 @@
## Modding and Development

* [Modding](modding/README.md)
* [Development](modding-and-development/development/README.md)
* [Repositories](modding-and-development/development/repositories/README.md)
* [Atlas](modding-and-development/development/repositories/atlas.md)
* [NorthstarMods](modding-and-development/development/repositories/northstarmods.md)
* [NorthstarLauncher](modding-and-development/development/northstarlauncher.md)
* [NorthstarMasterServer (old)](modding-and-development/development/northstarmasterserver/README.md)
* [Deploy](modding-and-development/development/northstarmasterserver/deploy.md)
* [Contributing code to Northstar](modding-and-development/development/contributing-code-to-northstar.md)
* [Testing](modding-and-development/testing.md)
* [Reviewing](modding-and-development/development/reviewing.md)
* [Releases](modding-and-development/development/releases.md)
* [Development](development/README.md)
* [Repositories](development/repositories/README.md)
* [Atlas](development/repositories/atlas.md)
* [NorthstarMods](development/repositories/northstarmods.md)
* [NorthstarLauncher](development/northstarlauncher.md)
* [NorthstarMasterServer (old)](development/northstarmasterserver/README.md)
* [Deploy](development/northstarmasterserver/deploy.md)
* [Contributing code to Northstar](development/contributing-code-to-northstar.md)
* [Testing](development/testing.md)
* [Reviewing](development/reviewing.md)
* [Releases](development/releases.md)
* [Debugging](development/debugging/README.md)
* [Visual Studio](development/debugging/visualstudio.md)
* [x64dbg](development/debugging/x64dbg.md)

## Other

* [Discord moderation](other/moderation.md)
* [Credits](other/credits.md)
2 changes: 1 addition & 1 deletion docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ Read [CONTRIBUTING.md](https://github.com/R2Northstar/Northstar/blob/main/CONTRI
Please remember that issues created in the Northstar repositories should be related to the mod, avoid creating issues asking for tech support or problems unrelated to the project.
{% endhint %}

Check the [Development](modding-and-development/development/README.md) section if you are unsure of where to open a ticket.
Check the [Development](development/README.md) section if you are unsure of where to open a ticket.
File renamed without changes.
10 changes: 10 additions & 0 deletions docs/development/debugging/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Debugging

{% hint style="warning" %}
Debugging Northstar is only recommended to experienced developers.
If you need help figuring out an issue feel free to visit the Northstar Discord.
{% endhint %}

## Contents
* [Visual Studio](visualstudio.md)
* [x64dbg](x64dbg.md)
19 changes: 19 additions & 0 deletions docs/development/debugging/visualstudio.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Visual Studio

Northstar is easiest to debug through Visual Studio due to its cmake support.


* If you do not already have Visual Studio download it https://visualstudio.microsoft.com/
* Its recommended that you install the Community version because it is freely availalbe.
* You need to install the `Desktop development with C++` workflow to debug native programs
![](../../images/debugger-visualstudio-installer-workloads-cpp.png)

* Open Visual Studio
* Select `Open a project or solution`
![](../../images/debugger-visualstudio-launcher.png)
* If you already have a solution open you can open a new project through the menu bar
![](../../images/debugger-visualstudio-menu-solution.png)
* Open `NorthstarLauncher.exe`
* You can now debug Northstar
![](../../images/debugger-visualstudio-debug-menubar.png)
* You can find relevant debug symbols in [NorthstarLauncher releases](https://github.com/R2Northstar/NorthstarLauncher/releases)
42 changes: 42 additions & 0 deletions docs/development/debugging/x64dbg.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# x64dbg

{% hint style="warning" %}
If you are not experienced with x64dbg it its recommended to use [Visual Studio](visualstudio.md).
{% endhint %}


## Windows

* Download [x64dbg](https://x64dbg.com/)
* Extract the `release` folder somewhere on your PC
* Download the latest relase of [SycllaHide](https://github.com/x64dbg/ScyllaHide/releases/latest)
* Merge the contents of the `x64dbg` folder into the previously extracted `release` folder
* Run `x96dbg.exe`
* You may receive a Windows SmartScreen prompt, x64dbg snapshots are not signed and will always cause these prompts
* When running for the first time it will ask you some questions. After this is complete rerun the executable.
* Select `x64dbg` in the Launcher
![](../../images/debugger-x64dbg-launcher.png)

* Do make debugging easier it is suggested to change your settings to the following:
* Keeping System Breakpoint enabled is optional but useful
![](../../images/debugger-x64dbg-events.png)

* Skipping INT3 stepping is recommended to prevent generic breakpoints from stopping the program
![](../../images/debugger-x64dbg-engine.png)

* Make sure to select the exception before disabling breaking. If you are debugging a C++ Exception you need to ignore common exceptions that occur during runtime
![](../../images/debugger-x64dbg-exceptions.png)

* Open `NorthstarLauncher.exe` in x64dbg
* You are now free to debug Northstar

## Linux

{% hint style="warning" %}
Debugging Northstar under Linux is not trivial due to the direct dependency on Origin, unless you know your way around wine its recommended to debug on Windows.
{% endhint %}

To simplify the use of x64dbg and automate running Origin a community member has created a script: [ns-linux-dbg](https://github.com/R2NorthstarTools/ns-linux-dbg)

To run it simply invoke it: `./nsdbg.py`
It supports a variety of options as well as vanilla wine and Proton, use the help flag to see all possible options: `./nsdbg.py --help`
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ The old NodeJS master server has been replaced in favour of the Go rewrite calle

The master server is responsible for centralizing game servers created by players, it also verifies that connecting players own an Origin account with Titanfall 2.

There's no need to host your own master server to play games with other people, you can use [direct connect](../../../using-northstar/direct-connect.md) or just setup a [normal server](../../../hosting-a-server-with-northstar/basic-listen-server.md) that announces itself to `northstar.tf`. This tutorial is aimed for those who want to contribute improvements to the code or test their own changes to the project.
There's no need to host your own master server to play games with other people, you can use [direct connect](../../using-northstar/direct-connect.md) or just setup a [normal server](../../hosting-a-server-with-northstar/basic-listen-server.md) that announces itself to `northstar.tf`. This tutorial is aimed for those who want to contribute improvements to the code or test their own changes to the project.

## Contents

Expand Down
141 changes: 141 additions & 0 deletions docs/development/releases.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
---
description: >-
Information intended mostly for internal use on what to consider when making
new releases
---

# Releases

{% hint style="info" %}
WIP
{% endhint %}

## General

CI on Northstar release repo builds versioned release if tag is pushed. It checks Launcher and Mods for the same tag.
It then downloads the related build for Launcher from releases and the Squirrel related source files from the mods repo.
It then combines the files together with DiscordRPC and navmeshes to build the final release. \
Therefore make sure to push tags of Mods and Launcher first (and make sure Launcher has finished building).

CI also pushes release directly to Thunderstore as a mod called [`Northstar`](https://northstar.thunderstore.io/package/northstar/Northstar/). \
If it's a release-candidate with the `-rcX` suffix, it will instead get pushed to Thunderstore as [`NorthstarReleaseCandidate`](https://northstar.thunderstore.io/package/northstar/NorthstarReleaseCandidate/).

### The process of making a release:

The following is a rough draft of the steps needed to make a release.
The process is ever changing in order to simplify it so these steps outlined might not be up-to-date anymore depending on when you are reading this.

The current process of making release (includinging release candidate) is:

1. Make release branch (`MAJOR.MINOR.X`) (if not exists)

2. Merge desired commits from `main`
- Make sure to consider whether changing are breaking in regards to older/newer server/client and in regards to Squirrel API.
- Older/newer client/server breakage might need to be version gated and should **NOT** be done in patch releases.
- Squirrel API changes likely breaks mods and should **NOT** be done in patch releases. Additionaly make sure to ping modders on release or preferably even in advance.
- If changes can be merged fast-forward use `git merge --ff-only origin/main` otherwise cherry-pick relevant commits.

3. Make release candidate\
Push tags ending in `-rcX` where `X` is integer for
1. Launcher
2. Mods
3. Release (wait until launcher has finished building)

4. Make draft notes\
You can use FlightCore to generate them and then format them manually.\
If you use FlightCore make sure to remove already released commits if they were cherry-picked.

5. Create a draft discussion in [release repo discussions](https://github.com/R2Northstar/Northstar/discussions)

6. Make related github-org thread and link the draft notes there for feedback etc

7. Ping playtesters to test release candidate.
1. Add information about what specific aspect to test.
2. Copy relevant changes for this release candidate from draft release notes.
3. Link draft release notes.
4. Make thread to leave feedback about release in.

8. Wait until release candidate was sufficiently tested.

9. Make release
Push tags for
1. Launcher
2. Mods
3. Release (wait until launcher has finished building)

10. Once release has finished building
1. Go to GitHub release and select the new unpublished release
2. Copy release notes from draft.
3. Click checkbox for creating discussion and select _Release_ as category
4. Publish

11. Post announcements on Discord
1. Post message in `#server-hosting-announcements` channel.\
Make sure to highlight server hosting specific changes.\
Make thread for bug reports.
2. Post message in `#modding-announcements`.\
Make sure to highlight modding specific changes (API changes etc).
3. Post message in `#announcements`.\
Make sure to highlight end-user specific changes (new features, certainn fixes, etc).


12. Update main menu promos version on Atlas

13. Push Docker image
1. Get SHA512 checksum of zip from release CI
2. Make PR to [Docker repo](https://github.com/pg9182/northstar-dedicated) to update Docker image to newest Northstar release
3. Merge PR
4. Wait for Docker repo CI to finish
5. Approve image

14. Observe version roll-out via [Grafana dashboard](https://northstar-stats.frontier.tf/).

### Git commands for tags:

**For release candidates:**

```
git tag vX.Y.Z-rcN
git push origin vX.Y.Z-rcN
```

Example:

```
git tag v1.8.0-rc1
git push origin v1.8.0-rc1
```

**For actual releases**

```
git tag vX.Y.Z
git push origin vX.Y.Z
```

Example:

```
git tag v1.8.0
git push origin v1.8.0
```

## Version numbering

In general, Northstar tries to follow [semantic versioning](https://semver.org/). This means version numbers are `MAJOR.MINOR.PATCH`, where

- `MAJOR` is updated for breaking changes
- `MINOR` is updated for changes that are backwards compatible
- `PATCH` is updated for fixes that are backwards compatible

Semantic versioning is however not followed exactly. For example, to ship out smaller features faster they have been included in patch releases. Similarly, there have been smaller breaking changes, yet at the time of writing the major version number so far has never been updated.

The reason for this is mostly due to player expectations. Players expect the change from `1.0` to `2.0` to be big. As such, the plan for the near future is to update the major version, once we have a bigger feature ready to release that brings us closer to vanilla in terms of missing features (e.g. _Frontier Defense_).

Once `2.0` has been released, expectations for `3.0` tend to be lower as the number is no longer "doubled". Past `3.0`, proper semver can probably be employed without hampering player expectations.


## Best practices:

- Make at least one release candidate and test it before actual release.
- Release should also only ever be latest release candidate but tagged as release to avoid introducing new bugs.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ It's not necessary to do both when reviewing as long as you mention what you did

For code review head to the _"Files changed"_ section of the PR.

![](../../.gitbook/assets/review1.png)
![](../.gitbook/assets/review1.png)

From there you can select the line(s) you want to leave a comment on.

![](../../.gitbook/assets/review2.PNG)
![](../.gitbook/assets/review2.PNG)

Type in your comment and click on _"Start a review"_.

![](../../.gitbook/assets/review3.png)
![](../.gitbook/assets/review3.png)

Note that this will **NOT** post your comment immediately! Add any remaining comments to other lines of code, then head to the _Finishing up_ section of this wiki page to see how to post your code review.

Expand All @@ -38,7 +38,7 @@ Note that this will **NOT** post your comment immediately! Add any remaining com
For testing a PR, refer to the following page

{% content-ref url="../testing.md" %}
[testing.md](../testing.md)
[testing.md](./testing.md)
{% endcontent-ref %}

The TL;DR is to test the aspect that has been changed.
Expand All @@ -47,7 +47,7 @@ The TL;DR is to test the aspect that has been changed.

After you performed the testing and/or code review leave a final comment by clicking on _"Finish your review"_ on the top right of the _"Files changed"_ page of the PR.

![](../../.gitbook/assets/review4.png)
![](../.gitbook/assets/review4.png)

In your final comment make sure to mention what you did, e.g. which aspects of the change you tested for or what you considered during code review (formatting, edge cases, ...). The more detailed this part is the easier it is for other reviewers to tell which aspects they can skip during reviewing to speed up the process.

Expand Down
Loading

0 comments on commit 7ef8600

Please sign in to comment.