EPB Format Documentation

Discussion in 'Empyrion API' started by cmwhee, Jun 13, 2017.

  1. geostar1024

    geostar1024 Rear Admiral

    Joined:
    Jan 24, 2016
    Messages:
    1,483
    Likes Received:
    2,459
    It would require Eleon to implement a sub-block model, which they certainly could do (for instance, it could be its own block type, with the subtype referencing a particular block array later in the block data, though that would only give 65536 distinct combinations of blocks at this point), but yeah, it'd take some thought and work to do it well.
     
    #21
    oojimaflip likes this.
  2. Nightdawn

    Nightdawn Lieutenant

    Joined:
    Aug 30, 2017
    Messages:
    16
    Likes Received:
    56
    Oh guys, that's SO amazing! Thanks a ton for that. I was looking at the save game data for so long, and I got some of the stuff worked out, but looking at this rather elaborate list is quite a relief! Thanks!

    Edit:
    do we know how the bitfields exactly work? I get contradictory results.
    Example: I made a BP with only a starter block (9 blocks, 8 steel and a core) and get that: 0000000111111111 (0xFF01 )which is 7 zeroes (exactly the buffer from the bitfield size) - so I thought, ok, maybe the buffer to fill up the complete bytes is at the beginning... but putting in another example BP, I get that: 0100000010000000 (0x8040)with also a buffer of 7 bits, which is clearly wrong.
    I tried to get my head around that for hours now..


    > Got it. it's actually backwards on word level, so the 0x8040 would be a
    0000000
    1000000
    10
    (considering a bp width of 7)

    Edit2:
    Do you know in which order the bitfield is ordered? I am currently assuming in multiple X/Y layers (so x,y,z)

    > Got that one, too. It's bottom to top per layer, layers back to front (so on a ship it would be vertical slices from the aft to the stern)
     
    #22
    Last edited: Sep 8, 2017
  3. Bar0th

    Bar0th Lieutenant

    Joined:
    Oct 13, 2016
    Messages:
    6
    Likes Received:
    18
    The unknown is part of the ID. When reading both bytes, my Core is 0x022E (558) in the header, 0x0a2e in the grid ("rotation" 00001 | 010 <-- 0x02). Also, 0x032e (which should be the core, if it's just the 0x2e portion), is "Window Blocks S: Round Corner" :) Another example: 0x018d = "Wood Block: Cylinder", 0x058d = "Artificial Plants (Deco): Tentacle Tree".
     
    #23
  4. kittle

    kittle Lieutenant

    Joined:
    Nov 29, 2017
    Messages:
    8
    Likes Received:
    9
    Any new activity on this?
    I grabbed the python code to try and read some of my blueprints. but its giving an error about "bad magic number for file header". some poking around shows the 0x03 and 0x04 header bytes are missing from the stream.
    is the block data no longer compressed? or... something else?

    but for older blueprints, it seems to be working.
     
    #24
  5. geostar1024

    geostar1024 Rear Admiral

    Joined:
    Jan 24, 2016
    Messages:
    1,483
    Likes Received:
    2,459
    Good question; I've not had time to look at this due to the holidays. I'll do some poking around myself when I get the chance and update my code when I get it working again. If anyone learns anything about the new format in the meantime, please post it here.
     
    #25
  6. piddlefoot

    piddlefoot Rear Admiral

    Joined:
    Mar 4, 2015
    Messages:
    1,849
    Likes Received:
    1,615
    My bain nearly exploded. reading all of that !

    Fascinating though, keep up the great work guys , some of us cant code , we love your work though.
     
    #26

Share This Page