Hey Guys, I have been using Armory3D, and have been quiet impressed with the state of the game engine.
However, I am currently developing an open-world game and was wondering if it is possible to create a mini-map of the world in armory? All previous attempts have failed unfortunatly
It’s currently really hard to do so, what I may consider impossible without making a remix of the code itself.
Nothing is impossible if you can code and dive deep in Source code of armory and kha,
Idk if you are programmer or artist, if you are artist then you will need to wait for some time until someone do create that feature.
But if you are programmer, then here how you might be able to do it
Calculate the area of your open-world game(assuming it is not infinite since you can’t map infinite world ),
create a square with kha based of area of map, size it down some time, get cooordinate of player on your open-world mesh map and create another small square on already create square and is based on co-ordinate of player on you mesh map, and adjust settings on your map
To be honest, I’d just create a 2d image by hand, based on your level, apply it to a square/circular flat mesh as a texture and then adjust the rotation / offset of the texture as the player moves.
Yeah, it’s hackish, and it’ll mean updating the image when you change the level geometery… but it’s simple and will work. The only issue I can think of is if players are somehow able to modify the level layout in the game (level editor, ability to move large scenery etc).
Well, another solution (if you need a realtime minimap that wouldn’t need updating), would be to parent a second camera exactly on top of your main camera (or object in focus), and just overlay the rendertarget from the extra camera into your viewport - Here’s a quick example based on the splitscreen example - with the right as the minimap:
Well, instead of filling half of the screen like shown, it could just be a small corner like regular minimaps, the haxe script is fairly simple: https://github.com/armory3d/armory_examples/tree/master/split_screen
That would be way to go if your game isn’t open-world and is small, since his game is open-world this would be very costly way to do it, since it would require calculations because it has 3D meshes, lighting, textures that aren’t needed at all, and could decrease performance greatly, and also since Armory doesn’t have feature for having separate renderpath for each camera, if it do than that great.
Second camera is not performant for complex scenes, you have to render a second view. Triple A games use top down view baked 2D map with overpaint.
A tool to bake a minimap from Blender wouldn’t be a bad idea.
While it’s true that it’s somewhat costly, it all depends on the scale, the quality and the purpose. If you want AAA graphics and Voxel GI then it would sure be costly, but open-world doesn’t necessarily mean complex and highly taxing on the graphics card, provided you make usage of frustrum culling and LOD.
If you’re making a fantasy game, or something like that then it would probably be overkill.
On the other hand, if you want your minimap to act like some sort of military UAV, reflect daynight cycles or have a world that is procedurally made, then baked won’t really cut it.
If you want a classic minimap (say for instance a big medieval minimap of an open world), then painting the open-world chunks/sectors and loading/unloading them as needed would probably be the way to go, as a single 8K and 16K texture would end up very taxing as well, if you don’t want it pixelated. But again, it depends on the scale of your open world, the amount of details you need and how much time you want to put into it.
Latest triple A don’t use on screen mini map, instead they use landmarks to orient player and create better game immersion.