A lot of people want wedges for lights and crystals. This has been vetoed because of concerns about block IDs.
However, if we could combine all the block shapes into one, we actually gain IDs. I have determined a method to do this that (based on what I know) works with the current system.
Pros:
> Gain plenty of IDs.
> Half-slabs added
> Better-looking terrain (since it's smooth)
> All shapes for all blocks
> You can see different transparent blocks behind each other
> Angled docking modules
> Angled gravity
Cons:
> Damage may occasionally be weird
> Future shapes will have to be added in different blocks.
> Importing to a new version will take forever.
However, this is based off of a few bits of information on the engine that Schema provided, so it might not be accurate. This is going to be a wall-o'-text post
http://starmadedock.net/threads/smedit-situation.746/page-2#post-9929
Schema made this post for the purposes of SMEdit. The bits that describe a single block are distributed like this:
Blue is block ID bits: 11 bits, 2048 possible values.
Red is HP bits: 8 bits, 256 possible values.
Green is Activation bits: 1 bit, 2 possible values.
Yellow is orientation bits: 4 bits, 16 possible values.
Now, how many orientations does each type of block have? Cubes can have 6 different orientations. Wedges can have 12 different orientations. Corners can have 24 different orientations. Pentas and Tetras can each have 8 orientations. So there are 6 + 12 + 24 + 8 + 8 = 58 different orientations. You'll notice the corner has more possibilities than the orientation bits would allow; I'm pretty sure that it uses the activation bit as well.
Here's my proposed changing of the bit allocations.
Blue is block ID bits: 11 bits, 2048 possible values.
Red is HP bits: 6 bits, 64 possible values.
Green is Activation bits: 1 bit, 2 possible values.
Yellow is orientation bits: 6 bits, 64 possible values.
Now, we condense solid block, wedge, corner, penta, and tetra into a single block. There are 58 possible combinations from that. We have another 6 orientation values we can use, so we can slip slabs in there as well.
This actually removes block IDs from use: 229 IDs are currently used for the shaped blocks.
Also, that's a heck of an inventory improvement (no need to carry five blocks for one color)
Now of course, this comes at the cost of block HP. I propose this is mitigated through a change to the armor system. Currently armor goes from 0 to 99 and is calculated through( damage * (100 - armor) / 100).
Armor should go from 1 to whatever and be calculated through (damage / armor). Then add a global armor value that block armor is multiplied by. So really the calculation would be (damage / (block armor * ship armor * global armor)). However, if we set global armor to 4 in order to compensate for the loss in HP, we wind up with 1-damage cannons being worthless.
So, ships need a way of making the small stuff count. A new property called surplus will be added to entities. It tracks surplus damage that was lost due to armor. block damage =((damage + surplus)/(block armor * ship armor * global armor)) and surplus =((damage + surplus)%(block armor * ship armor * global armor)) where % is the modulus operator. This way small cannons aren't useless, and armor actually does something.
However, if we could combine all the block shapes into one, we actually gain IDs. I have determined a method to do this that (based on what I know) works with the current system.
Pros:
> Gain plenty of IDs.
> Half-slabs added
> Better-looking terrain (since it's smooth)
> All shapes for all blocks
> You can see different transparent blocks behind each other
> Angled docking modules
> Angled gravity
Cons:
> Damage may occasionally be weird
> Future shapes will have to be added in different blocks.
> Importing to a new version will take forever.
However, this is based off of a few bits of information on the engine that Schema provided, so it might not be accurate. This is going to be a wall-o'-text post
http://starmadedock.net/threads/smedit-situation.746/page-2#post-9929
Schema made this post for the purposes of SMEdit. The bits that describe a single block are distributed like this:
Blue is block ID bits: 11 bits, 2048 possible values.
Red is HP bits: 8 bits, 256 possible values.
Green is Activation bits: 1 bit, 2 possible values.
Yellow is orientation bits: 4 bits, 16 possible values.
Now, how many orientations does each type of block have? Cubes can have 6 different orientations. Wedges can have 12 different orientations. Corners can have 24 different orientations. Pentas and Tetras can each have 8 orientations. So there are 6 + 12 + 24 + 8 + 8 = 58 different orientations. You'll notice the corner has more possibilities than the orientation bits would allow; I'm pretty sure that it uses the activation bit as well.
Here's my proposed changing of the bit allocations.
Blue is block ID bits: 11 bits, 2048 possible values.
Red is HP bits: 6 bits, 64 possible values.
Green is Activation bits: 1 bit, 2 possible values.
Yellow is orientation bits: 6 bits, 64 possible values.
Now, we condense solid block, wedge, corner, penta, and tetra into a single block. There are 58 possible combinations from that. We have another 6 orientation values we can use, so we can slip slabs in there as well.
This actually removes block IDs from use: 229 IDs are currently used for the shaped blocks.
Also, that's a heck of an inventory improvement (no need to carry five blocks for one color)
It may be possible to have entities reference a large list with their own blockIDs, meaning that while a ship only can have 2048 different block types, there could be 65,000 blocks that you could choose from. This would be more practical with this because shape only depends on the orientation bits, not the blockID, which should reduce strain on the physics engine a bit.
Now of course, this comes at the cost of block HP. I propose this is mitigated through a change to the armor system. Currently armor goes from 0 to 99 and is calculated through( damage * (100 - armor) / 100).
Armor should go from 1 to whatever and be calculated through (damage / armor). Then add a global armor value that block armor is multiplied by. So really the calculation would be (damage / (block armor * ship armor * global armor)). However, if we set global armor to 4 in order to compensate for the loss in HP, we wind up with 1-damage cannons being worthless.
So, ships need a way of making the small stuff count. A new property called surplus will be added to entities. It tracks surplus damage that was lost due to armor. block damage =((damage + surplus)/(block armor * ship armor * global armor)) and surplus =((damage + surplus)%(block armor * ship armor * global armor)) where % is the modulus operator. This way small cannons aren't useless, and armor actually does something.
Last edited: