Welcome to the first weekly update blog post! This week features the completion of Fableforge's network architecture, the beginnings of a main menu, and many changes to the landscape generation system.
Syncing World Data
The past three weeks have been dedicated to making Fableforge a multiplayer game. Much of the first two weeks was spent setting up a simple network solution that allowed communication between clients and servers, as well as joining and creating your own servers.
Towards the end of last week I began working on implementing features from the terrain generation system into the new network architecture. The most important feature was making sure that when you join a player's server, you both are in the same world!
Servers now have full control over how the world is generated. The server will generate random seeds, all of the regions, and everything in those regions and then send that information to anyone who joins.
The player who joins then uses all that information to generate the world around them.
Communicating Block Modifications
Another important feature is making sure that if the terrain changes, that information is sent to every player. Now every time a block has changed, whether it's from mining resources, building, or from other non-player actions, that change will be seen by all other players on the server.
I made a simple main menu, right now the only functionality is starting a singleplayer world, joining or creating a multiplayer server, and exiting the game. The main menu is not going to look like this on release, there's more stuff style-wise that can be done. Right now it serves as a guide of how it will work in the future.
Basically the layout of the singleplayer and multiplayer menus will go like this:
Singleplayer - Create/Join World - Create/Select Character - Enter Game
Multiplayer - Join Server - Create/Select Character - Enter Game
Multiplayer - Create Server - Create World
One of the features that will be in the game is being able to have multiple characters on the same world!
The past few days was spent tweaking a lot of different variables, testing to make sure the terrain generates how I want it too, refactoring terrain generation code, and fixing a few minor issues that I overlooked.
There were a few goals that I wanted to accomplish with the landscape changes:
1) Increasing the diversity of regions
2) Have regions appear more grand in scale
3) Making it easier for the player to explore
I wanted each landscape type to accomplish these goals, I started tweaking the plains landscape type first.
A plains region like this is now more common.
Previously plains were very difficult to find. This was because when a region is made, multiple landscapes are layered on top of each other. Some of these landscapes would be hills or mountains. Because a region would generate anywhere between 2-5 different landscapes, it would be very uncommon for all these landscapes to be plains. This issue has been fixed in a new landscape spawn chance system I'll talk more about later.
Another issue with the plains landscape is that the heightmaps were always very similar. I fixed this issue by increasing the min and max ranges for amplitude, and the min range for frequency.
I also changed the minimum height for land-based regions to a much larger range of 20 blocks below sea level to 50 blocks above sea level. This change effects plains biomes the most since their elevation is the lowest out of the other landscapes. This also makes it more common for a wetlands type of region to form, further improving plains diversity.
Hills benefited from much of the same changes. They are now much more diverse and not as volatile as they used to be.
Mountains are also more diverse, not only will you see mountains with pretty steep slopes, but now some regions will have mountains that have much more gradual slopes.
New Roughness Layer
I added a new heightmap layer that is added on top of the landscape layers. This layer adds a little more character to a region's heightmap. It also solves an issue that made eroded landscapes too flat.
New Landscape Spawn Chance System
Previously plains, hills, and mountain landscapes all had an equal chance of being spawned. But because multiple landscapes spawn, it made it much more common for a region to look more mountainous than flat.
Now, regions have a chance to exclude hills and mountains landscapes from being generated. This makes it much more fair for plains. :)
That concludes this week's progress update! A lot of changes were made to how landscapes generate, but there's still a few more things to do. See you next week! :)