Compare commits

..

3 commits

Author SHA1 Message Date
yuni ca5ebf22d5 gamedesign.md: add inspirations 2024-09-20 23:51:03 +02:00
yuni 2876266008 cleanup 2024-09-17 16:41:19 +02:00
yuni 3e8d4bf6d7 particles: show them only in augmented reality 2024-09-17 16:41:04 +02:00
4 changed files with 47 additions and 16 deletions

View file

@ -135,7 +135,32 @@ A variety of relatively simple game systems should interact with each other to c
# Inspiration # Inspiration
TODO - Outer Wilds (not Outer Worlds)
- Kerbal Space Program
- Fallout New Vegas
- Anathem
- Baldur's Gate 3
- Citizen Sleeper
- Delta V: Rings of Saturn
- Disco Elysium
- Elite: Dangerous
- Endless Sky
- Firefly (2002 series)
- Mass Effect
- Nethack
- Planescape: Torment
- Prey (2017 game)
- Project Hail Mary
- RimWorld
- Risk of Rain
- Robot and Monk series
- Shadowrun Returns: Dragonfall, Hong Kong
- Stardew Valley
- Stray (2022 game)
- System Shock 2
- The Expanse
- The Forgotten City
- The Red Strings Club
# Survival Mechanics # Survival Mechanics

View file

@ -481,7 +481,7 @@ fn debug(
keyboard_input: Res<ButtonInput<KeyCode>>, keyboard_input: Res<ButtonInput<KeyCode>>,
// mut commands: Commands, // mut commands: Commands,
// mut extended_materials: ResMut< // mut extended_materials: ResMut<
// Assets<bevy::pbr::ExtendedMaterial<StandardMaterial, load::AsteroidSurface>>, // Assets<bevy::pbr::ExtendedMaterial<StandardMaterial, load::AsteroidSurface>>,
// >, // >,
mut achievement_tracker: ResMut<var::AchievementTracker>, mut achievement_tracker: ResMut<var::AchievementTracker>,
vars: Res<var::GameVars>, vars: Res<var::GameVars>,
@ -490,11 +490,11 @@ fn debug(
if settings.dev_mode && keyboard_input.just_pressed(KeyCode::KeyP) { if settings.dev_mode && keyboard_input.just_pressed(KeyCode::KeyP) {
// for (entity, _name, mesh) in &materials { // for (entity, _name, mesh) in &materials {
// dbg!(mesh); // dbg!(mesh);
// let mut entity = commands.entity(entity); // let mut entity = commands.entity(entity);
// entity.remove::<Handle<StandardMaterial>>(); // entity.remove::<Handle<StandardMaterial>>();
// let material = extended_materials.add(load::AsteroidSurface::material()); // let material = extended_materials.add(load::AsteroidSurface::material());
// entity.insert(material); // entity.insert(material);
// } // }
} }
if settings.dev_mode && keyboard_input.just_pressed(KeyCode::KeyN) { if settings.dev_mode && keyboard_input.just_pressed(KeyCode::KeyN) {

View file

@ -128,6 +128,7 @@ pub fn setup(
pub fn spawn_effects( pub fn spawn_effects(
mut commands: Commands, mut commands: Commands,
settings: Res<var::Settings>,
mut er_effect: EventReader<SpawnEffectEvent>, mut er_effect: EventReader<SpawnEffectEvent>,
mut materials: ResMut<Assets<StandardMaterial>>, mut materials: ResMut<Assets<StandardMaterial>>,
mut meshes: ResMut<Assets<Mesh>>, mut meshes: ResMut<Assets<Mesh>>,
@ -173,6 +174,7 @@ pub fn spawn_effects(
let texture = asset_server.load("textures/exhaust.png"); let texture = asset_server.load("textures/exhaust.png");
commands.spawn(( commands.spawn((
IsEffect, IsEffect,
hud::ToggleableHudElement,
RigidBody::Kinematic, RigidBody::Kinematic,
bevy::pbr::NotShadowCaster, bevy::pbr::NotShadowCaster,
pos, pos,
@ -205,6 +207,11 @@ pub fn spawn_effects(
alpha_mode: AlphaMode::Blend, alpha_mode: AlphaMode::Blend,
..Default::default() ..Default::default()
}), }),
visibility: if settings.hud_active {
Visibility::Inherited
} else {
Visibility::Hidden
},
..default() ..default()
}, },
)); ));
@ -258,11 +265,9 @@ pub fn update_fade_material(
if now > end_time { if now > end_time {
material.base_color.set_alpha(data.value_end); material.base_color.set_alpha(data.value_end);
commands.entity(entity).remove::<FadeMaterial>(); commands.entity(entity).remove::<FadeMaterial>();
} } else if now < data.start_time {
else if now < data.start_time {
material.base_color.set_alpha(data.value_start); material.base_color.set_alpha(data.value_start);
} } else {
else {
let progress = ((now - data.start_time) / data.duration) as f32; let progress = ((now - data.start_time) / data.duration) as f32;
let value = data.value_start + progress * (data.value_end - data.value_start); let value = data.value_start + progress * (data.value_end - data.value_start);
material.base_color.set_alpha(value); material.base_color.set_alpha(value);
@ -281,11 +286,9 @@ pub fn update_grow(
if now > end_time { if now > end_time {
trans.scale = Vec3::splat(data.scale_end); trans.scale = Vec3::splat(data.scale_end);
commands.entity(entity).remove::<Grow3DObject>(); commands.entity(entity).remove::<Grow3DObject>();
} } else if now < data.start_time {
else if now < data.start_time {
trans.scale = Vec3::splat(data.scale_start); trans.scale = Vec3::splat(data.scale_start);
} } else {
else {
let progress = ((now - data.start_time) / data.duration) as f32; let progress = ((now - data.start_time) / data.duration) as f32;
let scale = data.scale_start + progress * (data.scale_end - data.scale_start); let scale = data.scale_start + progress * (data.scale_end - data.scale_start);
trans.scale = Vec3::splat(scale); trans.scale = Vec3::splat(scale);

View file

@ -38,7 +38,10 @@ impl Plugin for WorldPlugin {
fn build(&self, app: &mut App) { fn build(&self, app: &mut App) {
app.add_systems(Startup, setup); app.add_systems(Startup, setup);
app.add_systems(Update, handle_respawn.run_if(on_event::<RespawnEvent>())); app.add_systems(Update, handle_respawn.run_if(on_event::<RespawnEvent>()));
app.add_systems(Update, handle_despawn_at.run_if(any_with_component::<DespawnAt>)); app.add_systems(
Update,
handle_despawn_at.run_if(any_with_component::<DespawnAt>),
);
app.add_plugins(PhysicsPlugins::default()); app.add_plugins(PhysicsPlugins::default());
//app.add_plugins(PhysicsDebugPlugin::default()); //app.add_plugins(PhysicsDebugPlugin::default());
app.insert_resource(Gravity(DVec3::splat(0.0))); app.insert_resource(Gravity(DVec3::splat(0.0)));