Skip Navigation
Shatur Hennadii Chernyshchuk @mastodon.social

Programmer and open source enthusiast.

In my spare time working with @YaraGardaria on Project Harmonia - an open source life simulation game (https://github.com/projectharmonia/project\_harmonia).

Posts 24
Comments 2

Crow Translate 3.0.0 is out!

Crow Translate 3.0.0 is out!

https://apps.kde.org/crowtranslate/

No, the app can't translate crow calls πŸ˜… But it can translate and speak human text!

KDE wanted a translation app for their Apps Initiative, and @carlschwan asked if I wanted to incubate my app. As a big KDE fan, I couldn't refuse 😍

The app is part of Extragear. I plan to submit it to KDE Gear after Qt6 migration.

I created the app 6 years ago and still maintain it. Although I mainly focused on a FOSS life simulation game now.

@kde

\#kde

2

🧬 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.

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://crates.io/crates/bevy\_replicon

\#bevy

0

Object side snapping

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

\#projectharmonia #bevy #gamedev

0

🧬 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.

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://crates.io/crates/bevy\_replicon

Also check out πŸ“¦ https://github.com/NiseVoid/bevy\_bundlication for a bundle-like API for replication groups.

\#bevy

0

Vintage counter

Vintage counter

Added vintage counter from this post to the game: https://toot.garden/@YaraGardaria/112322312099954470

@projectharmonia

\#projectharmonia #bevy #gamedev

0

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

\#bevy #projectharmonia

0

First game furniture

First game furniture

Added vintage table model from this post to the game: https://toot.garden/@YaraGardaria/112231421650294108

@projectharmonia

\#projectharmonia #bevy #gamedev

0

Switched from earcutr to earcut-rs

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 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

\#bevyengine #projectharmonia #rustlang

0

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

\#bevy #projectharmonia #pinephone

0

Added ground texture

Added ground texture

Made by @YaraGardaria. We just tired of boring gray ground πŸ˜…

@projectharmonia

\#projectharmonia #bevy

0

Implemented automatic door opening

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

\#projectharmonia #bevy #gamedev

0

When you screw up a little with math

When you screw up a little with math

Tried to adjust my mesh generation logic :)

@projectharmonia

\#projectharmonia #gamedev #bevy

0

🧬 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://crates.io/crates/bevy\_replicon πŸ“¦https://crates.io/crates/bevy\_replicon\_renet

@projectharmonia

\#bevy

0

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 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

\#projectharmonia

0

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 \#projectharmonia #bevy

0

🧬 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

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

@projectharmonia

\#bevy

0

🧬 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://crates.io/crates/bevy\_replicon

@projectharmonia

\#bevy

0

Reworked object placing

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

\#projectharmonia #bevy #gamedev

0

Implemented door placement

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

\#projectharmonia \#bevy \#gamedev

0

Improved wall generation

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

\#projectharmonia #bevy #gamedev

0