Database-based Mods

    Joined
    Jun 23, 2013
    Messages
    24
    Reaction score
    7
    • Community Content - Bronze 1
    • Legacy Citizen 2
    • Legacy Citizen
    So with the Fleet Release, I think a lot of the back-end support they allude to and had to write is decoupling of the Fleet AI operating on the entity (segment?) database and the game engine pulling from that, doing physics, etc.

    So I think this opens up a new class of mods: AI Mods. Currently, there are three AIs in the game (even if they don't use the same API mechanisms):
    • Player Fleets
    • Pirates
    • Trading Guild
    Hopefully, the code to support Player Fleets is modular enough to support other kinds of AI. (Invasion forces? NPC Mercenaries? Anti-pirate forces?)
     

    Ithirahad

    Arana'Aethi
    Joined
    Nov 14, 2013
    Messages
    4,150
    Reaction score
    1,330
    • Purchased!
    • Top Forum Contributor
    • Legacy Citizen 8
    Database-based base data modding codebase. In space. :p

    ...It would be good for someone to at least investigate the format and see what can be done in that area.
     
    Joined
    Jun 23, 2013
    Messages
    24
    Reaction score
    7
    • Community Content - Bronze 1
    • Legacy Citizen 2
    • Legacy Citizen
    It would be good for someone to at least investigate the format and see what can be done in that area.
    It's based on HyperSQL, with the connection being managed by org.schema.game.common.controller.database.DatabaseIndex and the file being... about 3 layers deep in obfuscation. It empirically appears to be $WORLDDIR/index/. Note: All of its contents are hidden.

    If you want to dig around with it, hsqldb.jar includes a GUI manager. Just run java -jar hsqldb.jar and it pops open. My connection string was jdbc:hsqldb:file:/home/astronouth7303/StarMade/server-database/world0/index/;shutdown=true; your mileage may vary.

    My understanding/assumption is that all of the small, non-repetitive data of entities/segments, systems, and a few other things are stored in HSQL, while the big data (namely the block data) is stored in individual files.

    This also makes me wonder: What about external SQL servers? I wonder if it's possible to do some kind of server farm just by having a front-end that multiplex connections by system and then individual servers all share a SQL and filesystem? Pure speculation.