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.

  • bl4kers@lemmy.ml
    link
    fedilink
    English
    arrow-up
    1
    ·
    11 hours ago

    I’m more pessimistic about the idea. Life simulation can include anything and everything, which means making an API will be difficult.

    Just my two cents. Wishing you the best

  • warmaster@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    14 hours ago

    A Sims clone has to be better than the Sims and even then I wouldn’t like to play it. A mod friendly life sim engine is something I would definitely want to play.

    I can already imagine a SimGine Skyrim mod being uploaded on day 1.

    But I would suggest to scale it back even more, if I understood correctly, it’s still very ambitious. Make it scriptable, modular, dev & artist friendly. Well documented, treat contributors as first class.

    • Life sim:

    Start with the creation of something where contributors can create for example a dog entity add the a trait called thirst which has a counter that increases x% every x seconds then another contributor adds a bowl of water that replenishes the thirst meter.

    • Building mode:

    Start with a grid and snapping system with layering so that contributors could create the building blocks. Players could import models and assign an entity to it.

    • Character creation:

    Players could start by importing ready made models. The character creator could come later, or you could start with just hats. And go from there.

    • Shatur@lemmy.mlOP
      link
      fedilink
      arrow-up
      1
      ·
      4 hours 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.

  • TootSweet@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    21 hours ago

    Yeah, I think it’s smart to be making an MVP that’s just the engine with plugin support. I think you’ll need a minimal reference mod at least to show how you’d go about making a proper mod that’s actually a “game”. It’s totally valid for that minimal reference mod to be really minimal. Like, more of a testing tool than a “game” per se. Use stick figures. Or even worms or something.

    Once you’ve got something that can support mods that other folks could make, folks can jump on board and help if they want to. If not, you can start focusing on a mod that’s an actual “game” later, if you’re still able and willing to continue working on the project.

    Importing from Sims games is pretty cool. I’d definitely be interested in that as a feature. But if that was never supported, that’d honestly be fine as well.

    If someone wanted something that was “true” to the Sims games, they could make a mod. There was a mod for Luanti called “Mineclone2” (that I think has renamed since, but I don’t recall what to) that was a relatively faithful reproduction of Minecraft in Luanti. Someone could do that if they wanted to. Especially if what you’re building (“SimGine”) get a pretty active modding community like Luanti has.

    • Shatur@lemmy.mlOP
      link
      fedilink
      arrow-up
      2
      ·
      20 hours 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 🙂