{"action":"created","issue":{"url":"https://api.github.com/repos/SFTtech/openage/issues/65","labels_url":"https://api.github.com/repos/SFTtech/openage/issues/65/labels{/name}","comments_url":"https://api.github.com/repos/SFTtech/openage/issues/65/comments","events_url":"https://api.github.com/repos/SFTtech/openage/issues/65/events","html_url":"https://github.com/SFTtech/openage/issues/65","id":47329266,"number":65,"title":"Terrain generation","user":{"login":"TheJJ","id":673543,"avatar_url":"https://avatars.githubusercontent.com/u/673543?v=3","gravatar_id":"","url":"https://api.github.com/users/TheJJ","html_url":"https://github.com/TheJJ","followers_url":"https://api.github.com/users/TheJJ/followers","following_url":"https://api.github.com/users/TheJJ/following{/other_user}","gists_url":"https://api.github.com/users/TheJJ/gists{/gist_id}","starred_url":"https://api.github.com/users/TheJJ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TheJJ/subscriptions","organizations_url":"https://api.github.com/users/TheJJ/orgs","repos_url":"https://api.github.com/users/TheJJ/repos","events_url":"https://api.github.com/users/TheJJ/events{/privacy}","received_events_url":"https://api.github.com/users/TheJJ/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/SFTtech/openage/labels/c++","name":"c++","color":"000000"},{"url":"https://api.github.com/repos/SFTtech/openage/labels/just%20do%20it","name":"just do it","color":"3fe5bf"},{"url":"https://api.github.com/repos/SFTtech/openage/labels/nice%20new%20thing","name":"nice new thing","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2014-10-30T21:17:06Z","updated_at":"2015-04-29T09:46:28Z","closed_at":null,"body":"A deterministic infinite terrain generation algorithm is needed, comparable to Minecraft.\r\n\r\nThis does of course not replace the random map scripts which will be supported someday.\r\nPlain grass terrain looks pretty boring, this would be awesome.\r\n\r\nFor each chunk, it's tile generation has to be deterministic! You could use parameters for the generation function which could be merged to some initial seed value.\r\n\r\n<bountysource-plugin>\r\n---\r\nWant to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/5666681-terrain-generation?utm_campaign=plugin&utm_content=tracker%2F371436&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F371436&utm_medium=issues&utm_source=github).\r\n</bountysource-plugin>"},"comment":{"url":"https://api.github.com/repos/SFTtech/openage/issues/comments/97372598","html_url":"https://github.com/SFTtech/openage/issues/65#issuecomment-97372598","issue_url":"https://api.github.com/repos/SFTtech/openage/issues/65","id":97372598,"user":{"login":"detrumi","id":5758008,"avatar_url":"https://avatars.githubusercontent.com/u/5758008?v=3","gravatar_id":"","url":"https://api.github.com/users/detrumi","html_url":"https://github.com/detrumi","followers_url":"https://api.github.com/users/detrumi/followers","following_url":"https://api.github.com/users/detrumi/following{/other_user}","gists_url":"https://api.github.com/users/detrumi/gists{/gist_id}","starred_url":"https://api.github.com/users/detrumi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/detrumi/subscriptions","organizations_url":"https://api.github.com/users/detrumi/orgs","repos_url":"https://api.github.com/users/detrumi/repos","events_url":"https://api.github.com/users/detrumi/events{/privacy}","received_events_url":"https://api.github.com/users/detrumi/received_events","type":"User","site_admin":false},"created_at":"2015-04-29T09:46:28Z","updated_at":"2015-04-29T09:46:28Z","body":"A good starting point would be parsing the .rms files which generate the random maps (they can be found in the `Random` folder in the original game folder). Most of the commands used there could be extended to infinite maps, though we obviously want normal maps to work as well. I'd like to gradually implement the commands found in the .rms files, and compare the resulting maps with the original game.\r\n\r\nWe now have a perlin noise generator in python, and the RNG in c++. Where should the map generation itself live? Maybe parse the .rms files in python, and generate the map itself in c++?\r\n\r\nSome other points:\r\n- There are [some resources](http://dgdn.net/dgdn.php?id=3&cat=article_pages&heading_ID=1&cat_ID=3) on random map generation in AOE2, but that's mainly on the scripting aspect, and not how the game uses these scripts to generate the map. Does anyone know of more documentation on the map generation?\r\n- If we want to extend the random map scripts with new commands, we might want to create our own format for it, but I'm not sure we'd need that. Also, if we get our own format, I'd prefer for the game to be able to still read .rms files, and not forcing the script maker to convert it first somehow, to make it easier for script makers.\r\n- For easy map generation testing, it would be very nice to be able to get a screenshot of the map without starting the game, but this is probably very hard. The original game also has a (kinda bad) full-map-screenshot utility with `Control+F12`.\r\n\r\nSo, let me recap my main questions:\r\n- Where should the code go? Parsing in python, and generation in c++?\r\n- Any known documentation on AOE2 map generation?"}}