Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
166 commits
Select commit Hold shift + click to select a range
b29b47c
First macOS commit - fork of the original project
Nov 8, 2025
2351862
Installed external units
Nov 9, 2025
80a2895
Build done - application is not working ...
Nov 10, 2025
c6d7da2
Main menu is working.
Nov 10, 2025
66cee2b
cd data extractor changed
Nov 10, 2025
f57a5c7
Bins created
Nov 10, 2025
8da14b6
App Bundles created
Nov 10, 2025
fcf5412
Atomic Bomberman is working :-)
Nov 12, 2025
9978ba7
saving ini files into Library/Application Controll
Nov 12, 2025
48973da
Atomic Bomberman works - sounds corrected.
Nov 13, 2025
6cdf775
Added application logo...
Nov 14, 2025
c2b38b9
Added build scripts ...
Nov 14, 2025
63ac76d
Build for X86_64 added
Nov 14, 2025
bd91ca2
Fullscreen mode disabled
Nov 15, 2025
352d025
Debug text played time
Nov 15, 2025
6813912
Joystick is working - reversed directions
Nov 16, 2025
dc34df0
Joystick is working correct directions and buttons
Nov 16, 2025
3d86e20
D-pad is working :-) Joystick is working perfectly!
Nov 16, 2025
91d7737
Double detection of gamepad buttons error in menu corrected
Nov 16, 2025
ce355fc
Double buttons corrected in game start
Nov 16, 2025
75ff8c3
First build for x86_64
Nov 17, 2025
3b1aabe
Build for x86_64 works on Big Sur-
Nov 17, 2025
ac8da6b
Removed logging
Nov 18, 2025
c5a8c45
gitignore
Nov 26, 2025
1e84eb9
Server - docket in fly.io is working
Nov 26, 2025
79cdb4a
Ai robots working on Remote server
Nov 26, 2025
6cc501a
Fly.io latency tests are working.
Nov 27, 2025
5f32e47
Interpolation is working.
Nov 27, 2025
bfdab69
Time in network game is running ok
Nov 27, 2025
0fc4821
Removed logs
Nov 27, 2025
52c105f
added Max values into debug overlay
Nov 28, 2025
af913bd
Multithread is working
Nov 28, 2025
671d1d7
Join network game works better
Nov 28, 2025
09f88fd
Start network game is working on local network - show TCP Adress
Nov 28, 2025
afe900a
Fix flame animation rendering for brick detonation
Nov 28, 2025
a283d6b
Thin Purple line from animation are away - added toleration for chrom…
Nov 29, 2025
c12e844
Flames corrected
Nov 29, 2025
9d3d2e4
Added confirmation window when user press Esc in the middle of a game
Nov 29, 2025
e40008e
loading screen is partially working,
Nov 29, 2025
0d4b33b
Loading screen is working 100%
Nov 29, 2025
f8a3993
Joystick support - 3 players can play on one computer (Joy 1, Key 0, …
Nov 30, 2025
b079a4b
2 Joysticks + 2 Keyboards (4 Players on one computer) is working :-)
Nov 30, 2025
3e00f62
Running server shows Its IP address and port
Nov 30, 2025
d007bde
joystick corrected
Dec 4, 2025
96d5f8f
Joystick is working perfect
Dec 4, 2025
a9618c3
D-PAD and Joystick is working perfectly
Dec 4, 2025
06f9344
Joystick detection works better - one more time
Dec 4, 2025
320c956
Joystick are working fine :-)
Dec 4, 2025
2959148
CD Data extractor works
Dec 5, 2025
b11bd7b
Server fly.io works again
Dec 5, 2025
e12a023
CI/CD Automatic build via github actions
Dec 6, 2025
1bdb583
Add: Sync upstream command
Dec 6, 2025
ee0bf0c
Merge remote-tracking branch 'upstream/main' into GamePad-Tuning
Dec 6, 2025
d24249c
gitignore changed
Dec 6, 2025
3102a19
AtomicBomberman Asset Icons
Dec 6, 2025
3d85544
Merge branch 'GamePad-Tuning'
Dec 6, 2025
3219e0b
build windows yml update
Dec 6, 2025
c6f79fc
Installing Free Pascal Via Chocolate on Windows
Dec 6, 2025
4cc7c13
Free Pascal Compiler v64bit
Dec 6, 2025
9e76589
Fix: Auto-detect FPC installation path in Windows workflow
Dec 6, 2025
7254199
Add debug output to show FPC installation directory structure
Dec 6, 2025
47e0093
Fix: Prioritize 64-bit FPC and fix verification command
Dec 6, 2025
40a955b
Fix: Use setup.inf to ensure 64-bit FPC is installed
Dec 6, 2025
21511fb
Fix: Replace PowerShell here-string with array to fix YAML syntax error
Dec 6, 2025
5b44cf6
Fix: Find lazbuild after Chocolatey installation
Dec 6, 2025
361aa42
Add LNet package installation step to Windows workflow
Dec 7, 2025
5d9d733
Fix: Build LNet package instead of installing
Dec 7, 2025
ca08a46
Add dependency verification step to Windows workflow
Dec 7, 2025
3ed04c0
Fix: Improve LNet package path detection on Windows
Dec 7, 2025
8a3adb1
Fix: Download LNet from GitHub during Windows build
Dec 7, 2025
03690d7
Fix: Use master branch for LNet download (not main)
Dec 7, 2025
9c3ba3f
Fix: Use correct lazbuild command and improve LNet source file detection
Dec 7, 2025
4bafcba
Fix: Copy LNet source files to expected location for search paths
Dec 7, 2025
bcb3829
Fix: Improve LNet file copying and verification
Dec 7, 2025
e87c8e8
Fix: Copy LNet lib as subdirectory to match search paths
Dec 7, 2025
38a2f53
Fix: Use syntax for PowerShell variable in string
Dec 7, 2025
60ccbd2
Fix: Remove BEGIN/END from Interface section in uearlylog.pas
Dec 7, 2025
36d0a54
Fix: Replace Min() with explicit comparison for Double values
Dec 7, 2025
64e397e
Fix: Add sdl2_for_pascal to default build mode search paths
Dec 7, 2025
0d9c250
Fix: Remove Synapse SSL initialization code
Dec 7, 2025
98d9c3f
GitHub Workflows Windows compilation works
Dec 7, 2025
445477c
Automatic Windows build removed
Dec 7, 2025
5b634a0
Enhance Linux build workflow
Dec 7, 2025
23d0987
Fix Linux workflow: use fpc -iV and add set -e
Dec 7, 2025
0a23552
Fix Linux build: remove macOS-specific paths from default mode
Dec 7, 2025
68bef09
Add BASS library linker flag for Linux build
Dec 7, 2025
383f52e
Fix Linux build: create dummy libbass.so for linking
Dec 7, 2025
400ea74
Use libbass.so and libai.so from bin/ directory
Dec 7, 2025
fa95ec4
Add bin/ directory libraries to repository
Dec 7, 2025
bf85736
Fix texture loading on Windows - show loading dialog
Dec 7, 2025
5b05400
Fix texture loading on Windows - call Game.Initialize directly
Dec 7, 2025
24fbd4c
Add extensive logging for Windows texture loading debugging
Dec 7, 2025
298441d
Add direct file logging for Windows debugging
Dec 7, 2025
415f468
Fix duplicate uearlylog import in ugame.pas
Dec 7, 2025
e0d8d32
FIX: Automatic Linux Build Commented Out
Dec 7, 2025
4ff4d81
Add detailed logging for texture loading and rendering
Dec 7, 2025
e358a81
Add OpenGL state checks and viewport logging in RenderDirect
Dec 7, 2025
6cc1097
Add texture validation and GL_TEXTURE_2D enable in RenderImg
Dec 7, 2025
3a533ee
Fix font rendering in LoaderDialog - disable texturing
Dec 7, 2025
1256d5e
Add logging for font loading on Windows
Dec 7, 2025
353e5d7
Add logging for font creation in OpenGLControl1MakeCurrent
Dec 7, 2025
617b972
Fix compilation error - Font1 and Font2 are private members
Dec 7, 2025
ad0fca1
Fix font rendering on Windows - disable texturing before rendering fonts
Dec 8, 2025
dedbe4b
Revert font rendering changes - match macOS behavior
Dec 8, 2025
df9b36a
Add debug logging to Textout on Windows
Dec 8, 2025
1a064c6
Fix crash: Replace WriteLn with EarlyLog in Textout
Dec 8, 2025
b52d207
Fix syntax error and revert to original initialization
Dec 8, 2025
e24bdeb
Make initialization conditional by OS
Dec 8, 2025
812736d
Fix two Windows issues: IP address display and available fields list
Dec 8, 2025
485ac92
Fix available fields list - send to all clients properly
Dec 8, 2025
934d3aa
Fix compilation errors in uip.pas
Dec 8, 2025
532937d
Fix Windows build and available fields list
Dec 8, 2025
7a5166c
Fix cross-platform field name matching (Windows/Mac)
Dec 8, 2025
fd1d059
Accept fields with matching names even if hashes differ (cross-platform)
Dec 8, 2025
bfb7da4
Fix cross-platform hash calculation for info.txt
Dec 8, 2025
727c2df
Fix syntax error in hash normalization code
Dec 8, 2025
9032bec
Fix syntax: move variable declarations to function start
Dec 8, 2025
1bffc42
Fix: declare variable i outside Client conditional
Dec 8, 2025
03a7eb5
Improve hash normalization: read file as binary to avoid auto-conversion
Dec 8, 2025
960f6bf
Fix syntax: move variable declarations to function start
Dec 8, 2025
d92a458
Fix field lookup: accept by name when hash differs (cross-platform)
Dec 8, 2025
0afbafb
Fix available fields list: accept fields by name when hash differs
Dec 8, 2025
9b22554
Comment out hash mismatch warnings (too noisy in production)
Dec 8, 2025
f379dd5
FIX: CD Data Extractor Mac
Dec 8, 2025
d9e7e7b
Correct transfer of Empty DATA folder
Dec 8, 2025
6d2ac43
FIX: CD data extractor - corrected parsing ANI files with a Space at …
Dec 8, 2025
24d748c
FIX: CD data extractor default folder on MacOS
Dec 9, 2025
2d62cc1
FIX: Small fixies in project structure
Dec 9, 2025
7f42a54
ADD: Compilation script for MacOS Universal Binary
Dec 9, 2025
f14da3e
FIX: Universal binary build works
Dec 9, 2025
bc30dde
CLEAN: Building scripts output cleaned
Dec 9, 2025
4f1924f
FIX: User friendly dialog appears, when Data folder is missing files
Dec 9, 2025
d4ceced
ADD: Added create DMG files for MacOS Installs
Dec 9, 2025
58d58e1
CLEAN: Log cleaning work in progress
Dec 9, 2025
6b09733
CLEAN: Cleaning logs work in progress 2
Dec 9, 2025
38186dc
EDIT: server stats.txt Saved in Application Support on Mac OS
Dec 9, 2025
c262700
EDIT: Windows and linux build (github actions) will copy the empty da…
Dec 9, 2025
d9e9713
ADD: Flyio - docker server build and deploy
Dec 9, 2025
fd8ddf9
FLY.IO Created Docker Solution via GitHub Actions
Dec 9, 2025
00e2001
Merge branch 'Windows-MacOS-Fixing'
Dec 9, 2025
f0fdf51
ADD: Remove quarantine script for APP files, when transferring APP vi…
Dec 10, 2025
2dfa695
EDIT: Git ignore full_extracted data
Dec 10, 2025
23a7bdf
ADD: Remove quarantine command.
Dec 10, 2025
50501ce
New quarantine command
Dec 10, 2025
6e9ad99
BUG Remove:
Dec 10, 2025
de3bfb5
Cornered animation bug fixed.
Dec 10, 2025
5ae5f58
EDIT: Start Network Game runs the server in the Terminal, co user can…
Dec 10, 2025
047d171
BUGFIX: Cornered Animation are working again
Dec 10, 2025
f6e919c
EDIT: Atomic Launcher refreshes the picture of Bomberman when Extract…
Dec 10, 2025
8899b5b
EDIT: Local project folder renamed to fpc_atomic
Dec 10, 2025
f140a68
ADD: Added files headers - Modified by : Pavel Zverina
Dec 11, 2025
5415896
REMOVE: Removed template header and python script for applying header
Dec 11, 2025
e3806ab
REMOVE: Removed log TGame.OnReceivedChunk
Dec 11, 2025
d8670e7
BUG: Corrected bug with logging
Dec 11, 2025
8b9d1f4
Merge branch 'RunningServerFromApp'
Dec 11, 2025
71a73e5
REMOVE: Play sound debug log
Dec 11, 2025
d5def25
BUGFIX: Join network game on localhost when server is not running - b…
Dec 11, 2025
02457f0
BUGFIX: Fixed relative destination path for CD Data extractor on MacOS
Dec 11, 2025
6f031c9
EDIT: Fly.io application name explained and edited
Dec 11, 2025
cdaa4e7
EDIT: Deploy to fly.io simplified
Dec 11, 2025
7b3825b
BUGFIX: .env in flyio_server is working
Dec 11, 2025
7e6c133
GitHub Actions renamed. GifHub Action for Fly.io server corrected - (…
Dec 11, 2025
4f9b0b2
Flyio: Tuning build script for GitHub
Dec 11, 2025
c852c0a
EDIT: Readme file, new automated releases
Dec 12, 2025
ea3bb95
UPDATE: Readme.md
Dec 12, 2025
0dc36d1
BUGFIX: Windows - Unable to initialize device error 23 access violati…
Dec 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# GitHub Actions Workflows

Tento adresář obsahuje CI/CD workflow pro automatické buildu aplikací pro všechny platformy.

## Build Windows

Workflow `build-windows.yml` automaticky kompiluje všechny aplikace pro Windows při:
- Push do `main` nebo `master` branch
- Pull request do `main` nebo `master` branch
- Manuálním spuštění přes GitHub Actions tab

## Build macOS

Workflow `build-macos.yml` automaticky kompiluje všechny aplikace pro macOS (ARM64 i x86_64) při:
- Push do `main` nebo `master` branch
- Pull request do `main` nebo `master` branch
- Manuálním spuštění přes GitHub Actions tab

**Poznámka**: macOS buildy běží na dvou runnerech:
- `macos-latest` - Apple Silicon (ARM64)
- `macos-13` - Intel (x86_64)

## Build Linux

Workflow `build-linux.yml` automaticky kompiluje všechny aplikace pro Linux při:
- Push do `main` nebo `master` branch
- Pull request do `main` nebo `master` branch
- Manuálním spuštění přes GitHub Actions tab

### Jak to funguje:

1. **Automatické spuštění**: Když pushneš změny do GitHubu, workflow se automaticky spustí
2. **Windows runner**: GitHub poskytne virtuální Windows počítač
3. **Instalace nástrojů**: Automaticky se nainstaluje Free Pascal Compiler a Lazarus IDE
4. **Kompilace**: Všechny aplikace se zkompilují (client, launcher, server, extractor)
5. **Artefakty**: Zkompilované `.exe` soubory jsou k dispozici ke stažení

### Jak použít:

1. **Pushni změny do GitHubu**:
```bash
git add .
git commit -m "Update code"
git push
```

2. **Zkontroluj stav buildu**:
- Jdi na GitHub → tvůj repozitář
- Klikni na záložku "Actions"
- Uvidíš běžící nebo dokončené buildu

3. **Stáhni artefakty**:
- Po dokončení buildu klikni na workflow run
- V sekci "Artifacts" klikni na příslušný artifact:
- `windows-binaries` - Windows `.exe` soubory
- `macos-arm64-binaries` - macOS ARM64 binárky
- `macos-x86_64-binaries` - macOS Intel binárky
- `linux-binaries` - Linux binárky
- Stáhneš ZIP soubor se všemi zkompilovanými soubory

### Manuální spuštění:

1. Jdi na GitHub → tvůj repozitář → záložka "Actions"
2. Vyber workflow "Build Windows"
3. Klikni na "Run workflow"
4. Vyber branch a klikni "Run workflow"

### Poznámky:

- Build trvá obvykle 5-15 minut (závisí na platformě)
- Artefakty jsou dostupné 30 dní
- Pokud build selže, zkontroluj logy v sekci "Actions"
- Všechny tři workflow (Windows, macOS, Linux) běží paralelně, takže dostaneš buildy pro všechny platformy najednou

157 changes: 157 additions & 0 deletions .github/workflows/build-flyio.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
name: Build and Release Fly.io Server

# This workflow builds Docker image for Fly.io server and creates a release
# Responds only to tags starting with "server-v" (e.g., server-v1.0.0)
on:
workflow_dispatch: # Manual trigger
push:
tags:
- 'server-v*' # Triggers on tags starting with 'server-v' (e.g., server-v1.0.0)

jobs:
build-and-release:
name: Build Docker Image and Create Release
runs-on: ubuntu-latest

steps:
# 1. Checkout code
- name: Checkout code
uses: actions/checkout@v4

# 2. Prepare data directory for Docker build
- name: Prepare data directory
run: |
# If flyio_server/data doesn't exist, use data from project root
if [ ! -d "flyio_server/data" ]; then
echo "flyio_server/data not found, using data from project root"
if [ -d "data" ]; then
mkdir -p flyio_server
cp -r data flyio_server/data
echo "✓ Copied data from project root to flyio_server/data"
echo "⚠️ WARNING: This image will be built with placeholder/empty data"
echo "⚠️ WARNING: Server deployed from this image will NOT work properly (no game maps)"
echo "⚠️ WARNING: Users must add game data using deploy_prebuilt.sh with actual game data"
else
echo "WARNING: Neither flyio_server/data nor data directory found"
echo "Creating empty data directory (server will NOT work properly)"
mkdir -p flyio_server/data
fi
else
echo "✓ flyio_server/data exists, using it"
# Check if it contains actual game data (has maps directory)
if [ -d "flyio_server/data/maps" ] && [ "$(ls -A flyio_server/data/maps 2>/dev/null)" ]; then
echo "✓ flyio_server/data contains game maps - image will be fully functional"
else
echo "⚠️ WARNING: flyio_server/data exists but appears to be empty/placeholder"
echo "⚠️ WARNING: Server deployed from this image will NOT work properly"
fi
fi

# 3. Setup Docker Buildx
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

# 4. Login to GitHub Container Registry
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

# 5. Extract version from tag or use commit SHA
- name: Extract version
id: version
run: |
if [[ "${{ github.ref }}" == refs/tags/server-v* ]]; then
# Remove "server-" prefix from tag (server-v1.0.0 -> v1.0.0)
VERSION=${GITHUB_REF#refs/tags/server-}
else
VERSION="dev-${GITHUB_SHA::8}"
fi
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "tag=ghcr.io/${{ github.repository_owner }}/fpc-atomic-server:$VERSION" >> $GITHUB_OUTPUT
echo "tag_latest=ghcr.io/${{ github.repository_owner }}/fpc-atomic-server:latest" >> $GITHUB_OUTPUT
echo "Version: $VERSION"

# 6. Build Docker image
- name: Build Docker image
uses: docker/build-push-action@v5
with:
context: .
file: ./flyio_server/Dockerfile
push: true
tags: |
${{ steps.version.outputs.tag }}
${{ steps.version.outputs.tag_latest }}
cache-from: type=gha
cache-to: type=gha,mode=max

# 7. Create GitHub Release (only for server tags)
- name: Create Release
if: startsWith(github.ref, 'refs/tags/server-v')
uses: softprops/action-gh-release@v1
with:
name: Fly.io Server ${{ steps.version.outputs.version }}
body: |

☁️ Cloud Server Release
This release contains files for build and deploy game server to [fly.io](https://fly.io)
## FPC Atomic Server for Fly.io

### 🚀 How to deploy to Fly.io (without Pascal compiler!)

**Easiest way - use the pre-built Docker image:**

1. **Install Fly.io CLI:**
```bash
curl -L https://fly.io/install.sh | sh
```

2. **Login:**
```bash
flyctl auth login
```

3. **Create a new directory and download configuration:**
```bash
mkdir fpc-atomic-server && cd fpc-atomic-server
curl -L https://github.com/${{ github.repository }}/releases/latest/download/fly.toml.example -o fly.toml
```

4. **Edit `fly.toml` - change the image path to your GitHub username (if you have a fork):**
```toml
[build]
image = "ghcr.io/${{ github.repository_owner }}/fpc-atomic-server:latest"
```

5. **Deploy to Fly.io:**
```bash
flyctl launch
```

**Alternative - build from source code:**

If you want to build from source code, clone the repository and use `fly.toml` from the `flyio_server/` directory.

### 📦 Docker Image

Image is available on GitHub Container Registry:
- `ghcr.io/${{ github.repository_owner }}/fpc-atomic-server:${{ steps.version.outputs.version }}`
- `ghcr.io/${{ github.repository_owner }}/fpc-atomic-server:latest`

### 🔧 Configuration

- **Port:** 5521
- **Region:** Frankfurt (fra) - can be changed in `fly.toml`
- **Auto-shutdown:** 30 seconds of inactivity

### 📝 Documentation

For more information, see [README.md](flyio_server/README.md)
draft: false
prerelease: false
files: |
flyio_server/README.md
flyio_server/fly.toml.example
flyio_server/Dockerfile
Loading