OK I’ve created a list which steps I want to do. The main goal is to develop rapidly a functional RMG with all parts of generation(terrain, heroes, towns, …). It doesn’t need every feature or produce good-looking maps in the first development phases. The implemention of the RMG will be similar to the original algorithm of H3.
I want to use the internal map format of VCMI. Storing generated maps to H3M is not required for now. I’ll integrate the RMG lib into vcmiclient, therefore a specific RMG generation screen/GUI(in PreGame) is needed (like in H3) => to start/test a generated map. That functionality is experimental and disabled by default. For testing purposes the generated map is fully visible when starting the game.
That’s my current todo list:
- I want to separate map loading logic and the object representation of a map(map header,…). It simplifies/separates better the API and different map loading/saving algorithms can be supported. Mappa gets split into: CMap(the value object), CMapService(contains loading, saving, map accessing logic…)
- Have a detailed look into the internal map format. Add javadoc comments like I did for the filesystem API. Add remarks which map attributes are required/optional.
- Add RMG screen/GUI to vcmiclient/map selection. (buttons may be disabled, don’t have any functionality for now…)
- Mock map generation(with terrain, obstacles, towns…). VCMI should start that map (to find out how the internal system works) This is coded in libRMG.
Future steps(i haven’t done much research, but algorithms which I found are similar -> fractal, voronoi polygons):
- Simple templates in JSON
- Terrain gen
- Obstacles mask gen
- Town/Monsters/Mines gen
- Obstacles placement