I’m a game design student planning his next team project. We are thinking about making a real-time-strategy games along the lines of StarCraft or Age Of Empires (with very little content and only a few features of course). One of the core features will be, that users can create their own maps without having to use Unity.
Requirements:
User can create custom maps in-game or with a standalone map editor, which is shipped with the game.
Assets (buildings, units) are 3D, environment (ground) may be 2D or 3D
Ground must have different textures such as grass, leaves, mud.
Should be compatible Unity NavMesh
Unity terrain won’t work for us, because we don’t want our players to use Unity for map creation. Also it’s kind of an exercise for our team to build our own solution.
What’s a good approach to making something like this in Unity? Here are my thoughts:
Hex-Grid floor tiles + 3D asset placement on top of the flat ground. Needs a tile set with all transitions between different ground types.
Square-Grid + see above
Flat ground with brush-like painting of textures, which alpha blend into each other.
Try to copy Unity terrains features (probably too much work for our scope)
One thing I’m trying to wrap my head around is the fact, that we don’t actually need a grid for our gameplay. It only seems to me that it’s the most popular option to create maps.
In Landscape Builder we have a feature that allows users to create a map in a paint program, then apply it to a landscape (e.g. a bunch of Unity terrains). We normalize the image positions to match the landscape so we know where each position on the “map” is in the terrains. We can then blend textures, place grass or trees on the terrains according to the map colors. Your application is a little different but you could use a similar technique, replacing the paint program with your own map editor.
Big issue here - you can’t build NavMeshes at runtime. That might be fixed when Unity upgrades the navmesh, but those upgrades are in alpha and there’s no timeframe for when they will be out. And even then, it might be that Unity still stubbornly insists that they know better and we can’t build them at runtime. Who knows.
That makes level building tools that doesn’t go through the Unity editor incompatible with Navmeshes.
There’s a very popular navmesh alternative named “A* Pathfinding Project”, and while the free version of that lacks some features, I believe it gives you direct access to the navmesh, so you can build and modify it at runtime. Not quite sure - haven’t used it myself, but it’s got a good rep. If you must use Navmeshes, I’d suggest checking that out.
On transitions between tile types - we’ve had a bunch of luck with not having transition tiles, a mesh “skirt” that lies over the edge between tilesets.
On grids - grids are definitely a lot easier to work with for the end user. If you give the user a grid tool that automatically makes the things they can put into the grid pretty, that’s a lot easier for them to express their design than something where they have to “paint” the geometry.
Finally, I’d look into how other RTSs do map creation. The free version of Star Craft 2 gives you full access to the arcade, so you can create and look at maps for that. If you need some simpler inspiration, grab Age Of Empires (the first one). It has an incredibly easy-to-use map editor based on painting both tilesets and height (!) in a grid. I don’t know if it runs on modern windows computers, but I haven’t ever seen a mod tool that was as simple to make stuff with.
Civ isn’t real time at all, are you thinking of something else?
Thanks for that information! Actually I’m probably fine with using the A* Project, which I already know.
I’m getting closer to the idea of tiles, because of the factors you’ve mentioned. The Star Craft Editor does really awesome things, but the approach is probably just the result of a big team working creating many complex systems.
Yes, I meant to write Age of Empires. ^^ Thanks for the tip about its map editor. I’ll try to get it running again. That might be much closer to what we can actually build ourselves.