Dev Diary PMC Ukraine Melitopol ArmA 3 Terrain

This is dev diary for PMC Ukraine Melitopol ArmA 3 real world data terrain by PMC.

We have been writing development or developer diaries to PMC Tactical Forums for two decades, these addon dev diaries are spread to many forum topics. One example PMC Tactical Forums: Vietnam: The Experience Neverending development diary 2007-10-13. On 2020 things changed in Farming Simulator 19 editing community when we started to write detailed dev diaries as web html pages because we had no forum, now in 2022 the same dev diary story telling continues in ofp/arma community.

These dev diaries are my current on the fly thoughts and emotions, if I feel shitty I will clearly state that. I try to avoid it but sometimes there might be hilarious profanity rants when things don't go exactly as I planned, so if you are "offended" by few curse words you probably should stop reading now Smiley ;)

Also these dev diaries are written to many addon projects and sometimes repeating the same lines of text or taking exact same screenshots feels stupid so there might be text just listing boring "I did XYZ and then ZYX" type of info without further details. And remember; this is NOT a tutorial, this is entertainment Smiley ;)

Time stamps are Universal Time Coordinated (UTC).

2022-02-28 Project Started

2022-02-28T06:23:00Z This page created, project started.

2022-02-28T06:28:00Z Global Mapper project created, UTM 36N projection set. We are go.

Got user created feature done, then KMZ exported and at this point I switched back to PMC Ukraine Kharkiv editing which just finished global mapper exporting satellite mask images Smiley :)

2022-02-28T09:13:00Z Terra Incognita freed from PMC Ukraine Kharkiv downloads, now starting to download Melitopol satellite imagery Smiley :)

And now we wait.

2022-03-01T12:46:00Z Or not, there are plenty of small edits to do while waiting for satellite imagery to be downloaded Smiley :)

Did the GEBCO ocean seabed ASCII Grid heightmap.asc edits, luckily I had clear step by step instructions, so it was simply going through them and it was done. Never underestimate the power of knowledge.

Then inspected terra incognita downloaded satellite imagery tiles, no Black Tiles present. But this satellite source is really bad, there was two huge cloud areas and so many smaller cloud puffs. Can be fixed with GIMP clone stamp tool, but man it will be painful.

2022-03-01T13:40:00Z Hum guess I got carried away once again... I cannot stop, when I have editing tools open in front of me its like red flag to a bull, I'll just charge right in Smiley :)

So yeah I did bunch of stuff, imported OpenStreetMap (OSM) shape files, reduced roads even though they were already 8600 to begin with, then cropped and exported OSM shapes. Then... umm something.

2022-03-01T13:44:00Z Currently adding colors to OSM shape areas. Always tedious boring task as its exactly the same for each terrain and requires so much copy pasting and number typing. I really need to figure out if these values can be just copy pasted into the GMW file directly.

2022-03-01T13:53:00Z Finished assigning RGB colors to OSM shape areas.

2022-03-01T13:54:00Z Global mapper started to export satellite texture in 8 x 8 grid tiles. This will take probably 2h 30min at least, now we wait and do something else in the mean while...

2022-03-02T04:11:00Z Back to Melitopol, global mapper exported preview-arcgis-17-level.png satellite image.

Then started to inspect satellite texture tiles in GIMP and to clone stamp brush off clouds.

Satellite texture tiles with clouds: A4, A3, A2, A8, A7, A6, A5, B3, B8, B7, B6, C8, C7, C6, D8, D7, D6, F6, G7, G6, H6

Satellite texture tiles with coastline: F8, G4, G8, G7, H4, H7, H6, H5

Full ocean tile: H8

2022-03-02T07:22:00Z Finished GIMP clone stamp brushing clouds off... then started to global mapper export satellite mask in 8 x 8 grid tiles.

While global mapper was doing its thing, I went into paint the coastline and the one full ocean satellite texture tiles.

2022-03-02T08:59:00Z Finished GIMP painting coastlines.

2022-03-02T11:57:00Z Back to editing after a nap and a lunch break.

Had some odd issue with ukraine melitopol global mapper project, the ASCII Grid heightmap.asc header coordinates did not match when I tried to transform OSM areas, they were not in 200,000 range. So I exported heightmap.asc again to re-check that I got the correct coordinates.

Unfortunately it looks like, I do. Hmm so must be the shape files themselves broken then, hmm could this be the mykolaiv or which ever terrain was it where I exported shape files to a wrong directory hmm. Okay so I need to re-export all cropped_*.shp OSM shape files.

Alright it was the shape files, after exporting them from melitopol project they started to match 200,000 coordinate range. Okay issue sorted.

Need to be careful when running two or more global mappers at the same time as it reads the last used dir from windows registry instead of the actual project you are using.

2022-03-02T13:13:00Z Oops, lost track of time and forgot these dev diary writings while editing Smiley :)

So right now Terrain Builder started to import satellite mask. Before this I Terrain Processor generated OSM obj_forest shape fores tree line objects, smoothed roads heightmap.asc, hmm what else, forgot to write bunch of stuff.

Once satellite mask was imported I saw that my ocean RGB color was ... well off, only couple of tiles had them and those that did also messed up the "ground" mask like trees completely. Decided to re-export satellite mask from global mapper, run it through GraphicsMagick and re-import those ocean tiles.

I need to study the tool pipeline some more to get handle on ocean/coastline tiles.

2022-03-02T14:06:00Z Finished and then started to import satellite texture tiles.

2022-03-02T14:42:00Z Terrain builder generate layers process started, this will take couple of hours I believe. So now I'm switching to edit some other terrain in the mean time.

2022-03-03T05:15:00Z New editing day has started, terrain builder up and searching for airfields.

Terrain builder created polyline for the only airfield runway in this terrain, exported airfield_runways.shp shape file.

Used L3DT to import heightmap.asc and L3DT_texture_map.png, then in 3d sapphire more using heightmap tools smoothed out the airfield runway so arma3 aircrafts can easily operate there. Saved project, exported ASCII Grid heightmap.asc again and imported it back to terrain builder.

Then did the new roads.shp terrain builder shuffle, import/export because my new 2020 global mapper install somehow breaks roads.shp shape files for arma3, I have no idea why, doing that terrain builder shuffle fixes it.

2022-03-03T05:53:00Z Then it was pboProject binarization time.

2022-03-25 Ocean Editing

2022-03-25T15:00:00Z New editing day has started, just moments ago I released PMC Ukraine Kyiv and now jumping to edit the next terrain in queue, no time to waste.

I got three bug/issue reports; south central ocean northern most tip is 0m elevations and not painted with Ocean Satellite Texture pattern and airfield class names is missing.

Okay so the first heightmap issue might be interesting to fix, requires L3DT editing. The second satellite texture issue, if I already deleted the global mapper export PNGs, then it takes couple of hours to re-export them and definitely will be overnight task.

2022-03-25T15:39:00Z Checked global mapper dir and, well you can guess... no work files present, oh well started to export satellite texture. This will take hours, if I am really lucky I get to start tonight before going to bed, although usually at that last 16th hour I am in zombi mode and have not much motivational editing energy left.

But its now exporting and in the mean time I'll fix everything else I can on the terrain builder size, starting from the easiest task which is the config.cpp class names{} err class for airfield location name.

2022-03-25T15:43:00Z Done, airfield class names{} is added, simple copy paste job. Global mapper estimated finish: 1826hrs and that is usually very accurate. Hmm quick check on my phone alarm timers and nope, not going to make it before my bed time, but lets proceed one moment at the time, who knows maybe I have one of those insomnia days that I have plenty of energy left in three or so hours.

Used L3DT to load melitopol project up, edited the coastline for the northern most ocean "fingertip", L3DT wise it looked good, dunno how it actually looks in arma3.

Started terrain builder and loaded the project up, then imported this new L3DT exported heightmap.

2022-03-25T16:06:00Z At this point I cant do anything else, no other bugs/issues are reported and it takes hours for global mapper to finish exporting so I can paint the northern most coastline "fingertip".

Going to close melitopol editing operations for today, maybe I could squeeze in some other editing progress on other projects or even PMC Tactical web work, heck I could basically already do melitopol web pages, hmm maybe, but tomorrow I'll continue editing the coastline satellite textures and we'll go from there.


2022-03-26 Oceans of Satellites

2022-03-26T04:42:00Z New editing day has started, after waking up took my time to do computer chores and eat days first meal, now we are getting started with editing. Yesterday just almost minutes before I crashed to bed global mapper finished exporting sat_*.png satellite texture images in 8 x 8 grid tiles.

Started loading satellite texture tiles into GIMP, until I realized that nah why go through everything when I can just check the exact file name from terrain builder.

Got the sat_F4.png painted in ocean seabed bottom texture pattern, saved into XCF on Satellite.Texture/ dir, then copied graphicsmagick and BPW (PGW world file) bat files into the project dir, ran the BPW one and graphicsmagick Darken Merge Picturemap Satellite Texture Tiles.

Once done refreshed the Sat_Tex_F4.bmp tile in terrain builder, started L3DT texture map generation graphicsmagic bat and then started terrain builder generate layers.

PMC Ukraine Melitopol Terrain ArmA 3 Screenshot

Uh oh this takes another few hours. So long process to fix such an small issue. Oh well, gotta get it done.

Maybe I'll edit some other terrain or do other computer chores while this process is running.

2022-03-26T07:07:00Z Terrain builder finished generating layers. Then exported WRP.

Then moveObject re-pathed WRP and started Convert Layers PNG to PAA Fast bat to process some layer images.

2022-03-26T07:37:00Z Started pboProject binarization (PMC Editing Wiki: search "binarize"). Hopefully all new edits are in heh.

2022-03-26T08:14:00Z Binarization finished.

On the in-game arma3 test right away realized that forgot to update picturemap_ca.tga (ArmA 3 Terrain User Interface) before binarizing, OK that is a easy and quick fix. Further checking shows that the ocean coastline "fingertip" is not exactly pretty, but guess it will have to do for now.

Also towards west found another river which is flooded in arma3, that has to be fixed, how the satellite texture looks, I'll just set it to 1m elevation (dry ground level) to make it simple. It would be way beyond the scope of this project to start fine tuning every other heightmap grid cell to absolute perfect elevations for such river type location. Just not worth it.

But yeah this means yet another binarization 30-45min or how long it took anyways, oh well the sooner I start the sooner its finished Smiley :)

Below screenshot shows L3DT heightmap view, the red outline is coastline, kind of difficult to see but "inside" the red line elevations are below 0 meters or so. I need to fix those "pixelated areas" in east and a little bit on the main river coastline east side as well.

PMC Ukraine Melitopol Terrain ArmA 3 Screenshot

Man do I hate working with L3DT 3D sapphire heightmap texture mode as it doesn't work properly, you have to hammer spam the brush strokes thousand times so it would "stick", just unbearable situation for editing. Why do we have all these shitty tools I don't get it Smiley :(


All fixed up:

PMC Ukraine Melitopol Terrain ArmA 3 Screenshot

Started terrain builder, imported new L3DT edited heightmap, then rebuilt terrain, removed the heightmap layer, exported WRP and saved project.

Moved new global mapper exported and graphicsmagick converted images to terrain builder source dir, then moved the picturemap_ca.tga into pmc_ukraine_melitopol_data\ addon dir.

2022-03-26T08:47:00Z Started pboProject binarization, again. Hopefully I'm now binarizing the initial release version Smiley :)

Oh and its my lunch time, perfect! Smiley :)

2022-03-26T09:15:00Z Feeding time over, binarize is still chewing its latest meal, I'll wait.

2022-03-26T09:27:00Z Binarization done.

In-game check shows that well yeah, for picturemap_ca image to look nice I have to export the GIMP XCF edited satellite texture tile images into global mapper dir before running graphicsmagick bat which will create picturemap_ca.tga among other images. Right, totally forgot about that one. Hmm wonder if graphicsmagick could read GIMP XCF files, that would speed it up a lot.

At least the heightmap looks good now on mapview (M).

PMC Ukraine Melitopol Terrain ArmA 3 Screenshot

Checking in-game I realized the vegetation is still the old Terrain Processor TPP Templates settings with small trees and no bushes and rocks. Hrr, I thought those got done already... but then again I've been doing these terrains for days, I am pretty much spammed with "it was done" recollections.

Oh well one more binarization in the horizon, oh my Smiley :)

However now I'm going to add specific tool pipeline task for this, so this mistake wont be repeated again in these ukraine projects.

Also road smoothing is missing now, so apparently the current L3DT project heightmap doesn't include it, OK no biggie, can easily run it through terrain processor.

The main coastline "fingertip" in the south which I've been fixing for a while (it feels like), still has some 0 meter elevations on the eastern bank, ARGH! Smiley :(

These arma3 water coastline elevations drive me nuts Smiley :(

I absolutely need to come up with a proper tool pipeline method to handle all coastlines. Something like mass set all elevations below 1m to 1m across the whole heightmap, no matter coast or not, anything less of 1m and ZOC! it will be set to 1m, no questions no fuss. Then I would use the ocean coastline tiles painted in GIMP, use them as mask, import to global mapper and generate shape file out of them which is all the water. Then use water shape to set elevations to -1m and only after that run the GEBCO ocean seabed heightmap data into it... or something.

I know those first two steps will work, but dunno how bad result is the GEBCO step then, but in theory it should not break anything into the stupid 0m default SRTM elevations at least. Hmm maybe I could verify the GEBCO heightmap before using, dunno.

But overall, I am done playing mickey mouse games with L3DT, it is just waste of time to try to use that piece of shit tool for coastlines, all you get is frustration (as explained above).

Yeah I need to start documenting this new coastline tool pipeline and get it into play, I think there is at least one major coastline terrain coming up soon (berdyansk) and then all the taiwan terrain coastlines, oh wow that is hundreds of coastline kilometers.

For now though, I've wasted all this time working with L3DT for the elevations so I'm going to do ONE MORE editing session trying to fix the 0m coastline, in fact I'm going to run PMC Heightmap Clipper into the current heightmap before importing it to L3DT, it should fix all those useless ugly 0m elevations.

Used PMC Heightmap Clipper on the latest heightmap ASCII Grid ASC file, then imported it to L3DT.

Terrain processor finished generating new objects (oh yeah I copied all those files in, yadi yada heh).

PMC Ukraine Melitopol Terrain ArmA 3 Screenshot

Total of 2.730 million objects. Not too bad, lightweight object setup.

Was looking around in L3DT and ... its a no go, I have NO FUCKING IDEA where the 0m elevation parts should have been, but then again they are fixed in PMC Heightmap Clipper. This is still so useless to try to fix coastline in L3DT. You simply cannot see "what is where", so I'm going to terrain builder import the clipped heightmap and it is what it is, before I manage to come up better tool pipeline for coastlines.

Terrain builder vegetation object import started, medium duration waiting time.

PMC Ukraine Melitopol Terrain ArmA 3 Screenshot

Import finished, then export WRP (CTRL-E) and it came down to:

PMC Ukraine Melitopol Terrain ArmA 3 Screenshot

Saved project and exited terrain builder. Then moveObject re-pathed WRP.

Next was GIMP opening all XCF satellite texture tiles from Satellite.Texture/ dir and exporting them to equivalent sat_??.png images, I started this before googling if graphicsmagick could convert XCF automatically to PNG, it would save a lot of time. While first PNG was saving (extremely long time) I googled and well graphicsmagick has no XCF support, ImageMagick does. So I created bat file to use imagemagick for the XCF to PNG conversion. I have never done this before to my recollection so no idea if it works, so going to convert them into TEMP directory instead of overwriting the actual and only PNGs I have. If there would be a issue(s) for whatever reason, it would mean another 3 or so hours of global mapper exporting which I'm not ready to wait, again.

Imagemagick did the job, quite slowly which was somewhat odd, but maybe its just the PNG image format which is somehow complex to convert and save, dunno.

2022-03-26T11:38:00Z Imagemagick finished its conversion job, when I was browsing through the images to see everything is OK... uh oh, everything was not OK, sat_G7.png was satellite MASK instead of texture, HRR! Smiley :(

Looks like I accidentally saved mask into wrong directory, oh man, now I have to fix clouds in this tile all over again.

Luckily sat_G7.png had one small cloud puff easily clone stamp tool brushed off in the northern edge, was a quick 2min job max.

2022-03-26T11:49:00Z Alright sat_G7.png done and other PNGs look fine too. Now I just need to make sure the final graphicsmagick conversion bat works on these new PNGs.

Yeah I know, paranoid mo-fucka heh, but I have no interest losing hours worth of work just because one step in the process failed.

Ran graphicsmagick darkening and L3DT texture map etc making bats... but heh, sat_G7.png was MASK, hehe. Yeah I guess it was saved once more to... right dir, except I didn't copy it over to the root dir, heh but hey at least I didn't lose any work, just need to copy it over to root dir and once again run the graphicsmagick bats Smiley :)

Also noticed that the single one full ocean tile was not done, need to pattern fill that as well.

2022-03-26T12:23:00Z Uuh finally the picturemap_ca.tga is done, looking all nice.

Then it was another, lets say, final, binarization time Smiley :)

Was getting really tired and just unmotivated again, feeling that zombi mode coming on fast.

2022-03-27 Release Day

2022-03-27T05:25:00Z New editing day has started. Yesterday spent last quarter of the day just watching tv, had no motivation to edit. After binarizing I did check the terrain in-game but it was a mere glance. Last night slept really good over 7hrs which is quite rare, now feeling extremely good and energetic, motivated. Hopefully today will be a good editing day.

Last night didn't do more than a glance in-game so today begins with reading of this dev diary to catch up, cooking and eating food, and now I need to do another more thorough in-game check to see what is the status.

Just for the fun of it I'm writing down here play-by-play of what I saw in-game:

Terrain selection picturemap_ca.tga looks great. 2D mapview (M) looks good heightmap wise. Class names{} is straight up from OSM data so they are Ukrainian and nameVillage types I believe, meaning brown instead of thicker black. Airfield 1 label is present. Satellite texture looks good in 2D mapview. Usual 2022 arma3 mapview objects first-time-load lag present. Mapview objects and roads look good. Hmm airfield 1 class names{} reads "airfield1" almost like it has no name at all and arma3 is using the class name, not a showstopper, does its thing, but yeah I definitely want to beautify that.

Switching to 3D, oh the farmlands and tree lines look awesome, I just want to fire up John Deere 8R and Landoll 7430 disc and get to work... err no wait, wrong game Smiley ;)

PMC Ukraine Melitopol Terrain ArmA 3 Screenshot

I love browsing around the terrain in mission editor camera view. There are some lacking forest tree line areas in the OSM data, but that is something to fix on another day. I'm looking forward of improving OSM landuse natural data on PMC terrains one day, but for now that wont make any difference as the standard OSM does the job just fine. Wrote a PMC bug/issue report about learning how to paint those OSM data supplemental forest tree lines in GIMP.

Looks like railroads are missing, at least I think there was one railroad track, dunno could have been just regular road but somehow I got the sense of it that it was a railroad track. I wrote a PMC bug/issue report to investigate the possibility of using poly line shape files to create arma3 railroads, I have no idea how bis and users have done those before, I think they are (unfortunately) just P3D objects which is not very fun way of creating a huge railroad track. Hmm I think chernarus had railroad tracks in the coast, wonder if altis, tanoa or livonia has them too, need to check.

Also I need to set all PMC Ukraine terrains starting date/time to 2022-02-23T12:00:00Z which is one day before the russian invasion begins. It would be kind of anniversary history a-like to set it on the actual invasion starting time, that was about 0500hrs ukraine local time on the east or was it central time, cant remember. Anyways that would be the historical time for sure, but it would be extremely annoying for everyone who loads the terrains up in mission editor every single time because that time of course is pitch black night, you cant see anything and have to set the time to daylight hours. That is too annoying so it must be 1200hrs noon bright daylight, ready to go for mission editing work or just browsing as I'm doing right now. Dunno it could be the day of the invasion at noon I guess, somehow the day prior feels more creepy like everyone knows whats coming and when you browse the terrain at noon on feb 23rd 2022 its the day before bad things happened ...

Aaanyways. Wrote a bug/issue report about that across all PMC Ukraine terrains, set config.cpp date/time.

BTW interesting sidenote, did you know that february 24th 2022 night was a full moon, just a coincidence or did putins generals suggest this day for the possible moonlight visibility? Smiley :)

When I was randomly flying around in mission editor camera view and admiring the great farmland tree line areas, I came across clouds in the satellite texture. Imagine that, huge 81.9 kilometer terrain, randomly just flying around and finding just about the only one cloud puff which I missed in GIMP editing. Crazy. Dunno I highly doubt I missed any clouds, this must have been some mistake in the XCF to PNG conversion that the bat skipped one tile because the whole point of fixing clouds is that there are no clouds in the whole fucking satellite texture. However at this point in editing... this one area of clouds will remain there, its quite small puff which is hardly noticeable until you drive/fly on top of it. Will be fixed in the future but running the data through all the shit once more would be half a days work, so yeah it has to be a bug for the first upgrade.

I really like how this terrain looks, all done with OSM data so far.

PMC Ukraine Melitopol Terrain ArmA 3 Screenshot

Coastline looks like shit, heightmap has probably 50-100m of elevations above 0m water level in the ocean. Previous terrain edits I used L3DT and manually did oceans, just recently I started to use GEBCO ocean seabed heightmap data and merge that to SRTM heightmap in global mapper. This makes great realistic (meaning usually deep) oceans, however the immediate coastline turns into shit. There is that big ground layer which needs to be somehow fixed.

That tool pipeline is still under design planning, how to solve this issue so that we don't have to do any L3DT heightmap editing work as we know that is a dead end.


Found a coastline location with wind turbines, hmm I might be able to quickly place few of the a3/ wind turbine P3D models there, its not much but should not take long in terrain builder. Would probably take the most time to find the actual P3D addon dir and file name heh.

PMC Ukraine Melitopol Terrain ArmA 3 Screenshot

There you can also see the OSM road data which has very few vertices in the poly line, makes too smooth roads.

2022-03-27T06:21:00Z In-game arma3 check complete, this terrain is good to go for a release. Yeah there are few issues, but overall its good to go. It is time to start release procedure Smiley :)

Except I can still squeeze in few more text edits. Changed class names{} "airfield1" to "Airfield 1" which looks nicer in the mapview. Then changed startDate to Russian invasion of Ukraine day, 2022-02-24T12:00:00Z noon as explained above. Then binarized pmc_ukraine_melitopol_cfg addon so these edits get in.

Dunno what else to edit anymore, its time to actually start the release procedures now.

Updated PMC "worldSize" mission pack for melitopol terrain, now there are several missions for it. Its kind of cool, PMC has policy of "no addon releases without a mission pack" as we are not one of those people that release addons without missions, so now with editing a single line of text we immediately got probably 10 or so missions (havent counted them).

Updated pmc_ukraine_melitopol/mod.cpp for more accurate google/maps link, mostly the zoom level. To be uniform with our other terrains.

2022-03-27T07:03:00Z Created bisign keys for addon pbos, then created addon release readme.txt with up to date info, updated release packaging bat file and executed it, it will take a few minutes for 7-zip to compress 81.9km size terrain.

Created web page template files, I need an easier way to create new terrain pages than going through the same editing and copy paste routine every time, now its quite nice, all I have to do is change TERRAINNAME and FILENAME and boom new pages are created.

Next was time to take screenshots for the web pages. Not my favorite activity as its well basically impossible to convey the large terrain size from a single stupid screenshot. Also I should make 3min video trailers for each terrain but due to my Nvidia GTX TITAN X issues which crash the drivers, I have not done any videos with 4k 60FPS with high bitrate. I'm afraid the Nvidia drivers crash due failing GPU and then I'd need to reboot my whole windows, yeah no thanks.

But video trailers is an issue, I hate not having them, sucks.

2022-03-27T08:21:00Z Screenshots taken, sorted, renamed and edited. Web page templates in place, now just need to add the text and screenshots content.

2022-03-27T08:58:00Z Web pages all filled with basic content; screenshots and text. Links fixed as far as I can tell. Basic stuff is in.

At this point had to take a few minutes break to stretch my legs and get at least some time away from text typing and code, just felt like I'm crawling out of my skin heh. Also good time to catch up on Ukraine war news.

2022-03-27T09:56:00Z Was adding links and proof reading this dev diary when it was my lunch break.

2022-03-27T10:52:00Z Feeding time over, back to proof reading and link adding this page.

Finished proof reading and adding links to this page. Hmm whats next... Oh its time to create torrent and start to do the actual release part Smiley :)

2022-03-27T11:50:00Z PMC Ukraine Melitopol v0.1 has been released! Smiley :D

PMC Ukraine Melitopol: Changelog, Dev Diary, Screenshots. Back to PMC Terrain's page.