Engines Aether Legend of the Lunar Priest NIFE Roadmap
Shatterloop Game Projects Deprecated Starwright
Saepes Mundi Other Projects Blog  

Game Projects

Hub database

Posted July 18, 2025 by Xhin

The main issue here is that there are three different dimensions to cover, so it makes sense to just list them all out and see where I can find common ground.

  • Global/Instanced

  • Handcrafted/Procedural

  • Branched/2D/3D

    So 12 possibilities.

    Important

    I also need to handle how stuff *in* the room works. Having them all in the same "objects" database with a type makes the most sense probably. Then you also have the entities layer that encompasses both objects and rooms and possibly worlds as well even.

    Note 2

    I want to implement Skeins too but those are going to be more complicated. Think: representing an ik'thulu procedural space.

  • There are 3 Replies


    Handcrafted

  • Branched -- A Rooms database stored like NIFE or XIFNET where rooms have parents or you can have custom connections.

  • 2D -- Rooms have an x and a y. There could still be a roomid, the x and y just make grids easier to manage. And the parent column wouldn't be used. Custom connections could still be a thing.

  • 3D -- same as the above but there's also a z.

    So it looks like Handcrafted could use the same universal database for rooms, which looks like this:

    roomid back x y z


  • July 18, 2025
    Xhin
    Sky's the limit

    Procedural

    The main difference here is that rooms aren't explicitly in the database, you instead have diffs for changes.

    I could use the same exact rooms database here for room diffs. The difference is that they're only created when a room changes, and the procedural settings allows more rooms to exist than are in the database. This should work for both 2D and 3D.

    Branched is a bit trickier -- the way I'm doing mazes in Skygarden and Junker assigns them IDs but that isn't going to play nice with roomids. So maybe just add another column to rooms to indicate the procedural branched id when a branched room gets a change, ie "procbranid".

    July 18, 2025
    Xhin
    Sky's the limit

    Stuff in rooms

    It makes sense to have a universal "objects" database that covers everything that can be in a room -- dropped items, vehicles, characters, fixtures. I'm then only instancing exactly two tables. Instancing only the rooms seems like a bad idea if someone gets sent to limbo for whatever reason.

    Putting a vehicle into an instanced room would be absolute madness because of how many things inside it get instanced.

    July 18, 2025
    Xhin
    Sky's the limit

    Reply to: Hub database

    Username
    Password