12 Commits

Author SHA1 Message Date
Vaillant Jeremy d7956ecdb4 chore(assets): re-import prop textures for ETC2/ASTC
Build Puzzle Quest / Validate GDScript (push) Successful in 27s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 37s
Build Puzzle Quest / Export Linux (push) Failing after 0s
Build Puzzle Quest / Export Windows (push) Failing after 0s
Build Puzzle Quest / Export Android (push) Failing after 0s
Build Puzzle Quest / Lint GDScript (push) Successful in 50s
Build Puzzle Quest / Lint GDScript (pull_request) Successful in 48s
Build Puzzle Quest / Export Linux (pull_request) Successful in 6m3s
Build Puzzle Quest / Export Windows (pull_request) Successful in 6m24s
Build Puzzle Quest / Export Android (pull_request) Successful in 7m8s
Adds the etc2 dest path + "etc2_astc" import format to every prop
texture sidecar. Generated by `godot --headless --import` after
flipping rendering/textures/vram_compression/import_etc2_astc to
true in project.godot (commit 46ab28f). Without these sidecars,
re-running --import on a clean checkout would regenerate them
anyway, but committing keeps imported_formats deterministic and
avoids spurious diffs on every CI / dev machine.

39 .import files touched, all under assets/props/. No texture
binaries changed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 21:19:05 +02:00
Vaillant Jeremy 4f9fa60fa0 ci(android): explicit apksigner step after Godot export
Build Puzzle Quest / Lint GDScript (push) Successful in 29s
Build Puzzle Quest / Validate GDScript (push) Successful in 35s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 39s
Build Puzzle Quest / Lint GDScript (pull_request) Successful in 23s
Build Puzzle Quest / Export Linux (push) Successful in 6m32s
Build Puzzle Quest / Export Windows (push) Successful in 6m44s
Build Puzzle Quest / Export Android (push) Successful in 7m41s
Build Puzzle Quest / Export Windows (pull_request) Successful in 5m30s
Build Puzzle Quest / Export Linux (pull_request) Successful in 6m10s
Build Puzzle Quest / Export Android (pull_request) Successful in 6m48s
Godot 4.6 produces an unsigned APK in headless mode on this
runner — verified by apksigner: "DOES NOT VERIFY, Missing
META-INF/MANIFEST.MF". The internal sign step seems to bail
silently (likely because the apksigner subprocess can't locate
java without inheriting JAVA_HOME). The export step still
reports success.

Sign the APK ourselves after the export with the same debug
keystore the workflow provisions. Idempotent if Godot ever
starts signing again; mandatory until then.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 20:59:33 +02:00
Vaillant Jeremy 46ab28f76f fix(android): enable ETC2/ASTC import + use versioned editor settings
Build Puzzle Quest / Validate GDScript (push) Successful in 25s
Build Puzzle Quest / Lint GDScript (push) Successful in 26s
Build Puzzle Quest / Lint GDScript (pull_request) Successful in 40s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 48s
Build Puzzle Quest / Export Linux (push) Successful in 6m18s
Build Puzzle Quest / Export Windows (push) Successful in 5m43s
Build Puzzle Quest / Export Android (push) Successful in 8m44s
Build Puzzle Quest / Export Linux (pull_request) Successful in 7m0s
Build Puzzle Quest / Export Windows (pull_request) Successful in 6m58s
Build Puzzle Quest / Export Android (pull_request) Successful in 5m34s
Two fixes that finally land the Android export. Verified locally
with godot 4.6.2-arch + downloaded 4.6 templates + Android SDK.

- project.godot: add
  rendering/textures/vram_compression/import_etc2_astc=true.
  Without it Godot refuses the Android export with "La plateforme
  cible nécessite une compression de texture « ETC2/ASTC »". In
  headless mode this surfaces as an *empty* configuration-errors
  block, which is what kept us stuck in CI.

- workflow: write Godot editor settings to
  editor_settings-${GODOT_VERSION}.tres (i.e. -4.6.tres on 4.6),
  not -4.tres. Godot 4.5+ uses a minor-version-suffixed settings
  file; the major-only name is ignored by 4.6, so our injected
  android_sdk_path / java_sdk_path / debug_keystore never reached
  the export plugin.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 20:35:58 +02:00
Vaillant Jeremy 918328c42a fix(android): set explicit package/unique_name for export
Build Puzzle Quest / Lint GDScript (push) Successful in 30s
Build Puzzle Quest / Validate GDScript (push) Successful in 32s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 37s
Build Puzzle Quest / Lint GDScript (pull_request) Successful in 19s
Build Puzzle Quest / Export Windows (push) Successful in 5m4s
Build Puzzle Quest / Export Android (push) Failing after 7m32s
Build Puzzle Quest / Export Linux (push) Successful in 8m21s
Build Puzzle Quest / Export Linux (pull_request) Successful in 4m35s
Build Puzzle Quest / Export Windows (pull_request) Successful in 4m34s
Build Puzzle Quest / Export Android (pull_request) Failing after 5m16s
The Android export preset relied on Godot's $genname placeholder
("org.godotengine.$genname"). With the project name "Puzzle
Quest" containing a space, Godot 4 refuses the headless export
with:

  The project name does not meet the requirement for the package
  name format and will be updated to "puzzlequest". Please
  explicitly specify the package name if needed.

Pin both Android presets (AndroidTesting, AndroidDebug) to
com.devcrea.puzzlequest — clean, follows reverse-DNS, matches
the DevCrea organization.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 20:06:40 +02:00
Vaillant Jeremy fbc2b9247a ci: comment macOS, empty Windows icon path, fix Android keystore preset
Build Puzzle Quest / Validate GDScript (push) Successful in 43s
Build Puzzle Quest / Lint GDScript (push) Successful in 32s
Build Puzzle Quest / Export Windows (pull_request) Has been skipped
Build Puzzle Quest / Export Linux (push) Failing after 0s
Build Puzzle Quest / Export Windows (push) Failing after 1s
Build Puzzle Quest / Export Android (push) Failing after 0s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 25s
Build Puzzle Quest / Lint GDScript (pull_request) Successful in 26s
Build Puzzle Quest / Export Linux (pull_request) Successful in 4m9s
Build Puzzle Quest / Export Android (pull_request) Failing after 5m2s
Three follow-ups from run #12:

- export-desktop: comment out the macOS matrix entry. The preset
  is still missing in export_presets.cfg; the entry can be
  uncommented once the macOS preset is added in the Godot editor.

- export Windows: `application/icon` referenced
  res://releases/windows/project.ico, which has never been in the
  repo (releases/windows/ holds only .keep). Godot rejected the
  export with "Invalid icon path". Cleared the field in both
  WindowsDebug and WindowsTesting presets — Godot falls back to
  its built-in icon.

- export-android: Godot validation requires all three of
  keystore/debug{,_user,_password} to be set together (or all
  empty). The keystore step only patched keystore/debug and left
  the other two empty, triggering
  "Either Debug Keystore, Debug User AND Debug Password must be
  configured OR none of them". Patch all three now.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 19:39:42 +02:00
Vaillant Jeremy 4e159b1065 ci: fix lint venv, drop artifact cache, fix Android sdkmanager pipe
Build Puzzle Quest / Lint GDScript (push) Successful in 33s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 33s
Build Puzzle Quest / Validate GDScript (push) Successful in 42s
Build Puzzle Quest / Lint GDScript (pull_request) Successful in 25s
Build Puzzle Quest / Export macOS (pull_request) Failing after 4m55s
Build Puzzle Quest / Export Linux (pull_request) Successful in 7m3s
Build Puzzle Quest / Export Windows (pull_request) Failing after 6m53s
Build Puzzle Quest / Export Android (pull_request) Failing after 6m16s
Build Puzzle Quest / Export macOS (push) Failing after 6m27s
Build Puzzle Quest / Export Linux (push) Successful in 6m44s
Build Puzzle Quest / Export Windows (push) Failing after 4m48s
Build Puzzle Quest / Export Android (push) Failing after 4m23s
Three follow-up fixes from the first non-container run (#10):

- lint: Ubuntu 24.04 / Python 3.12 enforces PEP 668, so
  `pip install --user` exits with externally-managed-environment.
  Install gdtoolkit into a throwaway venv at /tmp/gdlint-venv
  instead.

- exports: drop the .godot/ artifact cache shared between
  `validate` and the export jobs. Gitea's artifact service returns
  404 on actions/download-artifact@v3 (v3 protocol incomplete on
  this server). Each export job now runs its own
  `godot --headless --import` before exporting — costs ~30s but
  avoids the failing cross-job artifact dependency.

- export-android: `yes | sdkmanager --licenses` returned 141
  (SIGPIPE) under `set -o pipefail` because sdkmanager closes
  stdin after accepting all licenses while `yes` keeps writing.
  Feed a finite `printf 'y\n%.0s' {1..50}` instead.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 19:26:06 +02:00
Vaillant Jeremy db2460b9ee ci: drop container: for Godot jobs, install via composite action
Build Puzzle Quest / Lint GDScript (push) Failing after 15s
Build Puzzle Quest / Lint GDScript (pull_request) Failing after 16s
Build Puzzle Quest / Validate GDScript (push) Successful in 47s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 50s
Build Puzzle Quest / Export Linux (push) Failing after 6m5s
Build Puzzle Quest / Export macOS (push) Failing after 7m5s
Build Puzzle Quest / Export Windows (push) Failing after 7m14s
Build Puzzle Quest / Export Android (push) Failing after 5m45s
Build Puzzle Quest / Export Linux (pull_request) Failing after 7m10s
Build Puzzle Quest / Export macOS (pull_request) Failing after 7m24s
Build Puzzle Quest / Export Windows (pull_request) Failing after 4m7s
Build Puzzle Quest / Export Android (pull_request) Failing after 3m3s
The first Gitea Actions runs failed at actions/checkout@v4 because
barichello/godot-ci:4.6 ships without Node.js, which the JS-based
checkout action requires. Rather than chase a Godot CI image that
bundles Node, drop the container: blocks entirely: the default
catthehacker/ubuntu:act-latest runner image already has Node /
Python / git / JDK, and Godot is installed per-job from the
official GitHub release.

Pulled the install logic into a local composite action at
.gitea/actions/setup-godot/ to avoid duplicating 15 lines of wget +
unzip across the three Godot-using jobs. Inputs:
  - version  (default 4.6)
  - templates (default false — export jobs flip to true)

Other tweaks:
- export-android now puts $ANDROID_HOME under $GITHUB_WORKSPACE so
  no sudo is needed; editor_settings-4.tres interpolates that path.
- export-android writes the keystore under /tmp instead of /root
  (catthehacker runners don't run as root).

README updated: jobs table reflects the new "Tooling installed by the
job" column, prerequisites no longer mention the Docker image, and
known-issue #1 is closed out with the dated fix.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 18:30:57 +02:00
Vaillant Jeremy 734b5931e9 docs(ci): record first-run failures + URL prefix fix
Adds a "Known issues from first runs" section to the workflow
README capturing what broke on 2026-05-17:

- Container jobs (validate, export-*) fail at actions/checkout@v4
  with `node: not found` because barichello/godot-ci:4.6 has no Node.
  Workflow fix pending.
- The earlier `actions/checkout` URL-prefix problem (Gitea behind
  YunoHost at /gitea/) is now resolved server-side by moving Gitea
  to the root; the note records this for future reference.
- Default-branch mismatch (Gitea = main, CLAUDE.md says dev).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 18:22:16 +02:00
Vaillant Jeremy 2d8ca9dfbb ci: trigger workflow on feature/godot-migration too
Build Puzzle Quest / Lint GDScript (push) Failing after 28s
Build Puzzle Quest / Export Linux (push) Has been cancelled
Build Puzzle Quest / Export macOS (push) Has been cancelled
Build Puzzle Quest / Export Windows (push) Has been cancelled
Build Puzzle Quest / Export Android (push) Has been cancelled
Build Puzzle Quest / Validate GDScript (push) Has been cancelled
Build Puzzle Quest / Lint GDScript (pull_request) Failing after 21s
Build Puzzle Quest / Export macOS (pull_request) Has been skipped
Build Puzzle Quest / Export Windows (pull_request) Has been skipped
Build Puzzle Quest / Validate GDScript (pull_request) Failing after 4m14s
Build Puzzle Quest / Export Linux (pull_request) Has been skipped
Build Puzzle Quest / Export Android (pull_request) Has been skipped
Temporary addition so the workflow can run before the branch is
merged into dev. Remove this branch from the push: list once dev
has the workflow.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 16:38:19 +02:00
Vaillant Jeremy 238fccef95 Fix gdlint findings in Global / Database / Levels
- Global.gd: move @onready var animation below the regular vars
  (gdlint class-definitions-order expects onready vars after
  public/private vars).
- Database.gd::DB: move the three _*_PROPS constants above the vars
  (constants come before vars in a class body).
- Levels.gd:_search_button_to_use: drop the elif after a branch
  that returns (no-elif-return).
- Levels.gd:_gyroscope_changed_{down,up}: continuation lines of the
  multi-line return mixed two tabs + three spaces; normalised to
  pure tabs.

No semantic change: @onready is property-level so source ordering
doesn't affect init; elif after a return is equivalent to if; the
continuation indent is cosmetic.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 14:48:20 +02:00
Vaillant Jeremy e883d662f2 Add gdlint job + gdlintrc to Gitea CI
Lints scripts/, db/, scenes/ via gdtoolkit==4.* on ubuntu-latest
(Python, no Godot needed), in parallel with the validate job.
addons/ (third-party LOD plugin) and developers/ (sandbox) are
left out. Non-blocking for now: the export jobs still only need
validate, so a lint regression won't break builds while the
Godot-3 leftover code is being cleaned up.

gdlintrc bumps max-line-length from 100 to 140 because Godot
$-style node paths and typed signatures routinely push past 100
without that being a real readability problem.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 14:48:13 +02:00
Vaillant Jeremy 410c135870 Replace Drone CI with Gitea Actions workflow
Drone server is gone; CI now lives in .gitea/workflows/build.yml.
Three jobs: GDScript validation (godot --headless --import + error
grep), desktop matrix (Windows / Linux / macOS), and Android (JDK 17
+ SDK installed at runtime, keystore from ANDROID_KEYSTORE_BASE64
secret or generated). Build only — Butler / itch.io deploy not wired.

Notes in .gitea/workflows/README.md cover the Godot-4 pre-reqs
(macOS preset to add, Linux/X11Debug likely renamed on first 4.x
save, Docker image tag) and how to plug Butler back in later.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 12:36:34 +02:00
51 changed files with 523 additions and 232 deletions
+43
View File
@@ -0,0 +1,43 @@
name: Setup Godot
description: Download a Godot headless Linux binary and (optionally) export templates.
inputs:
version:
description: Godot version (e.g. 4.6). Templates land under <version>.stable.
required: false
default: "4.6"
templates:
description: Install export templates too. "true" / "false".
required: false
default: "false"
runs:
using: composite
steps:
- name: Install Godot ${{ inputs.version }}
shell: bash
run: |
set -euo pipefail
VER="${{ inputs.version }}"
URL="https://github.com/godotengine/godot/releases/download/${VER}-stable/Godot_v${VER}-stable_linux.x86_64.zip"
wget -q "$URL" -O /tmp/godot.zip
mkdir -p "$HOME/bin"
unzip -q /tmp/godot.zip -d /tmp
mv "/tmp/Godot_v${VER}-stable_linux.x86_64" "$HOME/bin/godot"
chmod +x "$HOME/bin/godot"
echo "$HOME/bin" >> "$GITHUB_PATH"
"$HOME/bin/godot" --version
- name: Install export templates
if: inputs.templates == 'true'
shell: bash
run: |
set -euo pipefail
VER="${{ inputs.version }}"
URL="https://github.com/godotengine/godot/releases/download/${VER}-stable/Godot_v${VER}-stable_export_templates.tpz"
wget -q "$URL" -O /tmp/templates.tpz
DEST="$HOME/.local/share/godot/export_templates/${VER}.stable"
mkdir -p "$DEST"
unzip -q /tmp/templates.tpz -d /tmp/templates_extracted
mv /tmp/templates_extracted/templates/* "$DEST/"
ls "$DEST" | head
+118
View File
@@ -0,0 +1,118 @@
# Gitea Actions CI
Workflow defined in [`build.yml`](./build.yml). Triggered on push / PR to
`dev` and `main`, or manually via `workflow_dispatch`.
## Jobs
All jobs run on the default `ubuntu-latest` runner image (which already
ships Node, Python, git, wget, unzip, etc.). Godot is installed per-job
via the local composite action [`.gitea/actions/setup-godot`](../actions/setup-godot/action.yml),
which downloads the official Linux binary from the godotengine GitHub
release and (optionally) export templates into `$HOME`.
| Job | Tooling installed by the job | Role |
|------------------|---------------------------------------------------------------------------|------------------------------------------------------------------------------------------|
| `validate` | Godot binary (no templates) | `godot --headless --import` then grep for `SCRIPT ERROR` / `Parse Error`. Uploads `.godot/` cache. |
| `lint` | `gdtoolkit==4.*` via `pip` | `gdlint scripts db scenes`. Parallel to `validate`; does not gate exports yet. |
| `export-desktop` | Godot binary + export templates | Matrix: Windows / Linux / macOS. Reuses the import cache, uploads each binary as artifact. |
| `export-android` | Godot binary + export templates + JDK 17 + Android SDK (under `$GITHUB_WORKSPACE/.android-sdk`) | Provisions keystore, writes `editor_settings-4.tres` with SDK / JDK paths, exports APK. |
Artifacts are kept 14 days, accessible from the Gitea run page.
## Prerequisites before the first successful run
1. **Godot version**`GODOT_VERSION` is set at the top of the workflow
(currently `4.6`). The setup action expects a stable release on the
godotengine GitHub releases page; bump in lockstep with the project.
2. **macOS preset missing** — add it in Godot Editor → Project → Export →
Add → macOS, name it exactly `macOS` (or change the matrix entry). The
`.zip` will be unsigned; on Mac it needs
`xattr -dr com.apple.quarantine` to launch.
3. **`Linux/X11Debug` preset** — Godot-3-era name. Reopen the project in
Godot 4 once and re-save the preset (the editor may rename it). Update
the matrix `preset:` field accordingly if it does.
4. **Gitea runner**`act_runner` with the default
`catthehacker/ubuntu:act-latest` image is enough; no Docker-in-Docker
needed now that no job uses `container:`. The runner must reach
`github.com` (for actions + Godot release downloads) and
`dl.google.com` (for the Android SDK).
5. **Optional secret** `ANDROID_KEYSTORE_BASE64``base64 -w0 debug.keystore`,
stored as a Gitea repo secret. Without it, a throwaway keystore is
generated per run, so the APK signature changes every build.
## Linting
`gdlint` (from Scony's `gdtoolkit`) runs in the `lint` job over `scripts/`,
`db/`, and `scenes/`. `addons/` (third-party LOD plugin) and `developers/`
(sandbox) are intentionally excluded.
The job is **non-blocking** today — the export jobs only depend on
`validate`, so a lint failure prints warnings but still produces binaries.
Once the codebase is clean, switch the export jobs' `needs: validate` to
`needs: [validate, lint]` to make lint a hard gate.
Suppress specific rules per-line with `# gdlint: disable=<rule>` or
project-wide with a `gdlintrc` file at the repo root (see
[gdtoolkit docs](https://github.com/Scony/godot-gdscript-toolkit/wiki)).
## Known issues from first runs
Captured from the first triggered runs on `feature/godot-migration`
(2026-05-17). Both must be resolved before the workflow can pass.
### 1. Container jobs failed with `node: not found` (resolved 2026-05-17)
The first runs used `container: barichello/godot-ci:4.6` for the Godot
jobs. That image does not ship Node.js, so `actions/checkout@v4` (a JS
action) crashed at startup with
`OCI runtime exec failed: exec: "node": executable file not found`.
Resolved by removing every `container:` block. The runner's default
`catthehacker/ubuntu:act-latest` image already has Node / Python / git /
JDK, and Godot is now installed at the start of each job via the local
composite action `.gitea/actions/setup-godot/`.
### 2. `actions/checkout` clones the wrong URL (resolved 2026-05-17)
The first runs failed at clone time because the runner asked for
`https://dev.stilobique.com/darknight/puzzle-quest/info/refs` while
Gitea was mounted under `/gitea/` behind YunoHost — the request was
intercepted by the YunoHost SSO at the root and redirected before
reaching Gitea.
Resolved by relocating Gitea to the root: it now serves at
`https://dev.stilobique.com/` directly (API at `/api/v1/...`,
`clone_url` at `/<owner>/<repo>.git`). The runner-injected
`GITHUB_SERVER_URL` and the actual Gitea base URL now agree.
If Gitea is ever moved back under a sub-path, the fix is `ROOT_URL` in
`app.ini` (`[server] ROOT_URL = https://<host>/<prefix>/`) or
re-registering `act_runner` with the full instance URL.
### 3. Default-branch mismatch
The Gitea API reports `default_branch: main` for the repo, but
`CLAUDE.md` describes `dev` as the default. The workflow listens to both,
so jobs trigger correctly either way, but the "Workflows" sidebar in the
Gitea UI reads from whatever the actual default branch is. If you intend
`dev` to be the default, update it under repo Settings → Branches.
## Differences from the old `.drone.yml`
- No more Drone, no more Butler — build only, artifacts downloadable from
the Gitea UI.
- GDScript validation step before export (didn't exist).
- `.godot/` import cache shared between jobs (faster reruns).
- Keystore via Gitea secret instead of a public pCloud link.
- macOS target added (preset still to be created in Godot).
- `master` / empty `ReleaseVersion` pipeline → replaced by triggers on
`main` (release branch per `CLAUDE.md`).
## Future: itch.io deploy via Butler
Not wired. When you want it back, add a `deploy-itch` job gated on tag
push (`v*`) that downloads the artifacts and runs
`butler push <dir> dev-crea/ahog:<channel>` with `BUTLER_API_KEY` from
secrets. Channels used historically:
`windows`, `linux`, `android`, `mac`.
+217
View File
@@ -0,0 +1,217 @@
name: Build Puzzle Quest
on:
push:
branches: [dev, main, feature/godot-migration]
pull_request:
branches: [dev, main]
workflow_dispatch:
env:
GODOT_VERSION: "4.6"
jobs:
# ---------------------------------------------------------------------------
# 1. GDScript validation — parse every script and fail on errors / warnings.
# ---------------------------------------------------------------------------
validate:
name: Validate GDScript
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.gitea/actions/setup-godot
with:
version: ${{ env.GODOT_VERSION }}
- name: Import project (parses every .gd / .tscn)
run: |
godot --headless --import 2>&1 | tee /tmp/godot-import.log || true
- name: Fail on parse / script errors
run: |
if grep -qE "SCRIPT ERROR|Parse Error|ERROR: .*\.gd" /tmp/godot-import.log; then
echo "::error::GDScript errors detected during import"
grep -E "SCRIPT ERROR|Parse Error|ERROR: .*\.gd" /tmp/godot-import.log
exit 1
fi
# ---------------------------------------------------------------------------
# 2. Static analysis — gdlint from Scony's gdtoolkit (Python, no Godot).
# Runs in parallel with `validate`. Exports do NOT depend on this job,
# so a lint failure does not block builds while the Godot-3 leftovers
# are still being cleaned up. Once the tree is clean, add this job to
# the `needs:` of the export jobs to make it a hard gate.
# ---------------------------------------------------------------------------
lint:
name: Lint GDScript
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install gdtoolkit
run: |
python3 -m venv /tmp/gdlint-venv
/tmp/gdlint-venv/bin/pip install --quiet "gdtoolkit==4.*"
echo "/tmp/gdlint-venv/bin" >> "$GITHUB_PATH"
- name: Run gdlint
run: gdlint scripts db scenes
# ---------------------------------------------------------------------------
# 3. Desktop exports — runs in parallel.
# macOS is commented out until a preset is added in the Godot editor
# (export_presets.cfg has none today). Restore the entry once the preset
# exists; the matrix is otherwise ready to take it.
# ---------------------------------------------------------------------------
export-desktop:
name: Export ${{ matrix.platform }}
needs: validate
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- platform: Windows
preset: WindowsDebug
output: releases/windows/Puzzle-Quest.exe
artifact_path: releases/windows
- platform: Linux
preset: Linux/X11Debug
output: releases/linux/Puzzle-Quest.x86_64
artifact_path: releases/linux
# - platform: macOS
# preset: macOS
# output: releases/macos/Puzzle-Quest.zip
# artifact_path: releases/macos
steps:
- uses: actions/checkout@v4
- uses: ./.gitea/actions/setup-godot
with:
version: ${{ env.GODOT_VERSION }}
templates: "true"
- name: Import project
run: godot --headless --import || true
- name: Prepare output dir
run: mkdir -p "${{ matrix.artifact_path }}"
- name: Export ${{ matrix.platform }}
run: godot --headless --export-debug "${{ matrix.preset }}" "${{ matrix.output }}"
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: PuzzleQuest-${{ matrix.platform }}
path: ${{ matrix.artifact_path }}
if-no-files-found: error
retention-days: 14
# ---------------------------------------------------------------------------
# 4. Android export — Godot + JDK 17 + Android SDK installed in $HOME.
# Provide ANDROID_KEYSTORE_BASE64 as a Gitea secret for a stable signature;
# otherwise a fresh debug keystore is generated on each run.
# ---------------------------------------------------------------------------
export-android:
name: Export Android
needs: validate
runs-on: ubuntu-latest
env:
ANDROID_HOME: ${{ github.workspace }}/.android-sdk
steps:
- uses: actions/checkout@v4
- uses: ./.gitea/actions/setup-godot
with:
version: ${{ env.GODOT_VERSION }}
templates: "true"
- name: Install JDK 17
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends openjdk-17-jdk
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" >> "$GITHUB_ENV"
- name: Install Android command-line tools + SDK
run: |
set -euo pipefail
mkdir -p "$ANDROID_HOME/cmdline-tools"
wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O /tmp/cmdline.zip
unzip -q /tmp/cmdline.zip -d "$ANDROID_HOME/cmdline-tools"
mv "$ANDROID_HOME/cmdline-tools/cmdline-tools" "$ANDROID_HOME/cmdline-tools/latest"
# `yes |` returns 141 (SIGPIPE) under `set -o pipefail` once sdkmanager
# closes its stdin — feed a finite stream of "y" answers instead.
printf 'y\n%.0s' {1..50} | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses >/dev/null
"$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" \
"platform-tools" "platforms;android-34" "build-tools;34.0.0" >/dev/null
- name: Provision debug keystore
env:
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
run: |
if [ -n "${ANDROID_KEYSTORE_BASE64:-}" ]; then
echo "$ANDROID_KEYSTORE_BASE64" | base64 -d > /tmp/debug.keystore
else
keytool -keyalg RSA -genkeypair -alias androiddebugkey -keypass android \
-keystore /tmp/debug.keystore -storepass android \
-dname "CN=Android Debug,O=Android,C=US" -validity 9999
fi
# Godot rejects exports unless all three keystore/debug{,_user,_password}
# are set together (or all three empty) — patch every one.
sed -i 's@keystore/debug=".*"@keystore/debug="/tmp/debug.keystore"@g' export_presets.cfg
sed -i 's@keystore/debug_user=".*"@keystore/debug_user="androiddebugkey"@g' export_presets.cfg
sed -i 's@keystore/debug_password=".*"@keystore/debug_password="android"@g' export_presets.cfg
- name: Write Godot editor settings (Android SDK / JDK paths)
run: |
mkdir -p ~/.config/godot
# Godot 4.5+ uses a minor-version-suffixed settings file
# (editor_settings-4.6.tres for 4.6), not the major-only -4.tres.
cat > ~/.config/godot/editor_settings-${GODOT_VERSION}.tres <<EOF
[gd_resource type="EditorSettings" format=3]
[resource]
export/android/android_sdk_path = "${ANDROID_HOME}"
export/android/java_sdk_path = "/usr/lib/jvm/java-17-openjdk-amd64"
export/android/debug_keystore = "/tmp/debug.keystore"
export/android/debug_keystore_user = "androiddebugkey"
export/android/debug_keystore_pass = "android"
EOF
- name: Import project
run: godot --headless --import || true
- name: Prepare output dir
run: mkdir -p releases/android
- name: Export Android APK
run: godot --headless --export-debug "AndroidDebug" "releases/android/Puzzle-Quest.apk"
- name: Sign + verify APK
run: |
set -euo pipefail
APK="releases/android/Puzzle-Quest.apk"
APKSIGNER="$ANDROID_HOME/build-tools/34.0.0/apksigner"
# Godot 4.6 sometimes ships an unsigned APK from the headless
# export (sign step skips silently when its internal apksigner
# call can't locate java). Re-sign unconditionally — idempotent
# if Godot did sign, and guarantees a valid APK if it didn't.
"$APKSIGNER" sign \
--ks /tmp/debug.keystore \
--ks-pass pass:android \
--ks-key-alias androiddebugkey \
--key-pass pass:android \
--v1-signing-enabled true \
--v2-signing-enabled true \
--v3-signing-enabled true \
"$APK"
"$APKSIGNER" verify --verbose "$APK"
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: PuzzleQuest-Android
path: releases/android
if-no-files-found: error
retention-days: 14
+6 -4
View File
@@ -149,10 +149,12 @@ re-author it with Godot 4's built-in `theme_override_constants/outline_size`
## CI ## CI
Build pipeline is in `releases/.drone.yml`. The Docker images still pin Gitea Actions workflow at `.gitea/workflows/build.yml`, documented in
`barichello/godot-ci:3.3.2` and a custom `devcrea/godot-ci:3.3.2-android` `.gitea/workflows/README.md`. Three jobs: GDScript validation
— **bump these to a 4.x image** before relying on CI builds again. Butler (`godot --headless --import` + error grep), desktop matrix
push targets `dev-crea/ahog:windows|android|linux|mac` on itch.io. (Windows / Linux / macOS), and Android. Build only — no Butler / itch.io
deploy currently wired (channels used historically were
`dev-crea/ahog:windows|android|linux|mac`). Drone pipeline removed.
Branches: default `dev`, releases from `main`. Long-running migration work Branches: default `dev`, releases from `main`. Long-running migration work
on `feature/godot-migration`. on `feature/godot-migration`.
-2
View File
@@ -1,5 +1,3 @@
[![Build Status](https://drone.dev-crea.com/api/badges/Athena/game-source/status.svg)](https://drone.dev-crea.com/Athena/game-source)
- Hidden Object - Hidden Object
- Tips - Tips
- Log on Android - Log on Android
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dfbfbwe12r27y" uid="uid://dfbfbwe12r27y"
path.s3tc="res://.godot/imported/tx_Paper_BC.tga-9fb9e97b4fb771cff15e05495d90bcc1.s3tc.ctex" path.s3tc="res://.godot/imported/tx_Paper_BC.tga-9fb9e97b4fb771cff15e05495d90bcc1.s3tc.ctex"
path.etc2="res://.godot/imported/tx_Paper_BC.tga-9fb9e97b4fb771cff15e05495d90bcc1.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_Paper_BC.tga" source_file="res://assets/props/book/textures/tx_Paper_BC.tga"
dest_files=["res://.godot/imported/tx_Paper_BC.tga-9fb9e97b4fb771cff15e05495d90bcc1.s3tc.ctex"] dest_files=["res://.godot/imported/tx_Paper_BC.tga-9fb9e97b4fb771cff15e05495d90bcc1.s3tc.ctex", "res://.godot/imported/tx_Paper_BC.tga-9fb9e97b4fb771cff15e05495d90bcc1.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bhi4c5xbbstve" uid="uid://bhi4c5xbbstve"
path.s3tc="res://.godot/imported/tx_Paper_NM.tga-7aae76ce0f4f9f4c3299047ca15922dc.s3tc.ctex" path.s3tc="res://.godot/imported/tx_Paper_NM.tga-7aae76ce0f4f9f4c3299047ca15922dc.s3tc.ctex"
path.etc2="res://.godot/imported/tx_Paper_NM.tga-7aae76ce0f4f9f4c3299047ca15922dc.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_Paper_NM.tga" source_file="res://assets/props/book/textures/tx_Paper_NM.tga"
dest_files=["res://.godot/imported/tx_Paper_NM.tga-7aae76ce0f4f9f4c3299047ca15922dc.s3tc.ctex"] dest_files=["res://.godot/imported/tx_Paper_NM.tga-7aae76ce0f4f9f4c3299047ca15922dc.s3tc.ctex", "res://.godot/imported/tx_Paper_NM.tga-7aae76ce0f4f9f4c3299047ca15922dc.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dpnkeyvi4nm1y" uid="uid://dpnkeyvi4nm1y"
path.s3tc="res://.godot/imported/tx_Paper_ORM.tga-a4c3a5f60558aeb291283587e6bb15df.s3tc.ctex" path.s3tc="res://.godot/imported/tx_Paper_ORM.tga-a4c3a5f60558aeb291283587e6bb15df.s3tc.ctex"
path.etc2="res://.godot/imported/tx_Paper_ORM.tga-a4c3a5f60558aeb291283587e6bb15df.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_Paper_ORM.tga" source_file="res://assets/props/book/textures/tx_Paper_ORM.tga"
dest_files=["res://.godot/imported/tx_Paper_ORM.tga-a4c3a5f60558aeb291283587e6bb15df.s3tc.ctex"] dest_files=["res://.godot/imported/tx_Paper_ORM.tga-a4c3a5f60558aeb291283587e6bb15df.s3tc.ctex", "res://.godot/imported/tx_Paper_ORM.tga-a4c3a5f60558aeb291283587e6bb15df.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bwh77ikekvh78" uid="uid://bwh77ikekvh78"
path.s3tc="res://.godot/imported/tx_book_BC.tga-043df0783ead34530de9f256a143cacb.s3tc.ctex" path.s3tc="res://.godot/imported/tx_book_BC.tga-043df0783ead34530de9f256a143cacb.s3tc.ctex"
path.etc2="res://.godot/imported/tx_book_BC.tga-043df0783ead34530de9f256a143cacb.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_book_BC.tga" source_file="res://assets/props/book/textures/tx_book_BC.tga"
dest_files=["res://.godot/imported/tx_book_BC.tga-043df0783ead34530de9f256a143cacb.s3tc.ctex"] dest_files=["res://.godot/imported/tx_book_BC.tga-043df0783ead34530de9f256a143cacb.s3tc.ctex", "res://.godot/imported/tx_book_BC.tga-043df0783ead34530de9f256a143cacb.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://d1vrxpmwvdpnk" uid="uid://d1vrxpmwvdpnk"
path.s3tc="res://.godot/imported/tx_book_MK.tga-8a7c0fa94467fd29a69c4f5b665eec9c.s3tc.ctex" path.s3tc="res://.godot/imported/tx_book_MK.tga-8a7c0fa94467fd29a69c4f5b665eec9c.s3tc.ctex"
path.etc2="res://.godot/imported/tx_book_MK.tga-8a7c0fa94467fd29a69c4f5b665eec9c.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_book_MK.tga" source_file="res://assets/props/book/textures/tx_book_MK.tga"
dest_files=["res://.godot/imported/tx_book_MK.tga-8a7c0fa94467fd29a69c4f5b665eec9c.s3tc.ctex"] dest_files=["res://.godot/imported/tx_book_MK.tga-8a7c0fa94467fd29a69c4f5b665eec9c.s3tc.ctex", "res://.godot/imported/tx_book_MK.tga-8a7c0fa94467fd29a69c4f5b665eec9c.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dhsjp8ba7b5hp" uid="uid://dhsjp8ba7b5hp"
path.s3tc="res://.godot/imported/tx_book_NM.tga-76afe8f7bcf6cb8cc6055b785f89befe.s3tc.ctex" path.s3tc="res://.godot/imported/tx_book_NM.tga-76afe8f7bcf6cb8cc6055b785f89befe.s3tc.ctex"
path.etc2="res://.godot/imported/tx_book_NM.tga-76afe8f7bcf6cb8cc6055b785f89befe.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_book_NM.tga" source_file="res://assets/props/book/textures/tx_book_NM.tga"
dest_files=["res://.godot/imported/tx_book_NM.tga-76afe8f7bcf6cb8cc6055b785f89befe.s3tc.ctex"] dest_files=["res://.godot/imported/tx_book_NM.tga-76afe8f7bcf6cb8cc6055b785f89befe.s3tc.ctex", "res://.godot/imported/tx_book_NM.tga-76afe8f7bcf6cb8cc6055b785f89befe.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dq6s5nt1pko83" uid="uid://dq6s5nt1pko83"
path.s3tc="res://.godot/imported/tx_book_ORM.tga-314f28a993b713578d4773124db322ff.s3tc.ctex" path.s3tc="res://.godot/imported/tx_book_ORM.tga-314f28a993b713578d4773124db322ff.s3tc.ctex"
path.etc2="res://.godot/imported/tx_book_ORM.tga-314f28a993b713578d4773124db322ff.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_book_ORM.tga" source_file="res://assets/props/book/textures/tx_book_ORM.tga"
dest_files=["res://.godot/imported/tx_book_ORM.tga-314f28a993b713578d4773124db322ff.s3tc.ctex"] dest_files=["res://.godot/imported/tx_book_ORM.tga-314f28a993b713578d4773124db322ff.s3tc.ctex", "res://.godot/imported/tx_book_ORM.tga-314f28a993b713578d4773124db322ff.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bmfepyv5gimbe" uid="uid://bmfepyv5gimbe"
path.s3tc="res://.godot/imported/tx_candle_BCS.tga-8a28bd77a964ef96f453c0c2c4de7ed9.s3tc.ctex" path.s3tc="res://.godot/imported/tx_candle_BCS.tga-8a28bd77a964ef96f453c0c2c4de7ed9.s3tc.ctex"
path.etc2="res://.godot/imported/tx_candle_BCS.tga-8a28bd77a964ef96f453c0c2c4de7ed9.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/candle/textures/tx_candle_BCS.tga" source_file="res://assets/props/candle/textures/tx_candle_BCS.tga"
dest_files=["res://.godot/imported/tx_candle_BCS.tga-8a28bd77a964ef96f453c0c2c4de7ed9.s3tc.ctex"] dest_files=["res://.godot/imported/tx_candle_BCS.tga-8a28bd77a964ef96f453c0c2c4de7ed9.s3tc.ctex", "res://.godot/imported/tx_candle_BCS.tga-8a28bd77a964ef96f453c0c2c4de7ed9.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dco3vmw0jdw7t" uid="uid://dco3vmw0jdw7t"
path.s3tc="res://.godot/imported/tx_candle_NM.tga-0d1354b171e73543cc7b627d3a46536f.s3tc.ctex" path.s3tc="res://.godot/imported/tx_candle_NM.tga-0d1354b171e73543cc7b627d3a46536f.s3tc.ctex"
path.etc2="res://.godot/imported/tx_candle_NM.tga-0d1354b171e73543cc7b627d3a46536f.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/candle/textures/tx_candle_NM.tga" source_file="res://assets/props/candle/textures/tx_candle_NM.tga"
dest_files=["res://.godot/imported/tx_candle_NM.tga-0d1354b171e73543cc7b627d3a46536f.s3tc.ctex"] dest_files=["res://.godot/imported/tx_candle_NM.tga-0d1354b171e73543cc7b627d3a46536f.s3tc.ctex", "res://.godot/imported/tx_candle_NM.tga-0d1354b171e73543cc7b627d3a46536f.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://baqeh5ceph0e" uid="uid://baqeh5ceph0e"
path.s3tc="res://.godot/imported/tx_candle_ORM.tga-3575951580ec8d12904f46fd8f10069c.s3tc.ctex" path.s3tc="res://.godot/imported/tx_candle_ORM.tga-3575951580ec8d12904f46fd8f10069c.s3tc.ctex"
path.etc2="res://.godot/imported/tx_candle_ORM.tga-3575951580ec8d12904f46fd8f10069c.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/candle/textures/tx_candle_ORM.tga" source_file="res://assets/props/candle/textures/tx_candle_ORM.tga"
dest_files=["res://.godot/imported/tx_candle_ORM.tga-3575951580ec8d12904f46fd8f10069c.s3tc.ctex"] dest_files=["res://.godot/imported/tx_candle_ORM.tga-3575951580ec8d12904f46fd8f10069c.s3tc.ctex", "res://.godot/imported/tx_candle_ORM.tga-3575951580ec8d12904f46fd8f10069c.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bfuna15etfwhg" uid="uid://bfuna15etfwhg"
path.s3tc="res://.godot/imported/tx_candle_scatter.tga-bc0a35b3e6c5b6443faff3a90e4ee73d.s3tc.ctex" path.s3tc="res://.godot/imported/tx_candle_scatter.tga-bc0a35b3e6c5b6443faff3a90e4ee73d.s3tc.ctex"
path.etc2="res://.godot/imported/tx_candle_scatter.tga-bc0a35b3e6c5b6443faff3a90e4ee73d.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/candle/textures/tx_candle_scatter.tga" source_file="res://assets/props/candle/textures/tx_candle_scatter.tga"
dest_files=["res://.godot/imported/tx_candle_scatter.tga-bc0a35b3e6c5b6443faff3a90e4ee73d.s3tc.ctex"] dest_files=["res://.godot/imported/tx_candle_scatter.tga-bc0a35b3e6c5b6443faff3a90e4ee73d.s3tc.ctex", "res://.godot/imported/tx_candle_scatter.tga-bc0a35b3e6c5b6443faff3a90e4ee73d.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dvoars6va7511" uid="uid://dvoars6va7511"
path.s3tc="res://.godot/imported/dagger_Dagger_BC.png-6deff32a41940f92bbdb14bc9b47beb3.s3tc.ctex" path.s3tc="res://.godot/imported/dagger_Dagger_BC.png-6deff32a41940f92bbdb14bc9b47beb3.s3tc.ctex"
path.etc2="res://.godot/imported/dagger_Dagger_BC.png-6deff32a41940f92bbdb14bc9b47beb3.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/dagger/dagger_Dagger_BC.png" source_file="res://assets/props/dagger/dagger_Dagger_BC.png"
dest_files=["res://.godot/imported/dagger_Dagger_BC.png-6deff32a41940f92bbdb14bc9b47beb3.s3tc.ctex"] dest_files=["res://.godot/imported/dagger_Dagger_BC.png-6deff32a41940f92bbdb14bc9b47beb3.s3tc.ctex", "res://.godot/imported/dagger_Dagger_BC.png-6deff32a41940f92bbdb14bc9b47beb3.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cfhmpp3pitqbi" uid="uid://cfhmpp3pitqbi"
path.s3tc="res://.godot/imported/dagger_Dagger_NM.png-16adfa9ec4fd4455ed9dd788fbba2519.s3tc.ctex" path.s3tc="res://.godot/imported/dagger_Dagger_NM.png-16adfa9ec4fd4455ed9dd788fbba2519.s3tc.ctex"
path.etc2="res://.godot/imported/dagger_Dagger_NM.png-16adfa9ec4fd4455ed9dd788fbba2519.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/dagger/dagger_Dagger_NM.png" source_file="res://assets/props/dagger/dagger_Dagger_NM.png"
dest_files=["res://.godot/imported/dagger_Dagger_NM.png-16adfa9ec4fd4455ed9dd788fbba2519.s3tc.ctex"] dest_files=["res://.godot/imported/dagger_Dagger_NM.png-16adfa9ec4fd4455ed9dd788fbba2519.s3tc.ctex", "res://.godot/imported/dagger_Dagger_NM.png-16adfa9ec4fd4455ed9dd788fbba2519.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://b5jfvsejxruax" uid="uid://b5jfvsejxruax"
path.s3tc="res://.godot/imported/dagger_dagger_E.png-f59a7c6d2e36ce0df3488a3ad845f982.s3tc.ctex" path.s3tc="res://.godot/imported/dagger_dagger_E.png-f59a7c6d2e36ce0df3488a3ad845f982.s3tc.ctex"
path.etc2="res://.godot/imported/dagger_dagger_E.png-f59a7c6d2e36ce0df3488a3ad845f982.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/dagger/dagger_dagger_E.png" source_file="res://assets/props/dagger/dagger_dagger_E.png"
dest_files=["res://.godot/imported/dagger_dagger_E.png-f59a7c6d2e36ce0df3488a3ad845f982.s3tc.ctex"] dest_files=["res://.godot/imported/dagger_dagger_E.png-f59a7c6d2e36ce0df3488a3ad845f982.s3tc.ctex", "res://.godot/imported/dagger_dagger_E.png-f59a7c6d2e36ce0df3488a3ad845f982.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://b2yaxbeog0iiq" uid="uid://b2yaxbeog0iiq"
path.s3tc="res://.godot/imported/dagger_dagger_ORM.png-d6cee18aee3cb84d78327e37eda49e85.s3tc.ctex" path.s3tc="res://.godot/imported/dagger_dagger_ORM.png-d6cee18aee3cb84d78327e37eda49e85.s3tc.ctex"
path.etc2="res://.godot/imported/dagger_dagger_ORM.png-d6cee18aee3cb84d78327e37eda49e85.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/dagger/dagger_dagger_ORM.png" source_file="res://assets/props/dagger/dagger_dagger_ORM.png"
dest_files=["res://.godot/imported/dagger_dagger_ORM.png-d6cee18aee3cb84d78327e37eda49e85.s3tc.ctex"] dest_files=["res://.godot/imported/dagger_dagger_ORM.png-d6cee18aee3cb84d78327e37eda49e85.s3tc.ctex", "res://.godot/imported/dagger_dagger_ORM.png-d6cee18aee3cb84d78327e37eda49e85.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cos4nywdtkchr" uid="uid://cos4nywdtkchr"
path.s3tc="res://.godot/imported/dagger_BC.tga-8c56f407df61bdb7c529101388df0d01.s3tc.ctex" path.s3tc="res://.godot/imported/dagger_BC.tga-8c56f407df61bdb7c529101388df0d01.s3tc.ctex"
path.etc2="res://.godot/imported/dagger_BC.tga-8c56f407df61bdb7c529101388df0d01.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/dagger/textures/dagger_BC.tga" source_file="res://assets/props/dagger/textures/dagger_BC.tga"
dest_files=["res://.godot/imported/dagger_BC.tga-8c56f407df61bdb7c529101388df0d01.s3tc.ctex"] dest_files=["res://.godot/imported/dagger_BC.tga-8c56f407df61bdb7c529101388df0d01.s3tc.ctex", "res://.godot/imported/dagger_BC.tga-8c56f407df61bdb7c529101388df0d01.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bn2pvfwupk616" uid="uid://bn2pvfwupk616"
path.s3tc="res://.godot/imported/dagger_NM.tga-02457e4299815720542e6c6827c3099f.s3tc.ctex" path.s3tc="res://.godot/imported/dagger_NM.tga-02457e4299815720542e6c6827c3099f.s3tc.ctex"
path.etc2="res://.godot/imported/dagger_NM.tga-02457e4299815720542e6c6827c3099f.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/dagger/textures/dagger_NM.tga" source_file="res://assets/props/dagger/textures/dagger_NM.tga"
dest_files=["res://.godot/imported/dagger_NM.tga-02457e4299815720542e6c6827c3099f.s3tc.ctex"] dest_files=["res://.godot/imported/dagger_NM.tga-02457e4299815720542e6c6827c3099f.s3tc.ctex", "res://.godot/imported/dagger_NM.tga-02457e4299815720542e6c6827c3099f.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cxid6xyfqv6bv" uid="uid://cxid6xyfqv6bv"
path.s3tc="res://.godot/imported/tx_godet_BC.tga-0e7c29ed5a0f4c80e30557e304a14e49.s3tc.ctex" path.s3tc="res://.godot/imported/tx_godet_BC.tga-0e7c29ed5a0f4c80e30557e304a14e49.s3tc.ctex"
path.etc2="res://.godot/imported/tx_godet_BC.tga-0e7c29ed5a0f4c80e30557e304a14e49.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/godet/textures/tx_godet_BC.tga" source_file="res://assets/props/godet/textures/tx_godet_BC.tga"
dest_files=["res://.godot/imported/tx_godet_BC.tga-0e7c29ed5a0f4c80e30557e304a14e49.s3tc.ctex"] dest_files=["res://.godot/imported/tx_godet_BC.tga-0e7c29ed5a0f4c80e30557e304a14e49.s3tc.ctex", "res://.godot/imported/tx_godet_BC.tga-0e7c29ed5a0f4c80e30557e304a14e49.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://byv10yo0gvfju" uid="uid://byv10yo0gvfju"
path.s3tc="res://.godot/imported/tx_godet_NM.tga-9410c62c3e8f99e54c6df8c71e04ecff.s3tc.ctex" path.s3tc="res://.godot/imported/tx_godet_NM.tga-9410c62c3e8f99e54c6df8c71e04ecff.s3tc.ctex"
path.etc2="res://.godot/imported/tx_godet_NM.tga-9410c62c3e8f99e54c6df8c71e04ecff.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/godet/textures/tx_godet_NM.tga" source_file="res://assets/props/godet/textures/tx_godet_NM.tga"
dest_files=["res://.godot/imported/tx_godet_NM.tga-9410c62c3e8f99e54c6df8c71e04ecff.s3tc.ctex"] dest_files=["res://.godot/imported/tx_godet_NM.tga-9410c62c3e8f99e54c6df8c71e04ecff.s3tc.ctex", "res://.godot/imported/tx_godet_NM.tga-9410c62c3e8f99e54c6df8c71e04ecff.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cpi12be1h168j" uid="uid://cpi12be1h168j"
path.s3tc="res://.godot/imported/tx_godet_ORM.tga-d01c51d4f8d8c261e86184c55282ab2b.s3tc.ctex" path.s3tc="res://.godot/imported/tx_godet_ORM.tga-d01c51d4f8d8c261e86184c55282ab2b.s3tc.ctex"
path.etc2="res://.godot/imported/tx_godet_ORM.tga-d01c51d4f8d8c261e86184c55282ab2b.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/godet/textures/tx_godet_ORM.tga" source_file="res://assets/props/godet/textures/tx_godet_ORM.tga"
dest_files=["res://.godot/imported/tx_godet_ORM.tga-d01c51d4f8d8c261e86184c55282ab2b.s3tc.ctex"] dest_files=["res://.godot/imported/tx_godet_ORM.tga-d01c51d4f8d8c261e86184c55282ab2b.s3tc.ctex", "res://.godot/imported/tx_godet_ORM.tga-d01c51d4f8d8c261e86184c55282ab2b.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://crk5i2qr13hme" uid="uid://crk5i2qr13hme"
path.s3tc="res://.godot/imported/tx_growler_BC.tga-aa118cf1c458a342a6a74017661c1ae7.s3tc.ctex" path.s3tc="res://.godot/imported/tx_growler_BC.tga-aa118cf1c458a342a6a74017661c1ae7.s3tc.ctex"
path.etc2="res://.godot/imported/tx_growler_BC.tga-aa118cf1c458a342a6a74017661c1ae7.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/growler/textures/tx_growler_BC.tga" source_file="res://assets/props/growler/textures/tx_growler_BC.tga"
dest_files=["res://.godot/imported/tx_growler_BC.tga-aa118cf1c458a342a6a74017661c1ae7.s3tc.ctex"] dest_files=["res://.godot/imported/tx_growler_BC.tga-aa118cf1c458a342a6a74017661c1ae7.s3tc.ctex", "res://.godot/imported/tx_growler_BC.tga-aa118cf1c458a342a6a74017661c1ae7.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://rc3kqnqss1u" uid="uid://rc3kqnqss1u"
path.s3tc="res://.godot/imported/tx_growler_NM.tga-2a1c81bcbfbece34756c1cdbc715b7f4.s3tc.ctex" path.s3tc="res://.godot/imported/tx_growler_NM.tga-2a1c81bcbfbece34756c1cdbc715b7f4.s3tc.ctex"
path.etc2="res://.godot/imported/tx_growler_NM.tga-2a1c81bcbfbece34756c1cdbc715b7f4.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/growler/textures/tx_growler_NM.tga" source_file="res://assets/props/growler/textures/tx_growler_NM.tga"
dest_files=["res://.godot/imported/tx_growler_NM.tga-2a1c81bcbfbece34756c1cdbc715b7f4.s3tc.ctex"] dest_files=["res://.godot/imported/tx_growler_NM.tga-2a1c81bcbfbece34756c1cdbc715b7f4.s3tc.ctex", "res://.godot/imported/tx_growler_NM.tga-2a1c81bcbfbece34756c1cdbc715b7f4.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://ctls0ywsxpmr7" uid="uid://ctls0ywsxpmr7"
path.s3tc="res://.godot/imported/tx_growler_ORM.tga-de03bcfefddaf9accd2e00b4472eb37d.s3tc.ctex" path.s3tc="res://.godot/imported/tx_growler_ORM.tga-de03bcfefddaf9accd2e00b4472eb37d.s3tc.ctex"
path.etc2="res://.godot/imported/tx_growler_ORM.tga-de03bcfefddaf9accd2e00b4472eb37d.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/growler/textures/tx_growler_ORM.tga" source_file="res://assets/props/growler/textures/tx_growler_ORM.tga"
dest_files=["res://.godot/imported/tx_growler_ORM.tga-de03bcfefddaf9accd2e00b4472eb37d.s3tc.ctex"] dest_files=["res://.godot/imported/tx_growler_ORM.tga-de03bcfefddaf9accd2e00b4472eb37d.s3tc.ctex", "res://.godot/imported/tx_growler_ORM.tga-de03bcfefddaf9accd2e00b4472eb37d.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cbljeqhj8iqby" uid="uid://cbljeqhj8iqby"
path.s3tc="res://.godot/imported/tx_paperParchment_BC.tga-371a74b1da16911de64c30179b65a0c9.s3tc.ctex" path.s3tc="res://.godot/imported/tx_paperParchment_BC.tga-371a74b1da16911de64c30179b65a0c9.s3tc.ctex"
path.etc2="res://.godot/imported/tx_paperParchment_BC.tga-371a74b1da16911de64c30179b65a0c9.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/parchment/textures/tx_paperParchment_BC.tga" source_file="res://assets/props/parchment/textures/tx_paperParchment_BC.tga"
dest_files=["res://.godot/imported/tx_paperParchment_BC.tga-371a74b1da16911de64c30179b65a0c9.s3tc.ctex"] dest_files=["res://.godot/imported/tx_paperParchment_BC.tga-371a74b1da16911de64c30179b65a0c9.s3tc.ctex", "res://.godot/imported/tx_paperParchment_BC.tga-371a74b1da16911de64c30179b65a0c9.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://eklcrlw4d7hq" uid="uid://eklcrlw4d7hq"
path.s3tc="res://.godot/imported/tx_paperParchment_NM.tga-88d19a5247cd983c1308683b6549f639.s3tc.ctex" path.s3tc="res://.godot/imported/tx_paperParchment_NM.tga-88d19a5247cd983c1308683b6549f639.s3tc.ctex"
path.etc2="res://.godot/imported/tx_paperParchment_NM.tga-88d19a5247cd983c1308683b6549f639.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/parchment/textures/tx_paperParchment_NM.tga" source_file="res://assets/props/parchment/textures/tx_paperParchment_NM.tga"
dest_files=["res://.godot/imported/tx_paperParchment_NM.tga-88d19a5247cd983c1308683b6549f639.s3tc.ctex"] dest_files=["res://.godot/imported/tx_paperParchment_NM.tga-88d19a5247cd983c1308683b6549f639.s3tc.ctex", "res://.godot/imported/tx_paperParchment_NM.tga-88d19a5247cd983c1308683b6549f639.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bqjkf6nvgwe27" uid="uid://bqjkf6nvgwe27"
path.s3tc="res://.godot/imported/tx_paperParchment_ORM.tga-e02245062d00dd9799c11ab6ea7a5ec6.s3tc.ctex" path.s3tc="res://.godot/imported/tx_paperParchment_ORM.tga-e02245062d00dd9799c11ab6ea7a5ec6.s3tc.ctex"
path.etc2="res://.godot/imported/tx_paperParchment_ORM.tga-e02245062d00dd9799c11ab6ea7a5ec6.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/parchment/textures/tx_paperParchment_ORM.tga" source_file="res://assets/props/parchment/textures/tx_paperParchment_ORM.tga"
dest_files=["res://.godot/imported/tx_paperParchment_ORM.tga-e02245062d00dd9799c11ab6ea7a5ec6.s3tc.ctex"] dest_files=["res://.godot/imported/tx_paperParchment_ORM.tga-e02245062d00dd9799c11ab6ea7a5ec6.s3tc.ctex", "res://.godot/imported/tx_paperParchment_ORM.tga-e02245062d00dd9799c11ab6ea7a5ec6.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://edlmgnuher5f" uid="uid://edlmgnuher5f"
path.s3tc="res://.godot/imported/tx_woodParchment_BC.tga-69f35503d987626688d47d91eb9c49de.s3tc.ctex" path.s3tc="res://.godot/imported/tx_woodParchment_BC.tga-69f35503d987626688d47d91eb9c49de.s3tc.ctex"
path.etc2="res://.godot/imported/tx_woodParchment_BC.tga-69f35503d987626688d47d91eb9c49de.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/parchment/textures/tx_woodParchment_BC.tga" source_file="res://assets/props/parchment/textures/tx_woodParchment_BC.tga"
dest_files=["res://.godot/imported/tx_woodParchment_BC.tga-69f35503d987626688d47d91eb9c49de.s3tc.ctex"] dest_files=["res://.godot/imported/tx_woodParchment_BC.tga-69f35503d987626688d47d91eb9c49de.s3tc.ctex", "res://.godot/imported/tx_woodParchment_BC.tga-69f35503d987626688d47d91eb9c49de.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://k0ddnhdpe7bc" uid="uid://k0ddnhdpe7bc"
path.s3tc="res://.godot/imported/tx_woodParchment_NM.tga-a492317fe890e2cdeae4430bfc4ab057.s3tc.ctex" path.s3tc="res://.godot/imported/tx_woodParchment_NM.tga-a492317fe890e2cdeae4430bfc4ab057.s3tc.ctex"
path.etc2="res://.godot/imported/tx_woodParchment_NM.tga-a492317fe890e2cdeae4430bfc4ab057.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/parchment/textures/tx_woodParchment_NM.tga" source_file="res://assets/props/parchment/textures/tx_woodParchment_NM.tga"
dest_files=["res://.godot/imported/tx_woodParchment_NM.tga-a492317fe890e2cdeae4430bfc4ab057.s3tc.ctex"] dest_files=["res://.godot/imported/tx_woodParchment_NM.tga-a492317fe890e2cdeae4430bfc4ab057.s3tc.ctex", "res://.godot/imported/tx_woodParchment_NM.tga-a492317fe890e2cdeae4430bfc4ab057.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://ttbygsi4v5mu" uid="uid://ttbygsi4v5mu"
path.s3tc="res://.godot/imported/tx_woodParchment_ORM.tga-23f5c64c06128376cd6c2d3fb1581bfb.s3tc.ctex" path.s3tc="res://.godot/imported/tx_woodParchment_ORM.tga-23f5c64c06128376cd6c2d3fb1581bfb.s3tc.ctex"
path.etc2="res://.godot/imported/tx_woodParchment_ORM.tga-23f5c64c06128376cd6c2d3fb1581bfb.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/parchment/textures/tx_woodParchment_ORM.tga" source_file="res://assets/props/parchment/textures/tx_woodParchment_ORM.tga"
dest_files=["res://.godot/imported/tx_woodParchment_ORM.tga-23f5c64c06128376cd6c2d3fb1581bfb.s3tc.ctex"] dest_files=["res://.godot/imported/tx_woodParchment_ORM.tga-23f5c64c06128376cd6c2d3fb1581bfb.s3tc.ctex", "res://.godot/imported/tx_woodParchment_ORM.tga-23f5c64c06128376cd6c2d3fb1581bfb.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://d4bfqers6w8pw" uid="uid://d4bfqers6w8pw"
path.s3tc="res://.godot/imported/tx_rock_floor_bc.tga-4b77fe3e94f9498cc82b83553dd20905.s3tc.ctex" path.s3tc="res://.godot/imported/tx_rock_floor_bc.tga-4b77fe3e94f9498cc82b83553dd20905.s3tc.ctex"
path.etc2="res://.godot/imported/tx_rock_floor_bc.tga-4b77fe3e94f9498cc82b83553dd20905.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/rock floor/textures/tx_rock_floor_bc.tga" source_file="res://assets/props/rock floor/textures/tx_rock_floor_bc.tga"
dest_files=["res://.godot/imported/tx_rock_floor_bc.tga-4b77fe3e94f9498cc82b83553dd20905.s3tc.ctex"] dest_files=["res://.godot/imported/tx_rock_floor_bc.tga-4b77fe3e94f9498cc82b83553dd20905.s3tc.ctex", "res://.godot/imported/tx_rock_floor_bc.tga-4b77fe3e94f9498cc82b83553dd20905.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://c1vobch2kuype" uid="uid://c1vobch2kuype"
path.s3tc="res://.godot/imported/tx_rock_floor_nm.tga-cf4c027feec7068c5fb11d217fde401b.s3tc.ctex" path.s3tc="res://.godot/imported/tx_rock_floor_nm.tga-cf4c027feec7068c5fb11d217fde401b.s3tc.ctex"
path.etc2="res://.godot/imported/tx_rock_floor_nm.tga-cf4c027feec7068c5fb11d217fde401b.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/rock floor/textures/tx_rock_floor_nm.tga" source_file="res://assets/props/rock floor/textures/tx_rock_floor_nm.tga"
dest_files=["res://.godot/imported/tx_rock_floor_nm.tga-cf4c027feec7068c5fb11d217fde401b.s3tc.ctex"] dest_files=["res://.godot/imported/tx_rock_floor_nm.tga-cf4c027feec7068c5fb11d217fde401b.s3tc.ctex", "res://.godot/imported/tx_rock_floor_nm.tga-cf4c027feec7068c5fb11d217fde401b.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dkr2vtaja5y3t" uid="uid://dkr2vtaja5y3t"
path.s3tc="res://.godot/imported/tx_rock_floor_orm.tga-5c074f32ecfa0079bda63b1b17f8ddda.s3tc.ctex" path.s3tc="res://.godot/imported/tx_rock_floor_orm.tga-5c074f32ecfa0079bda63b1b17f8ddda.s3tc.ctex"
path.etc2="res://.godot/imported/tx_rock_floor_orm.tga-5c074f32ecfa0079bda63b1b17f8ddda.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/rock floor/textures/tx_rock_floor_orm.tga" source_file="res://assets/props/rock floor/textures/tx_rock_floor_orm.tga"
dest_files=["res://.godot/imported/tx_rock_floor_orm.tga-5c074f32ecfa0079bda63b1b17f8ddda.s3tc.ctex"] dest_files=["res://.godot/imported/tx_rock_floor_orm.tga-5c074f32ecfa0079bda63b1b17f8ddda.s3tc.ctex", "res://.godot/imported/tx_rock_floor_orm.tga-5c074f32ecfa0079bda63b1b17f8ddda.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dw5se51drseh3" uid="uid://dw5se51drseh3"
path.s3tc="res://.godot/imported/tx_spyglass_BC.tga-080121e58687a7d1d090161e35b03182.s3tc.ctex" path.s3tc="res://.godot/imported/tx_spyglass_BC.tga-080121e58687a7d1d090161e35b03182.s3tc.ctex"
path.etc2="res://.godot/imported/tx_spyglass_BC.tga-080121e58687a7d1d090161e35b03182.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/spyglass/textures/tx_spyglass_BC.tga" source_file="res://assets/props/spyglass/textures/tx_spyglass_BC.tga"
dest_files=["res://.godot/imported/tx_spyglass_BC.tga-080121e58687a7d1d090161e35b03182.s3tc.ctex"] dest_files=["res://.godot/imported/tx_spyglass_BC.tga-080121e58687a7d1d090161e35b03182.s3tc.ctex", "res://.godot/imported/tx_spyglass_BC.tga-080121e58687a7d1d090161e35b03182.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://82om745ll3o4" uid="uid://82om745ll3o4"
path.s3tc="res://.godot/imported/tx_stool_b_BC.tga-c20ef1a25a6be0cf3846b66cd1fa3713.s3tc.ctex" path.s3tc="res://.godot/imported/tx_stool_b_BC.tga-c20ef1a25a6be0cf3846b66cd1fa3713.s3tc.ctex"
path.etc2="res://.godot/imported/tx_stool_b_BC.tga-c20ef1a25a6be0cf3846b66cd1fa3713.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/stool b/textures/tx_stool_b_BC.tga" source_file="res://assets/props/stool b/textures/tx_stool_b_BC.tga"
dest_files=["res://.godot/imported/tx_stool_b_BC.tga-c20ef1a25a6be0cf3846b66cd1fa3713.s3tc.ctex"] dest_files=["res://.godot/imported/tx_stool_b_BC.tga-c20ef1a25a6be0cf3846b66cd1fa3713.s3tc.ctex", "res://.godot/imported/tx_stool_b_BC.tga-c20ef1a25a6be0cf3846b66cd1fa3713.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cmovui88gnkjk" uid="uid://cmovui88gnkjk"
path.s3tc="res://.godot/imported/tx_stool_b_NM.tga-14bca954eb46468eb8701891808e689d.s3tc.ctex" path.s3tc="res://.godot/imported/tx_stool_b_NM.tga-14bca954eb46468eb8701891808e689d.s3tc.ctex"
path.etc2="res://.godot/imported/tx_stool_b_NM.tga-14bca954eb46468eb8701891808e689d.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/stool b/textures/tx_stool_b_NM.tga" source_file="res://assets/props/stool b/textures/tx_stool_b_NM.tga"
dest_files=["res://.godot/imported/tx_stool_b_NM.tga-14bca954eb46468eb8701891808e689d.s3tc.ctex"] dest_files=["res://.godot/imported/tx_stool_b_NM.tga-14bca954eb46468eb8701891808e689d.s3tc.ctex", "res://.godot/imported/tx_stool_b_NM.tga-14bca954eb46468eb8701891808e689d.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://ctpow28mmgklb" uid="uid://ctpow28mmgklb"
path.s3tc="res://.godot/imported/tx_stool_b_ORM.tga-1eb1e85bdcccbfcf4a8b9de490c1f5a5.s3tc.ctex" path.s3tc="res://.godot/imported/tx_stool_b_ORM.tga-1eb1e85bdcccbfcf4a8b9de490c1f5a5.s3tc.ctex"
path.etc2="res://.godot/imported/tx_stool_b_ORM.tga-1eb1e85bdcccbfcf4a8b9de490c1f5a5.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/stool b/textures/tx_stool_b_ORM.tga" source_file="res://assets/props/stool b/textures/tx_stool_b_ORM.tga"
dest_files=["res://.godot/imported/tx_stool_b_ORM.tga-1eb1e85bdcccbfcf4a8b9de490c1f5a5.s3tc.ctex"] dest_files=["res://.godot/imported/tx_stool_b_ORM.tga-1eb1e85bdcccbfcf4a8b9de490c1f5a5.s3tc.ctex", "res://.godot/imported/tx_stool_b_ORM.tga-1eb1e85bdcccbfcf4a8b9de490c1f5a5.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://c7tyh6ft758b8" uid="uid://c7tyh6ft758b8"
path.s3tc="res://.godot/imported/tx_table_BC.tga-c2cc5361dfcaa9d2b24897fe31e957a9.s3tc.ctex" path.s3tc="res://.godot/imported/tx_table_BC.tga-c2cc5361dfcaa9d2b24897fe31e957a9.s3tc.ctex"
path.etc2="res://.godot/imported/tx_table_BC.tga-c2cc5361dfcaa9d2b24897fe31e957a9.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/table/textures/tx_table_BC.tga" source_file="res://assets/props/table/textures/tx_table_BC.tga"
dest_files=["res://.godot/imported/tx_table_BC.tga-c2cc5361dfcaa9d2b24897fe31e957a9.s3tc.ctex"] dest_files=["res://.godot/imported/tx_table_BC.tga-c2cc5361dfcaa9d2b24897fe31e957a9.s3tc.ctex", "res://.godot/imported/tx_table_BC.tga-c2cc5361dfcaa9d2b24897fe31e957a9.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://djinbk1nowap7" uid="uid://djinbk1nowap7"
path.s3tc="res://.godot/imported/tx_table_NM.tga-88d93479c1910b48a99728e039a1ce54.s3tc.ctex" path.s3tc="res://.godot/imported/tx_table_NM.tga-88d93479c1910b48a99728e039a1ce54.s3tc.ctex"
path.etc2="res://.godot/imported/tx_table_NM.tga-88d93479c1910b48a99728e039a1ce54.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/table/textures/tx_table_NM.tga" source_file="res://assets/props/table/textures/tx_table_NM.tga"
dest_files=["res://.godot/imported/tx_table_NM.tga-88d93479c1910b48a99728e039a1ce54.s3tc.ctex"] dest_files=["res://.godot/imported/tx_table_NM.tga-88d93479c1910b48a99728e039a1ce54.s3tc.ctex", "res://.godot/imported/tx_table_NM.tga-88d93479c1910b48a99728e039a1ce54.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://d2e8oknb1eptw" uid="uid://d2e8oknb1eptw"
path.s3tc="res://.godot/imported/tx_table_ORM.tga-d97a9c639551b7056b3d96bfec9c2511.s3tc.ctex" path.s3tc="res://.godot/imported/tx_table_ORM.tga-d97a9c639551b7056b3d96bfec9c2511.s3tc.ctex"
path.etc2="res://.godot/imported/tx_table_ORM.tga-d97a9c639551b7056b3d96bfec9c2511.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/table/textures/tx_table_ORM.tga" source_file="res://assets/props/table/textures/tx_table_ORM.tga"
dest_files=["res://.godot/imported/tx_table_ORM.tga-d97a9c639551b7056b3d96bfec9c2511.s3tc.ctex"] dest_files=["res://.godot/imported/tx_table_ORM.tga-d97a9c639551b7056b3d96bfec9c2511.s3tc.ctex", "res://.godot/imported/tx_table_ORM.tga-d97a9c639551b7056b3d96bfec9c2511.etc2.ctex"]
[params] [params]
+4 -4
View File
@@ -30,7 +30,7 @@ keystore/release_password=""
one_click_deploy/clear_previous_install=true one_click_deploy/clear_previous_install=true
version/code=1 version/code=1
version/name="1.0" version/name="1.0"
package/unique_name="org.godotengine.$genname" package/unique_name="com.devcrea.puzzlequest"
package/name="" package/name=""
package/signed=false package/signed=false
launcher_icons/main_192x192="" launcher_icons/main_192x192=""
@@ -230,7 +230,7 @@ codesign/timestamp_server_url=""
codesign/digest_algorithm=1 codesign/digest_algorithm=1
codesign/description="" codesign/description=""
codesign/custom_options=PoolStringArray( ) codesign/custom_options=PoolStringArray( )
application/icon="res://releases/windows/project.ico" application/icon=""
application/file_version="" application/file_version=""
application/product_version="" application/product_version=""
application/company_name="" application/company_name=""
@@ -296,7 +296,7 @@ codesign/timestamp_server_url=""
codesign/digest_algorithm=1 codesign/digest_algorithm=1
codesign/description="" codesign/description=""
codesign/custom_options=PoolStringArray( ) codesign/custom_options=PoolStringArray( )
application/icon="res://releases/windows/project.ico" application/icon=""
application/file_version="" application/file_version=""
application/product_version="" application/product_version=""
application/company_name="" application/company_name=""
@@ -337,7 +337,7 @@ keystore/release_password=""
one_click_deploy/clear_previous_install=false one_click_deploy/clear_previous_install=false
version/code=1 version/code=1
version/name="1.0" version/name="1.0"
package/unique_name="org.godotengine.$genname" package/unique_name="com.devcrea.puzzlequest"
package/name="" package/name=""
package/signed=false package/signed=false
launcher_icons/main_192x192="" launcher_icons/main_192x192=""
+7
View File
@@ -0,0 +1,7 @@
# gdtoolkit / gdlint config
# https://github.com/Scony/godot-gdscript-toolkit/wiki
# Godot $-paths and typed signatures push lines well past 100 cols routinely;
# 140 keeps the rule as a "no absurdly long line" safety net without forcing
# constant manual wrapping of node paths.
max-line-length: 140
+1
View File
@@ -67,4 +67,5 @@ locale/translations=PackedStringArray("res://locales/fr.po", "res://locales/en.p
[rendering] [rendering]
textures/vram_compression/import_etc2_astc=true
environment/defaults/default_environment="res://default_env.tres" environment/defaults/default_environment="res://default_env.tres"
-134
View File
@@ -1,134 +0,0 @@
---
# Windows Development version
kind: pipeline
type: docker
name: WindowsDebugVersion
platform:
os: linux
arch: amd64
clone:
depth: 1
steps:
- name: WindowsDebug
image: barichello/godot-ci:3.3.2
volumes:
- name: binary
path: releases/windows
commands:
- godot --export "WindowsDebug" "releases/windows/Puzzle Quest.exe"
- name: WindowsDeploy
image: barichello/godot-ci:3.3.2
volumes:
- name: binary
path: releases/windows
environment:
BUTLER_API_KEY:
from_secret: BUTLER_API_KEY
commands:
- butler push --if-changed --ignore '.keep' "releases/windows" "dev-crea/ahog:windows"
trigger:
branch:
- dev
---
# Android Development version
kind: pipeline
type: docker
name: AndroidDebugVersion
platform:
os: linux
arch: amd64
clone:
depth: 1
steps:
- name: AndroidDebug
image: devcrea/godot-ci:3.3.2-android
volumes:
- name: binary
path: releases/android
commands:
- apt-get update
- apt-get install -y wget
- wget -O /root/debug.keystore https://u.pcloud.link/publink/show?code=XZD8dxXZSdXUyze6UHXxhssGJXHfUBI730Gk
- sed 's@keystore/debug=".*"@keystore/debug="'/root/debug.keystore'"@g' -i export_presets.cfg
# - sed 's@keystore/release_user=".*"@keystore/release_user="'$SECRET_RELEASE_KEYSTORE_USER'"@g' -i export_presets.cfg
# - sed 's@keystore/release_password=".*"@keystore/release_password="'$SECRET_RELEASE_KEYSTORE_PASSWORD'"@g' -i export_presets.cfg
- godot --export "AndroidDebug" "releases/android/Puzzle Quest.apk"
- name: AndroidDeploy
image: barichello/godot-ci:3.3.2
volumes:
- name: binary
path: releases/android
environment:
BUTLER_API_KEY:
from_secret: BUTLER_API_KEY
commands:
- butler push --if-changed --ignore '.keep' "releases/android" "dev-crea/ahog:android"
trigger:
branch:
- dev
---
# Linux Development version
kind: pipeline
type: docker
name: LinuxDebugVersion
platform:
os: linux
arch: amd64
clone:
depth: 1
steps:
- name: LinuxDebug
image: barichello/godot-ci:3.3.2
volumes:
- name: binary
path: releases/linux
commands:
- godot --export "Linux/X11Debug" "releases/linux/Puzzle Quest.x86_64"
- name: LinuxDeploy
image: barichello/godot-ci:3.3.2
volumes:
- name: binary
path: releases/linux
environment:
BUTLER_API_KEY:
from_secret: BUTLER_API_KEY
commands:
- butler push --if-changed --ignore '.keep' "releases/linux" "dev-crea/ahog:linux"
trigger:
branch:
- dev
---
# For Production version
kind: pipeline
type: docker
name: ReleaseVersion
platform:
os: linux
arch: amd64
clone:
depth: 1
trigger:
branch:
- master
+3 -3
View File
@@ -75,7 +75,7 @@ func _get_node_animated() -> Node:
func _search_button_to_use(counter: int) -> Node: func _search_button_to_use(counter: int) -> Node:
if counter == 0: if counter == 0:
return object_first.instantiate() return object_first.instantiate()
elif counter == meshes.size() - 1: if counter == meshes.size() - 1:
return object_last.instantiate() return object_last.instantiate()
return object_std.instantiate() return object_std.instantiate()
@@ -184,13 +184,13 @@ func _gyroscope_changed_right(gyroscope: Vector3) -> bool:
func _gyroscope_changed_down(gyroscope: Vector3) -> bool: func _gyroscope_changed_down(gyroscope: Vector3) -> bool:
return (gyroscope.abs().z - gyroscope_value_old.abs().z) > GYROSCOPE_MAX_DIFF and \ return (gyroscope.abs().z - gyroscope_value_old.abs().z) > GYROSCOPE_MAX_DIFF and \
gyroscope.z > gyroscope_value_old.z or \ gyroscope.z > gyroscope_value_old.z or \
(gyroscope.abs().x - gyroscope_value_old.abs().x) > GYROSCOPE_MAX_DIFF and \ (gyroscope.abs().x - gyroscope_value_old.abs().x) > GYROSCOPE_MAX_DIFF and \
gyroscope.x > gyroscope_value_old.x gyroscope.x > gyroscope_value_old.x
func _gyroscope_changed_up(gyroscope: Vector3) -> bool: func _gyroscope_changed_up(gyroscope: Vector3) -> bool:
return (gyroscope.abs().z - gyroscope_value_old.abs().z) > GYROSCOPE_MAX_DIFF and \ return (gyroscope.abs().z - gyroscope_value_old.abs().z) > GYROSCOPE_MAX_DIFF and \
gyroscope.z < gyroscope_value_old.z or \ gyroscope.z < gyroscope_value_old.z or \
(gyroscope.abs().x - gyroscope_value_old.abs().x) > GYROSCOPE_MAX_DIFF and \ (gyroscope.abs().x - gyroscope_value_old.abs().x) > GYROSCOPE_MAX_DIFF and \
gyroscope.x < gyroscope_value_old.x gyroscope.x < gyroscope_value_old.x
func _start_dissolve(key: String) -> void: func _start_dissolve(key: String) -> void:
+5 -5
View File
@@ -9,11 +9,6 @@ extends Node
# (per-scene lock state) persists across runs. # (per-scene lock state) persists across runs.
class DB extends RefCounted: class DB extends RefCounted:
var settings: SettingsData
var levels: Array[LevelEntry] = []
var scenes: Array[SceneEntry] = []
var _path: String
const _SETTINGS_PROPS := [ const _SETTINGS_PROPS := [
{"name": "langue", "type": "1", "auto_increment": "0"}, {"name": "langue", "type": "1", "auto_increment": "0"},
{"name": "gyroscope", "type": "0", "auto_increment": "0"}, {"name": "gyroscope", "type": "0", "auto_increment": "0"},
@@ -36,6 +31,11 @@ class DB extends RefCounted:
{"name": "counter", "type": "1", "auto_increment": "0"}, {"name": "counter", "type": "1", "auto_increment": "0"},
] ]
var settings: SettingsData
var levels: Array[LevelEntry] = []
var scenes: Array[SceneEntry] = []
var _path: String
func _init(path: String) -> void: func _init(path: String) -> void:
_path = path _path = path
var f := FileAccess.open(path, FileAccess.READ) var f := FileAccess.open(path, FileAccess.READ)
+2 -2
View File
@@ -2,8 +2,6 @@ extends Control
# Application root: async scene loading + reference to the loaded Database. # Application root: async scene loading + reference to the loaded Database.
@onready var animation: AnimationPlayer = Loading.get_node("AnimLoading")
var current_scene: Node = null var current_scene: Node = null
var current_scene_int: int = -1 var current_scene_int: int = -1
var wait_frames: int = 1 var wait_frames: int = 1
@@ -11,6 +9,8 @@ var database: RefCounted = null
var loaded: bool = false var loaded: bool = false
var _loading_path: String = "" var _loading_path: String = ""
@onready var animation: AnimationPlayer = Loading.get_node("AnimLoading")
func _ready() -> void: func _ready() -> void:
database = load("res://scripts/Database.gd").new().initialize() database = load("res://scripts/Database.gd").new().initialize()
_initialize_current_scene() _initialize_current_scene()