Project Harmonia

90 readers
3 users here now

A work-in-progress life simulation game.

GitHub

founded 2 years ago
MODERATORS
51
 
 

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

52
 
 

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 πŸ₯°

53
 
 

🧬 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

54
 
 

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

55
1
submitted 1 year ago* (last edited 1 year ago) by Shatur@mastodon.social to c/projectharmonia@lemmy.ml
 
 

🧬 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

56
 
 

Vintage counter

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

@projectharmonia

#projectharmonia #bevy #gamedev

57
 
 

Continue working on kitchen furniture

Just finished another object.

Verts: 710 Tris: 1128

58
1
Networking improvements (mastodon.social)
submitted 1 year ago* (last edited 1 year ago) by Shatur@mastodon.social to c/projectharmonia@lemmy.ml
 
 

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

59
 
 

Created a first furniture model for the game.

Verts: 320 Tris: 542

60
1
First game furniture (files.mastodon.social)
submitted 1 year ago* (last edited 1 year ago) by Shatur@mastodon.social to c/projectharmonia@lemmy.ml
 
 

First game furniture

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

@projectharmonia

#projectharmonia #bevy #gamedev