Created a new community for the project

https://lemmy.ml/post/34509047

Created a new community for the project - Lemmy

cross-posted from: https://lemmy.ml/post/34509045 [https://lemmy.ml/post/34509045] > Originally, it was named Project Harmonia, but that was just a placeholder. Recently, I adjusted the project’s direction and came up with this name. See https://lemmy.ml/post/34012299 [https://lemmy.ml/post/34012299] for more details. > > Unfortunately, I cannot change the name of the community, so I created a new one: [email protected] [/c/[email protected]].

Update on the project, looking for opinions

https://lemmy.ml/post/34012299

Update on the project, looking for opinions - Lemmy

## Background For those who don’t know, I’m trying to create a FOSS life simulation game — something similar to The Sims. I haven’t posted updates in [email protected] [/c/[email protected]] about the project for a while, only updates to the related crates I mainain. It’s just me and my wife didn’t have enough motivation to work on it. Mainly because of the overwhelming amount of things we need to make - both assets and code. ## Lifesims Are Hard A life simulation game needs at least one customizable character mesh (which is a huge project on its own), a lot of clothes, animations, textures, and world objects. And coding it isn’t easy either — it’s basically like making 3 games: 1. Life simulation. 1. Building mode. 1. Character creation. It’s probably the smallest part, but still quite complex. Plus, I’m using Bevy, which is a great engine but still quite immature. This means I have to implement many things myself, even basic features like UI widgets. Some of my work is available as standalone crates: [bevy_replicon], [bevy_replicon_renet], and bevy_enhanced_input [https://github.com/projectharmonia/bevy_enhanced_input]. On the bright side, people seem to like them — the input crate is even planned for upstreaming into Bevy. But this also takes time and distracts me from the game. I guess that’s why we don’t have many life simulation games — they’re quite hard to create even for big companies. For example, Life By You from Paradox got cancelled [https://www.paradoxinteractive.com/media/life-by-you-is-cancelled]. So, is it an impossible task for hobbyists? It would be a shame, because when I recently asked which game people would most like to see a FOSS alternative for [https://lemmy.ml/post/25840065], and most people voted for The Sims. ## A Different Approach At first, I considered switching to creating a reimplementation that requires the original game assets, like OpenMW or OpenLara. But it’s even harder to implement and for me it’s not as fun as creating something from scratch. So I continued thinking. When I created [bevy_replicon], it originally used bevy_renet [https://github.com/lucaspoffo/renet] under the hood. But since it’s not actively maintained, after each Bevy release I had to wait a while for it to be updated. Instead of switching to another messaging library, I decided to abstract the messaging layer completely and move the renet-specific logic into a separate crate called [bevy_replicon_renet]. I documented the API, and people started creating their own integrations with other libraries. I decided to embrace this strategy by keeping the crate minimalistic but extensible. Now we have a small ecosystem [https://github.com/projectharmonia/bevy_replicon?tab=readme-ov-file#ecosystem] of crates. I think it’s great because more people are getting involved and I have less to maintain. There also games like Garry’s Mod [https://store.steampowered.com/app/4000/Garrys_Mod] and Luanti [https://www.luanti.org/] (formerly Minetest). They are basically empty by default and players just install mods that add mechanics, objects, story, etc., all made by the community. All of this got me thinking: why not create a project like this, but in the life simulation genre? From the game menu, players could download character models, clothes, objects, scripts, etc., created by passionate modders. To avoid downloading each mod individually, I could provide mod lists for one‑click installation. This will significantly reduce the scope of the game. Also, I enjoy creating APIs: even when I lost motivation to work on the game itself, I still actively developed the crates. So developing a game like this should be similar. I even came up with a name — SimGine, short for “simulation engine.” During development, I can test things on free assets wrapping them as mods. For example, I can use character meshes and clothes from the awesome MakeHuman [https://static.makehumancommunity.org/]. But this could be anything, even a loader for CCs originally made for The Sims games. As for the game engine, I still think that Bevy is the right choice: - It uses ECS, which is perfect for parallel simulation of many entities. - It’s incredebly flexible and modular, kinda in the spirit of the game. - It’s just fun to use for me. When you making a game as a hobby - it’s very important, otherwise I’ll lose my motivation. I mentioned that the engine is still immature, but we’re getting there. The upcoming 0.17 release will feature hot reloading and finally adds built-in widgets. Plus, the crates I already made are close to feature-completion. ## Project Plans Right now, I’m planning to wait for the release of Bevy 0.17 and, in the meantime, add a few important features to [bevy_replicon]. After that, I think I’ll start working on the game. I’ll also start from scratch, since we’ll need a different architecture — though I’ll borrow some of the old code. And this time, I’ll start from the character creator. It’s a smaller part, and if I fail with the rest, at least we’ll still have a cool app for creating digital avatars 😅 Not looking for any collaborators or mod developers yet — I need to create an MVP first. I expect this will take a quite some time. But I would like to hear your opinions about the idea in general. [bevy_replicon]: https://github.com/lifescapegame/bevy_replicon [https://github.com/lifescapegame/bevy_replicon] [bevy_replicon_renet]: https://github.com/projectharmonia/bevy_replicon_renet [https://github.com/projectharmonia/bevy_replicon_renet]

🎮 Bevy Enhanced Input 0.15.0 is out!

https://lemmy.ml/post/33573567

🎮 Bevy Enhanced Input 0.15.0 is out! - Lemmy

An input manager for Bevy, inspired by Unreal Engine’s Enhanced Input. We use it for Project Harmonia, but it’s general-purpose. This update features a big rewrite into a component-based API. The core concepts remain the same, but are now expressed through ECS. It’s recommended to revisit the quick start guide. Showcase: rust // Spawn a camera with an input context. commands.spawn(( Camera3d::default(), Transform::from_xyz(-2.5, 4.5, 9.0).looking_at(Vec3::ZERO, Vec3::Y), FlyCam, // Similar to `related!`, but you only specify the context type. // Actions are related to specific context since a single entity can have multiple contexts. actions!(FlyCam[ ( Action::<Move>::new(), // Conditions and modifiers as components. DeadZone::default(), // Apply non-uniform normalization that works for both digital and analog inputs, otherwise diagonal movement will be faster. SmoothNudge::default(), // Make movement smooth and independent of the framerate. To only make it framerate-independent, use `DeltaScale`. Scale::splat(0.3), // Additionally multiply by a constant to achieve the desired speed. // Bindings are entities related to actions. // An action can have multiple bindings and will respond to any of them. Bindings::spawn(( // Bindings like WASD or sticks are very common, // so we provide built-in `SpawnableList`s to assign all keys/axes at once. Cardinal::wasd_keys(), Axial::left_stick() )), ), ( Action::<Rotate>::new(), Bindings::spawn(( // You can attach modifiers to individual bindings as well. Spawn((Binding::mouse_motion(), Scale::splat(0.1), Negate::all())), Axial::right_stick().with((Scale::splat(2.0), Negate::x())), )), ), // For bindings we also have a macro similar to `children!`. (Action::<CaptureCursor>::new(), bindings![MouseButton::Left]), (Action::<ReleaseCursor>::new(), bindings![KeyCode::Escape]), ]), )); Advantages of the new API: - You can use Bevy scenes to describe bindings. When BSN lands, we’ll get hot-reloadable actions for free. In UE, this is also expressed via Blueprints. - Everything is inspectable. - Modifiers and conditions are now accessible in systems, allowing you to adjust or read their data if needed. - Actions can be queried - especially convenient when using Single. - Things that didn’t benefit from being static, such as prioritization and action settings, are now dynamic. - Things that were “inspired by Bevy,” such as how bindings were defined, modifiers and presets, now actually utilize the Bevy API - meaning new users don’t have to learn additional concepts. - The crate logic is much simpler. Huge thanks to Alice for reviewing this monstrous +6,127 −5,738 PR! 📜Full changelog [https://github.com/projectharmonia/bevy_enhanced_input/blob/master/CHANGELOG.md] 📦bevy_enhanced_input [https://crates.io/crates/bevy_enhanced_input]

🎮 Bevy Enhanced Input 0.13.0 is out!

https://lemmy.ml/post/31996587

🎮 Bevy Enhanced Input 0.13.0 is out! - Lemmy

An input manager for Bevy, inspired by Unreal Engine’s Enhanced Input. We use it for Project Harmonia, but it’s general-purpose. Highlights - Pull-based API is now strongly typed, just like triggers. Example: actions.value::<Move>() returns the defined output type of Move. - Action mocking. Example: actions.mock::<Move>(ActionState::Fired, Vec2::ONE, Duration::from_secs(2)). The last parameter is generic, so you can also set the time in frames or until manually cleared. - Preparation for upcoming networking integrations, including more convenient access to internals. - Many small but important ergonomic improvements. 📜Full changelog [https://github.com/projectharmonia/bevy_enhanced_input/blob/master/CHANGELOG.md] 📦bevy_enhanced_input [https://crates.io/crates/bevy_enhanced_input]

🧬 Bevy Replicon 0.34.0 is out!

https://lemmy.ml/post/31728622

🧬 Bevy Replicon 0.34.0 is out! - Lemmy

It’s a crate for server-authoritative networking. We use it for Project Harmonia, but it’s general-purpose. Probably one of the biggest releases. Here are some highlights: - Authorization system. By default, we verify protocol compatibility between client and server by comparing hashes. You can add custom data to the hash (such as the game version) or fully customize the logic using RepliconSharedPlugin::auth_method. - Static rules, such as Once or Periodic. Very fast to compute, useful for deterministic replication. We plan to add opt-in, more complex dynamic rules in the next release. - New syntax for constructing replication rules. It extends the old one and allows specialization of individual components when declaring groups. - Batched component insertion on replication. It’s much faster, and all components are available in the user’s observers. - DisconnectRequest event to request a disconnect after sending messages. Useful for sending things such as disconnect reasons. 📜Full changelog [https://github.com/projectharmonia/bevy_replicon/blob/master/CHANGELOG.md] 📦bevy_replicon [https://crates.io/crates/bevy_replicon]

🎮 Bevy Enhanced Input 0.12.0 is out!

https://lemmy.ml/post/30659904

🎮 Bevy Enhanced Input 0.12.0 is out! - Lemmy

It’s an input manager for Bevy, inspired by Unreal Engine Enhanced Input. We use it for Project Harmonia, but it’s general-purpose. A relatively small release with several ergonomic improvements, such as using BevyError instead of panic-based APIs, along with some bug fixes. 📜Full changelog [https://github.com/projectharmonia/bevy_enhanced_input/blob/master/CHANGELOG.md] 📦bevy_enhanced_input [https://crates.io/crates/bevy_enhanced_input]

🎮 Bevy Enhanced Input 0.12 is out!

It's an input manager for Bevy, inspired by Unreal Engine Enhanced Input.

A relatively small release with several ergonomic improvements, such as using BevyError instead of panic-based APIs, along with some bug fixes.

📜 https://github.com/projectharmonia/bevy_enhanced_input/blob/master/CHANGELOG.md
📦 https://crates.io/crates/bevy_enhanced_input

#bevy #projectharmonia

bevy_enhanced_input/CHANGELOG.md at master · projectharmonia/bevy_enhanced_input

Input manager for Bevy. Contribute to projectharmonia/bevy_enhanced_input development by creating an account on GitHub.

GitHub

🧬 Bevy Replicon 0.33.0 is out!

https://lemmy.ml/post/29224528

🧬 Bevy Replicon 0.33.0 is out! - Lemmy

It’s a crate for server-authoritative networking. We use it for Project Harmonia, but it’s general-purpose. Highlights: - Relationships networking. Use relationships to specify which entities should be replicated in a single message. - Immutable components support. Replication is automatically applied via insertion for them. - replicate_mapped now deprecated. Regular replicate now works for all components. - Support for no_std and environments without atomic CAS, such as thumbv6m. 📜Full changelog [https://github.com/projectharmonia/bevy_replicon/blob/master/CHANGELOG.md] 📦bevy_replicon [https://crates.io/crates/bevy_replicon]

🧬 Bevy Replicon 0.33.0 is out!

It's a networking crate for the Bevy game engine.

Highlights:
- Relationships networking. Use relationships to specify which entities should be replicated in a single message.
- Immutable components support. Replication is automatically applied via insertion for them.
- Automatic entity mapping inside components with special registration.
- Support for no_std and environments without atomic CAS, such as thumbv6m.

📦 https://crates.io/crates/bevy_replicon

#bevy #projectharmonia

crates.io: Rust Package Registry

🎮 Bevy Enhanced Input 0.10.0 and 0.11.0 is out!

https://lemmy.ml/post/29110418

Lyft’s new feature lets women and non-binary riders request their driver’s gender - Lemmy

Lyft is introducing a new feature that lets women and non-binary riders choose a preference to match with drivers of the same gender. The ride-hailing company said it was a “highly requested feature” in a blog post Tuesday, saying the new feature allows women and non-binary people to “feel that much more confident” in using Lyft and also hopefully encourage more women to sign up to be drivers to access its “flexible earning opportunities.” The service, called “Women+ Connect,” is rolling out in the coming months. Riders can turn on the option in the Lyft app, however the company warns that it’s not a guarantee that they’ll be matched with a women or non-binary person if one of those people aren’t nearby. Both the riders and drivers will need to opt-in to the feature for it work and riders must chose a gender for it to work.