Sidebar

Project Harmonia

projectharmonia
Project Harmonia Shatur β€’ 2 days ago β€’ 100%
Bug fixes, refactoring and physics migration https://files.mastodon.social/media_attachments/files/113/160/039/607/545/451/original/5d7d3571f091e60d.mp4

This week, I was fixing bugs (there were a lot!) and refactoring. I finally migrated the game's physics from XPBD to Avian. The migration was seamless since we're only using it for picking, collision checking, and navigation for now πŸ˜… It's worth noting that I also switched from Avian's global Position component to Bevy's relative Transform, as the global Position breaks when there are multiple cities.

4
0
projectharmonia
Project Harmonia Shatur β€’ 1 week ago β€’ 100%
Continue to improve building tools https://files.mastodon.social/media_attachments/files/113/115/407/631/908/859/original/f9e8bfba3279661a.mp4

I’ve finally added the ability to edit and remove previously spawned walls, along with an undo/redo system. Implementing the undo/redo was a bit challenging. If a command spawns or despawns an entity, it needs to be tracked to update the history with the correct ID. Additionally, since the game is networked, I had to introduce the concept of pending history commands. These commands are only added to the history after server confirmation.

4
0
projectharmonia
Project Harmonia Shatur β€’ 2 weeks ago β€’ 100%
🧬 Bevy Replicon 0.28.1 is out! github.com

It’s a crate for server-authoritative networking. We use it for Project Harmonia, but it's general-purpose. Some highlights: * Added the ability to defer replication, which is useful for exchanging messages or downloading assets required by the server before replication starts. * If there is any spawning, despawning, removal, or insertion, client events wait for replication. However, with this release, it can be disabled per event. * Fixed entity mapping when a client event is buffering. πŸ“œ[Full changelog](https://github.com/projectharmonia/bevy_replicon/blob/master/CHANGELOG.md) πŸ“¦[bevy_replicon](https://crates.io/crates/bevy_replicon)

2
0
projectharmonia
Project Harmonia Shatur β€’ 3 weeks ago β€’ 100%
Continue replacing new models

Got sick last week, finally back to the game. Working on undo/redo system. Continue replacing the old models. The old bench is on the left, and the new one is on the right. ![bench](https://files.mastodon.social/media_attachments/files/113/047/402/898/326/636/original/e9048ac9b8679135.png)

5
0
projectharmonia
Project Harmonia Shatur β€’ 1 month ago β€’ 85%
Initial roads support https://files.mastodon.social/media_attachments/files/112/922/864/550/855/151/original/76f65482536b1e5f.mp4

Added initial support for roads, reusing some logic from the walls implementation. Currently, I'm using segments for road creation, but I plan to add Bezier curves to allow for curved walls and roads. Maybe I should use Bezier curves even for straight lines πŸ€” I also need to use a texture without road markings for connection islands and implement rounding for turns. But wanted to share the current progress :)

5
3
projectharmonia
Project Harmonia Shatur β€’ 2 months ago β€’ 87%
Reworking old models

Our game stylistic changed during the development and @YaraGardaria@toot.garden has decided to redo some old models :) Old is on the left, new is on the right. ![](https://files.mastodon.social/media_attachments/files/112/893/757/456/087/322/original/b1f85ac72cee0ef6.png)

6
3
projectharmonia
Project Harmonia Shatur β€’ 2 months ago β€’ 100%
Playground pack

My wife just finished playground asset pack for the game :) Here are the renders in Blender: ![](https://files.mastodon.social/cache/media_attachments/files/112/854/699/530/674/047/original/bd706b39f4c607da.png) ![](https://files.mastodon.social/cache/media_attachments/files/112/854/699/649/198/909/original/4c047ef1c99ed45f.png) ![](https://files.mastodon.social/cache/media_attachments/files/112/854/699/770/939/921/original/14dd64dba349bbd6.png) ![](https://files.mastodon.social/cache/media_attachments/files/112/854/706/980/575/657/original/a310dfa55198bb2d.png) ![](https://files.mastodon.social/cache/media_attachments/files/112/854/707/124/631/125/original/9a7172c73fde97a5.png) ![](https://files.mastodon.social/cache/media_attachments/files/112/854/707/253/831/685/original/983c848fe5cf6cc0.png) ![](https://files.mastodon.social/cache/media_attachments/files/112/854/707/385/308/126/original/41bb93f88a4c049d.png)

3
0
projectharmonia
Project Harmonia Shatur β€’ 2 months ago β€’ 87%
Played with Bevy rendering

I found that `Tonemapping::AcesFitted` better fits the game aesthetic. With a little bit of bloom and an environment map, it looks much nicer. My wife also made more placeable objects, and I finished refactoring into new features from Bevy 0.14. Substates are so convenient! ![](https://lemmy.ml/pictrs/image/6c42fe21-6b9c-416a-b578-8bb7e3ef0f31.png) ![](https://lemmy.ml/pictrs/image/cbf70dd4-07ad-4f0a-8239-7b7bb50bc8b2.png) ![](https://lemmy.ml/pictrs/image/d13e57da-9d8c-4351-85ff-782a86ee84de.png)

6
1
projectharmonia
Project Harmonia Shatur β€’ 2 months ago β€’ 100%
Carousel

Added placeable carousel made by my wife. I like how easy it is to integrate new objects when the logic for them is already written. All I need to do is add a metadata file in RON format and the object will be available in the game. ![](https://lemmy.ml/pictrs/image/ac5446f6-cc68-4175-8cb0-780a95d752f3.png) ![](https://lemmy.ml/pictrs/image/61fb0625-3eef-4a3d-b672-19d045eca48a.png)

4
0
projectharmonia
Project Harmonia Shatur β€’ 2 months ago β€’ 100%
Added sandbox support πŸ˜…

While I am refactoring the code to new features from Bevy 0.14, my wife continues making models. I think Bevy can look attractive. However, I am still not fully satisfied with my lighting configuration and will come back to it later. ![](https://lemmy.ml/pictrs/image/7020768e-c5fc-469e-9357-62eb6487d199.png) ![](https://lemmy.ml/pictrs/image/7ad0a507-a7b0-4b1b-9ee9-2b924dd7ae04.png)

2
0
projectharmonia
Project Harmonia Shatur β€’ 2 months ago β€’ 100%
Back to the game development!

I took a small break to relax and publish my translation application under the KDE umbrella. I am waiting for the review process to finish, but the webpage is already available at https://apps.kde.org/crowtranslate. Just added a children's ladder made by my wife and updated the game to Bevy 0.14. But I need some time to utilize the added features. Additionally, I added a lot of logging, it's so convenient in development!

6
0
projectharmonia
Project Harmonia Shatur β€’ 3 months ago β€’ 100%
🧬 Bevy Replicon 0.27.0 is out! github.com

It’s a crate for server-authoritative networking. We use it for Project Harmonia, but it's general-purpose. This release adds support for Bevy 0.14.0 and includes features from [the previous RC](https://lemmy.ml/post/17450650). I like Bevy's new release candidate process a lot! But it will take some time for the messaging backends to update. The [bevy_replicion_renet](https://github.com/projectharmonia/bevy_replicon) that I maintain needs the [renet](https://github.com/lucaspoffo/renet) crate to be updated to Bevy 0.14 first. πŸ“œ[Full changelog](https://github.com/projectharmonia/bevy_replicon/blob/master/CHANGELOG.md) πŸ“¦[bevy_replicon](https://crates.io/crates/bevy_replicon)

4
0
projectharmonia
Project Harmonia Shatur β€’ 3 months ago β€’ 100%
Update on development

I took a small break from developing Project Harmonia. But I planning to get back soon! I last month I was asked to move [my translation app](https://github.com/crow-translate/crow-translate) under KDE umbrella. Since I'm a KDE fan, I couldn't refuse πŸ˜… The migration is [almost done](https://invent.kde.org/office/crow-translate), will draft a new release soon. After that, I plan to return to the game development. I didn't stop working on `bevy_replicon`, though :)

1
0
projectharmonia
Project Harmonia Shatur β€’ 3 months ago β€’ 50%
🧬 Bevy Replicon 0.27.0-rc.3 is out! github.com

It’s a crate for server-authoritative networking. We usually don't make breaking changes when a Bevy release is around the corner, but decided to make a small exception for this one :) This release adds support for Bevy 0.14.0-rc.4 and splits the crate functionality by features. For example, for headless server you can disable `client` feature. By default all features, except `diagnostics` are enabled, so you have the same set of plugins as before. But most plugin authors will need to add `default-features = false`. πŸ“œ[Full changelog](https://github.com/projectharmonia/bevy_replicon/blob/master/CHANGELOG.md) πŸ“¦[bevy_replicon](https://crates.io/crates/bevy_replicon)

0
0
projectharmonia
Project Harmonia Shatur β€’ 3 months ago β€’ 100%
🧬 Bevy Replicon 0.27.0-rc.1 is out! github.com

It’s a crate for server-authoritative networking. Bevy has started drafting release candidates to let users test them before the actual release. And I think it's awesome! This release adds support for Bevy 0.14.0-rc.2. There are no functional changes. We haven't released `bevy_replicon_renet` because we need to wait for `bevy_renet`. However, other crates, including other messaging backends, won't be blocked. πŸ“¦[bevy_replicon](https://crates.io/crates/bevy_replicon)

2
0
projectharmonia
Project Harmonia Shatur β€’ 4 months ago β€’ 100%
Running on Steam Deck

Bought the device a few days ago. And of course I tried to run the game on it. Bevy engine supports it natively since it's just a regular x86 with GNU/Linux. The game runs great. I get stable 90 FPS (90Hz is the refresh rate of the device) consuming only 13.1 W. The UI is a little big and controls aren't adapted well for gamepads, but I will fix it later. The console itself is also a nice machine for development. Next I will write about my development setup πŸ˜„ As you may know, it runs SteamOS with KDE and based on ArchLinux. Packages mostly mirror official ArchLinux repositories, but there are some additions and everything is compiled by Valve. So you can even install SuperTuxKart or GNOME πŸ˜ƒ Another difference from vanilla ArchLinux is immutable file system. You can make it writable via a single command in terminal, but each update wipes all changes made to the system. Home directory remains untouched. Because of the immutable filesystem, I decided to try Flatpak. It installs packages into the user's home directory. Therefore, such apps won't be removed after an update. But I faced some limitations due to containerization. For example, the Firefox extension for KeePassXC does not work because apps can't interact with each other. And it's not suited for installing stuff like compilers or libraries. So I decided to explore other options. Next, I tried to create a script that I planned to run after each update. It installs all the packages I need through the system package manager. But packages on SteamOS are older then in Archlinux. For example, Neovim on SteamOS is 0.9, but on ArchLinux it's 0.10, so I had to downgrade my configuration. And it causes incompatibilities with AUR. For example, I couldn't install Crow Translate because of it. Another problem with such script is that Valve nuked `/usr/include` directory to free space. All packages are present, but the folder is missing. It makes sense for a gaming device, but I need it to compile packages from AUR. It can be solved by reinstalling all packages that put files into `/usr/include`. But it causes another problem πŸ˜ƒ Allocated space for `/` is limited and you quickly run out of space after restoring headers and installing a couple of packages. Then I decided to try Distrobox. It creates containers that tightly integrated with the host system. It even comes pre-installed on the Steam Deck. And I like it a lot! It is very easy to use and combines the advantages of both approaches. All packages will persist across updates and I have access to all packages that I have on my regular PC. Graphical apps look native and can interact with each other. The game on photos was compiled on the Steam Deck πŸ₯°

3
0
projectharmonia
Project Harmonia Shatur β€’ 4 months ago β€’ 75%
🧬 Bevy Replicon 0.26.0 is out!

🧬 Bevy Replicon 0.26.0 is out! It's a networking crate for the Bevy game engine that we use for [@projectharmonia](https://lemmy.ml/c/projectharmonia). In this release, we have completely reworked the events. The public API for events has not changed, except that custom systems have been replaced with serialization and deserialization functions. In addition, all network event registration functions can be used on regular events, automatically making them network events. πŸ“œ [https://github.com/projectharmonia/bevy\_replicon/blob/master/CHANGELOG.md](https://github.com/projectharmonia/bevy_replicon/blob/master/CHANGELOG.md) πŸ“¦[https://crates.io/crates/bevy\_replicon](https://crates.io/crates/bevy_replicon) [\#bevy](https://mastodon.social/tags/bevy)

2
0
projectharmonia
Project Harmonia Shatur β€’ 4 months ago β€’ 100%
Object side snapping https://files.mastodon.social/media_attachments/files/112/464/350/123/909/782/original/43ee5ca84816f484.mp4

Object side snapping Implemented a special component that allows the sides of objects to snap to others with the same component. Bevy's gizmo was very helpful in visualizing the math. [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://mastodon.social/tags/projectharmonia) [#bevy](https://mastodon.social/tags/bevy) [#gamedev](https://mastodon.social/tags/gamedev)

3
0
projectharmonia
Project Harmonia Shatur β€’ 4 months ago β€’ 100%
🧬 Bevy Replicon 0.25.0 is out!

🧬 Bevy Replicon 0.25.0 is out! It's a networking crate for the Bevy game engine that we use for [@projectharmonia](https://lemmy.ml/c/projectharmonia). Here are some highlights: \- Group-based replication rules, similar to queries. \- Deserialization and writing now defined separately. \- Writing now based on markers for more flexibility. \- Deserialization in-place now can be customized. πŸ“œ [https://github.com/projectharmonia/bevy\_replicon/blob/master/CHANGELOG.md](https://github.com/projectharmonia/bevy_replicon/blob/master/CHANGELOG.md) πŸ“¦[https://crates.io/crates/bevy\_replicon](https://crates.io/crates/bevy_replicon) Also check out πŸ“¦ [https://github.com/NiseVoid/bevy\_bundlication](https://github.com/NiseVoid/bevy_bundlication) for a bundle-like API for replication groups. [\#bevy](https://mastodon.social/tags/bevy)

1
0
projectharmonia
Project Harmonia Shatur β€’ 5 months ago β€’ 50%
Vintage counter

Vintage counter Added vintage counter from this post to the game: [https://toot.garden/@YaraGardaria/112322312099954470](https://toot.garden/@YaraGardaria/112322312099954470) [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://mastodon.social/tags/projectharmonia) [#bevy](https://mastodon.social/tags/bevy) [#gamedev](https://mastodon.social/tags/gamedev)

0
0
projectharmonia
Project Harmonia Shatur β€’ 5 months ago β€’ 50%
Continue working on kitchen furniture

Continue working on kitchen furniture Just finished another object. Verts: 710 Tris: 1128

0
0
projectharmonia
Project Harmonia Shatur β€’ 5 months ago β€’ 100%
Networking improvements

Networking improvements Over the past few weeks, I was mostly focused on networking. Me and the author of bevy\_bundlication have decided to collaborate. The plan is to abstract his crate over bevy\_replicon and ensure that rollback crates could be used together with it nicely. After a lot of discussions, we came up with a very elegant API and today I finally finished implementing it! A few follow-ups will be needed, but everything should be ready soon :) [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#bevy](https://mastodon.social/tags/bevy) [#projectharmonia](https://mastodon.social/tags/projectharmonia)

3
0
projectharmonia
Project Harmonia Shatur β€’ 6 months ago β€’ 83%
Vintage table

Created a first furniture model for the game. Verts: 320 Tris: 542

4
0
projectharmonia
Project Harmonia Shatur β€’ 6 months ago β€’ 100%
First game furniture

First game furniture Added vintage table model from this post to the game: [https://toot.garden/@YaraGardaria/112231421650294108](https://toot.garden/@YaraGardaria/112231421650294108) [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://mastodon.social/tags/projectharmonia) [#bevy](https://mastodon.social/tags/bevy) [#gamedev](https://mastodon.social/tags/gamedev)

7
0
projectharmonia
Project Harmonia Shatur β€’ 6 months ago β€’ 100%
Switched from earcutr to earcut-rs https://files.mastodon.social/media_attachments/files/112/224/413/491/220/714/original/cfeaa40b601fbc8a.png

Switched from earcutr to earcut-rs earcutr is an excellent crate for polygon triangulation. But it's API isn't convenient to use with Bevy. Recently discovered this crate that I wanted to share with others: [https://github.com/MIERUNE/earcut-rs](https://github.com/MIERUNE/earcut-rs) It's generic over indices and provides a way to reuse allocations. I found it quite convenient to use for cutting holes in walls. My walls are 3D, but I cut wall planes in 2D and generate the rest of the mesh. [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#bevyengine](https://mastodon.social/tags/bevyengine) [#projectharmonia](https://mastodon.social/tags/projectharmonia) [#rustlang](https://mastodon.social/tags/rustlang)

2
0
projectharmonia
Project Harmonia Shatur β€’ 6 months ago β€’ 60%
Bevy on PinePhone Pro

Bevy on PinePhone Pro Bevy can run on Android phones. But what about GNU/Linux phones? I decided to find out using my PinePhone Pro with RK3399. Managed to run my game using WGPU\_SETTINGS\_PRIO=webgl2. But couldn't get past the main menu due to limited features of the GPU. 😒 But simple 2D games like breakout example runs! Right now I working on networking for the game, but this evening I decided to tinker with my device a little. [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#bevy](https://mastodon.social/tags/bevy) [#projectharmonia](https://mastodon.social/tags/projectharmonia) [#pinephone](https://mastodon.social/tags/pinephone)

1
1
projectharmonia
Project Harmonia Shatur β€’ 6 months ago β€’ 100%
Added ground texture

Added ground texture Made by [@YaraGardaria](https://toot.garden/@YaraGardaria). We just tired of boring gray ground πŸ˜… [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://mastodon.social/tags/projectharmonia) [#bevy](https://mastodon.social/tags/bevy)

6
0
projectharmonia
Project Harmonia Shatur β€’ 6 months ago β€’ 85%
Implemented automatic door opening https://files.mastodon.social/media_attachments/files/112/072/739/324/049/218/original/e7c165ee8a62d095.mp4

Implemented automatic door opening In my initial implementation, doors opened when a character approached them. But imagine simply walking past the doors and having them open unexpectedly πŸ˜… In the current implementation, I analyze navigation paths to determine if characters pass through a door. Additionally, I added small visual feedback for wall placement, fine-tuned navigation, made a few QoL improvements, and fixed a bunch of bugs. [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://mastodon.social/tags/projectharmonia) [#bevy](https://mastodon.social/tags/bevy) [#gamedev](https://mastodon.social/tags/gamedev)

5
0
projectharmonia
Project Harmonia Shatur β€’ 7 months ago β€’ 100%
When you screw up a little with math https://files.mastodon.social/media_attachments/files/112/062/920/413/359/479/original/20dd23a8e26eb56a.mp4

When you screw up a little with math Tried to adjust my mesh generation logic :) [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://mastodon.social/tags/projectharmonia) [#gamedev](https://mastodon.social/tags/gamedev) [#bevy](https://mastodon.social/tags/bevy)

4
0
projectharmonia
Project Harmonia Shatur β€’ 7 months ago β€’ 80%
🧬 bevy_replicon v0.24.0 is out!

🧬 bevy\_replicon v0.24.0 is out! It's a high-level networking crate for the Bevy game engine. This release is big! We abstracted out all I/O and renet dependency. We will continue to provide first-party integration with renet via bevy\_replion\_renet. But now users can write their own integration with other messaging libraries. See the changelog for a full list of changes: [https://github.com/projectharmonia/bevy\_replicon/blob/master/CHANGELOG.md](https://github.com/projectharmonia/bevy_replicon/blob/master/CHANGELOG.md) πŸ“¦[https://crates.io/crates/bevy\_replicon](https://crates.io/crates/bevy_replicon) πŸ“¦[https://crates.io/crates/bevy\_replicon\_renet](https://crates.io/crates/bevy_replicon_renet) [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#bevy](https://mastodon.social/tags/bevy)

3
0
projectharmonia
Project Harmonia Shatur β€’ 7 months ago β€’ 100%
Wall collisions

Wall collisions Currently I create colliders for my walls based on their meshes. It's a dirty but working solution. But meshes sometimes need to be updated separately from their colliders (for placing previews, for example). I described the situation to [@YaraGardaria](https://toot.garden/@YaraGardaria) and although she is not a programmer, she suggested an awesome solution: create several cuboid colliders separated by doors. No triangulation needed! Sometimes fresh perspective helps a lot :) [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://mastodon.social/tags/projectharmonia)

4
0
projectharmonia
Project Harmonia YaraGardaria β€’ 7 months ago β€’ 100%
The window from the previous post in the game https://cdn.toot.garden/media_attachments/files/111/988/300/682/115/703/original/3baf552444739690.mp4

The window from the previous post in the game [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://toot.garden/tags/projectharmonia) [#gamedev](https://toot.garden/tags/gamedev) [#bevy](https://toot.garden/tags/bevy)

4
0
projectharmonia
Project Harmonia YaraGardaria β€’ 7 months ago β€’ 100%
First window for the game

First window for the game I decided to make a plastic window which is common in my land. [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://toot.garden/tags/projectharmonia) [#3d](https://toot.garden/tags/3d) [#blender](https://toot.garden/tags/blender) [#blender3d](https://toot.garden/tags/blender3d)

4
0
projectharmonia
Project Harmonia Shatur β€’ 7 months ago β€’ 100%
Updated my game to Bevy 0.13

Updated my game to Bevy 0.13 I started playing with Bevy since 0.5 and I have to say that the development speed has increased greatly! Releases are huge, it's nice to see how the engine evolves. Updating the game also becomes more harder because you have to deal with all the changes at once πŸ˜… Even with their excellent migration guides it can be difficult sometimes. Fortunately, the developers were very helpful and helped resolve all my issues. [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://mastodon.social/tags/projectharmonia) [#bevy](https://mastodon.social/tags/bevy)

1
0
projectharmonia
Project Harmonia Shatur β€’ 7 months ago β€’ 100%
🧬 bevy_replicon v0.23.0 is out!

🧬 bevy\_replicon v0.23.0 is out! It's a high level networking crate for the Bevy game engine. Now we support Bevy 0.13. With this release we now use the improved Bevy's MapEntities trait instead of our custom one. See the changelog for a full list of changes: [https://github.com/projectharmonia/bevy\_replicon/blob/master/CHANGELOG.md](https://github.com/projectharmonia/bevy_replicon/blob/master/CHANGELOG.md) The crate is based on renet, but for the next release we planning to abstract out all I/O. We will continue to provide `renet` integration via separate crate. πŸ“¦[https://crates.io/crates/bevy\_replicon](https://crates.io/crates/bevy_replicon) [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#bevy](https://mastodon.social/tags/bevy)

2
0
projectharmonia
Project Harmonia Shatur β€’ 7 months ago β€’ 100%
🧬 bevy_replicon v0.22.0 is out!

🧬 bevy\_replicon v0.22.0 is out! It's a high level networking crate for the Bevy game engine. Now mapped client events will not be drained and will behave exactly like other events. But it's a small breaking change since such events now require a Clone impl. See the changelog for a full list of changes: [https://github.com/projectharmonia/bevy\_replicon/blob/master/CHANGELOG.md](https://github.com/projectharmonia/bevy_replicon/blob/master/CHANGELOG.md) πŸ“¦[https://crates.io/crates/bevy\_replicon](https://crates.io/crates/bevy_replicon) [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#bevy](https://mastodon.social/tags/bevy)

1
0
projectharmonia
Project Harmonia Shatur β€’ 7 months ago β€’ 100%
Reworked object placing https://files.mastodon.social/media_attachments/files/111/931/226/943/061/170/original/d4336302d734deba.mp4

Reworked object placing Improved logic and added visual feedback. Also switched from bevy\_rapier to bevy\_xpbd. My game only needs collision detection and with bevy\_xpbd I can disable unnecessary logic by toggling plugins. So convenient! It was an easy transition since the API is very similar. The author is also very active and helpful. [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://mastodon.social/tags/projectharmonia) [#bevy](https://mastodon.social/tags/bevy) [#gamedev](https://mastodon.social/tags/gamedev)

1
0
projectharmonia
Project Harmonia Shatur β€’ 7 months ago β€’ 100%
Implemented door placement https://files.mastodon.social/media_attachments/files/111/902/459/618/771/673/original/09eaec88bb05337e.mp4

Implemented door placement Boolean operations in 3D are quite heavy. But fortunately, each wall can be represented as two 2D planes. To determine which 2D shape I need to cut from the mentioned planes, I add a special plane in Blender with "Cutout" name. This is what The Sims series do. And for all doors located on a wall I triangulate combined vertices using earcutr. The library API doesn't fit well with Bevy, but it does the trick. [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://mastodon.social/tags/projectharmonia) [\#bevy](https://mastodon.social/tags/bevy) [\#gamedev](https://mastodon.social/tags/gamedev)

1
0
projectharmonia
Project Harmonia Shatur β€’ 8 months ago β€’ 100%
Improved wall generation https://files.mastodon.social/media_attachments/files/111/852/541/446/043/186/original/ea59756546861d79.mp4

Improved wall generation Now walls are separate meshes and take full advantage of ECS, including change detection to rebuild only changed parts. The new approach also automatically fixed some bugs and enabled instant update of other walls that were affected by currently spawning wall. [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://mastodon.social/tags/projectharmonia) [#bevy](https://mastodon.social/tags/bevy) [#gamedev](https://mastodon.social/tags/gamedev)

2
0
projectharmonia
Project Harmonia Shatur β€’ 8 months ago β€’ 100%
Added UV for generated walls https://files.mastodon.social/media_attachments/files/111/824/668/379/857/563/original/47f833c93af09871.mp4

Added UV for generated walls It was an interesting task and I learned a lot about how meshes are represented internally. Initially I used 8 vertices for each wall. But then I discovered that if I needed a different color and normal for each side, then I needed a different vertex! So I reworked the mesh generation to make 20 vertices per mesh (for each side with no bottom). [@projectharmonia](https://lemmy.ml/c/projectharmonia) [\#projectharmonia](https://mastodon.social/tags/projectharmonia) [#bevy](https://mastodon.social/tags/bevy) [#gamedev](https://mastodon.social/tags/gamedev)

1
0