updated readme and linux server start #26
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |