@Shatur@mastodon.social avatar

Shatur

@Shatur@mastodon.social

Programmer and open source enthusiast.

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

This profile is from a federated server and may be incomplete. Browse more on the original instance.

Shatur, to bevy
@Shatur@mastodon.social avatar

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

video/mp4

Shatur, to bevy
@Shatur@mastodon.social avatar

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

linmob, to linuxphones
@linmob@fosstodon.org avatar

If anyone is wondering whether the ASUS #Chromebook Flip C101p is my #PinePhone Pro + Keyboard replacement: In some use cases, maybe — but it lacks 4G and, comparatively, is a freaking giant:

PinePhone Pro on top of P8 N100 Intel laptop from AliExpress, below these two the ASUS Chromebook Flip C101P

Shatur,
@Shatur@mastodon.social avatar

@linmob What's that device in the middle?

Shatur,
@Shatur@mastodon.social avatar

@linmob Looks awesome! Do you like it?

On related news, I heard that Pine64 won't manufacture the PinePhone keyboard 😢

Shatur,
@Shatur@mastodon.social avatar

@linmob I read about it in the PinePhone chat. Search for "The keyboard is not in stock, and I assume not produced anymore for good reasons".

I personally hope that they bring keyboard back to stock because it improves the usability a lot.

mntmn, to random
@mntmn@mastodon.social avatar

we posted a new MNT update, enjoy: https://mntre.com/media/reform_md/2024-04-12-april-update.html

also, and part of this update, i shot a video showcasing MNT RCORE RK3588's performance in MNT Reform: https://www.youtube.com/watch?v=YNfC22P0Zc0

Shatur,
@Shatur@mastodon.social avatar

@mntmn What is the battery life?

phosh, to linuxphones
@phosh@fosstodon.org avatar

Want to build your own lock screen widget or quick setting in ? @arunmani explains how that works in https://phosh.mobi/posts/custom-plugins-dev/ 🛠️

Shatur,
@Shatur@mastodon.social avatar

@phosh thank you! I was just thinking about writing a small plugin that disables and enables mobile Internet.

Shatur, to bevy
@Shatur@mastodon.social avatar

First game furniture

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

@projectharmonia

image/png
image/png

Shatur, to rust
@Shatur@mastodon.social avatar

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 walls plane in 2D and generate the rest of the mesh.

@projectharmonia

A closeup of a placed door with enabled wireframe.

Shatur, to bevy
@Shatur@mastodon.social avatar

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

PinePhone Pro with the keyboard case. Tic-Tac-Toe game on the screen. It's a draw!
PinePhone Pro with the keyboard case. On the screen console with pfetch output that prints Archlinux logo.

linmob, to random
@linmob@fosstodon.org avatar

New blog post:
Sad news: A micro-laptop dream is ending (for now)

https://linmob.net/sad-news-a-microlaptop-dream-is-ending-for-now/

Shatur,
@Shatur@mastodon.social avatar

@linmob Yes, using PPP (not PP) causing the keyboard case to crack is a known issue 😭

But I think it's purely cosmetic. Despite a small crack on my case, it works.

gamingonlinux, to random
@gamingonlinux@mastodon.social avatar

Reminder that an alternative to Reddit exists if you’re into Linux gaming join up: https://lemmy.ml/c/linux_gaming@lemmy.ml

Shatur,
@Shatur@mastodon.social avatar

@gamingonlinux Using Lemmy since the reddit blackout, quite a nice place.

When the blackout began, it wasn't quite ready: the servers couldn't handle the load (not only because of the hardware, but also because of Lemmy itself), moderation tools wasn't good. But the situation improved a lot since then.

Shatur, to bevy
@Shatur@mastodon.social avatar
Shatur, to bevy
@Shatur@mastodon.social avatar

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

Player places walls, adds a door and window to them, and then directs the virtual character to go through the door.

Shatur, to gamedev
@Shatur@mastodon.social avatar

When you screw up a little with math

Tried to adjust my mesh generation logic :)

@projectharmonia

You try to attach a door to a wall, but the vertexes are going crazy.

Shatur, to projectharmonia
@Shatur@mastodon.social avatar

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

Shatur, to bevy
@Shatur@mastodon.social avatar

🧬 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

Shatur, to bevy
@Shatur@mastodon.social avatar

🧬 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

Shatur, to bevy
@Shatur@mastodon.social avatar

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



Door placement on a wall.

Shatur, to bevy
@Shatur@mastodon.social avatar

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

Walls connection demonstration.

Shatur, to bevy
@Shatur@mastodon.social avatar

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

video/mp4

Shatur, to bevy
@Shatur@mastodon.social avatar

Added placeable Retro TV object

The model made by @YaraGardaria

Bevy looks quite nice with normal maps and good lighting settings.

@projectharmonia

video/mp4

Shatur, to bevy
@Shatur@mastodon.social avatar

🧬 bevy_replicon v0.21.1 is out!

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

After quite some R&D from UkoeHB in Discord and I, the library now features entity visibility control for clients!

The new companion crate bevy_replicon_attributes extends replicon visibility with a highly ergonomic attributes-based API.

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_attributes

@projectharmonia

Shatur, to bevy Russian
@Shatur@mastodon.social avatar

Love Bevy asset reloading feature!

To implement object buttons reloading when changing metadata files, I simply added a system that respawns buttons when metadata changes. Complete separate preview system automatically updates the image. So convenient.

@projectharmonia

video/mp4

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • kavyap
  • DreamBathrooms
  • khanakhh
  • magazineikmin
  • InstantRegret
  • ethstaker
  • thenastyranch
  • Youngstown
  • rosin
  • slotface
  • osvaldo12
  • everett
  • ngwrru68w68
  • JUstTest
  • Durango
  • cubers
  • tester
  • GTA5RPClips
  • modclub
  • mdbf
  • cisconetworking
  • tacticalgear
  • Leos
  • normalnudes
  • anitta
  • provamag3
  • lostlight
  • All magazines