Compare commits

..
Author SHA1 Message Date
EIREXE 8474121037 Deploy production Linux builds to Steam
CI / build-and-test (pull_request) Successful in 1m9s
CI / production-build (pull_request) Successful in 4m41s
2026-09-19 19:19:43 +02:00
7 changed files with 87 additions and 52 deletions
+5 -14
View File
@@ -65,11 +65,6 @@ jobs:
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
"$HOME/.cargo/bin/rustup" toolchain install nightly-2026-09-14 --profile minimal
- name: Install Windows build tooling
run: |
"$HOME/.cargo/bin/rustup" target add x86_64-pc-windows-msvc --toolchain nightly-2026-09-14
"$HOME/.cargo/bin/cargo" install cargo-xwin --locked
- name: Cache production Rust dependencies and build artifacts
uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
with:
@@ -89,7 +84,6 @@ jobs:
libx11-dev \
libxkbcommon-dev \
libxkbcommon-x11-0 \
lld \
mesa-vulkan-drivers \
mold \
pkg-config
@@ -100,9 +94,6 @@ jobs:
- name: Build production binary
run: cargo build --locked --profile production --no-default-features --features debug_features -j 4
- name: Build Windows production binary
run: cargo xwin build --locked --target x86_64-pc-windows-msvc --profile production --no-default-features --features debug_features -j 4 --bin shinespark
- name: Verify production binary is not Bevy/Rust dynamically linked
run: |
! readelf -d target/production/shinespark | grep -E 'libbevy_dylib|libstd-.*\.so'
@@ -110,10 +101,10 @@ jobs:
- name: Package Linux Steam depot
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
run: |
mkdir -p build/game
cp target/production/shinespark build/game/shinespark
cp target/x86_64-pc-windows-msvc/production/shinespark.exe build/game/shinespark.exe
cp -R imported_assets build/game/imported_assets
mkdir -p build/linux
cp target/production/shinespark build/linux/shinespark
cp -R assets build/linux/assets
cp -R imported_assets build/linux/imported_assets
- if: github.event_name == 'push' && github.ref == 'refs/heads/master'
uses: CyberAndrii/steam-totp@v1
@@ -132,5 +123,5 @@ jobs:
appId: 3409670
buildDescription: ${{ github.sha }}
rootPath: build
depot1Path: game
depot1Path: linux
releaseBranch: master
Generated
+71 -6
View File
@@ -94,6 +94,12 @@ version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]]
name = "adler32"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
[[package]]
name = "ahash"
version = "0.8.12"
@@ -3202,6 +3208,16 @@ dependencies = [
"windows-sys 0.60.2",
]
[[package]]
name = "filetime"
version = "0.2.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759"
dependencies = [
"cfg-if",
"libc",
]
[[package]]
name = "find-msvc-tools"
version = "0.1.9"
@@ -3418,9 +3434,9 @@ dependencies = [
[[package]]
name = "gc-adapter-neo"
version = "1.1.1"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8d3e10c6c4b928cb559f641765ebaa40f5f099bf51bc0227af7431859f8bd84"
checksum = "120a5b3858ae854c4674ae41a38173e8ea04b814fb3212fd3bdd1b04d414a9d7"
dependencies = [
"binread",
"modular-bitfield",
@@ -4250,6 +4266,26 @@ version = "0.2.189"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
[[package]]
name = "libflate"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ff4ae71b685bbad2f2f391fe74f6b7659a34871c08b210fdc039e43bee07d18"
dependencies = [
"adler32",
"crc32fast",
"libflate_lz77",
]
[[package]]
name = "libflate_lz77"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a52d3a8bfc85f250440e4424db7d857e241a3aebbbe301f3eb606ab15c39acbf"
dependencies = [
"rle-decode-fast",
]
[[package]]
name = "libloading"
version = "0.8.9"
@@ -4290,13 +4326,15 @@ dependencies = [
[[package]]
name = "libusb1-sys"
version = "0.7.0"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da050ade7ac4ff1ba5379af847a10a10a8e284181e060105bf8d86960ce9ce0f"
checksum = "be241693102a24766d0b8526c8988771edac2842630d7e730f8e9fbc014f3703"
dependencies = [
"cc",
"libc",
"libflate",
"pkg-config",
"tar",
"vcpkg",
]
@@ -5802,6 +5840,12 @@ dependencies = [
"syn 2.0.119",
]
[[package]]
name = "rle-decode-fast"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422"
[[package]]
name = "robust"
version = "1.2.0"
@@ -5872,9 +5916,9 @@ dependencies = [
[[package]]
name = "rusb"
version = "0.9.4"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab9f9ff05b63a786553a4c02943b74b34a988448671001e9a27e2f0565cc05a4"
checksum = "f6f32cd45962594f9f8cd4547b5757132715600e2c8840aa9ccd3d1a9ed6fdc6"
dependencies = [
"libc",
"libusb1-sys",
@@ -6451,6 +6495,17 @@ dependencies = [
"slotmap",
]
[[package]]
name = "tar"
version = "0.4.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840"
dependencies = [
"filetime",
"libc",
"xattr",
]
[[package]]
name = "termcolor"
version = "1.4.1"
@@ -7856,6 +7911,16 @@ version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd"
[[package]]
name = "xattr"
version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156"
dependencies = [
"libc",
"rustix 1.1.4",
]
[[package]]
name = "xcursor"
version = "0.3.11"
+1 -1
View File
@@ -33,7 +33,7 @@ strum = "0.28.0"
strum_macros = "0.28.0"
bevy_asset_loader = "0.27.0"
ron_asset_manager = "0.9.0"
gc-adapter-neo = { version = "1.1.1", features = ["libusb"] }
gc-adapter-neo = { version = "1.1.0", features = ["libusb"] }
rhai = "1.26.0"
enum_cycling = "0.2.1"
enum_cycling_derive = "0.2.1"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

-5
View File
@@ -1,11 +1,8 @@
use bevy::{
app::ScheduleRunnerPlugin,
asset::{AssetMode, AssetPlugin, processor::AssetProcessor, processor::ProcessorState},
gltf::GltfPlugin,
image::{CompressedImageFormats, ImageLoader, ImagePlugin},
prelude::*,
tasks::block_on,
text::TextPlugin,
};
use shinespark::AssetProcessingPlugin;
use std::{process::ExitCode, time::Duration};
@@ -18,8 +15,6 @@ fn main() -> ExitCode {
use_asset_processor_override: Some(true),
..default()
})
.add_plugins((ImagePlugin::default(), TextPlugin, GltfPlugin::default()))
.register_asset_loader(ImageLoader::new(CompressedImageFormats::NONE))
.add_plugins(AssetProcessingPlugin)
.add_systems(Update, finish_when_processed);
+6 -25
View File
@@ -32,13 +32,7 @@ use clap::Parser;
use ron_asset_manager::RonAssetPlugin;
use crate::{
camera::MatchCameraPlugin,
fighter::manifest::FighterManifest,
game_settings::GameSettings,
menus::style::FGUiStyle,
schedule::GameplaySchedulePlugin,
stage::manifest::StageManifest,
ui::InGameUIPlugin,
camera::MatchCameraPlugin, fighter::manifest::FighterManifest, game_settings::GameSettings, schedule::GameplaySchedulePlugin, stage::manifest::StageManifest, ui::InGameUIPlugin,
};
mod args;
@@ -86,20 +80,6 @@ pub enum AppState {
#[derive(Default)]
pub struct GamePlugin;
/// Registers every custom asset loader used by the game and asset processor.
pub struct GameAssetPlugin;
impl Plugin for GameAssetPlugin {
fn build(&self, app: &mut App) {
app.add_plugins((
RonAssetPlugin::<FighterManifest>::create("fighter.ron"),
RonAssetPlugin::<StageManifest>::create("stage.ron"),
RonAssetPlugin::<GameSettings>::create("ron"),
RonAssetPlugin::<FGUiStyle>::create("stylesheet.ron"),
));
}
}
impl Plugin for GamePlugin {
fn build(&self, app: &mut App) {
// Each module owns its own systems, rollback registrations and
@@ -119,7 +99,9 @@ impl Plugin for GamePlugin {
scripting::importer::FighterScriptImportPlugin,
stage::StagePlugin,
MatchCameraPlugin,
GameAssetPlugin,
RonAssetPlugin::<FighterManifest>::create("fighter.ron"),
RonAssetPlugin::<StageManifest>::create("stage.ron"),
RonAssetPlugin::<GameSettings>::create("ron"),
InGameUIPlugin,
))
.add_plugins(menus::MenuPlugin)
@@ -173,14 +155,13 @@ impl Plugin for GamePlugin {
}
}
/// Registers the custom asset loaders and processors used by CI and release
/// builds. The processing binary adds this plugin without starting the game.
/// Registers only the custom asset processors used by CI and release builds.
/// The processing binary adds this plugin without starting the game.
pub struct AssetProcessingPlugin;
impl Plugin for AssetProcessingPlugin {
fn build(&self, app: &mut App) {
app.add_plugins((
GameAssetPlugin,
scripting::importer::FighterScriptImportPlugin,
fighter::baked_animation::BakedAnimationAssetProcessingPlugin,
));
+4 -1
View File
@@ -6,10 +6,12 @@ use bevy::{
prelude::*,
};
use ron_asset_manager::RonAssetPlugin;
use crate::{
AppState,
game_settings::CommonAssets,
menus::{character_select::CharacterSelectScreen, main_menu::MainMenu},
menus::{character_select::CharacterSelectScreen, main_menu::MainMenu, style::FGUiStyle},
};
pub mod button;
pub mod character_select;
@@ -220,6 +222,7 @@ impl Plugin for MenuPlugin {
//---------
// STAGE SELECT END
//---------
.add_plugins(RonAssetPlugin::<FGUiStyle>::create("stylesheet.ron"))
.add_systems(
Update,
(