Update on the project, looking for opinions - Lemmy
## 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
[email protected] [/c/[email protected]] about the project for a
while, only updates to the related crates I mainain. 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. 1. Building mode. 1. 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 [https://github.com/projectharmonia/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 [https://www.paradoxinteractive.com/media/life-by-you-is-cancelled].
So, is it an impossible task for hobbyists? It would be a shame, because when I
recently asked which game people would most like to see a FOSS alternative for
[https://lemmy.ml/post/25840065], 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
[https://github.com/lucaspoffo/renet] under the hood. But since it’s not
actively maintained, 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 with other libraries. I decided to
embrace this strategy by keeping the crate minimalistic but extensible. Now we
have a small ecosystem
[https://github.com/projectharmonia/bevy_replicon?tab=readme-ov-file#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
[https://store.steampowered.com/app/4000/Garrys_Mod] and Luanti
[https://www.luanti.org/] (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 [https://static.makehumancommunity.org/]. 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. [bevy_replicon]:
https://github.com/lifescapegame/bevy_replicon
[https://github.com/lifescapegame/bevy_replicon] [bevy_replicon_renet]:
https://github.com/projectharmonia/bevy_replicon_renet
[https://github.com/projectharmonia/bevy_replicon_renet]