Skip to content

Commit b4a5a09

Browse files
committed
tools / doc inclusions
1 parent 42642bc commit b4a5a09

9 files changed

Lines changed: 305 additions & 46 deletions

.gitattributes

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Shell scripts require LF
2+
*.sh text eol=lf
3+
4+
# Batch scripts require CRLF
5+
*.cmd text eol=crlf
6+
*.bat text eol=crlf
7+
8+
*.cfg text eol=crlf
9+
*.ini text eol=crlf
10+
*.map text eol=crlf
11+
*.txt text eol=crlf
12+
*.xdp text eol=crlf
13+
14+
preupdateexec text eol=crlf
15+
updateexec text eol=crlf
16+
version text eol=crlf

.gitignore

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
#Ignore thumbnails created by Windows
22
Thumbs.db
33
#Ignore log, config etc. user created files.
4-
ClientFiles/spawnmap.ini
5-
ClientFiles/spawn.ini
6-
ClientFiles/except.txt
7-
ClientFiles/ra2md.ini
8-
ClientFiles/keyboardmd.ini
9-
ClientFiles/ddraw.dll
10-
ClientFiles/ddraw.ini
11-
ClientFiles/libwine.dll
12-
ClientFiles/wined3d.dll
13-
ClientFiles/dxwnd.dll
14-
ClientFiles/dxwnd.ini
15-
ClientFiles/aqrit.cfg
16-
ClientFiles/syringe.log
17-
ClientFiles/stats.dmp
18-
ClientFiles/debug/
19-
ClientFiles/Client/
20-
ClientFiles/Map Editor/FinalAlert.ini
21-
ClientFiles/Map Editor/RA2Tmp.csf
22-
ClientFiles/Map Editor/FinalAlert2Log.txt
23-
ClientFiles/Map Editor/syringe.log
24-
ClientFiles/Saved Games/
25-
ClientFiles/Screenshots/
26-
ClientFiles/Resources/MainMenuTheme.bak
4+
/package/RA2MD.ini
5+
/package/Maps/Custom/*.zip
6+
/package/Maps/Custom/*.map
7+
/package/Maps/Custom/*.png
8+
/package/Maps/Custom/*.yrm
9+
/package/version
10+
/package/Qt/QM/
11+
/package/VersionWriter.exe
12+
/package/VersionWriter-CopiedFiles
13+
/logs
14+
/gitversion.json
15+
ddraw.dll
16+
ddraw.ini
17+
RA2MD.ini
18+
spawn.ini
19+
spawnmap.ini
20+
version_u
21+
/package/Client/
22+
.idea
23+
.idea/*
24+
/tools/node_modules
25+
/CnCNet5_YR_Installer.exe
26+
/package.tar.gz
27+
/Client/

DEPLOYMENTS.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# CnCNet Yuri's Revenge Client Package Deployments
2+
3+
This describes the workflow for release/deployments.
4+
5+
Deployments are currently set up for [Continuous Deployment](https://gitversion.net/docs/reference/modes/continuous-deployment). Versioning is auto incremented. Builds and deploys are triggered by new code pushed to the following branches:
6+
- `develop`
7+
- `feature/*`
8+
- `hotfix/*`.
9+
10+
## Versioning
11+
12+
### Publishing a release:
13+
14+
When a release is created, the corresponding tag name should be created in the format **yr-X.Y** or **yr-X.Y.Z**, where **X** is major, **Y** is minor, and **Z** is an optional patch. When a tag is created in this format, a deployment will occur for that exact version.
15+
16+
#### Examples:
17+
18+
- If the tag **yr-8.7** is created, the next deployed version in this case will be **8.7**
19+
- If the tag **yr-8.7.1** is created, the next deployed version in this case will be **8.7.1**
20+
21+
### New develop/feature versions:
22+
23+
After a tag has been created, any commits to either the `develop` branch or a `feature/*` branch will created a new version that is an incremented Minor version of the that most recent tag. Additionally:
24+
25+
- The full version string will have the branch name appended to the end.
26+
- The full version string will have a commit counter number appended to the end.
27+
28+
#### Examples:
29+
30+
- If the latest tag is **yr-8.6**, a single commit to the `develop` branch will create the version **8.7.0-dev.1**. Two more commits (three total after the latest tag) will create the version **8.7.0-dev.3**.
31+
- If the latest tag is **yr-8.6**, a single commit to the `/feature/my-feature` branch will create the client version **8.7.0-my-feature.1**. Two more commits (three total after the latest tag) will create the client version **8.7.0-my-feature.3**.
32+
33+
### Hotfix versions:
34+
35+
Similar to develop/feature versions, any commits to a `/hotfix/*` branch will auto increment the Patch version based on the latest tag version.
36+
37+
#### Examples:
38+
39+
- If the latest tag is **yr-8.6**, a commit to a hotfix branch `my-fix` will create the client version **8.6.1-my-fix.1**.
40+
41+
## GitHub Workflow
42+
43+
This section describes the proper workflow for publishing new versions of the client. Below is an example of a "current state" scenario.
44+
45+
### Current state: Example 1
46+
The client is on version **8.6** and a git tag of **yr-8.6** exists.
47+
48+
1. A PR of new code is created and merged OR code is committed and pushed directly to the `develop` branch.
49+
2. The `deployment` Github Action is triggered and creates the version directory `/updates/games/yr/updates/8.7.0-dev` on the server. The `version` file generated by `VersionWriter.exe` will have the version of `8.7.0-dev.1`.
50+
3. The `/updates/games/yr/dev` is created automatically (if necessary) on the server and linked to the `/updates/games/yr/updates/8.7.0-dev` folder. This version is now live for dev testers.
51+
4. Another PR of new code is created and merged OR code is pushed directly to `develop`.
52+
5. The `deployment` Github Action is triggered and deploys an updated version of `8.7.0-dev` to the server. The `version` file generated by `VersionWriter.exe` will have the version of `8.7.0-dev.2`. This should trigger a client update notification for anyone testing dev versions.
53+
6. The version `8.7.0-dev.2` has been determined to be stable and is tagged in Github as `yr-8.7` (**manual process**).
54+
7. The `release` Github Action is triggered. This then triggers the `deployment` Github Action which deploys the version `8.7.0` to the server.
55+
9. The `/updates/games/yr/live` folder/link on the server is the manually linked to `8.7.0`. This version is now live for all.
56+
57+
### Current state: Example 2
58+
The client is on version **8.6** and a git tag of **yr-8.6** exists.
59+
60+
1. A PR of new code is created and merged OR code is committed and pushed directly to the `feature/my-feature` branch.
61+
2. The `deployment` Github Action is triggered and creates the version directory `/updates/games/yr/updates/8.7.0-my-feature` on the server. The `version` file generated by `VersionWriter.exe` will have the version of `8.7.0-my-feature.1`.
62+
3. The `/updates/games/yr/my-feature` is created automatically (if necessary) on the server and linked to the `/updates/games/yr/updates/8.7.0-my-feature` folder. This version is now live for testers.
63+
4. Another PR of new code is created and merged OR code is pushed directly to `feature/my-feature`.
64+
5. The `deployment` Github Action is triggered and deploys an updated version of `8.7.0-my-feature` to the server. The `version` file generated by `VersionWriter.exe` will have the version of `8.7.0-my-feature.2`. This should trigger a client update notification for anyone testing dev versions.
65+
6. The version `8.7.0-my-feature.2` has been determined to be stable and is tagged in Github as `yr-8.7` (**manual process**).
66+
7. The `release` Github Action is triggered. This then triggers the `deployment` Github Action which deploys the version `8.7.0` to the server.
67+
8. The `/updates/games/yr/live` folder/link on the server is the manually linked to `8.7.0`. This version is now live for all.
68+
9. Code from `feature/my-feature` is merged to `develop` branch.
69+
70+
## Security and Approvals
71+
72+
For security reasons, the `develop` branch has protection rules in place to prevent unauthorized pushes/merges to `develop` and thus unauthorized deployments.
73+
1. Pushes directly to `develop` are disabled for non admins. Changes to `develop` must be made through a PR.
74+
2. PRs for non admins require a minimum of 1 approval.
75+
3. Approvals on PRs that are "updated" by new commits are immediately dismissed. These PRs must be re-approved.

ForcedOptions.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# Using Forced Options in Maps
2+
3+
This document outlines the forced options for maps used in CnCnet standard gamemode.
4+
5+
### Please Note:
6+
7+
For maps in specific gamemodes shipped with the CnCnet YR Package, the gamemode likely already has predefined forced option values defined within `MPMaps.ini`
8+
9+
Please look at `[razer_survival_options]` within `MPMaps.ini` if you want forced options on a map per map basis in a gamemode that doesn't have forced options for the entire game predefined.
10+
11+
12+
13+
## [ForcedOptions]
14+
15+
### Game Settings
16+
- **Short Game**: Enabled (`chkShortGame=true`)
17+
- Enables or disables Short Game mode.
18+
- **MCV Redeployment**: Enabled (`chkRedeplMCV=true`)
19+
- Allows or disallows MCV redeployment.
20+
- **Auto Repair**: Disabled (`chkAutoRepair=false`)
21+
- Enables or disables automatic unit repairs.
22+
- **Multi Engineer**: Disabled (`chkMultiEng=false`)
23+
- Enables or disables multiple engineers capturing buildings.
24+
- **Ingame Allying**: Enabled (`chkIngameAllying=true`)
25+
- Allows or disallows forming alliances during gameplay.
26+
- **Destroyable Bridges**: Disabled (`chkDestrBridges=false`)
27+
- Enables or disables bridge destruction.
28+
- **Build Off Ally**: Enabled (`chkBuildOffAlly=true`)
29+
- Allows or disallows building off allied Construction Yards.
30+
- **RA2 Mode**: Disabled (`chkRA2Mode=false`)
31+
- Enables or disables Red Alert 2 mode.
32+
- **YR Rebalance Patch**: Disabled (`chkBalancePatch=false`)
33+
- Enables or disables Yuri's Revenge rebalance patch.
34+
- **Spawn Previews**: Disabled (`chkNoSpawnPreviews=false`)
35+
- Enables or disables spawn previews.
36+
- **Yuri Faction**: Enabled (`chkNoYuri=false`)
37+
- Allows or disallows selecting Yuri as a faction.
38+
- **France Faction**: Enabled (`chkNoFrance=false`)
39+
- Allows or disallows selecting France as a faction.
40+
- **Spies**: Enabled (`chkNoSpy=false`)
41+
- Allows or disallows building spies.
42+
- **Dog Engineer Eating**: Disabled (`chkNoDogEngiEat=false`)
43+
- Enables or disables dogs eating engineers.
44+
- **Stolen Tech**: Enabled (`chkNoStolenTech=false`)
45+
- Allows or disallows spies entering Battle Labs to unlock special units (Chrono Commando, Ivan, Psi-Troop).
46+
- Battle labs are now immune to spys. As a fail safe, unlocked units now have TechLevel=-1 and BuildLimit=0.
47+
48+
### Game Speed
49+
- **Skirmish Game Speed**: 30 FPS (`cmbGameSpeedCapSkirmish=2`)
50+
- Sets the starting FPS for skirmish games (range: 0-6; 0 = MAX FPS, 1 = 60 FPS, 2 = 30 FPS).
51+
- **Note**: FPS/Game Speed is changeable in-game; this only sets the starting value.
52+
- **Multiplayer Game Speed**: 30 FPS (`cmbGameSpeedCapMultiplayer=2`)
53+
- Sets the starting FPS for multiplayer games (range: 0-6; 0 = 60 FPS, 1 = 45 FPS, 2 = 30 FPS).
54+
- **Note**: FPS/Game Speed is changeable in-game; this only sets the starting value.
55+
- Recommended for survival or special maps.
56+
57+
### Resources
58+
- **Starting Credits**: 100,000 (`cmbCredits=0`)
59+
- Sets starting credits (range: 0-10; 0 = 100,000, 1 = 30,000, ..., 8 = 2,500).
60+
- **Starting Units**: 10 (`cmbStartingUnits=0`)
61+
- Sets starting unit count (range: 0-10; 0 = 10 units, 1 = 9 units, ..., 9 = 1 unit).
62+
63+
### Super Weapons
64+
- **Super Weapons Modifier**: Enabled (`cmbSuperWeaponsModifier=0`)
65+
- Controls super weapon availability (range: 0-3):
66+
- 0 = Enabled (all super weapons allowed).
67+
- 1 = Offensive (Nuke, Weatherstorm, Dominator only).
68+
- 2 = Defensive (Iron Curtain, Chronosphere, Genetic Mutator only).
69+
- 3 = Disabled (no super weapons).
70+
71+
### AI Behavior
72+
- **AI Modifier**: Vanilla AI (`cmbAIModifier=0`)
73+
- Sets AI difficulty behavior (range: 0-2):
74+
- 0 = Vanilla AI (default behavior).
75+
- 1 = Brutal AI (more challenging, based on RA2/YR Brutal AI).
76+
- 2 = Extreme AI (more challenging, based on RAZER changes).
77+
78+
### Crates
79+
- **Crates Modifier**: Disabled (`cmbCratesModifier=0`)
80+
- Controls crate spawning (range: 0-3):
81+
- 0 = Disabled (no crates spawn).
82+
- 1 = Enabled-Default (crates spawn with default settings from `spawner.xdp`).
83+
- 2 = Enabled-Extra (more crates, minimum 8 vs. 1).
84+
- 3 = Enabled-Extreme (many crates, minimum 40 vs. 1).
85+
- **Note**: To fully disable crates, ensure `Crates=False` in the gamemode's `spawn.ini` settings (e.g., check Blitz or Blitz 2v2 settings in `MPBase.ini`).

GitVersion.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
tag-prefix: 'yr-'
2+
mode: ContinuousDeployment
3+
increment: Patch
4+
5+
branches:
6+
develop:
7+
regex: ^develop
8+
source-branches: [ 'develop' ]
9+
tag: dev
10+
11+
# Any new features that should be auto versioned should be in a branch under "feature/"
12+
# Example: feature/net7 or feature/quakenet
13+
# Features will increment the version by Minor.
14+
feature:
15+
regex: ^feature?[/-]
16+
source-branches: [ 'develop' ]
17+
tag: useBranchName
18+
increment: Inherit
19+
20+
# Any patches should be put under the "hotfix/" branch prefix.
21+
# Example: hotfix/gamespawn-cloak-fix
22+
# Hotfixes will increment the version by Patch.
23+
hotfix:
24+
regex: ^hotfix?[/-]
25+
source-branches: [ 'develop' ]
26+
tag: useBranchName
27+
increment: Patch

README.md

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,48 @@
1-
# CnCNet Client Yuri's Revenge Mod Base #
1+
# CnCNet Yuri's Revenge Client Package
22

3-
This repository contains a collection of files that can be used as a base to adapt [Rampastring's](https://github.com/Rampastring) [CnCNet Client](https://github.com/CnCNet/xna-cncnet-client) for use with Command & Conquer: Yuri's Revenge mods, particularly those also using [Ares DLL](https://ares.strategy-x.com/) _(not included in this repository or any of the releases)_.
3+
![logo](https://user-images.githubusercontent.com/6104940/219884309-a1737d96-c140-49ae-b235-456cc2c43d6a.png)
44

5-
The contents of this repository can be broken down into the following categories (also separated into folders):
5+
The official CnCNet [Yuri's Revenge](https://cncnet.org/yuris-revenge) package for online.
6+
This package is an add-on to the [XNA CnCNet Client](https://github.com/CnCNet/xna-cncnet-client) by [Rampastring](https://github.com/Rampastring)
67

7-
- **[Client Files](ClientFiles)**: Contains compiled client binaries, an example client configuration & assets as well as all Command & Conquer: Yuri's Revenge maps (including the official map pack maps) and preview images generated for them. Source code for the client binaries included in this repository can be found [here](https://github.com/CnCNet/xna-cncnet-client).
8-
- **[Tools](Tools)**: Contains tool software that may be helpful for or required by the mod developers using the client. Currently this includes version file writer tool (source code for which can be found [here](https://github.com/Starkku/VersionWriter)) which is used for the client's updater feature.
9-
- **[Miscellaneous](Miscellaneous)**: Contains assorted files that are not additional software or part of the client configuration. Currently this includes update server script files used with the client's updater feature.
10-
- **[Documentation](Documentation)**: Contains documentation and guides for client features & configuration.
8+
### Contributors
119

12-
Latest version can be downloaded [here](https://github.com/Starkku/cncnet-client-mod-base/archive/refs/tags/latest.zip).
10+
* [tomsons26](https://github.com/tomsons26)
11+
* [dkeetonx](https://github.com/dkeetonx)
12+
* [GrantBartlett](https://github.com/GrantBartlett)
13+
* [Martin](https://forums.cncnet.org/profile/32538-ravage/)
14+
* [Kerbiter](https://github.com/Metadorius)
15+
* [Burg](https://github.com/alexp8)
16+
* [devo1929](https://github.com/devo1929)
17+
* [Belonit](https://github.com/Belonit)
18+
* [CCHyper](https://github.com/CCHyper)
19+
* [ [RU]Polye](https://github.com/bhdrks78)
20+
* [CnCRAZER](https://github.com/CnCRAZER)
21+
* [BRichardson1991](https://github.com/brichardson1991)
1322

14-
Other releases can be browsed at https://github.com/Starkku/cncnet-client-mod-base/releases.
23+
### Development
1524

16-
## Documentation Index
25+
**NOTE:** This is NOT the repository necessary for developing the CnCNet client for Yuri's revenge. That is the **XNA CnCNet Client** mentioned above. This is simply a wrapper for it.
1726

18-
- [Quick Start Guide](Documentation/QuickStartGuide.md)
27+
To contribute to the XNA client for YR, you must also check out the `xna-cncnet-client` repo mentioned above. Once that repo is checked out, you can copy and paste the `Directory.Build.Game.YR.props` file located into the `resources` folder of the `cncnet-yr-client-package` checkout location to the root of the `xna-cncnet-client` checkout location. This file should automatically copy over all necessary resources from this repository to the output directory of the compiled `xna-cncnet-client` executable. Then, when launched, it should do so with with the Yuri's revenge theme.
1928

20-
More documentation can be found in repository for the client itself [here](https://github.com/CnCNet/xna-cncnet-client/tree/develop/Docs).
29+
You MUST edit the `YRSource` property in the `Directory.Build.Game.YR.props` file if you use it.
2130

22-
Credits
23-
-------
31+
### Repository Structure
2432

25-
- [Rampastring](https://github.com/Rampastring) - Original CnCNet Client & updater, example DTA update server scripts
26-
- [Starkku](https://github.com/Starkku) - Client contributions, extended client updater, [VersionWriter](https://github.com/Starkku/VersionWriter), some client graphical assets, client configuration, documentation
27-
- [Kerbiter](https://github.com/Metadorius) - Client contributions, draft of the updater documentation, original player status indicator icons
28-
- [tomsons26](https://github.com/tomsons26) - Edited Yuri's Revenge UI assets originally for use with CnCNet Yuri's Revenge
29-
- [Sad Pencil](https://github.com/SadPencil) - QRes DPI awareness fix
33+
- `package` - This directory contains the exact file structure that should make up the client package that is delivered to users.
34+
- `resources` - This directory contains any resources to assist in building the package, like other theming elements. For example, this directory contains various `expandspawn09.mix` files for custom crates. These `mix` files can be moved to the `package` directory when we want to change the crate theme.
35+
- `tools` - This directory contains tools that are used to help build the package. It includes tools like:
36+
- `download-artifacts/download-client.ps1` - A powershell script to automatically download a specific set of binaries of the `xna-cncnet-client`
37+
- `download-artifacts/download-client-launcher.ps1` - A powershell script to automatically download a specific instance of the client launcher.
38+
- `inno-setup/inno-setup.ps1` - A powershell script to build the InnoSetup installer
39+
- `maps-updater/maps-updater.ps1` - A powershell script that is basically a wrapper to run our YRMapsUpdater C# program. This program updates the mpmaps.ini file by scanning for all map changes in the `package/Maps/Yuri's Revenge` directory.
3040

31-
Screenshots
32-
-------
33-
![Screenshot of client main menu.](modbaseclient-mainmenu.png?raw=true "Main menu in example configuration.")
34-
![Screenshot of client skirmish game lobby.](modbaseclient-skirmishlobby.png?raw=true "Skirmish game lobby in example configuration.")
41+
### Deployments
42+
43+
[Documentation](DEPLOYMENTS.md)
44+
45+
## Sponsored by
46+
<a href="https://www.digitalocean.com/?refcode=337544e2ec7b&utm_campaign=Referral_Invite&utm_medium=opensource&utm_source=CnCNet" title="Powered by Digital Ocean" target="_blank">
47+
<img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg" width="201px" alt="Powered By Digital Ocean" />
48+
</a>

0 commit comments

Comments
 (0)