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
5 changed files with 15 additions and 42 deletions
+5 -11
View File
@@ -21,8 +21,6 @@ jobs:
sh -s -- -y --profile minimal
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
"$HOME/.cargo/bin/rustup" toolchain install nightly-2026-09-14 --profile minimal
"$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 Rust dependencies and build artifacts
uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
@@ -43,7 +41,6 @@ jobs:
libx11-dev \
libxkbcommon-dev \
libxkbcommon-x11-0 \
lld \
mesa-vulkan-drivers \
mold \
pkg-config
@@ -97,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'
@@ -107,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
@@ -129,5 +123,5 @@ jobs:
appId: 3409670
buildDescription: ${{ github.sha }}
rootPath: build
depot1Path: game
depot1Path: linux
releaseBranch: master
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,
(