Dev Blog

Hi, this is the Stranded III development blog (see also Forum Thread, Comment Thread).

Overview (115 Entries)

Entry 77 - Terrain Concept - June 16, 2018

Blog time! I moved to a new flat (I'm still living in Hamburg), switched my job and updated CS2D since my last entry so unfortunately there wasn't much time to work on Stranded III but I do have some stuff to write about nevertheless!

Network Library Progress
I worked on my network library. It now allows to send packages of (in theory) any size without causing trouble by exceeding the MTU of hardware/software involved in the process of transmitting data over the internet.
To achieve this I check the size of a network packet before sending it. When it's too large it's split into multiple packets and some header fields are added. The recipient of the packet will read the header fields and assemble the packet as soon as all required packets arrived.
This is actually a very basic thing for a UDP-based network library but it was still missing in my implementation. It's not an essential feature but implementing a game without it means that you have to manually take care that your packets don't get too large. This is what I tried to do in CS2D and but sometimes it still happened there that packets get too large. This can lead to serious problems like disconnects. Some modems/routers even seem to crash completely and require a restart when you throw oversized packets at them. Fun stuff!
So thanks to fully automated packet partition this hopefully won't happen in Stranded III.

In my previous blog entry I said that I'm not happy with Unity's terrain and that I wanted to make my own one.
I thought a lot about possible map formats, efficient structures to save data etc. and came to the conclusion that I will just stick to the heightmap approach because it's so simple and allows to create natural looking landscapes easily and procdeurally.
So most of the landscape will be very simple data-wise and therefore it will also be easy and fast to work with it.
To make landscapes more interesting I will however add two things to the classic heightmap approach:

• Cliffs
Very steep slopes can be converted to cliffs with a rock structure instead of rendering a simple slope with a heavily streteched ugly texture.
Since this system is only based on the 2D heights array of the classic heightmap approach big overhangs will not be possible with it. You could still add something like this by manually placing some big rock assets though.
I plan to generate the cliffs with actual 3D geometry using randomized patterns. If I don't manage to do so I could just use a triplanar shader instead.

• Caves
Another, way more sophisticated addition is the cave system that I plan to add. It requires additional data in the map because a 2D array of heights is not sufficient to represent underground stuff.
To make this work the terrain will allow to define the surface type "hole" which just creates a hole in the terrain surface. An additional data set will then be used to put 3D geometry under that hole. I did not decide how to structure that data.
The most complex and powerful approach would probably be a voxel terrain using marching cubes for smoothing. I will however probably just create a cave kit with some pre-built cave elements which can be connected to build different tunnels and caves.

Changing the way Stranded III can be modded
A lot changed since I started to work on Stranded III. Back then Unity's Pro version had a different feature set than the free version. One of the features not included in the free version were asset bundles. Asset bundles allow you to load additional assets - which have been created with the Unity editor - at runtime. Now everyone can use asset bundles and create asset bundles with the free version of Unity.
This is a great thing because it allows people to create assets with Unity's editor which is quite powerful and gives you a lot of new opportunities. Therefore I want to make use of it in Stranded III. Most Unity games which support modding actually work the same way. Kerbal Space Program for instance or Tabeltop Simulator.


blog comments powered by Disqus