kleiner dev blog von webfussel

DevDiary - 2D - Day #0

Premeditation of what I want to make

This is it!
My first DevDiary post!

While there’s still a poll on twitter going on to decide which engine I should use, I decided to post about my first thoughts about the game I’m going - or at least going to try - to make.

But why?

Since I’ve played computer games I was always a huge fan of games like The Settlers, Sid Meier’s Civilization and Anno.
I’ve put so many hours into The Settlers 4 and Anno 1404 I should actually be ashamed of it.

As I grew older and got a full time job the time to play games became a - pretty big - bit shorter.
So I was on the search for good city-building-and-also-resource-and-citizen-management browser games - as you can imagine - didn’t go so well.

I tried OGame. There was some kind of resource management, maybe?
I tried Ikariam. There was some kind of citizen management, somehow?
I tried - god beware - FarmVille on Facebook. I don’t want to talk about it.

Somehow, 2 years ago, I discovered Forge of Empires because of a lot of advertisement and colleagues at work playing it.

What should I say?
It was actually pretty good!… In the beginning.
Later the pay2win stuff began.

But there was one thing I despised the most about these games.
Fucking Forced PvP

God damn, I just want to collect resources, build up my small village, recruit some artisans and specialists and trade.
Why do I always have to live with this subtle feeling of disturbance I could be pillaged while I’m asleep?
I like PvP in some games - just not in those.

What should it be like?

The main mechanics sound simple at first:

  • Some focus on the skills of the villagers in different categories
    • I thought about 5 core skills like mining, woodworking, farming or so
  • You have one city to build up within a restricted area that can be expanded
    • You can have some outposts, but they’re a lot smaller and serve more of a purpose for traders to rest or something like that
  • The map should be randomly generated
    • Different biomes depending on climate and height
  • There should be different races
    • Maybe some classics like humans, orcs, elves and dwarves

One of the things that always bothered me a bit is the bigger realism in Civilization or Anno. I’ve always wanted games like these but in a more fantasy like setting.
Age of Wonders just didn’t scratch that itch for me. I would like to love Endless Legend if it wasn’t for that stupid combat system. (Yes, I understand it. No, I still don’t like it.)

Something with a big world, where you can travel and explore, trade with others, have an absolutely voluntary PvP system where you can get different benefits at the cost of risk.
All packed into a browser game.

Thoughts about randomness

While thinking about randomized map creation I thought up different ways of actually achieving some kind of randomness.
Two main ways were sticking out to me:

  • Randomness for each tile based on some natural 3d curve (like a Perlin Noise, like in Civilization)
  • Randomness to place pre created “rooms” arranged by their borders to only place fitting tiles beneath each other (like in Moonlighter or Enter the Gungeon)
random tiles placed by some kind of natural curve
random tiles placed by some kind of natural curve
rooms placed beside each other based on edges
rooms placed beside each other based on edges

Both methods are pretty good in their own sense.
If you randomize each tile you can have a very new experience each time you load up a map. You can explore a new world and nobody can tell you what exactly lies ahead.
That’s also the main problem - because in a multiplayer game this can lead to a lot of unfair starts. Some players will be benefited a lot while others know they already lost in the beginning.

If you create let’s say 100 different “rooms”, all hand crafted, but place them randomly beside each other but arranged by their borders you have a lot more control over the creation process. You can ensure everyone has the same start, but altered a bit in its layout.
But then again: You know what to expect. It’s not completely fresh each time. Some think that’s not a negative point because you can create some kind of strategies.

I guess both methods are good, and I have to think more about which one would be the right for this game’s setting.
Just to make it clear: Those to methods don’t exclude each other. You can very well have a healthy mixture of both!

Thoughts about map tiles

While playing different games over the last years with a big strategic map, I found two approaches always the most interesting

  • Square tiles
  • Hex tiles

Like with the randomness, both ways carry implications on the development and gameplay itself.
Using hex tiles is a bit more setup in the beginning. Instead of two axes (x,y) like with squares you have three axis (x,y,z) - but not in a 3D room.

Take a look at these two pictures describing the two cases.

axes in a hex tile system
axes in a hex tile system
axes in a square tile system
axes in a square tile system

If we want to select a specific hex tile we always have to consider it has a 3 part coordinate even though we’re in a 2D space. With enough preparation this should not be a problem. Actually I already did something like that before. This was an approach using the tile based randomness taking climate zones and heights into consideration. Trees are placed randomly but dependent on climate.
I also think about reusing that script with some minor adaptations.

The biggest advantage I see in hex tiles is that there is actually always a directly connected neighboring piece.
Hexagons are the most round cornered polygon to build a net without gaps and using only this tile in the same size. No wonder wasps, bees and a lot of other insects use this perfect shape.

Again, take a look at the following graphics.

neighbors in a hex tile system
neighbors in a hex tile system
neighbors in a square tile system
neighbors in a square tile system

With the hex tiles it’s very clear all neighbors are directly connected.
But what about the square tiles? Can I actually count the corners as directly? Or is it some kind of 50% connected?
I can’t tell what feels intuitive in these situations. When I let a citizen walk diagonally will he just walk the clear connections in 90° corners using 2 steps or will he use 1.5 steps by stepping diagonally?

These are the things I’ll have to consider.

That’s it

Thanks for reading!