Blight 8 Player Map in the Works


#1

We might need some optimisations in the render for this one. About 250 locations total


#2

Looks fun.

Random terrain ideas from top of head:

  1. Cliffs and ravines to act as movement constraints. Flying creatures to avoid the cliffs. Cliffs are almost identical to rivers but give some variation. Mechanically you don’t need to record hight, just treat them as walls.
  2. Surround map with coastline. This will make the map less square. It might be better to only give 2 borders a coastline, otherwise it looks like a square island.
  3. Seasons and weather could be very fun. Not important now, but interesting to think about and take into account while adding other stuff.

#3

I like the looks of a map with such distributed starting locations for the blight, rather than one central point. That would certainly make the game more chaotic!


#4

Will non-premium members be able to test this do ya think? I’m still debating on getting a lifetime membership. NP2 was a no-brainer but the jury’s still out on Blight.

I think @AnnanFay’s recommendations are spot on, especially putting a coast line around 2 or 3 of the edges and impassible mountains on the other edges. In the old Blight, you could send armies across water (albeit at a very slow pace), haven’t tried that in this version, but in order to combat the squareness of the map, you could have a cove/bay and put 2 key towns on each side, maybe even have a bridge connecting the 2. Just a thought.


#5

Yep for sure, while the game is still small we don’t want to split premium and no premium players.

When the game is larger there may be some free and premium only MP maps, but that will be a while away I think.


#6

It might be a little tricky to squeeze in some coastline. The map is already 144 1024 textures to download. I’m actually not sure the game will run on smaller computers like iPads and Phones.


#7

I’m really curious, why are you joining together the tiles into regions before the client downloads them? (I’ve not done mobile specific development)

I would create a list of required hexagonal tiles in the server and create a sprite sheet for each map containing only tiles used on that map. The map can then be stitched together on the client from the hex-tiles. You can apply the edge effect by layering.


#8

well… it’s a bit of a long story, here is a super quick summary

For a while the blight maps were made up of lots and lots of little hexes, and the terrain was various shaped blobs of .png images stacked on top of one another. (In these old maps units used to 'pop" from one hex to another about every hour. - there was no concept of being on a path between hexes)

Even now that we have the larger hexes connected with paths, each hex may have 3 or more layers stacked on top of each other to create layering. There is a base texture, the roads, then the trees on top.

With it all baked into a single texture, perhaps 10-20 draw calls just become one. We are also downloading jpgs instead of pngs which can be much smaller.

Plus, if we wanted to, we could hand paint any arbitrary amount of texture or grass or detail for basically free.

Here is what the old style maps looked like.


#9

It’s possible to do image composition on the client and store the intermediate results so you do not need to draw every asset each draw cycle. You send down all the layers and combine them on the client into the current region chunks, or similar. You can store the output of the composition as Canvas objects and draw them using drawImage.

If PNG files are too big there are ways to add alpha channels to JPEG data. A simpler approach on the same principle is to have two sprite sheets, one JPEG with all the layers and another PNG with just the alpha layer, if some tiles share an alpha layer this can be used to reduce size also . The JPEG image and alpha PNG can be combined when you draw them using globalCompositeOperation of “destination-in” or “destination-atop”

I’m not sure which is a better solution, it’s a trade off between bandwidth and computation.


#10

I’m not sure destination-atop is 8 bit alpha, just 1 bit?

Last time I looked into creating an intermediate buffer, I couldn’t create one large enough for even twice the current screen on iOS.

I would liked to have create a “back buffer” do my drawing there and when dragging the map around, pull a screen sized region from that buffer.

This would still be a good optimization because I’m currently drawing all the locations, coins, shields, units and everything else every frame.

It would be much better if I just drew everything once, into the backbuffer when you stop dragging. (mouse up).