A downloadable asset pack

Buy Now$10.00 USD or more

This is a set of lovingly hand-painted 2D terrain tiles centered around the theme of rivers, coastlines, and sea variations suitable for a videogame overworld, strategy game, boardgame-like visuals, or your next RPG campaign! 

In this set you will find:

  • 3 new types of water tile x 4 variations each (lake, calm ocean, seamless calm ocean) = 12 total
  • 15 water-themed feature tiles (bridges, islands, harbor, shipwreck, mountain-river connections)
  • 38 river tiles
  • 122 coast tiles (including coast variations, river connections, amalgamated coast-corner pieces)
  • 3 new "below" tiles for underwater/land transitions under coastlines
  • all tiles are painted at 256x384 pixels so that trees, hills, and mountains can overlap the tiles behind 

All assets are included as individual transparent-background PNG files. The base tile size is 256x256 plus vertical overlap. Decor sprites are of arbitrary size, but generally smaller than the tiles.

Usage

These square-format terrain tiles are intended to be drawn so that tiles in rows lower on the screen are drawn overtop of tiles in rows higher on the screen. This will ensure that trees, hills, and mountains will appear to stand out.

These coastlines and rivers assume you are using a square grid rather than a staggered (hex-style) grid.

Rivers & Coasts binary codes

(This section is relevant if you want to use code to assemble rivers rather than doing it by hand.)

The river tiles are named using a binary code of four digits representing the cardinal directions starting from north (up) and moving clockwise around the tile: NORTH, EAST, SOUTH, WEST. A "0" is a direction with no river, a "1" is a direction with a river. So if a river flowed on an east-west axis, it would be called "river0101" followed by a dash and another number which represents the sprite variant, eg. "river0101-00.png" is variant 00 for river0101.

The coast tiles use a similar system where a 1 is land and 0 is sea. So, starting from a sea tile, you have land to the north and to the east, you would use "coast1100-00.png" or "coast1100-01.png". Coast tiles can be combined with river riles, so if this same sea tile had a river flowing into it from the north, it would be called "coast1100-river1000-00.png"

Coast corners are drawn on a separate layer (or else the number of tile variation sprites would explode). Coast corners use a similar four digit directional code much like coasts, but instead of NORTH, EAST, SOUTH, WEST the digits refer to NORTHEAST, SOUTHEAST, SOUTHWEST, NORTHWEST. It's the same cardinal direction system, just offset 45 degrees. So given this, having placed our coast that has land to the north and east, let's say it has land to the southwest - then we will draw another tile in this space using "coastCorner0010-00.png" or "coastCorner0010-01.png".

Hopefully that's all clear! It's a little complex at first, but if you approach the problem systematically you'll see how it all works. 

Changelog

  • 1.0: 2021 April 29
    • First Release
  • 1.0.1: 2023 January 13
    • Not a real update because there isn't really new content, but I've updated the tile samples distributed with this set, rewritten the readme file, and adjusted marketing images.

Terms

  • You can use these to make a free or commercial video game, printed board game, or similar media project.
  • You can modify and remix these icons to use in your projects.
  • You can't give them away on their own, sell them on their own, or sell them in another asset pack

Purchase

Buy Now$10.00 USD or more

In order to download this asset pack you must purchase it at or above the minimum price of $10 USD. You will get access to the following files:

Tile Rivers Coasts Seas 1.0.1.zip 21 MB

Comments

Log in with itch.io to leave a comment.

is there a version where the tiles are creating seemless surface? (the tile borders are not visible at least not obvious)

Unfortunately, no. 

I'll explain: doing a seamless terrain style would require a re-design of the basic assumptions of the set, or a ton of additional asset requirements (by a factor of more than 2, at the very minimum). To avoid that, I could draw all basic land as the same biome - but that's contradictory to having all the deserts, marshes, snow, etc, or I would have to create transition edge sprites for *all* basic terrain types (and there are an awful lot), ...or I'd have to redraw all terrain types as seamless textures (plus variations?) while unloading transition effects onto the graphics coding side as some kind of shader (then I'd still have to draw edge transition masks, probably).

Basically, in starting these sets, I made the decision that they had to be tiles that could be slotted together easily as a what-you-see-is-what-you-get sort of system (and the coasts/rivers complicate this greatly, exposing the dangerous limits of trying to add very specific effects to a very generally-oriented tile system). To do something seamless would require starting from the beginning while prioritizing a different design goal.

Sorry!

These look fantastic for like a world map or something.
Any plans to make them connect seamlessly?

(+1)

Thank you!

As for your questions: that is, ah, non-trivial to make work between different biome types. It's like, how do you transition from grass to dirt, from dirt to mountain? You could just do an alpha fade, but that looks bad. So some kind of painted alpha mask might be needed, or unique borders per biome, maybe. I have suggested people use "patches" that cover just the edges, and that kinda works, but it's a bit of a crude solution. 

Anyway, seamless terrain across multiple biomes is a problem that requires a bit of thought because there are multiple ways to handle it AND I'd have to redraw a version of all the tiles, AND, worse, I'd have to figure out how to split these new assets into assets - do I do new packages? Add them to old ones? I'm not sure.

Also, would making a bunch of assets which are incompatible with the old ones, or supersede them, be worth the time required? It's not clear.

So, TLDR: I have been thinking about it, but there's no easy and obvious approach.