Welcome to the LnLP Forums and Resource Area

We have updated our forums to the latest version. If you had an account you should be able to log in and use it as before. If not please create an account and we look forward to having you as a member.

.COP format?

Mezentius

Member
Joined
Dec 2, 2020
Messages
9
Points
3
Age
39
Location
LA, CA
Hi -- is there any published documentation on the .COP (CO2 map) format? I'd like to try writing some code to generate maps from data, e.g. the topography and road topology found in sources like OpenStreetMap. I imagine it would still be necessary to manually tweak the result (particularly since a battlefield may look quite different today than it did 80 years ago), but it still may save some time and labor up front.

Thanks!
 
Joined
Oct 20, 2014
Messages
1,182
Points
63
Age
76
Location
Livonia, MI (Detroit-area suburb)
Hi -- is there any published documentation on the .COP (CO2 map) format? I'd like to try writing some code to generate maps from data, e.g. the topography and road topology found in sources like OpenStreetMap. I imagine it would still be necessary to manually tweak the result (particularly since a battlefield may look quite different today than it did 80 years ago), but it still may save some time and labor up front.

Thanks!
The .cop format is proprietary to the game developer / owner.

There was discussion of developing a method to import GIS data to cut down on map creation time several years ago, but the effort was deferred to a major rewrite of the game software which would be released as a next generation (CO3?) version of the game.

The programming effort that's available for modifications and updates is focused on improving the Artificial Intelligence component of the combat and movement software and fixing bugs discovered and reported by users as they play so any major reworking of the game software is well down the road.
 

Mezentius

Member
Joined
Dec 2, 2020
Messages
9
Points
3
Age
39
Location
LA, CA
The .cop format is proprietary to the game developer / owner.

Ah, that's too bad! I hope the developer considers opening up the format to the community—it would be a fun weekend hack for someone like me to write a small tool that pushes GIS data into a CO2 map. With all of the free geographic data available these days, it would probably be possible to throw something together quickly with (for example) Python and various open source libraries.
 

ioncore

Member
Joined
Jun 1, 2015
Messages
680
Points
43
Location
Germany, Lower Saxony
Website
ioncore.livejournal.com
is there any published documentation on the .COP (CO2 map) format? I'd like to try writing some code to generate maps from data, e.g. the topography and road topology found in sources like OpenStreetMap.
Welcome on board, fellow map-lover :) Being many years an enthusiast of GIS in general and GDAL in particular, I've started developing such a functionality couple of years ago. Today, we have it done, although it has some limitations (due to the specifics of the COP data representation, which does not allow creation of e.g. "holes" in a polygon) and it is used currently in-house only to develop our official EF DLC maps.
Here in this thread you can see an example
https://forums.lnlpublishing.com/threads/east-front-guess.4563/
The conversion utility is a console app which we could probably release to public after some beautification and writing a documentation (means next year).
 

ioncore

Member
Joined
Jun 1, 2015
Messages
680
Points
43
Location
Germany, Lower Saxony
Website
ioncore.livejournal.com
Code:
MapMakerGIS.exe --help                                                                                                                                                                                                                            
USAGE:

   MapMakerGIS  [-fhp] [--version] input output


Where:

   -f,  --force
     if an existing destination file cannot be opened, remove it and try
     again

   -p,  --pretend
     do not actually write the output file

   --,  --ignore_rest
     Ignores the rest of the labeled arguments following this flag.

   --version
     Displays version information and exits.

   -h,  --help
     Displays usage information and exits.

   input <string>
     (required) workspace file relative location

   output <string>
     (required) output file relative location

   CO2 GIS Map Maker, ® Copyright 2021 P.Voilov for Panther Games Pty Ltd.
 

ioncore

Member
Joined
Jun 1, 2015
Messages
680
Points
43
Location
Germany, Lower Saxony
Website
ioncore.livejournal.com
Input configuration file example, most of the properties are self-explaining.
Only the "folder" storage type is supported for now (more provider types like Spatialite or PostGIS may be added in future, but for now I don't need them).
Most of the elements are optional except workspace itself and also mandatory output element, see also XSD in the archive below.

HTML:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<workspace>
    <output name="Cholojow" epsg="32635" lat="50.2" lon="24.5167" width="4096" height="4096" alt_base="210" alt_step="10"/>
    <storage name="Cholojow" providerKey="folder" source="d:\Example\vectors"/>
    <storage name="Barbarossa" providerKey="folder" source="d:\Storage\ww2\Maps\Workspace\command_ops\Barbarossa\"/>
<!--<text-style name="Example"        font="kFPArial" bold="" condensed="" extended="" italic="" underline="" scale64="1" scale32="2" scale16="3" scale8="4" scale4="5" scale2="6"/>-->
    <text-style name="Default"         font="kFPArial"/>
    <text-style name="City"           font="kFPArial" bold=""                         scale64="12" scale32="14" scale16="18" scale8="24" scale4="30" scale2="36"/>
    <text-style name="Town"           font="kFPArial" bold=""                         scale64="9"  scale32="10" scale16="12" scale8="14" scale4="18" scale2="24"/>
    <text-style name="Village"        font="kFPArial"                                scale64="0"  scale32="9"  scale16="10" scale8="12" scale4="14" scale2="18"/>
    <text-style name="Major River"    font="kFPArial" bold=""              italic=""         scale64="9"  scale32="10" scale16="12" scale8="14" scale4="18" scale2="24"/>
    <text-style name="Lake"        font="kFPArial"                     italic=""         scale64="0"  scale32="9"  scale16="10" scale8="12" scale4="14" scale2="18"/>
    <text-style name="River"        font="kFPArial"                     italic=""         scale64="0"  scale32="9"  scale16="10" scale8="12" scale4="14" scale2="18"/>
    <text-style name="Stream"        font="kFPArial"                     italic=""         scale64="0"  scale32="0"  scale16="9"  scale8="10" scale4="12" scale2="14"/>
    <text-style name="Highway"        font="kFPArial" bold=""                            scale64="0"  scale32="0"  scale16="9"  scale8="12" scale4="14" scale2="18"/>
    <text-style name="Road"        font="kFPArial"                                scale64="0"  scale32="0"  scale16="9"  scale8="12" scale4="14" scale2="18"/>
    <text-style name="Other"        font="kFPArial"                                scale64="0"  scale32="9"  scale16="10" scale8="12" scale4="14" scale2="18"/>
    <text-style name="Author"        font="kFPArial"                  italic="" underline="" scale64="0"  scale32="9"  scale16="10" scale8="12" scale4="14" scale2="18"/>
    <map-layer-effects storage="Cholojow" source="Cholojow.csv"/>
    <map-graphics path="Graphics/Map/Default"/>

    <layer-altitude         storage="Cholojow" source="clip_Altitude2.shp" field_value="elev" control_points=""/>
    <layer-airfield         storage="Cholojow" source="clip_Airfield.shp"/>
    <layer-heide         storage="Cholojow" source="clip_Heide.shp" control_points=""/>
    <layer-highway         storage="Cholojow" source="clip_Highway.shp"/>
    <layer-industrial         storage="Cholojow" source="clip_Industrial.shp"/>
    <layer-lake         storage="Cholojow" source="clip_Lake.shp" control_points=""/>
    <layer-light-road-bridge    storage="Cholojow" source="clip_LightBridge.shp"/>
    <layer-light-woods        storage="Cholojow" source="clip_LightWoods.shp"/>
    <layer-medium-road-bridge    storage="Cholojow" source="clip_MediumBridge.shp"/>
    <layer-minor-road         storage="Cholojow" source="clip_MinorRoad.shp"/>
    <layer-orchard         storage="Cholojow" source="clip_Orchard.shp"/>
    <layer-rail         storage="Cholojow" source="clip_Railway.shp"/>
    <layer-rail-bridge         storage="Cholojow" source="clip_RailBridge.shp"/>
    <layer-road         storage="Cholojow" source="clip_ImprovedRoad.shp"/>
    <layer-minor-river         storage="Cholojow" source="clip_River.shp"/>
    <layer-stream         storage="Cholojow" source="clip_Stream.shp"/>
    <layer-marsh         storage="Cholojow" source="clip_Swamp.shp"/>
    <layer-town         storage="Cholojow" source="clip_Town.shp"/>
    <layer-track         storage="Cholojow" source="clip_Track.shp"/>
    <layer-village         storage="Cholojow" source="clip_Village.shp"/>
    <layer-woods         storage="Cholojow" source="clip_Woods.shp"/>
    <layer-text         storage="Cholojow" source="clip_Text.shp" field_value="text" field_style="style"/>
</workspace>
 
Last edited:

ioncore

Member
Joined
Jun 1, 2015
Messages
680
Points
43
Location
Germany, Lower Saxony
Website
ioncore.livejournal.com
An archive with:
- example dataset with a couple of shapefiles and raster underlay
- QGIS project file combining the above
- XSD validation schema for the tool
- example XML config (XSD-conforming) demonstrating the usage of the tool & dataset
- COP file generated for this dataset & config.

Please pre-review / get used to these and let me know.
If there are no major objections / change requests to the format, the tool itself and some additional documentation will be released as a part of public beta branch.
 

Attachments

  • MapMakerGIS.example.zip
    6.2 MB · Views: 12

Mezentius

Member
Joined
Dec 2, 2020
Messages
9
Points
3
Age
39
Location
LA, CA
Thank you for putting this together! This looks very reasonable and the XML config seems fairly idiot-proof to me. Looking forward to trying out the executable!

(BTW I noticed that as a Steam user the Estab and Map editor will freak out and close if I don't launch them from Steam. That won't be the case for this command-line tool, will it?)
 

ioncore

Member
Joined
Jun 1, 2015
Messages
680
Points
43
Location
Germany, Lower Saxony
Website
ioncore.livejournal.com
(BTW I noticed that as a Steam user the Estab and Map editor will freak out and close if I don't launch them from Steam. That won't be the case for this command-line tool, will it?)
Yes, all the GUI applications do use Steam authorization API, because they are supposed to work with official paid content.
This tool will have no Steam authorization as it is exclusively intended for custom map creation.
It will also not be a part of Steam launch menu as it is supposed to be used by advanced users and from command line / script only.
 

ioncore

Member
Joined
Jun 1, 2015
Messages
680
Points
43
Location
Germany, Lower Saxony
Website
ioncore.livejournal.com
This is now available with latest beta.
The MapMakerGIS.example file working with the attached dataset is also available. Also a minor XSD update compared to the earlier version posted above.
 

Attachments

  • MapMakerGIS.xsd.zip
    913 bytes · Views: 10
Top