Compare commits

..

31 Commits

Author SHA1 Message Date
86ffc931e8 fix: re-provide specific blue color to maze texture 2025-07-26 15:31:15 -05:00
d72f47d66c fix: fix tunneling logic 2025-07-26 15:27:17 -05:00
7a6182cb85 feat: re-add board offset logic, fixup text rendering 2025-07-26 15:26:37 -05:00
a1d37a1a0b feat: atlas tile color modulation 2025-07-26 15:06:27 -05:00
9066b2cdbc chore: allow deadcode in asset.rs due to emscripten builds 2025-07-26 14:43:43 -05:00
238b5aac6a feat: non-ttf text rendering using original sprite text, remove black bg from assets 2025-07-26 14:43:25 -05:00
8e5ec9fef0 refactor: huge refactor into atlas-based resources 2025-07-26 14:42:12 -05:00
6ca2e01fba feat: atlas decoding & frame acquisition 2025-07-25 12:27:19 -05:00
8cf30cd78d refactor: begin moving towards packed atlas configuration 2025-07-25 12:24:40 -05:00
9b441fa35c feat: shared blinking textures for power pellets 2025-07-24 16:23:09 -05:00
61ca537909 fix: continue removing lifetime annotations 2025-07-24 16:09:25 -05:00
0a82aea922 refactor: intentionally unsafe leak to drop annoying lifetimes, use IVec2 in all remaining spots 2025-07-24 16:04:47 -05:00
f41c550bb8 feat: enable basic binary size reduction options 2025-07-24 15:39:16 -05:00
829462d3b6 refactor: move direction & edible into entity submodule 2025-07-24 12:48:39 -05:00
002da46045 refactor: split up and move texture-related code into src/texture submodule 2025-07-24 12:48:39 -05:00
cfa73c58a8 refactor: move entity-related code into src/entity submodule 2025-07-24 12:36:48 -05:00
5728effcc6 chore: bump to v0.2.0 2025-07-24 12:14:26 -05:00
fa1a0175b0 ci: remove save-always, remove old vcpkg cache key, flush vcpkg caches 2025-07-24 03:29:22 -05:00
85edb18380 ci: drop linux dependencies: build-essential gettext zlib1g-dev 2025-07-24 03:26:05 -05:00
3a535ee04f fix: linux build linking arg, working build 2025-07-24 02:59:58 -05:00
9b31b392d2 fix(wasm): increase asyncify stack size, working wasm build 2025-07-24 02:39:57 -05:00
999fa14059 chore: remove unused config.toml comments 2025-07-24 02:37:49 -05:00
e925376b7a feat: setup emscripten module for api layer 2025-07-24 02:37:41 -05:00
2596034365 feat: use smallrng for emscripten compat 2025-07-24 02:37:27 -05:00
163855b6e7 fix(wasm): increase audio chunksize to 256 minimum for emscripten audio ctx 2025-07-24 01:14:03 -05:00
645d48aeae ci: use updated setup-emsdk from 'pyodide' v15, fixes emsdk caching, always save vcpkg cache 2025-07-24 01:12:45 -05:00
ec800a88fc fix: use sdl2 internal methods for loading resources for emscripten asset handling 2025-07-24 01:07:22 -05:00
abc37dee4e ci: fix vcpkg cache keys to use target for platforms with multiple targets, allow restore oldkey 2025-07-24 01:04:21 -05:00
1ae7839275 ci: install zlib for linux builds, correct deps/.data filepath 2025-07-24 01:04:21 -05:00
d976d1bc59 ci: specify vcpkg triplets for macos targets 2025-07-24 00:49:22 -05:00
531a5b5d05 ci: inline build script contents, shorten assembly process, separate build/assemble steps 2025-07-24 00:48:49 -05:00
230 changed files with 2503 additions and 867 deletions

View File

@@ -1,12 +1,16 @@
[target.'cfg(target_os = "emscripten")']
# TODO: Document what the fuck this is.
rustflags = [
# "-O", "-C", "link-args=-O2 --profiling",
#"-C", "link-args=-O3 --closure 1",
# "-C", "link-args=-g -gsource-map",
"-C", "link-args=-sASYNCIFY -sALLOW_MEMORY_GROWTH=1",
# "-C", "link-args=-sALLOW_MEMORY_GROWTH=1",
# Stack size is required for this project, it will crash otherwise.
"-C", "link-args=-sASYNCIFY=1 -sASYNCIFY_STACK_SIZE=8192 -sALLOW_MEMORY_GROWTH=1",
"-C", "link-args=-sUSE_SDL=2 -sUSE_SDL_IMAGE=2 -sUSE_SDL_MIXER=2 -sUSE_OGG=1 -sUSE_SDL_GFX=2 -sUSE_SDL_TTF=2 -sSDL2_IMAGE_FORMATS=['png']",
# USE_OGG, USE_VORBIS for OGG/VORBIS usage
"-C", "link-args=--preload-file assets/game/",
]
[target.'cfg(target_os = "linux")']
rustflags = [
# Manually link zlib.
# The `sdl2` crate's build script uses `libpng`, which requires `zlib`.
# By adding `-lz` here, we ensure it's passed to the linker after `libpng`,
# which is required for the linker to correctly resolve symbols.
"-C", "link-arg=-lz",
]

View File

@@ -11,8 +11,6 @@ env:
jobs:
build:
name: Build (${{ matrix.target }})
env:
VCPKG_SYSTEM_LIBRARIES: "OFF"
strategy:
fail-fast: false
matrix:
@@ -47,15 +45,15 @@ jobs:
uses: actions/cache@v4
with:
path: target/vcpkg
key: ${{ runner.os }}-vcpkg-${{ hashFiles('Cargo.toml', 'Cargo.lock') }}
key: A-vcpkg-${{ runner.os }}-${{ matrix.target }}-${{ hashFiles('Cargo.toml', 'Cargo.lock') }}
restore-keys: |
${{ runner.os }}-vcpkg-
A-vcpkg-${{ runner.os }}-${{ matrix.target }}-
- name: Vcpkg Linux Dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y build-essential gettext libltdl-dev
sudo apt-get install -y libltdl-dev
- name: Vcpkg
run: |
@@ -91,7 +89,7 @@ jobs:
uses: actions/checkout@v4
- name: Setup Emscripten SDK
uses: mymindstorm/setup-emsdk@v14
uses: pyodide/setup-emsdk@v15
with:
version: 3.1.43
actions-cache-folder: "emsdk-cache"
@@ -111,8 +109,21 @@ jobs:
version: 8
run_install: true
- name: Build
run: ./build.sh -er # release mode, skip emsdk
- name: Build with Emscripten
run: |
cargo build --target=wasm32-unknown-emscripten --release
- name: Assemble
run: |
echo "Generating CSS"
pnpx postcss-cli ./assets/site/styles.scss -o ./assets/site/build.css
echo "Copying WASM files"
mkdir -p dist
cp assets/site/{build.css,favicon.ico,index.html} dist
output_folder="target/wasm32-unknown-emscripten/release"
cp $output_folder/pacman.{wasm,js} $output_folder/deps/pacman.data dist
- name: Upload Artifact
uses: actions/upload-pages-artifact@v3

88
Cargo.lock generated
View File

@@ -108,6 +108,12 @@ dependencies = [
"num-traits",
]
[[package]]
name = "itoa"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]]
name = "lazy_static"
version = "1.5.0"
@@ -174,7 +180,7 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
[[package]]
name = "pacman"
version = "0.1.0"
version = "0.2.0"
dependencies = [
"anyhow",
"glam",
@@ -184,6 +190,8 @@ dependencies = [
"pathfinding",
"rand",
"sdl2",
"serde",
"serde_json",
"spin_sleep",
"thiserror 1.0.69",
"tracing",
@@ -212,15 +220,6 @@ version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
[[package]]
name = "ppv-lite86"
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
dependencies = [
"zerocopy",
]
[[package]]
name = "proc-macro2"
version = "1.0.95"
@@ -251,17 +250,6 @@ version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
dependencies = [
"rand_chacha",
"rand_core",
]
[[package]]
name = "rand_chacha"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
dependencies = [
"ppv-lite86",
"rand_core",
]
@@ -324,6 +312,12 @@ version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
[[package]]
name = "ryu"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
[[package]]
name = "sdl2"
version = "0.38.0"
@@ -355,6 +349,38 @@ version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
[[package]]
name = "serde"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "serde_json"
version = "1.0.141"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3"
dependencies = [
"itoa",
"memchr",
"ryu",
"serde",
]
[[package]]
name = "sharded-slab"
version = "0.1.4"
@@ -647,23 +673,3 @@ checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
dependencies = [
"bitflags 2.9.1",
]
[[package]]
name = "zerocopy"
version = "0.8.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181"
dependencies = [
"proc-macro2",
"quote",
"syn",
]

View File

@@ -1,6 +1,6 @@
[package]
name = "pacman"
version = "0.1.0"
version = "0.2.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@@ -12,12 +12,20 @@ tracing-subscriber = {version = "0.3.17", features = ["env-filter"]}
lazy_static = "1.5.0"
sdl2 = { version = "0.38.0", features = ["image", "ttf"] }
spin_sleep = "1.3.2"
rand = "0.9.2"
rand = { version = "0.9.2", default-features = false, features = ["small_rng", "os_rng"] }
pathfinding = "4.14"
once_cell = "1.21.3"
thiserror = "1.0"
anyhow = "1.0"
glam = "0.30.4"
serde = { version = "1.0.219", features = ["derive"] }
serde_json = "1.0.141"
[profile.release]
lto = true
panic = "abort"
panic-strategy = "abort"
opt-level = "z"
[target.'cfg(target_os = "windows")'.dependencies.winapi]
version = "0.3"
@@ -42,7 +50,8 @@ rev = "2024.05.24" # release 2024.05.24 # to check for a new one, check https://
[package.metadata.vcpkg.target]
x86_64-pc-windows-msvc = { triplet = "x64-windows-static-md" }
x86_64-unknown-linux-gnu = { triplet = "x64-linux" }
# x86_64-apple-darwin = { triplet = "x64-osx-release" }
x86_64-apple-darwin = { triplet = "x64-osx" }
aarch64-apple-darwin = { triplet = "arm64-osx" }
[target.'cfg(target_os = "emscripten")'.dependencies]
libc = "0.2.16"

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 B

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 528 B

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 394 B

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 B

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

1121
assets/game/atlas.json Normal file
View File

File diff suppressed because it is too large Load Diff

BIN
assets/game/atlas.png Normal file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Some files were not shown because too many files have changed in this diff Show More