HomeGamesUpdatesPricingMethodology
Steam News5 March 201511y ago

Devblog 50

Terrain Generation André Straubmeier The first version of the procedurally generated roads had a couple of issues where they would take pretty crazy routes or cross each other in ways that didn’t really make much sense.

Full notes

Full Rust update

Read the full published notes in a cleaner layout. The original post stays linked below.

What changed

0 fixes1 addition1 change0 removals
  • Server
changedAndré StraubmeierThe first version of the procedurally generated roads had a couple of issues where they would take pretty crazy routes or cross each other in ways that didn’t really make much sense. Most of those should be fixed now, though improving the road network generation is still an ongoing process. We also added an initial version of bridges which are very much still a work in progress but really help keep landmarks connected. With roads doing the right thing for the most part we felt experimental and added a proof of concept for rivers. On the one hand rivers are great because everyone wants them and they do a big deal to make landscapes look unique. On the other hand rivers are horrible because they come with all sorts of issues that have to be addressed with workarounds that are more or less ugly. They cause Z-fighting between the river mesh and the terrain mesh, fuck around when the terrain mesh changes LODs and make checks for whether or not something is underwater an order of magnitude more complex. Nonetheless we decided to run with it and added rivers to the procedural maps. There’s bound to be issues with this first iteration - for one you’re not getting wet when crossing rivers - but we’ll solve those as we go along. A nice side effect of having proper rivers that flow down slopes is that they allowed us to remove a lot of the water at zero level which was previously supposed to kind of look like rivers but really didn’t. This allows for much more terrain elevation and gives us much more freedom when designing the procedural generation. One example of this is a huge increase in the number of mountain lines, simply because we have much more space available for them. The new terrain shape also gives us a lot more freedom when texturing the terrain. Biomes now depend on both the latitude (how far north or south a position is) as well as the altitude (how high a position is), leading to much more detail and variety overall. Further changes include a new warehouse landmark, bigger and more condensed rock clusters, improved sand dunes, nicer mountaintops, smoother texture blending and many more I’ve probably forgotten.
addedPacket ErrorsWhen we first moved to Raknet were getting occasional problems with entities being missing on the client. The server was sending them but they weren't showing up. Investigation found that the entities weren't reaching the client - but we had a lot of invalid packets. I added a checksum to the entity networking process. Players that were missing entities got kicked. The assumption was that these were network issues, maybe people were on a shit internet connection. But then a lot of people started getting kicked. And it was the same people. The main reason for moving to Raknet was that it's a tried and tested platform, so any bugs were going to be in my code. So I spent hours ripping my code to bits, putting it back together in a different order. No change. So maybe it's some other code overwriting the memory that contains the packets, so I disabled any other native code we had running which could be a problem. No change. So maybe it's some compiler flag in our native dll, maybe it's a raknet define, maybe we're sending too much data and raknet isn't tested for it. All

Terrain Generation

André Straubmeier

The first version of the procedurally generated roads had a couple of issues where they would take pretty crazy routes or cross each other in ways that didn’t really make much sense. Most of those should be fixed now, though improving the road network generation is still an ongoing process. We also added an initial version of bridges which are very much still a work in progress but really help keep landmarks connected. With roads doing the right thing for the most part we felt experimental and added a proof of concept for rivers. On the one hand rivers are great because everyone wants them and they do a big deal to make landscapes look unique. On the other hand rivers are horrible because they come with all sorts of issues that have to be addressed with workarounds that are more or less ugly. They cause Z-fighting between the river mesh and the terrain mesh, fuck around when the terrain mesh changes LODs and make checks for whether or not something is underwater an order of magnitude more complex. Nonetheless we decided to run with it and added rivers to the procedural maps. There’s bound to be issues with this first iteration - for one you’re not getting wet when crossing rivers - but we’ll solve those as we go along. A nice side effect of having proper rivers that flow down slopes is that they allowed us to remove a lot of the water at zero level which was previously supposed to kind of look like rivers but really didn’t. This allows for much more terrain elevation and gives us much more freedom when designing the procedural generation. One example of this is a huge increase in the number of mountain lines, simply because we have much more space available for them. The new terrain shape also gives us a lot more freedom when texturing the terrain. Biomes now depend on both the latitude (how far north or south a position is) as well as the altitude (how high a position is), leading to much more detail and variety overall. Further changes include a new warehouse landmark, bigger and more condensed rock clusters, improved sand dunes, nicer mountaintops, smoother texture blending and many more I’ve probably forgotten.

Packet Errors

When we first moved to Raknet were getting occasional problems with entities being missing on the client. The server was sending them but they weren't showing up. Investigation found that the entities weren't reaching the client - but we had a lot of invalid packets. I added a checksum to the entity networking process. Players that were missing entities got kicked. The assumption was that these were network issues, maybe people were on a shit internet connection. But then a lot of people started getting kicked. And it was the same people. The main reason for moving to Raknet was that it's a tried and tested platform, so any bugs were going to be in my code. So I spent hours ripping my code to bits, putting it back together in a different order. No change. So maybe it's some other code overwriting the memory that contains the packets, so I disabled any other native code we had running which could be a problem. No change. So maybe it's some compiler flag in our native dll, maybe it's a raknet define, maybe we're sending too much data and raknet isn't tested for it. All

Source

Steam News / 5 March 2015

Open original post

Changelog.gg summarizes and formats this update. How we read updates.