Weekly Dev Update: 2016 April 29th - Fluids, Cuttletrunk, VR, GUI, Imbibe + more

This week we have made progress with the development of new features such as: machine crafting, the associated updated GUI, the family plan for the creatures, and more props. We have made a few minor releases that (almost) complete the C++ version of the game. Details of the 2 updates can be found here and here. The C++ beta release now supports exploding arrows so remember the golden rule when playing with your neighbours.

In the coming few weeks we want to start making more progress on the production of creature assets and their AI behaviours. We also want to start finalising the World Builder update that includes all the resource regeneration and world regeneration technology. We really want people to get their hands on the new World Builder as well as the C++ version with resource generation and regeneration next month. This update aims to give us all the tools to start making biomes for Boundless 1.0.


Code
The game has already started hitting the block ID limit of 256, so to support the rich block and prop set we want in Boundless we’re updating the world data to be 16 bits per block which will allow far more combinations than the previous 8 bits. We’ve also worked on some development tools for rapidly placing all block types and props, with all tints, and all slope variations into a test world, this will allow our artists to more easily evaluation and test their new assets and see how tinting, lighting and environmental effects look.

We’ve continued working on the GUI for machines and crafting, the machines can now be placed, linked up and serialised.

We continued work on the PSVR demo to get rid of some of the choppiness that can cause nausea. To help improve the smoothness we’re updating the PS4 graphics driver in a few areas, mainly when updating the vertex data (which happens when we mesh the chunks), and the shader pipeline.

Design
This week saw the overarching creature design come together with good progress on the 1.0 feature set, and the systems that will drive them. Expect a devlog update on this soon.

It’s been fantastic to work with the coders on implementing the crafting and machines. It’s coming along well, and we’re starting to try and get some representative recipe data in. That’s something that will continue next week, but it’s really good to be seeing core game features getting built.

We also spent some time looking at the PSVR demo from a design perspective, and it’s starting to look nice. We’re still working out exactly what we want to do with it, but it’s been a very interesting process understand how it works.

We’ve also been thinking about the permanence of beacons which we’d really like your thoughts on, please see the forum post here. This is a really important issue - so make sure you contribute to the discussion.

GUI
This week we spent some time investigating navigation within the new GUI. A core component how we explain the user’s navigational hierarchy within GUI in Boundless is using 3D depth. You can see some mockups of how it’s going to look here. In addition, if you’d like to get alcohol poisoning you can imbibe every time @ben mentions a user experience buzz-word or fancy-pants designer term like ‘navigational hierarchy’.

Leading off into the next phase of GUI implementation we’re working on an icon palette (imbibe) for Boundless. We’re looking to visually describe terms like: friend, home, wearables, dead, breath, capital, etc. Our aim is to create a set of recognisable icons that feel like they belong within the Boundless universe – but they aren’t Oort glyphs. Below is some of the early development on the palette:

Art
This week we’ve continued to flesh out the creatures. Using the Cuttletrunk we’ve explored the visual language of progression. This includes how a creature will visually look different to reflect it’s gameplay variations. We’ll post more details in a devlog post soon. In preparation for creating more creature assets, we’ve also been reviewing the rig requirements for the Cuttletrunk which will be the next creature implemented.

We’ve concepted various props which we’ll share in a future devlog post: mystery box, paid lock and location signal. We’ve also continued producing tint-able items: steak, roll of paper, cloth and leather, plus a very large nail, and explored some updated ambient flowers.

The character animations focus has been on the inventory, lots of gifs, pics and dev details in the devlog post. We’ve also made a new emote - a single person Mexican wave which we’ll share on the forum soon!


Step by step…

28 Likes

Awesome :stuck_out_tongue:

1 Like

4 Likes

Sounds like I’ll really like the machines. Good work so far^^

3 Likes

I thought of the Cuttletrunk as a very fantastic creature. The sketches have been kind of mysterious, but my interpretation was, it stuffs it’s head into a flower, flashes off and the flower is pollinated…in a way. Or enlightened. Pretty cool for an air floating squid. :slight_smile:

If I remember correctly it’s more like they are in a symbiosis and the “cuttle” returns to the “trunk” to heal^^

2 Likes

Not bad either, I can imagine swarms of those shimmering in a grotto while healing. My idea would be interesting also, imagine an eco system which is bound to reproduction with mediator animals like bees, or a Cuttletrunk. It’s possible the developers already thought about this already. Dunno. This topic would belong into the creature idea thread after all. Creatures that interact with their environment, and not only react to a player’s behaviour.

1 Like

Saw the word world builder and got instantly happy

Just as a note…
I do not understand why programmers still lock important variables to bytes, and limit the use of it…when they have to go back and change it when the project grow.
In the old days when you only had a few Kb working ram, it was important to save every byte of memory, but today it seems a little odd to not use a extra byte, or a integer in a variable or object to avoid going back and add it.

No critic, just a thought.

The block id is attached to all the blocks that is in the game so if you have 2 dirt blocks beside each other they will both be block id 100 (or something like that) and there is a lot of blocks in a game making it impractical to read any number larger than strictly necesary.

That was what I was told last time I heard that question in a sandbox game anyway.

Ok, i see the point :slight_smile:

The short answer is that fixed size values can be better optimized both for performance (CPU usage), and memory usage.

To support variable-length values, you (genrally) have to store how large the value is along side the value its self (takes a bit more memory) - and when reading values from memory, the compiler can no longer make assumptions about where things are in memory, which requires more work on the CPU (because it now has to read the length of the value to know how to skip past it in memory)


Thankfully, these days computers are fast enough that we can and do use variable-length values in most places. But frequently used data or very large data sets still need to be optimized, otherwise they’ll really hurt performance (like all of the blocks in a world, and their associated item types/colors/orientations/etc).

4 Likes

But a word(16 bit) is also fixed…
They have changed to it now, and i don’t think it going to get the cpu to its knees.
But i see the point of not storing to much in objects that in heavy use.

1 Like

They didn’t make it 16 bits from the get go because every little it of performance you can save could be used for other features or to have more concurrent players on one world at a time.
But since the initial 8 bits are not enough anymore they had to change it.

1 Like

How much data do you want to store per voxel in a sandbox?

Say you have a world that is 4k x 4k x 256 voxels, this is 2^32 voxels.

(What about an 8k world? A 16k world? What if we’ve 1000 worlds?)

This level of optimisation and leanness effects serialisation, streaming, memory, everything. Luckily we added 8 additional bits for the type ID, but managed to steal them from something else in the voxel. So the net result was zero.

7 Likes

Yes, i see it. Was not meant as criticism, just curious.

Awesome update, @james. I’ll be adding that icon palette to the devlog collection.

Sounds great!