Shatur

joined 3 years ago
MODERATOR OF
[โ€“] Shatur@lemmy.ml 4 points 1 day ago

This guy makes great romhacks!

[โ€“] Shatur@lemmy.ml 0 points 2 weeks ago* (last edited 2 weeks ago)

We are not all like this. I think this meme is stupid too.

 

An input manager for Bevy, inspired by Unreal Engine's Enhanced Input. We use it for Simgine, but it's general-purpose.

Another small release with QoL improvements.

Highlights

  • Binding::AnyKey to assign any button.
  • Cooldown input condition.
  • Mocking can be used even without InputPlugin.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

 

An input manager for Bevy, inspired by Unreal Engine's Enhanced Input. We use it for Simgine, but it's general-purpose.

Another small release with QoL improvements.

Highlights

  • Binding::AnyKey to assign any button.
  • Cooldown input condition.
  • Mocking can be used even without InputPlugin.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

15
submitted 3 weeks ago* (last edited 3 weeks ago) by Shatur@lemmy.ml to c/bevy@programming.dev
 

While waiting for Bevy 0.17, I'm having fun working on examples for bevy_replicon.

Itโ€™s a crate for server-authoritative networking. We use it for Simgine, but it's general-purpose.

Implemented Boids as an example to showcase deterministic replication.

https://github.com/simgine/bevy_replicon/pull/554

1
submitted 3 weeks ago* (last edited 3 weeks ago) by Shatur@lemmy.ml to c/simgine@lemmy.ml
 

While waiting for Bevy 0.17, I'm having fun working on examples for bevy_replicon.

It's a crate for server-authoritative networking. We use it for Simgine, but it's general-purpose.

Implemented Boids as an example to showcase deterministic replication.

https://github.com/simgine/bevy_replicon/pull/554

 

An input manager for Bevy, inspired by Unreal Engine's Enhanced Input. We use it for Simgine, but it's general-purpose.

A small release with QoL improvements.

Highlights

  • Add ability to toggle contexts without removing them using the ContextActivity<C> component.
  • Allow bindings! macro to mix tuple and non-tuple bindings.
  • Fix unnecessary change detection for Actions<C> on every update.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

1
submitted 1 month ago* (last edited 1 month ago) by Shatur@lemmy.ml to c/simgine@lemmy.ml
 

An input manager for Bevy, inspired by Unreal Engine's Enhanced Input. We use it for Simgine, but it's general-purpose.

A small release with QoL improvements.

Highlights

  • Add ability to toggle contexts without removing them using the ContextActivity<C> component.
  • Allow bindings! macro to mix tuple and non-tuple bindings.
  • Fix unnecessary change detection for Actions<C> on every update.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

 

cross-posted from: 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 for more details.

Unfortunately, I cannot change the name of the community, so I created a new one: !simgine@lemmy.ml.

 

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 for more details.

Unfortunately, I cannot change the name of the community, so I created a new one: !simgine@lemmy.ml.

[โ€“] Shatur@lemmy.ml 2 points 1 month ago

As a matter of fact, I did!

Godot was even my first choice originally. It's compact, FOSS, and easy to use. I had a good experience with it and even contributed a few times. But I didnโ€™t end up using it:

  • It's not ECS-based. They even have an article explaining why. But for a game like this, we need to process a lot of objects to simulate a city (I want cities to be similar to Sims 3), so we benefit from a data-driven approach. Also after actually using ECS, I think I disagree with some points from the article: I found ECS much more natural to work with.
  • It's not very extensible. Even with GDExtension (a low-level C API), in order to integrate a C or C++ library I have to adapt it. It's so much more seamless with Rust.
  • GDScript is easy to use and well-integrated, but slow. C# is faster, but the support is worse and I don't like the language ๐Ÿ˜… There also bindings for other languages via GDExtension. Even their C++ API are implemented this way: C++ engine code wrapped into C and then wrapped again into C++. But working with bindings is never the best API experience. Also, after using Bevy for a while, I really appreciated that when something goes wrong, I can directly jump into the engine code and see whatโ€™s happening. I'm, of course, planning to provide a scripting API, but using the same language for writing the core stuff is so convenient. I'm basically writing an engine for an engine ๐Ÿ™‚
  • I disagree with some of the developers choices. For example, I dislike how they parse the CLI in main.cpp - it's just messy. A long time ago, I implemented a CLI parser in C++ with a GDScript API for users and suggested reusing it in the engine, but they didn't end up merging it and said that the current state was fine.

I also considered Unreal Engine. It's highly optimized, packed with features, and provides tools for massive simulations. But I also didn't end up using it:

  • It's incredibly heavy. Compiling it from source takes hours.
  • Linux support is not great. The editor runs, but poorly. All the Unreal games I know are available only for Windows. Almost all developers also use Windows.
  • The main language is C++, which matches the engine language, but iteration times are awful due to the engine size. It's game development workflow clearly designed around Blueprints. They're convenient to use but hard to refactor, and they're stored in binary format because the engine is designed to use with Perforce VCS. I prefer Git, and even a small change in a Blueprint results in a full file replacement.
  • They don't allow you to license your game under a copyleft license, which is the kind of license I'd like to use for my project.

Donโ€™t get me wrong - both mentioned engines are great. I just didn't mentioned all their advantages and all disadvantages of Bevy. But for this specific project, I found Bevy to be a better fit ๐Ÿ™‚

[โ€“] Shatur@lemmy.ml 1 points 1 month ago

All the mentioned repositories are located at https://github.com/projectharmonia. The game repository with my previous attempt is at https://github.com/projectharmonia/project_harmonia, which I plan to move to a separate archived branch since I'll start from scratch. As I mentioned in the post, I'm currently finishing the remaining work on the crates I'll need for the game while waiting for Bevy 0.17 ๐Ÿ™‚ The name "Project Harmonia" was just a placeholder; I'll be renaming both the game repository and the organization to "Simgine" today.

Yes, being able to work on it full time would be a dream! Right now, I work on it in my free time after my full-time job, but I want to write an MVP first before considering any fundraising.

[โ€“] Shatur@lemmy.ml 1 points 1 month ago

Yeah, I'll definitely try to scale it down as much as possible!

Right now I considering using a mesh with morphs just to provide a proper API for character customization. I don't expect this particular part to be that hard. The mentioned MakeHuman is FOSS, so I could use it as a reference.

I also donโ€™t think it will be incredibly generic. It'll be focused on life simulation, so it wouldnโ€™t be a good choice for something like an RPG. This lets me scale the project down even further โ€” and a narrower API will be simpler as well.

[โ€“] Shatur@lemmy.ml 2 points 1 month ago

Thanks for the honest opinion!

[โ€“] Shatur@lemmy.ml 3 points 1 month ago

Thanks!

Yes, I'll definitely maintain a few mods. Not only are they useful as references, but actually using the API helps me improve it. I'm planning to use free models because I need to test things like clothing and morphing. Plus, the showcases look better this way ๐Ÿ™‚

[โ€“] Shatur@lemmy.ml 3 points 1 month ago

Yes! I like Lua and even wrote a few plugins for Neovim with it ๐Ÿ™‚

 

cross-posted from: https://lemmy.ml/post/34012299

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 !projectharmonia@lemmy.ml about the project for a while, only updates to the related crates I maintain. 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.
  2. Building mode.
  3. 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. 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.

So, is it an impossible task for hobbyists? It would be a shame, because I recently asked which game people would most like to see a FOSS alternative for, 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 under the hood. But itโ€™s not actively maintained, so 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. I decided to embrace this strategy by keeping the crate minimalistic but extensible. Now we have a small 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 and Luanti (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. 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.

 

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 !projectharmonia@lemmy.ml about the project for a while, only updates to the related crates I maintain. 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.
  2. Building mode.
  3. 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. 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.

So, is it an impossible task for hobbyists? It would be a shame, because I recently asked which game people would most like to see a FOSS alternative for, 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 under the hood. But itโ€™s not actively maintained, so 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. I decided to embrace this strategy by keeping the crate minimalistic but extensible. Now we have a small 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 and Luanti (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. 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.

[โ€“] Shatur@lemmy.ml 2 points 1 month ago

I think the glasses are quite solid, but I havenโ€™t dropped them yet ๐Ÿ™‚

I never buy additional warranties.

[โ€“] Shatur@lemmy.ml 2 points 1 month ago* (last edited 1 month ago) (2 children)

how do you change its settings, like the aspect ratio, the dimming or the distance?

They have an OSD like in a regular monitor. You press the mode switch button twice to bring it and navigate using the +- brigness buttons. For dimming you hold the brightness rocker to start adjusting the dimming. For everything else there is an OSD menu like in a regular monitor. You bring it by double pressing the switch button and navigate with the brightness buttons.

how does it know where is forward in anchor mode? if you are sitting in a vehicle that is turning, can you keep it using as if nothing has happened?

It's only 3 DoF without the eye add-on, so when you move, the monitor moves with you.

how do you do chores with it? I mean, what do you connect it to, and where do you place it so that itโ€™s not in the way?

I just connect it to my Retroid Pocket Flip and put it into my pocket. Then I just enable side mode in the glasses, so it displays the image in the corner. And use my 8BitDo to navigate in the device.

what do you do to not get tangled in the cable, and to not get stuck on something?

The default cable is just very short :) It's a distance from the glasses to my pocket with about extra 15-20 cm.

[โ€“] Shatur@lemmy.ml 1 points 1 month ago* (last edited 1 month ago)

But it's not VR. It's basically an OLED monitor in front of my eyes. I can't say it's healthy, but I wouldn't say it's that bad.

[โ€“] Shatur@lemmy.ml 1 points 1 month ago

Also AFAIK there are vacuums with only Bluetooth connectivity to configure them from a phone, with no Wi-Fi and cloud bullshit.

Thanks, I will take a look! But I think it's stills requires using a proprietary app for a phone, right? What I liked about Valetudo is they provide their own app.

view more: next โ€บ