Extended heightmaps

Got an idea for OpenTTD? Post it here!

Moderator: OpenTTD Developers

Alberth
OpenTTD Developer
OpenTTD Developer
Posts: 4763
Joined: 09 Sep 2007 05:03
Location: home

Re: Extended heightmaps

Post by Alberth »

As far as I am concerned, the project is not dead, just stalled.

I wrote a "write tar file" patch a long time ago, and Terkhen started with generic code for handling layers of things (iirc). Unfortunately, the world is full of nice things to do, so this one was pushed to a lower priority.
If you want to work on it, that would be great.
Wahazar
Tycoon
Tycoon
Posts: 1451
Joined: 18 Jan 2014 18:10

Re: Extended heightmaps

Post by Wahazar »

I have not read this thread before, and impatiently I wrote quick and dirty tool to import map from external .txt files, instead of bitmaps:
http://www.tt-forums.net/viewtopic.php?f=29&t=70846
Objects (towns, industry, signs) works fine, however defining spatial objects (rivers, forests etc) in txt files is not very convenient
(by now, instead of defining river tiles, I'm using automatic generation with river beds used to control their flow).
Hybrid bitmap+object txt file format, described by Terkhen, appear to be much better idea, hope that this idea will turn into working code.
It would be great if not only import, but also export is possible, to have opportunity to recreate old maps.
Formerly known as: McZapkie
Projects: Reproducible Map Generation patch, NewGRFs: Manpower industries, PolTrams, Polroad, 600mm narrow gauge, wired, ECS industry extension, V4 CEE train set, HotHut.
Another favorite games: freeciv longturn, OHOL/2HOL.
Gigigonzalez
Engineer
Engineer
Posts: 91
Joined: 12 Jun 2014 14:24

Re: Extended heightmaps

Post by Gigigonzalez »

Yeah its really sad that the project is on total hold ;(

I wonder if the guy working on this hasnt simply given up. i found some diff files on some openttdcoop ftp i think but it was last updated somewhere in 2013
Terkhen
OpenTTD Developer
OpenTTD Developer
Posts: 1034
Joined: 11 Sep 2008 07:32
Location: Spain

Re: Extended heightmaps

Post by Terkhen »

Gigigonzalez wrote:Yeah its really sad that the project is on total hold ;(

I wonder if the guy working on this hasnt simply given up. i found some diff files on some openttdcoop ftp i think but it was last updated somewhere in 2013
If no one has been updating the thread, you can assume that the project is currently not being worked on. Alberth summarized the status of this project earlier on this thread.

I welcome anyone interested in this project to continue it where I stopped. My latest patch queue can be found at the following link, although I don't know if Alberth or anyone else did any further work on it. I have not been following OpenTTD development closely so I don't know if it will be very complicated or not to update this queue against current trunk.

http://devs.openttd.org/~terkhen/patches/scenario/

The proposed design can be found at the following link. Besides the discussion that can be seen in this thread, other developers helped me in detailing and perfecting it, so IMHO it should be the basis for any future development.

http://wiki.openttd.org/Terkhen/Scenario_format

I'll be around to provide advice from now on. I just suscribed to this thread in order to not miss any new posts, and I can also be contacted at the #openttd IRC channel.
SteveF2
Engineer
Engineer
Posts: 10
Joined: 28 Jun 2019 20:15

Re: Extended heightmaps

Post by SteveF2 »

This looks like a really neat idea; it would be great to be able to create a "scenario" and let the user choose the NewGRFs to use and the map size they want to play on.

I've taken the code from http://devs.openttd.org/~terkhen/patches/scenario/ and made the few small tweaks needed to apply the patches to master. I've then gone ahead and extended it to support loading extended heightmaps from .ehm files (really just tar files, as described on the wiki at http://wiki.openttd.org/Terkhen/Scenario_format); so far only the height layer and the town layer are supported.

The code can be seen at https://github.com/ZornsLemma/OpenTTD/t ... -heightmap. There are some (not very exciting) sample/test extended heightmaps in the eh-test directory in that repository. If anyone would like to give this a try please do, although the code is beta quality at best and while it works for me it may fall over horribly with inputs prepared by anyone else.

You can open an extended heightmap by choosing "Play heightmap" from the main menu and then choosing a .ehm file, or by starting the scenario editor, choosing "Load heightmap" and then choosing a .ehm file from there. There's currently no support for saving as an extended heightmap.

The text files mostly follow the spec on the wiki but have a few small discrepancies; the main ones I can think of are:
  • There's currently no default for the 'file' property; you have to specify this explicitly.
  • The town layer in metadata.txt is introduced by '[town_layer]' not '[town_file]' as per the spec (an oversight, easy to fix but I won't do it just now)
  • The town 'name' property is not optional
  • Towns have a 'size' property which takes values small/medium/large/random instead of a 'buildings' property; I couldn't see how to implement the 'buildings' property.
  • You can specify a numeric 'radius' property in the [town_layer] section of metadata.txt, and you can override it for a specific town with a 'radius' property in the town file. This determines how far from the specified posx/posy position the code will allow the town to be created if the specified position isn't suitable. It defaults to 5; you can specify 'radius=0' to disable this and only allow the town to be created at the exact specified position.
You might find it helpful to look at the examples/tests in the eh-test directory; the component files are also present in the repository in subdirectories of the eh-test directory, or you can just unpack the .ehm files with something like "tar xvf vg1.ehm". If you hit problems please post your .ehm file here and I'll take a look.

I'd appreciate it if someone familiar with the OpenTTD code could give this a bit of a review, particularly the comments containing the string "EHTODO:" which indicate what I think are the main potential problems. It would be good to know if the basic approach I've taken to extending the earlier work is sound before putting any more effort into this. The individual commits on the branch are just me talking to myself as I worked on the code; anyone interested in reviewing this should just look at the diff between the last commit on my branch and master.

I should say that the earlier work was really helpful in getting this started; I have very little prior experience with the OpenTTD code and I'd have been struggling to find how to plumb my changes in properly without it.

Cheers.

Steve
Alberth
OpenTTD Developer
OpenTTD Developer
Posts: 4763
Joined: 09 Sep 2007 05:03
Location: home

Re: Extended heightmaps

Post by Alberth »

For developer attention you should probably open an issue or a pull request in the openttd project. Also visit the #openttd irc channel, it's simpler and faster to communicate that way.
I worked on this too back in 2017 apparently, but moved to generalizing tar handling in the game and drowned :(
Have been mostly inactive since and lost my commit access.

However, I still have some patches that may be of use to you:

Code: Select all

@  22495[170_HACK_test_save.patch,qtip,tip]   412579e5c14e   2017-01-01 14:01 +0100   alberth
|    bool SQVM::CreateClassInstance(SQClass *theclass, SQObjectPtr &inst, SQObjectPtr &constructor)
|
o  22494[1_load_scenario2.patch]   c7243449ebca   2017-01-01 13:59 +0100   alberth
|    [mq]: 1_load_scenario2.patch
|
o  22493[1_hack_load_scentar_crashing.patch]   42c8bff73e28   2017-01-01 13:59 +0100   alberth
|    [mq]: 1_hack_load_scentar_crashing.patch
|
o  22492[1_load_scenario_code.patch]   b055a59641b3   2017-01-01 10:11 +0100   alberth
|    imported patch 1_load_scenario_code.patch
|
o  22491[1_split_tarfile_processing.patch]   e12dc924a93b   2017-01-01 10:11 +0100   alberth
|    imported patch 1_split_tarfile_processing.patch
|
o  22490[160_hacking_save_to_honour_sct.patch]   6e82785ad567   2016-12-31 22:41 +0100   alberth
|    imported patch 160_hacking_save_to_honour_sct.patch
|
o  22489[150_add_saving_scentar.patch]   45c200562b5e   2016-12-31 22:41 +0100   alberth
|    imported patch 150_add_saving_scentar.patch
|
o  22488[140_add_scentar_fiostype.patch]   e4a230f4b219   2016-12-31 22:41 +0100   alberth
|    imported patch 140_add_scentar_fiostype.patch
|
o  22487[130_fios_gui_save_dft.patch]   325945e2186d   2016-12-31 22:41 +0100   alberth
|    imported patch 130_fios_gui_save_dft.patch
|
o  22486[120_screenshot_dft.patch]   740bb396f199   2016-12-31 22:41 +0100   alberth
|    imported patch 120_screenshot_dft.patch
|
o  22485[110_add_scenario_save.patch]   abe41ee141ee   2016-12-31 22:41 +0100   alberth
|    imported patch 110_add_scenario_save.patch
|
o  22484[100_improve_screenshot.patch]   0446481c2487   2016-12-31 22:41 +0100   alberth
|    imported patch 100_improve_screenshot.patch
|
o  22483[090_prepare_screenshot_filehandling.patch]   19e454005146   2016-12-31 22:41 +0100   alberth
|    imported patch 090_prepare_screenshot_filehandling.patch
|
o  22482[080_add_tarfile_writer.patch]   d8d910221723   2016-12-31 22:41 +0100   alberth
|    imported patch 080_add_tarfile_writer.patch
|
o  22481[070_add_tar_format_writer.patch]   c38a13e4beba   2016-12-31 22:41 +0100   alberth
|    -Add: Tar format writer class
|
o  22480[060_write_ini_as_stream.patch]   68094efbeebd   2016-12-31 22:41 +0100   alberth
|    -Codechange: Write config file through an output stream
|
o  22479[050_split_write_ini_file.patch]   2a97ab991e7e   2016-12-31 22:41 +0100   alberth
|    -Codechange: Split writing the INI file in file creation and file renaming.
|
o  22478[040_screenshot_changes.patch]   efc44334d95c   2016-12-31 22:41 +0100   alberth
|    -Codechange: Use the proxy class to write images.
|
o  22477[030_filewriter_class.patch]   0993461da34f   2016-12-31 22:41 +0100   alberth
|    -Add: Proxy class that can act as destination for an output stream.
|
o  22476[020_unglobalize_screenshot_formats.patch]   3ef5fa07f0a3   2016-12-31 22:41 +0100   alberth
|    -Codechange: Remove _num_screenshot_formats, reduce scope of _cur_screenshot_format.
|
o  22475[1_document_tarfile_datastructs.patch]   42a67323cad9   2016-12-31 22:41 +0100   alberth
|    imported patch 1_document_tarfile_datastructs.patch
|
o  22474[1_remove_unused_function.patch]   646b6239ffe0   2016-12-31 22:41 +0100   alberth
|    imported patch 1_remove_unused_function.patch
|
o  22473[010_squirrel_compile_fix.patch,qbase]   c9b28abd08f0   2016-12-31 22:41 +0100   alberth
|    imported patch 010_squirrel_compile_fix.patch
Patches near the bottom are more likely to be of use than patches near the top, where near and above revision 22490 looks like major crashy WIP.

No idea if any of this is stlll relevant or mergeable at all. IT's in Mercurial, so first step would be to move it all to Git. Some of it looks like it could become a separate pull request.


Edit: Created a branch in https://github.com/Alberth289346/OpenTT ... o-tarfiles for the patches up to 22489, except the last patch has no road support anymore, as we now have road-types so my code was obsolete. 22490 and higher moves to loading tars, which I eventually got stuck, so likely nothing useful for you there. Code compiles, but I didn't actually try to run the code again.
Last edited by Alberth on 21 Jul 2019 15:25, edited 1 time in total.
Being a retired OpenTTD developer does not mean I know what I am doing.
User avatar
jfs
Tycoon
Tycoon
Posts: 1750
Joined: 08 Jan 2003 23:09
Location: Denmark

Re: Extended heightmaps

Post by jfs »

You should make this a draft pull request for master. GitHub's draft feature on pull requests is exactly for the kind of finishing up and getting feedback on a patch, this may need.
SteveF2
Engineer
Engineer
Posts: 10
Joined: 28 Jun 2019 20:15

Re: Extended heightmaps

Post by SteveF2 »

Thanks to both of you for the advice.

Alberth - I've had a quick look over your code and it looks like it might well be useful when/if I get to the point of trying to support saving an extended heightmap from OpenTTD, so I'll come back to it then and take a look in more detail. Thanks for this, it could well reduce hair-pulling later on, and I appreciate you taking the time to put it in git for me!

I've opened draft pull request https://github.com/OpenTTD/OpenTTD/pull/7664 for this so I'll wait and see if anyone is interested in reviewing it there.

I don't normally use IRC (I think I tried it once about 20 years ago and found it confusing and a bit intimidating, though that was some general chat channel not one for a particular project) but if someone is particularly keen to discuss this with me we could probably arrange a time to meet up on there for a chat if that's easier than exchanging comments on the pull request or whatever.
Post Reply

Return to “OpenTTD Suggestions”

Who is online

Users browsing this forum: Google [Bot] and 5 guests