First Update of 2019 — Settlers

By Plump Helmet Studios on

First Update of 2019 — Settlers

Today was a bank holiday, but I didn't go and drink ale in the sun, no, I stayed inside like a craftsdwarf and I worked on this amazing project. It's tough, getting back into such a complex project after 8 months off it. It's daunting, the thought of getting back up to the level of proficiency that I was once at, but the only way to do that is one step at a time.

And that's what today's update is, a single step, turning artwork made many moons ago into in-game objects.

Settler Artwork Preview

Today I worked on integrating the settler sprites into the game. Behind the scenes, the settlers exist in data, but displaying them on the screen required the use of a number of textures, sprites, and sprite renderers, all positioned correctly and manipulated when the settler changed direction. The header image to this post shows a bunch of naked settlers stood about in the grass utterly confused at their brief existence, their only action to randomly turn in despair, glued to the spot, mindless.

The game, as it stands—and as you can see from the Announcing Feudalia post—is very incomplete. There has been a lot of work on the initial framework, such as the definition system (to allow modding later on), the world generation (I love this), the new game experience (my favourite is the settler screen), and the map and terrain work (which, let me just say, took a lot of work to make performant.)

What comes next is to try and get to a point where a basic playthrough can occur. This is, in my eyes, having some settlers who can build a simple shelter, who have needs such as hunger and thirst, and who can make basic produce and eat/drink etc. Once you have those basics, you can start to add things in: animals, equipment, weapons, combat, health, death etc. And, after that, you can add more, such as psychology and moods and RNG powered events and items and beliefs and magic and potions. And goblins.

The next task will be to introduce a basic AI, movement, pathfinding, etc. After that, I'll need to start having a think about how to design the structure behind these actions. How will creatures—the base class for animals, people, etc—decide what their priority is? There will need to be needs such as hunger, thirst, health, etc. There will need to be labors or jobs for settlers, but not for animals etc. But this is what is so fun. This is a problem I've never faced before, and I've been programming for 20 years now. I love it.

It feels great to be back on the project again.

Follow us

If you're interested in supporting us, or signing up to receive pre-alpha releases, take a look at our Patreon.

And why not follow us @plump_helmet as well?

Index cards

By Plump Helmet Studios on

Index cards

After production of Feudalia stopped abruptly last year, I have been trying to get the project up and running again. There have been—and will continue to be—a number of IRL challenges that will affect this, but I expect that by the latter end of this year, things should settle down and I will be in an even better position to proceed with this amazing project.

One of the problems I have found is that the breadth of what I want to incorporate into this game and its universe is so vast that it's hard for me to keep track of things. Previously, using GitHub, there were hundreds of issues, they contained everything from things I needed to work on tonight such as fixing issues with grass swaying in the wind to more obscure things like ecology and gemstones. Not only was it hard to track things, but really, things were getting lost in the noise. It's great to have all those ideas, but it's also nice to have a clear view of what's important now and what might be important later.

My idea to both get back into the production of the game and to reduce this paralysis by analysis, is to go old school. After all, the idea to get into game development was to try and recapture some of that fun from the old days of programming. In my day job, which I do enjoy a lot, I do a lot of what could be considered boring stuff. It's not boring, but it's also doesn't capture my imagination in the same way that sending UDP packets across the UK over copper cables when I was 10 did.

So, index cards huh?

Pretty simple really, I write the card number in the top right, the type of card in the top left, I can add metadata like the lime green link number, which refers to a link I have stored in a specific folder in my browser. I then add some details, but not too much. The idea is to not fill up the tickets—or well, index cards now—with so much detail that when I come to do the work I feel like, well, not wanting to do it. The laziness of not wanting to write will help in this regard.

So far, I've picked out the most important issues from the list, and written them down. The current game already had hundreds of tickets closed, and what remains is mostly what I had planned for the MVP which, really, should have hit before Christmas.

This game may will take a long time to complete, and as it is a labour of love, I don't mind this, but I hope to follow in the steps of my forefathers and release playable and enjoyable versions of Feudalia long before then.

Follow us

If you're interested in supporting us, or signing up to receive pre-alpha releases, take a look at our Patreon.

And why not follow us @plump_helmet as well?

Back in action!

By Plump Helmet Studios on

Back in action!

We don't currently have many fans, but we do have some, and some of you may have noticed that just as the momentum started to build, the websites went offline and our social media accounts went quiet. We're sorry about that, and well, as the lone developer working here at Plump Helmet Studios, I—the narrator—am sorry about that.

Sometimes in life, as you're trying to juggle day jobs, family, and everyday adult life, with making your dream game, things can get a little stuck, and that's exactly what happened to me nearly half a year ago. Unfortunately, there have been some quite major changes in my life, and so development of Feudalia had to be halted.

But, not forever. The ideas behind this game, the wealth of imagination and the power of what could be, it's too much to let die before it was ever truly born. To take everything Dwarf Fortress has taught me, all the hours of fun RimWorld has given me, and to distill these into something truly unique and enjoyable for the world to sample, well, that's just too much for me to say no to.

I'm happy to announce that I will not give up. Development of Feudalia has resumed. The engines of Plump Helmet Studios run once more. And while progress will be slower to begin with, it will be made, and the game will continue to move towards it's first release, sometime in the future.

To those of you who got in touch, thank you, and to those of you in the future who are reading back, this is but a bump in our history.

Please stay tuned over the next year.

Follow us

If you're interested in supporting us, or signing up to receive pre-alpha releases, take a look at our Patreon.

And why not follow us @plump_helmet as well?

Announcing Feudalia

By Plump Helmet Studios on

Announcing Feudalia

We are happy to announce our upcoming game.

Feudalia is a medieval settlement sim, inspired by Dwarf Fortress and RimWorld, building on the art direction of Prison Architect & RimWorld, in the grim setting of medieval middle Earth. Build your settlement in a simulated world. Farm crops, raise livestock, harvest ore, smith weapons, research mechanics, and discover magic, as you hunt, trade, forage, and fight for survival.

We're happy to confirm Feudalia will be available on Steam for early access once ready.

Mod support

From the very get go we're building in mod support. The first thing you'll see when you start the game, other than a splash screen perhaps, is the loading screen, as it loads all the mod definitions into the game. It's also generating the background world you see in the menu at the same time.

One thing we love about both Dwarf Fortress & RimWorld is the content that the community provides. That's why mod support is the foundation from which we're building the game, so all the core functionality from plant definitions to skills to world generation is available for modders to use and modify.

Loading mods doesn't have to be boring

While there isn't too much to elaborate on for the main menu, we thought you might like to see it in it's current form. Load Game, Mods, and Settings are currently disabled until they are implemented.

Well, it's a menu

Create Faction

Upon starting a New Game, the first screen you'll see is the Create Faction screen. In this first screen, you'll get to choose a name for your merry weary band of adventurers settlers, along with an emblem to represent them. In the future, we may add scenarios to this section, helping you tailor your faction and story. For example, you could be five settlers looking to setup a new trading post, or a lone sorcerer, looking to exploit the wireless efforts of your earth golems to build a wizarding tower.

As opposed to the depressed majority

Settlers

On the next screen, you get to pick your settlers. You'll be able to randomize the entire lot, or each settler individually. Each settler comes with a background - do they come from the peasantry or perhaps royal blood, or are they exile from distant lands? They also have a profession, which conveys with it a bonus to certain skills, though be wary, some profession carry skill penalities too.

Along with the long list of skills, each settler will also have some attributes. These are mutable and may change throughout the life of the settler. The skills are split into one of four groups - economic, magic, military, and social.

While most people are magically inept, there are those among the worlds of Feudalia who posses magical abilities: alchemists, working in their labs; arcanists, controlling the elements themselves; diviners, inferring dangers from the wind; enchanters, turning exceptional weapons into true legends; healers, who can mend bones without gypsum plaster; and the most vile of all, sorcerers, consulters of spirits and demons, summoners of golems and beasts and more.

Currently, all settlers are naked. We're working on that.

Schott, Albert Schott, Naked Shopkeeper extraordinaire

World Generation

Finally, the last screen you'll see is the World Generation screen. This simple screen encapsulates the world generation, where from over 10 playable biomes, each with their own climate and terrain, you can pick you embark region. There is a lot more that we're going to do with these screen, eventually doing away with the window and having a fullscreen embark mode. The world also needs lakes, rivers, named regions and more.

And on the 7th day, the world continued to generate

Pre-alpha release

Thanks for reading this far. What you see so far is the majority of our first pre-alpha release, 0.1.0-96 genesis. While there is a lot going on behind the scenes, the "in game" section itself is mostly terrain, plants, and time. Over the course of the next month we'll be working on the view engine for the game proper. While we are using Unity, for the most part, we're only using it for rendering purposes.

We look forward to sharing more with you over the coming months.

Follow us

If you're interested in supporting us, or signing up to receive pre-alpha releases, take a look at our Patreon.

And why not follow us @plump_helmet as well?

Mesh Splitting

By Plump Helmet Studios on

Mesh Splitting

While Unity may have introduced 32-bit Mesh index buffers, by default it still uses 16-bit indices, which means a regular mesh object is limited to 65,535 vertices. This is a high number, and arguably, you may ask if any object should really reach this limit. For the ground layers in our medieval settlement simulator, reaching this limit has been fairly easy.

With regions consisting of, by default, 200x200 tiles, or 40,000 separate tiles, and with each tile consisting of 4 vertices, we have 160,000 vertices for the ground terrain alone. These are split among the different map layers: soil, rich soil, sand, clay, etc, so on a diverse map, it's easy to have ~20,000 vertices per mesh, but then, on very homogeneous terrain, you can easily breach the 65,535 vertex limit. The result is a truncated mesh.

Truncated mesh

This isn't great. It's the opposite of great. It's terrible.

To combat this, we need to detect when our procedurally generated terrain layers have exceeded this limit, and create multiple mesh objects. When we're ready to generate the meshes (which only happens in the very beginning, and later, only if a change has been made to the terrain) we iterate through every vertex in the mesh, and when we hit the limit, we create a new mesh and carry on counting.

Importantly, we make sure that for each "mesh split", we assign them to their parents, which in our case is each respective map layer.

// Create a new GameObject and attach it to the parent container.
GameObject gameObject = new GameObject(string.Format("MeshSplit_{0}", labelSuffix));
gameObject.transform.parent = _parent.transform;
gameObject.transform.position = _parent.transform.position;

We then create a new MeshRenderer component and assign a material, which uses a basic unlit shader with vertex blending (which we wrote about in our previous article on Edge Smoothing).

// Create a new MeshRenderer and assign the material.
MeshRenderer meshRenderer = gameObject.AddComponent<MeshRenderer>();
meshRenderer.material = _material;

Finally, we create a MeshFilter component and assign the relevant data to the mesh property.

// Create a new MeshFilter and set the data.
MeshFilter meshFilter = gameObject.AddComponent<MeshFilter>();
meshFilter.mesh.vertices = vertices.ToArray();
meshFilter.mesh.uv = uvs.ToArray();
meshFilter.mesh.colors = colors.ToArray();
meshFilter.mesh.triangles = triangles.ToArray();

With meshes now limited to 65,535 vertices, you can see that our rather large Soil layer is now split into 3 layers.

Split mesh

I'm sure there are lots of improvements that can be made. Later on we'll be looking at finding large cuboid segments that can be simplified into a single quad, but for now, there is so much more to do. But terrain blending is looking really nice. (Yes, I've been working on the textures.)

Terrain blending

Enjoyed this quick write up? Why not follow us on Twitter or Patreon?