Private
Public Access
1
0

fix game
Some checks failed
Dynamic Branch Deploy / build-and-deploy (push) Failing after 2m0s

This commit is contained in:
Sebastian Unterschütz
2026-04-22 11:38:35 +02:00
parent a6cfc055be
commit 2286c18432
5 changed files with 29 additions and 7 deletions

View File

@@ -34,10 +34,12 @@ jobs:
if [ "$BRANCH_LOWER" = "main" ] || [ "$BRANCH_LOWER" = "master" ]; then if [ "$BRANCH_LOWER" = "main" ] || [ "$BRANCH_LOWER" = "master" ]; then
APP_URL="${{ env.BASE_DOMAIN }}" APP_URL="${{ env.BASE_DOMAIN }}"
TARGET_NS="${REPO_LOWER}" TARGET_NS="${REPO_LOWER}"
BUILD_MODE="main"
echo "Mode: PRODUCTION (Root Domain)" echo "Mode: PRODUCTION (Root Domain)"
else else
APP_URL="${REPO_LOWER}-${BRANCH_LOWER}.${{ env.BASE_DOMAIN }}" APP_URL="${REPO_LOWER}-${BRANCH_LOWER}.${{ env.BASE_DOMAIN }}"
TARGET_NS="${REPO_LOWER}-${BRANCH_LOWER}" TARGET_NS="${REPO_LOWER}-${BRANCH_LOWER}"
BUILD_MODE="dev"
echo "Mode: DEVELOPMENT (Subdomain)" echo "Mode: DEVELOPMENT (Subdomain)"
fi fi
@@ -50,6 +52,7 @@ jobs:
echo "DEBUG: Namespace: $TARGET_NS" echo "DEBUG: Namespace: $TARGET_NS"
echo "DEBUG: URL: $APP_URL" echo "DEBUG: URL: $APP_URL"
echo "DEBUG: Branch-Tag: $BRANCH_TAG" echo "DEBUG: Branch-Tag: $BRANCH_TAG"
echo "DEBUG: Build-Mode: $BUILD_MODE"
# In Gitea Actions Environment schreiben # In Gitea Actions Environment schreiben
echo "FULL_IMAGE_PATH=$FULL_IMAGE_PATH" >> $GITHUB_ENV echo "FULL_IMAGE_PATH=$FULL_IMAGE_PATH" >> $GITHUB_ENV
@@ -58,6 +61,7 @@ jobs:
echo "APP_URL=$APP_URL" >> $GITHUB_ENV echo "APP_URL=$APP_URL" >> $GITHUB_ENV
echo "IMAGE_TAG=$IMAGE_TAG" >> $GITHUB_ENV echo "IMAGE_TAG=$IMAGE_TAG" >> $GITHUB_ENV
echo "BRANCH_TAG=$BRANCH_TAG" >> $GITHUB_ENV echo "BRANCH_TAG=$BRANCH_TAG" >> $GITHUB_ENV
echo "BUILD_MODE=$BUILD_MODE" >> $GITHUB_ENV
# 3. Prüfen ob ein Image-Rebuild nötig ist # 3. Prüfen ob ein Image-Rebuild nötig ist
- name: Detect Source Changes - name: Detect Source Changes
@@ -93,7 +97,7 @@ jobs:
image: ${{ env.FULL_IMAGE_PATH }} image: ${{ env.FULL_IMAGE_PATH }}
tag: ${{ env.IMAGE_TAG }} tag: ${{ env.IMAGE_TAG }}
cache: true cache: true
extra_args: --skip-tls-verify-pull --insecure extra_args: --skip-tls-verify-pull --insecure --build-arg BUILD_MODE=${{ env.BUILD_MODE }}
# 5. Stabilen Branch-Tag aktualisieren (NUR nach erfolgreichem Build) # 5. Stabilen Branch-Tag aktualisieren (NUR nach erfolgreichem Build)
# Damit weiß der nächste Nicht-Build-Push welches Image er verwenden soll. # Damit weiß der nächste Nicht-Build-Push welches Image er verwenden soll.

View File

@@ -25,11 +25,19 @@ RUN if [ ! -f cmd/client/web/assets/assets.json ]; then \
RUN chmod +x scripts/cache-version.sh && \ RUN chmod +x scripts/cache-version.sh && \
./scripts/cache-version.sh ./scripts/cache-version.sh
# Bilder komprimieren (verlustfrei für PNG, leichter Verlust für JPG) # ARG für den Build-Modus (z.B. "main" für Produktion)
RUN echo "🗜️ Komprimiere Bilder..." && \ ARG BUILD_MODE=dev
# Bilder komprimieren (NUR für BUILD_MODE=main)
# Spart Zeit bei Feature-Branch Builds
RUN if [ "$BUILD_MODE" = "main" ]; then \
echo "🗜️ PRODUCTION MODE: Komprimiere Bilder..." && \
find cmd/client/web -type f -name "*.png" -exec optipng -o3 -strip all {} \; && \ find cmd/client/web -type f -name "*.png" -exec optipng -o3 -strip all {} \; && \
find cmd/client/web -type f \( -name "*.jpg" -o -name "*.jpeg" \) -exec jpegoptim -m85 --strip-all --all-progressive --preserve --totals {} \; && \ find cmd/client/web -type f \( -name "*.jpg" -o -name "*.jpeg" \) -exec jpegoptim -m85 --strip-all --all-progressive --preserve --totals {} \; && \
echo "✅ Bildkompression abgeschlossen" echo "✅ Bildkompression abgeschlossen"; \
else \
echo "⚡ DEV/FEATURE MODE: Bildkompression übersprungen"; \
fi
# Server binary bauen # Server binary bauen
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -ldflags="-w -s" -o server ./cmd/server RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -ldflags="-w -s" -o server ./cmd/server

View File

@@ -245,6 +245,11 @@ func (g *Game) UpdateGame() {
g.SendInputWithSequence(input) g.SendInputWithSequence(input)
// Solo: Lokale Prüfung der Runde (Tod/Score)
if g.gameMode == "solo" {
g.checkSoloRound()
}
// Trail: store predicted position every physics step // Trail: store predicted position every physics step
g.trail = append(g.trail, trailPoint{X: g.predictedX, Y: g.predictedY}) g.trail = append(g.trail, trailPoint{X: g.predictedX, Y: g.predictedY})
if len(g.trail) > 8 { if len(g.trail) > 8 {

View File

@@ -168,7 +168,7 @@ func (g *Game) drawGameOverScreen(screen *ebiten.Image, myScore int) {
text.Draw(screen, "SUBMIT SCORE", basicfont.Face7x13, submitBtnX+50, submitBtnY+25, color.White) text.Draw(screen, "SUBMIT SCORE", basicfont.Face7x13, submitBtnX+50, submitBtnY+25, color.White)
} else if g.gameMode == "solo" && g.scoreSubmitted { } else if g.gameMode == "solo" && g.scoreSubmitted {
// Solo: Zeige Bestätigungsmeldung // Solo: Zeige Bestätigungsmeldung
text.Draw(screen, "Score eingereicht!", basicfont.Face7x13, ScreenWidth/2-70, ScreenHeight-100, color.RGBA{0, 255, 0, 255}) text.Draw(screen, "✓ Runde verifiziert & Score eingereicht!", basicfont.Face7x13, ScreenWidth/2-110, ScreenHeight-100, color.RGBA{0, 255, 0, 255})
} else if g.gameMode == "coop" && !g.isHost { } else if g.gameMode == "coop" && !g.isHost {
// Coop Non-Host: Warten auf Host // Coop Non-Host: Warten auf Host
text.Draw(screen, "Warte auf Host...", basicfont.Face7x13, ScreenWidth/2-70, ScreenHeight-100, color.Gray{180}) text.Draw(screen, "Warte auf Host...", basicfont.Face7x13, ScreenWidth/2-70, ScreenHeight-100, color.Gray{180})

View File

@@ -139,6 +139,7 @@ type Game struct {
// Highscore // Highscore
localHighscore int localHighscore int
roundStartTime time.Time // Startzeit der aktuellen Runde (für Solo)
// Audio System // Audio System
audio *AudioSystem audio *AudioSystem
@@ -271,9 +272,13 @@ func (g *Game) Update() error {
} }
if currentStatus == "RUNNING" && g.lastStatus != "RUNNING" { if currentStatus == "RUNNING" && g.lastStatus != "RUNNING" {
g.audio.PlayMusic() g.audio.PlayMusic()
g.roundStartTime = time.Now()
} }
if currentStatus == "GAMEOVER" && g.lastStatus == "RUNNING" { if currentStatus == "GAMEOVER" && g.lastStatus == "RUNNING" {
g.audio.StopMusic() g.audio.StopMusic()
if g.gameMode == "solo" {
g.verifyRoundResult()
}
} }
g.lastStatus = currentStatus g.lastStatus = currentStatus