Skip to content
Merged
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
1c9d6af
Dyn link
CuddlyBunion341 Jan 30, 2025
d626f82
Feature flag chat system
CuddlyBunion341 Jan 30, 2025
0bf2dbe
Impl 2d perlin sample
CuddlyBunion341 Jan 30, 2025
0489a63
Extract generator params
CuddlyBunion341 Jan 30, 2025
f6a6269
Update stuff (break stuff)
CuddlyBunion341 Jan 31, 2025
a7c5806
Attempt add visualizer
CuddlyBunion341 Jan 31, 2025
4ada873
Implement generator resource, add egui system boilerplate
CuddlyBunion341 Jan 31, 2025
4b346db
Update terrain gen, break stuff
CuddlyBunion341 Jan 31, 2025
4a57183
Implement basic visualizer system
CuddlyBunion341 Jan 31, 2025
5c08326
Update visualizer
CuddlyBunion341 Feb 1, 2025
c9166eb
Fix linter
CuddlyBunion341 Feb 1, 2025
30b1970
Update visualizer
CuddlyBunion341 Feb 1, 2025
35e3920
Update generator, fix fractal noise
CuddlyBunion341 Feb 1, 2025
83816e6
Radd terrain gen, improve params
CuddlyBunion341 Feb 1, 2025
4bed5dc
Update terrain
CuddlyBunion341 Feb 1, 2025
33adfcc
Update world regeneration
CuddlyBunion341 Feb 1, 2025
b8c3942
Update comment
CuddlyBunion341 Feb 1, 2025
d5e5352
Update terrain generation
CuddlyBunion341 Feb 1, 2025
c139bfe
Refactor ui with macros
CuddlyBunion341 Feb 1, 2025
5d74c9a
Basic spline impl
CuddlyBunion341 Feb 1, 2025
fa4ed41
Fix egui, add egui_plot
CuddlyBunion341 Feb 1, 2025
db0d861
Impl egui_plot
CuddlyBunion341 Feb 1, 2025
5b12b1f
Normalize preview, make preview affected by splines
CuddlyBunion341 Feb 2, 2025
391d27f
Update chunk visualization
CuddlyBunion341 Feb 2, 2025
db4707e
Update terrain generator frequency
CuddlyBunion341 Feb 2, 2025
a268ad9
Refactor fractal sample to be more readable
CuddlyBunion341 Feb 2, 2025
4d68a3c
Break a lot of shit
CuddlyBunion341 Feb 2, 2025
1a1856b
Update README with implementation notes
CuddlyBunion341 Feb 9, 2025
0f03465
Update texturetype impl
CuddlyBunion341 Feb 9, 2025
1ba1e4f
Remove display impl
CuddlyBunion341 Feb 9, 2025
99caf22
Update texture gui handling
CuddlyBunion341 Feb 9, 2025
043e972
Update egui
CuddlyBunion341 Feb 9, 2025
5d00f8f
Improve texture gen
CuddlyBunion341 Feb 9, 2025
8a24e32
Fastcheck
CuddlyBunion341 Feb 9, 2025
3ac7c3a
Fix noise params
CuddlyBunion341 Feb 9, 2025
dd0c991
Improve feature flags :3
CuddlyBunion341 Feb 9, 2025
a3c31ac
Fix linter
CuddlyBunion341 Feb 9, 2025
7fd42e9
Cleanup feature flags
CuddlyBunion341 Feb 9, 2025
39f698b
Refactor generator?
CuddlyBunion341 Feb 9, 2025
6e199b7
Drastically improve performance by duplicating code
CuddlyBunion341 Feb 9, 2025
df5f40c
Remove unused code
CuddlyBunion341 Feb 9, 2025
93545c4
Update generator
CuddlyBunion341 Feb 9, 2025
9153481
Refactor chunk generation
CuddlyBunion341 Feb 9, 2025
0deb8aa
Add grass layer
CuddlyBunion341 Feb 9, 2025
ea68b1d
Refactor code
CuddlyBunion341 Feb 9, 2025
45f87c4
Fix linter
CuddlyBunion341 Feb 9, 2025
d33eb7e
Uopdate generatror grass placement
CuddlyBunion341 Feb 9, 2025
55f34a7
Impl density falloff
CuddlyBunion341 Feb 9, 2025
7905866
Fix linter
CuddlyBunion341 Feb 9, 2025
c492a0d
Refactor heihgt params
CuddlyBunion341 Feb 9, 2025
36b0aea
Refactor density params
CuddlyBunion341 Feb 9, 2025
6d8498f
Refactor rename params to be less verbose
CuddlyBunion341 Feb 9, 2025
13946e2
Refacotr height adjust, fix server visualizer system
CuddlyBunion341 Feb 9, 2025
7746674
Fix linter
CuddlyBunion341 Feb 9, 2025
b4c1703
Update README.md
CuddlyBunion341 Feb 10, 2025
20333fa
Refactor sliders, add cave params
CuddlyBunion341 Feb 10, 2025
972dac9
Refactor
CuddlyBunion341 Feb 10, 2025
6a96741
Break stuff
CuddlyBunion341 Feb 10, 2025
db610b0
Update terrain generator
CuddlyBunion341 Mar 1, 2025
490777d
Fix linter
CuddlyBunion341 Mar 1, 2025
4fe90fd
Refactor UI
CuddlyBunion341 Mar 1, 2025
0bec27c
Make UI nice again! (using grid)
CuddlyBunion341 Mar 1, 2025
32c90b4
Fix linter
CuddlyBunion341 Mar 1, 2025
9dfbc08
Update terrain params
CuddlyBunion341 Mar 1, 2025
0072b8d
Update parametrers, refactor
CuddlyBunion341 Mar 1, 2025
c454f6f
Fix linter
CuddlyBunion341 Mar 1, 2025
8fe21e2
Update gradd decoration
CuddlyBunion341 Mar 1, 2025
ffb3f85
Apply suggestions from code review
CuddlyBunion341 Mar 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 47 additions & 27 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 10 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,20 @@ bevy_rapier3d = "0.28.0"
cgmath = "0.18.0"
iyes_perf_ui = { git = "https://github.com/IyesGames/iyes_perf_ui.git", branch = "main" }
noise = "0.9.0"
bevy_renet = { version = "1.0.0" }
bevy_renet = { git = "https://github.com/CuddlyBunion341/renet.git" }
bincode = "1.3.3"
rand = "0.8.5"
renet = "1.0.0"
renet = { git = "https://github.com/CuddlyBunion341/renet.git" }
serde = { version = "1.0.203", features = ["derive"] }
serde-big-array = "0.5.1"
chrono = "0.4.38"
rayon = "1.10.0"
bevy_flair = "0.1.0"
bevy-inspector-egui = "0.28.1"
renet_visualizer = { version = "1.0.0", features = ["bevy"] }
bevy-inspector-egui = "0.29"
renet_visualizer = { git = "https://github.com/CuddlyBunion341/renet.git", features = [
"bevy",
] }
egui_plot = "0.30.0"

[profile.dev.package."*"]
opt-level = 3
Expand All @@ -39,10 +42,12 @@ name = "server"
path = "src/server/main.rs"

[features]
chat = ["bevy/dynamic_linking"]

wireframe = []
debug_ui = []
renet_visualizer = []
physics_debug = []
raycast_debug = []
visual_debug = ["wireframe", "physics_debug", "raycast_debug"]

dynamic_linking = ["bevy/dynamic_linking"]
1 change: 1 addition & 0 deletions src/client/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ fn main() {
collider::ColliderPlugin,
player::PlayerPlugin,
remote_player::RemotePlayerPlugin,
#[cfg(feature = "chat")]
chat::ChatPlugin,
));
app.insert_state(GameState::Playing);
Expand Down
15 changes: 13 additions & 2 deletions src/client/networking/systems.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,12 @@ pub fn receive_message_system(
mut block_update_events: ResMut<Events<terrain_events::BlockUpdateEvent>>,
mut chunk_manager: ResMut<ChunkManager>,
mut chunk_mesh_events: ResMut<Events<terrain_events::ChunkMeshUpdateEvent>>,
mut chat_events: ResMut<Events<chat_events::ChatSyncEvent>>,
mut single_chat_events: ResMut<Events<chat_events::SingleChatSendEvent>>,
// visualizer
mut world_regenerate_events: ResMut<Events<terrain_events::WorldRegenerateEvent>>,
#[cfg(feature = "chat")] mut chat_events: ResMut<Events<chat_events::ChatSyncEvent>>,
#[cfg(feature = "chat")] mut single_chat_events: ResMut<
Events<chat_events::SingleChatSendEvent>,
>,
mut spawn_area_loaded: ResMut<terrain_resources::SpawnAreaLoaded>,
) {
while let Some(message) = client.receive_message(DefaultChannel::ReliableOrdered) {
Expand All @@ -35,10 +39,12 @@ pub fn receive_message_system(
from_network: true,
});
}
#[cfg(feature = "chat")]
NetworkingMessage::ChatMessageSync(messages) => {
info!("Client received {} chat messages", messages.len());
chat_events.send(chat_events::ChatSyncEvent(messages));
}
#[cfg(feature = "chat")]
NetworkingMessage::SingleChatMessageSync(message) => {
info!("Client received chat message {}", message.message);
single_chat_events.send(chat_events::SingleChatSendEvent(message));
Expand Down Expand Up @@ -91,6 +97,11 @@ pub fn receive_message_system(
player_sync_events
.send(remote_player_events::RemotePlayerSyncEvent { players: event });
}
// visualizer
NetworkingMessage::ServerAsksClientNicelyToRerequestChunkBatch() => {
info!("Client asked for chunk batch.");
world_regenerate_events.send(terrain_events::WorldRegenerateEvent);
}
_ => {
warn!("Received unknown message type. (ReliableUnordered)");
}
Expand Down
31 changes: 23 additions & 8 deletions src/client/player/systems/controller.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,27 @@
use crate::prelude::*;

const SPAWN_POINT: Vec3 = Vec3::new(0.0, 32.0, 0.0);
// const SPAWN_POINT: Vec3 = Vec3::new(0.0, 32.0, 0.0);
const SPAWN_POINT: Vec3 = Vec3::new(128.0, 96.0, -128.0);

pub fn setup_player_camera(mut commands: Commands) {
commands.spawn((
Name::new("Player cam?"),
Camera3d::default(),
Projection::Perspective(PerspectiveProjection {
fov: TAU / 5.0,
..default()
}),
// Projection::Perspective(PerspectiveProjection {
// fov: TAU / 5.0,
// ..default()
// }),
Projection::Orthographic(
OrthographicProjection {
scale: 0.125,
near: 0.0001,
far: 1000.0,
viewport_origin: Vec2::new(0.5, 0.5),
scaling_mode: ScalingMode::WindowSize,
area: Rect::new(-1.0, -1.0, 1.0, 1.0),
}
.into(),
),
RenderPlayer {
logical_entity: Entity::from_raw(0),
},
Expand Down Expand Up @@ -36,7 +49,7 @@ pub fn setup_controller_on_area_ready_system(
},
ActiveEvents::COLLISION_EVENTS,
Velocity::zero(),
RigidBody::Dynamic,
RigidBody::Fixed,
Sleeping::disabled(),
LockedAxes::ROTATION_LOCKED,
AdditionalMassProperties::Mass(1.0),
Expand All @@ -45,8 +58,10 @@ pub fn setup_controller_on_area_ready_system(
Transform::from_translation(SPAWN_POINT),
LogicalPlayer,
FpsControllerInput {
pitch: -TAU / 12.0,
yaw: TAU * 5.0 / 8.0,
// pitch: -TAU / 20.0,
// yaw: TAU * 5.0 / 12.0,
pitch: 0.0,
yaw: 0.0,
..default()
},
FpsController {
Expand Down
3 changes: 3 additions & 0 deletions src/client/terrain/events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ pub struct BlockUpdateEvent {
pub block: BlockId,
pub from_network: bool,
}

#[derive(Event)]
pub struct WorldRegenerateEvent;
2 changes: 2 additions & 0 deletions src/client/terrain/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ impl Plugin for TerrainPlugin {
app.insert_resource(util::TextureManager::new());
app.add_event::<terrain_events::BlockUpdateEvent>();
app.add_event::<terrain_events::ChunkMeshUpdateEvent>();
app.add_event::<terrain_events::WorldRegenerateEvent>();
app.add_systems(Startup, terrain_systems::prepare_spawn_area_system);
app.add_systems(Startup, terrain_systems::generate_world_system);
app.add_systems(Update, terrain_systems::handle_chunk_mesh_update_events);
app.add_systems(Update, terrain_systems::handle_terrain_regeneration_events);
}
}
15 changes: 15 additions & 0 deletions src/client/terrain/systems.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,3 +162,18 @@ fn spawn_chunk(
},
));
}

// visualizer
pub fn handle_terrain_regeneration_events(
mut client: ResMut<RenetClient>,
mut world_regenerate_events: EventReader<terrain_events::WorldRegenerateEvent>,
chunk_manager: ResMut<ChunkManager>,
) {
for _ in world_regenerate_events.read() {
info!("Rerequesting all chunks from server");
let all_chunk_positions = chunk_manager.get_all_chunk_positions();
let message =
bincode::serialize(&NetworkingMessage::ChunkBatchRequest(all_chunk_positions));
client.send_message(DefaultChannel::ReliableUnordered, message.unwrap());
}
}
Loading
Loading