<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Doc: Map Population on website and download list]]></title><description><![CDATA[<p dir="auto">Description of how map data flows to:</p>
<ul>
<li>triplea-game client</li>
<li>map listing page</li>
<li>map repositories</li>
</ul>
<h2>Triplea-game client / "Download Maps"-list in TripleA</h2>
<p dir="auto">In short, support server stores a database of all map repositories and the game client sends a request to the support server for a listing of that information. That information then powers the download page.</p>
<p dir="auto">More detailed, the triplea-support server runs an "indexing" loop where it asks Github for all of the repositories in '<a href="https://github.com/triplea-maps" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/triplea-maps</a>', and then indexes each repository in turn. IIRC it takes a few hours for it to go through all the repositories and to start over. The loop reads all maps (repositories) whether new or old.</p>
<p dir="auto">The code for the indexing task is at: <a href="https://github.com/triplea-game/support-server/blob/main/src/main/java/org/triplea/services/maps/indexing/MapIndexer.java#L51" target="_blank" rel="noopener noreferrer nofollow ugc">MapIndexer#L51</a></p>
<p dir="auto">With some more details of the different items indexed at: <a href="https://github.com/triplea-game/support-server/tree/main/src/main/java/org/triplea/services/maps/indexing/tasks" target="_blank" rel="noopener noreferrer nofollow ugc">maps/indexing/tasks</a></p>
<p dir="auto">The indexer assumes and looks for a couple specific file names:</p>
<ul>
<li>map.yml</li>
<li>description.html</li>
<li>preview.png</li>
</ul>
<p dir="auto">The indexer reads the information from those files and also downloads the map to compute the download size.</p>
<p dir="auto">Once all that data is gathered, the following database table is updated or has a new row inserted:</p>
<pre><code> id                  | integer                  |           | not null | nextval('map_index_id_seq'::regclass)
 map_name            | character varying(256)   |           | not null | 
 last_commit_date    | timestamp with time zone |           | not null | 
 repo_url            | character varying(256)   |           | not null | 
 preview_image_url   | character varying(256)   |           | not null | 
 description         | character varying(3000)  |           | not null | 
 download_size_bytes | integer                  |           | not null | 
 download_url        | character varying(256)   |           | not null | 
 default_branch      | character varying(128)   |           | not null | 
 date_created        | timestamp with time zone |           | not null | now()
 date_updated        | timestamp with time zone |           | not null | now()
</code></pre>
<p dir="auto">Map tags are available and are kept in a different database table.</p>
<p dir="auto">When the game-client opens the download-maps window, the client sends a a request to the server, which then queries the above table and joins that data with map tags. That creates a full data payload that is then returned back to the game-client.</p>
<p dir="auto">You'll notice the table contains essentially all of the the same data fields that the previous 'triplea_maps.yaml' contained.</p>
<h2>How are maps pushed to website? @  <a href="https://triplea-game.org/maps-list/maps/" target="_blank" rel="noopener noreferrer nofollow ugc">https://triplea-game.org/maps-list/maps/</a> &amp;  <a href="https://triplea-game.org/map/*specific" target="_blank" rel="noopener noreferrer nofollow ugc">https://triplea-game.org/map/*specific</a></h2>
<p dir="auto">There is a "github action" configured here:  <a href="https://github.com/triplea-game/triplea-game.github.io/blob/main/.github/workflows/update-maps.yml" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/triplea-game/triplea-game.github.io/blob/main/.github/workflows/update-maps.yml</a></p>
<p dir="auto">That runs periodically, queries the maps server for the list of maps, uses a small python script to parse the results, then writes that data to the local file system @ <a href="https://github.com/triplea-game/triplea-game.github.io/tree/main/_maps" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/triplea-game/triplea-game.github.io/tree/main/_maps</a></p>
<p dir="auto">Then the github action commits any changes and pushes, thereby adding those files to the website repository. Github itself redeploys the website when the repository is updated, thereby updating the website.</p>
<p dir="auto">So, the flow is:</p>
<ul>
<li>GH action queries maps server</li>
<li>Python scripts parses the results and creates a single index page lands each map entry as its own file</li>
<li>GH action commits and pushes any file updates</li>
<li>GH itself republishes the website if anything changed</li>
</ul>
]]></description><link>https://forums.triplea-game.org/topic/4362/doc-map-population-on-website-and-download-list</link><generator>RSS for Node</generator><lastBuildDate>Mon, 15 Jun 2026 22:18:20 GMT</lastBuildDate><atom:link href="https://forums.triplea-game.org/topic/4362.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Jun 2026 17:56:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Doc: Map Population on website and download list on Mon, 15 Jun 2026 21:52:18 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lafayette" aria-label="Profile: LaFayette">@<bdi>LaFayette</bdi></a><br />
Please list the urls for the error reports, as;</p>
<p dir="auto">Some of the  maps from <strong>GitHub map repositories</strong> are not making it to the<br />
<strong>Map Server map listing page</strong></p>
<p dir="auto">I would like to see the reason why and try to fix them<br />
1888A Steam and Steel for one.</p>
]]></description><link>https://forums.triplea-game.org/post/78373</link><guid isPermaLink="true">https://forums.triplea-game.org/post/78373</guid><dc:creator><![CDATA[TheDog]]></dc:creator><pubDate>Mon, 15 Jun 2026 21:52:18 GMT</pubDate></item><item><title><![CDATA[Reply to Doc: Map Population on website and download list on Mon, 15 Jun 2026 21:48:19 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lafayette" aria-label="Profile: LaFayette">@<bdi>LaFayette</bdi></a> Can I definitely stop updating triplea_map.yaml?</p>
]]></description><link>https://forums.triplea-game.org/post/78372</link><guid isPermaLink="true">https://forums.triplea-game.org/post/78372</guid><dc:creator><![CDATA[RogerCooper]]></dc:creator><pubDate>Mon, 15 Jun 2026 21:48:19 GMT</pubDate></item><item><title><![CDATA[Reply to Doc: Map Population on website and download list on Mon, 15 Jun 2026 21:15:43 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/rogercooper" aria-label="Profile: RogerCooper">@<bdi>RogerCooper</bdi></a> <a href="/post/78370">said</a>:</p>
<p dir="auto">I would like to go back to the old system of having a distinct "mapName".</p>
</blockquote>
<p dir="auto">FWIW, the old system didn't enforce a unique map name. Windows has a case insensitive file system, and because the old system tied the map name to the folder name, you couldn't install two maps with the same name without overwriting. Except, there still was no guarantee that globally across all maps, that the names were unique.  Mac and Linux have case sensitive file names, so in the old system you could still have a duplicate name installed so long as the casing was different. Using 'mapName' overall is essentially the design flaw.</p>
]]></description><link>https://forums.triplea-game.org/post/78371</link><guid isPermaLink="true">https://forums.triplea-game.org/post/78371</guid><dc:creator><![CDATA[LaFayette]]></dc:creator><pubDate>Mon, 15 Jun 2026 21:15:43 GMT</pubDate></item><item><title><![CDATA[Reply to Doc: Map Population on website and download list on Mon, 15 Jun 2026 20:13:24 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lafayette" aria-label="Profile: LaFayette">@<bdi>LaFayette</bdi></a> <a href="/post/78368">said</a>:<br />
It's on my roadmap to create a HTML status page so we can see the status of map indexing. If a new duplicate map_name is introduced then that status page would reflect the error. I'm not sure if we have to disable the duplicate entirely.</p>
</blockquote>
<p dir="auto">That sounds like a good solution.</p>
<p dir="auto">If we are changing things, I would like to go back to the old system of having a distinct "mapName". That way, if a mod uses an existing map, there would be no need to copy all the map files over.</p>
]]></description><link>https://forums.triplea-game.org/post/78370</link><guid isPermaLink="true">https://forums.triplea-game.org/post/78370</guid><dc:creator><![CDATA[RogerCooper]]></dc:creator><pubDate>Mon, 15 Jun 2026 20:13:24 GMT</pubDate></item><item><title><![CDATA[Reply to Doc: Map Population on website and download list on Mon, 15 Jun 2026 18:45:52 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/rogercooper" aria-label="Profile: RogerCooper">@<bdi>RogerCooper</bdi></a> How, when and where to flag that error message are all open questions. My thoughts on how to solve that - It's on my roadmap to create a HTML status page so we can see the status of map indexing. If a new duplicate map_name is introduced then that status page would reflect the error. I'm not sure if we have to disable the duplicate entirely.</p>
<p dir="auto">Similarly it's on the roadmap to use IDs as well instead of map names. In which case the map name would appear duplicated in download maps, but the description would be unique and the download would download the right thing.</p>
<p dir="auto">I'd even like for each map to be stored under its commit-ID on disk as well, then TripleA could finally have a concept of different map versions. Another flaw in TripleA's map handling design is TripleA assumes not only that the map name uniquely identifies a map, but that there is actually just one and only one version of that map.</p>
<p dir="auto">If TripleA used Map-ID + Commit, TripleA could have multiple versions of a map installed, could use the right one, and could precisely and always download the correct version as needed.</p>
<p dir="auto">With all that said, the status page is pretty high priority compared to everything, the indexing is an opaque process right now.</p>
]]></description><link>https://forums.triplea-game.org/post/78368</link><guid isPermaLink="true">https://forums.triplea-game.org/post/78368</guid><dc:creator><![CDATA[LaFayette]]></dc:creator><pubDate>Mon, 15 Jun 2026 18:45:52 GMT</pubDate></item><item><title><![CDATA[Reply to Doc: Map Population on website and download list on Mon, 15 Jun 2026 18:40:19 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lafayette" aria-label="Profile: LaFayette">@<bdi>LaFayette</bdi></a> An error message should go out if there is a non-unique map name in any map.yml</p>
]]></description><link>https://forums.triplea-game.org/post/78367</link><guid isPermaLink="true">https://forums.triplea-game.org/post/78367</guid><dc:creator><![CDATA[RogerCooper]]></dc:creator><pubDate>Mon, 15 Jun 2026 18:40:19 GMT</pubDate></item><item><title><![CDATA[Reply to Doc: Map Population on website and download list on Mon, 15 Jun 2026 18:38:39 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/rogercooper" aria-label="Profile: RogerCooper">@<bdi>RogerCooper</bdi></a> Another aspect to duplication of 'map.yaml' - when we fork the repo into 'triplea-maps', (we being the map admins), the map admins should check that 'map.yml' has been updated.</p>
]]></description><link>https://forums.triplea-game.org/post/78366</link><guid isPermaLink="true">https://forums.triplea-game.org/post/78366</guid><dc:creator><![CDATA[LaFayette]]></dc:creator><pubDate>Mon, 15 Jun 2026 18:38:39 GMT</pubDate></item><item><title><![CDATA[Reply to Doc: Map Population on website and download list on Mon, 15 Jun 2026 18:31:51 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/rogercooper" aria-label="Profile: RogerCooper">@<bdi>RogerCooper</bdi></a> If the map_name is duplicated, then we see the example we had with ww2v5 variants being downloaded instead of the correct map.</p>
<p dir="auto">Note the table has an "ID" and "repo_url", those are both unique. The map-name does not have to be unique though. It should though..</p>
<p dir="auto">The non-uniqueness of map-name is a design flaw baked in since TripleA was first written. The code treated the name of the map as its unique identity.  Ideally the code would use the map IDs wholesale.</p>
<p dir="auto">Prior to 2.6, the code would look for a map by name, searching for the a map folder with that name, then for an XML with a map_name attribute on it that also had to match. That's updated where the new code ignores the name of the map folder entirely, just looks at "map.yml" to do the matching of the map name. The "map.yml" then indicates where the game XML files are located. Thereby the code is able to load the XML files by using [map_name, game_name] by reading just the 'map.yml' file. Non-uniqueness of map names across all map.yml files is a design flaw.</p>
]]></description><link>https://forums.triplea-game.org/post/78364</link><guid isPermaLink="true">https://forums.triplea-game.org/post/78364</guid><dc:creator><![CDATA[LaFayette]]></dc:creator><pubDate>Mon, 15 Jun 2026 18:31:51 GMT</pubDate></item><item><title><![CDATA[Reply to Doc: Map Population on website and download list on Mon, 15 Jun 2026 18:27:00 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lafayette" aria-label="Profile: LaFayette">@<bdi>LaFayette</bdi></a> Is <a href="https://github.com/triplea-game/triplea/blob/main/triplea_maps.yaml" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/triplea-game/triplea/blob/main/triplea_maps.yaml</a> now deprecated?</p>
<p dir="auto">What happens if map.yml is duplicated? Some people have work in progress on Github.</p>
<p dir="auto">I don't much like triplea_maps.yaml but there needs to be some control over the mods.</p>
]]></description><link>https://forums.triplea-game.org/post/78362</link><guid isPermaLink="true">https://forums.triplea-game.org/post/78362</guid><dc:creator><![CDATA[RogerCooper]]></dc:creator><pubDate>Mon, 15 Jun 2026 18:27:00 GMT</pubDate></item></channel></rss>