Skip to content

updated readme and linux server start #26

updated readme and linux server start

updated readme and linux server start #26

Workflow file for this run

name: Build and Release Windows Executable
on:
push:
tags:
- 'v*'
- '[0-9]+.[0-9]+.[0-9]+'
workflow_dispatch:
inputs:
tag_name:
description: 'Tag name for manual release'
required: false
permissions:
contents: write
jobs:
build-windows:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Build JARs with Gradle
run: gradle jar serverJar -x test --no-daemon
- name: Create jpackage directory
run: mkdir jpackage-input
- name: Copy JAR to jpackage input
run: |
if (Test-Path build\libs\woodlanders-client.jar) {
Write-Host "Found woodlanders-client.jar"
Copy-Item build\libs\woodlanders-client.jar -Destination jpackage-input\woodlanders.jar
} else {
Write-Error "woodlanders-client.jar not found in build/libs"
Write-Host "Available files:"
Get-ChildItem -Path build\libs
exit 1
}
- name: Verify JAR exists
run: |
if (Test-Path jpackage-input\woodlanders.jar) {
Write-Host "JAR file found successfully"
Get-Item jpackage-input\woodlanders.jar
} else {
Write-Error "JAR file not found!"
exit 1
}
- name: Create portable Windows executable with jpackage
run: |
jpackage `
--input jpackage-input `
--name Woodlanders `
--main-jar woodlanders.jar `
--type app-image `
--dest dist `
--app-version 1.0.0 `
--vendor "Wagemaker UK" `
--description "Woodlanders Game" `
--win-console
- name: Create portable ZIP package
run: |
cd dist
Compress-Archive -Path Woodlanders -DestinationPath Woodlanders-Windows-Portable.zip
- name: Get tag name
id: get_tag
shell: bash
run: |
if [ "${{ github.event_name }}" = "push" ] && [[ "${{ github.ref }}" == refs/tags/* ]]; then
TAG_NAME=${GITHUB_REF#refs/tags/}
echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT
echo "is_tag=true" >> $GITHUB_OUTPUT
echo "Detected tag: $TAG_NAME"
elif [ -n "${{ github.event.inputs.tag_name }}" ]; then
echo "tag_name=${{ github.event.inputs.tag_name }}" >> $GITHUB_OUTPUT
echo "is_tag=true" >> $GITHUB_OUTPUT
echo "Manual tag: ${{ github.event.inputs.tag_name }}"
else
echo "is_tag=false" >> $GITHUB_OUTPUT
echo "No tag detected"
fi
- name: Create GitHub Release
if: steps.get_tag.outputs.is_tag == 'true'
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ steps.get_tag.outputs.tag_name }}
name: Release ${{ steps.get_tag.outputs.tag_name }}
draft: false
prerelease: false
body: |
## Downloads
- **Woodlanders-Windows-Portable.zip** - Windows executable with bundled JRE (no Java installation required)
- **Woodlanders-Linux-x86_64.AppImage** - Linux executable with bundled JRE (no Java installation required)
- **woodlanders-client.jar** - Client JAR (requires Java 21+)
- **woodlanders-server.jar** - Dedicated server JAR (requires Java 21+)
## Server Requirements by Player Count
| Players | CPU Cores | RAM | Upload Speed |
|---------|-----------|-----|--------------|
| 5-10 | 2 | 1GB | 2 Mbps |
| 10-20 | 2-4 | 2GB | 5 Mbps |
| 20-50 | 4 | 4GB | 10 Mbps |
| 50+ | 8+ | 8GB | 20 Mbps |
## Configuration Quick Reference
### server.properties
```properties
# Server port (default: 25565)
server.port=25565
# Maximum concurrent clients (default: 20)
server.max-clients=20
# World seed - 0 for random (default: 0)
world.seed=0
# Heartbeat interval in seconds (default: 5)
server.heartbeat-interval=5
# Client timeout in seconds (default: 15)
server.client-timeout=15
# Message rate limit per client (default: 100)
server.rate-limit=100
# Enable debug logging (default: false)
server.debug=false
```
## Server Launch Commands
```bash
# Basic start
java -jar woodlanders-server.jar
# Basic & config
java -jar woodlanders-server.jar --config server.properties
# With memory allocation
java -Xms2G -Xmx2G -jar woodlanders-server.jar
# With memory & config
java -Xms2G -Xmx2G -jar woodlanders-server.jar --config server.properties
# With custom port
java -jar woodlanders-server.jar --port 7777
# With all options
java -Xms4G -Xmx4G -XX:+UseG1GC -jar woodlanders-server.jar --port 25565 --max-clients 50
```
files: |
./dist/Woodlanders-Windows-Portable.zip
./build/libs/woodlanders-client.jar
./build/libs/woodlanders-server.jar
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload artifact as backup
uses: actions/upload-artifact@v4
with:
name: Woodlanders-Windows-Portable
path: dist/Woodlanders-Windows-Portable.zip
retention-days: 90