mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-06 09:15:46 -06:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 03b2c5a659 | |||
| 64e226be70 | |||
| f998ddd344 | |||
| b2ad8e7afe | |||
| 799d5d85e8 | |||
| 9730d02da5 | |||
| f634beffee | |||
| d15dbe3982 | |||
| de5cddd9b6 | |||
| e3f37ab48e | |||
| 3dd8d5aff7 |
@@ -1,4 +1,8 @@
|
|||||||
[target.wasm32-unknown-emscripten]
|
[target.wasm32-unknown-emscripten]
|
||||||
rustflags = [
|
rustflags = [
|
||||||
"--use-preload-plugins --preload-file assets -s USE_SDL=2 -s USE_SDL_IMAGE=2 -s ASSERTIONS=1",
|
"-O", "-C", "link-args=-O2 --profiling",
|
||||||
]
|
#"-C", "link-args=-O3 --closure 1",
|
||||||
|
"-C", "link-args=-sASYNCIFY -sALLOW_MEMORY_GROWTH=1",
|
||||||
|
"-C", "link-args=-sUSE_SDL=2 -sUSE_SDL_IMAGE=2 -sSDL2_IMAGE_FORMATS=['png']",
|
||||||
|
"-C", "link-args=--preload-file assets/ -lidbfs.js",
|
||||||
|
]
|
||||||
|
|||||||
30
.github/workflows/deploy.yaml
vendored
30
.github/workflows/deploy.yaml
vendored
@@ -1,28 +1,38 @@
|
|||||||
name: Github Pages
|
name: Github Pages
|
||||||
|
|
||||||
on: [push]
|
on: [push]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-github-pages:
|
deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2 # repo checkout
|
- uses: actions/checkout@v2 # repo checkout
|
||||||
|
|
||||||
- uses: mymindstorm/setup-emsdk@v11 # setup emscripten toolchain
|
- uses: mymindstorm/setup-emsdk@v11 # setup emscripten toolchain
|
||||||
# with:
|
with:
|
||||||
# version: 3.1.35
|
version: 1.39.20
|
||||||
|
|
||||||
- uses: actions-rs/toolchain@v1 # get rust toolchain for wasm
|
- uses: actions-rs/toolchain@v1 # get rust toolchain for wasm
|
||||||
with:
|
with:
|
||||||
toolchain: stable
|
toolchain: stable
|
||||||
target: wasm32-unknown-emscripten
|
target: wasm32-unknown-emscripten
|
||||||
override: true
|
override: true
|
||||||
|
|
||||||
|
# TODO: Update to v2
|
||||||
- name: Rust Cache # cache the rust build artefacts
|
- name: Rust Cache # cache the rust build artefacts
|
||||||
uses: Swatinem/rust-cache@v1
|
uses: Swatinem/rust-cache@v1
|
||||||
|
|
||||||
- name: Build # build
|
- name: Build # build
|
||||||
run: ./build.sh
|
run: ./scripts/build-wasm.sh
|
||||||
- name: Deploy
|
|
||||||
uses: JamesIves/github-pages-deploy-action@v4
|
- name: Upload Artifact
|
||||||
|
uses: actions/upload-pages-artifact@v2
|
||||||
with:
|
with:
|
||||||
folder: dist
|
path: './dist/'
|
||||||
|
retention-days: 7
|
||||||
|
|
||||||
|
- name: Deploy
|
||||||
|
uses: actions/deploy-pages@v2
|
||||||
7
BUILD.md
Normal file
7
BUILD.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Building Pac-Man
|
||||||
|
|
||||||
|
## GitHub Actions Workflow
|
||||||
|
|
||||||
|
1. Build workflow produces executables & WASM files for all platforms
|
||||||
|
2. Uploaded as artifacts
|
||||||
|
3. Deployment workflow downloads artifacts and uploads to GitHub Pages
|
||||||
21
assets/index.html
Normal file
21
assets/index.html
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<canvas id="canvas"></canvas>
|
||||||
|
<script>
|
||||||
|
var Module = {
|
||||||
|
'locateFile': function (path, prefix) {
|
||||||
|
if (path.endsWith(".data")) {
|
||||||
|
return prefix + "deps/" + path;
|
||||||
|
}
|
||||||
|
return prefix + path;
|
||||||
|
},
|
||||||
|
'canvas': document.getElementById('canvas'),
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script src="pacman.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
10
build.sh
10
build.sh
@@ -1,10 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
cargo build --target=wasm32-unknown-emscripten --release
|
|
||||||
|
|
||||||
mkdir -p dist
|
|
||||||
|
|
||||||
cp target/wasm32-unknown-emscripten/release/Pac_Man.wasm dist
|
|
||||||
cp target/wasm32-unknown-emscripten/release/Pac-Man.js dist
|
|
||||||
cp index.html dist
|
|
||||||
21
index.html
21
index.html
@@ -1,21 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<canvas id="canvas"></canvas>
|
|
||||||
<script type="text/javascript">
|
|
||||||
let Module = {
|
|
||||||
canvas: (function () {
|
|
||||||
// this is how we provide a canvas to our sdl2
|
|
||||||
return document.getElementById("canvas");
|
|
||||||
})(),
|
|
||||||
preRun: [function () {
|
|
||||||
ENV.RUST_LOG = "info,wgpu=warn"
|
|
||||||
}]
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<script src="Pac-Man.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
16
scripts/build-wasm.sh
Executable file
16
scripts/build-wasm.sh
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
|
||||||
|
echo "Building WASM with Emscripten"
|
||||||
|
cargo build --target=wasm32-unknown-emscripten --release
|
||||||
|
|
||||||
|
echo "Copying release files to dist/"
|
||||||
|
mkdir -p dist
|
||||||
|
mkdir -p dist/deps
|
||||||
|
|
||||||
|
output_folder="target/wasm32-unknown-emscripten/release"
|
||||||
|
cp $output_folder/pacman.wasm dist
|
||||||
|
cp $output_folder/pacman.js dist
|
||||||
|
cp $output_folder/deps/pacman.data dist/deps
|
||||||
|
cp assets/index.html dist
|
||||||
16
src/main.rs
16
src/main.rs
@@ -8,9 +8,6 @@ use tracing::event;
|
|||||||
use tracing_error::ErrorLayer;
|
use tracing_error::ErrorLayer;
|
||||||
use tracing_subscriber::layer::SubscriberExt;
|
use tracing_subscriber::layer::SubscriberExt;
|
||||||
|
|
||||||
#[cfg(target_os = "emscripten")]
|
|
||||||
pub mod emscripten;
|
|
||||||
|
|
||||||
mod animation;
|
mod animation;
|
||||||
mod constants;
|
mod constants;
|
||||||
mod direction;
|
mod direction;
|
||||||
@@ -128,9 +125,9 @@ pub fn main() {
|
|||||||
|
|
||||||
tick_no += 1;
|
tick_no += 1;
|
||||||
|
|
||||||
const PERIOD: u32 = 60 * 2;
|
const PERIOD: u32 = 60 * 60;
|
||||||
let tick_mod = tick_no % PERIOD;
|
let tick_mod = tick_no % PERIOD;
|
||||||
if tick_mod % PERIOD == 0 || tick_no == PERIOD {
|
if tick_mod % PERIOD == 0 {
|
||||||
let average_fps = PERIOD as f32 / last_averaging_time.elapsed().as_secs_f32();
|
let average_fps = PERIOD as f32 / last_averaging_time.elapsed().as_secs_f32();
|
||||||
let average_sleep = sleep_time / PERIOD;
|
let average_sleep = sleep_time / PERIOD;
|
||||||
let average_process = loop_time - average_sleep;
|
let average_process = loop_time - average_sleep;
|
||||||
@@ -149,14 +146,7 @@ pub fn main() {
|
|||||||
|
|
||||||
true
|
true
|
||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(target_os = "emscripten")]
|
|
||||||
use emscripten::emscripten;
|
|
||||||
|
|
||||||
#[cfg(target_os = "emscripten")]
|
|
||||||
emscripten::set_main_loop_callback(main_loop);
|
|
||||||
|
|
||||||
#[cfg(not(target_os = "emscripten"))]
|
|
||||||
loop {
|
loop {
|
||||||
if !main_loop() {
|
if !main_loop() {
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user