{"id":18425913,"url":"https://github.com/faforever/fa-automation-procedural-content","last_synced_at":"2025-04-07T16:32:19.481Z","repository":{"id":214617798,"uuid":"736920273","full_name":"FAForever/fa-automation-procedural-content","owner":"FAForever","description":"Workflow for map authors","archived":true,"fork":false,"pushed_at":"2023-12-29T12:54:54.000Z","size":3376,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-16T08:17:40.615Z","etag":null,"topics":["bash-script","faforever","forged-alliance","forged-alliance-forever","gaea","procedural","supreme-commander","world-machine"],"latest_commit_sha":null,"homepage":"https://www.faforever.com/","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FAForever.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-12-29T09:02:23.000Z","updated_at":"2024-06-15T19:08:33.000Z","dependencies_parsed_at":"2024-01-16T00:21:58.109Z","dependency_job_id":null,"html_url":"https://github.com/FAForever/fa-automation-procedural-content","commit_stats":{"total_commits":7,"total_committers":1,"mean_commits":7.0,"dds":0.0,"last_synced_commit":"c6113b2e1aeb6d27bd2d0407970227e9ffb398aa"},"previous_names":["faforever/fa-automation-procedural-content"],"tags_count":1,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FAForever%2Ffa-automation-procedural-content","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FAForever%2Ffa-automation-procedural-content/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FAForever%2Ffa-automation-procedural-content/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FAForever%2Ffa-automation-procedural-content/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FAForever","download_url":"https://codeload.github.com/FAForever/fa-automation-procedural-content/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247688086,"owners_count":20979602,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash-script","faforever","forged-alliance","forged-alliance-forever","gaea","procedural","supreme-commander","world-machine"],"created_at":"2024-11-06T05:06:23.364Z","updated_at":"2025-04-07T16:32:16.556Z","avatar_url":"https://github.com/FAForever.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://www.faforever.com/\"\u003e\n    \u003cimg src=\"https://www.faforever.com/images/logos/faflogo.svg\" alt=\"FAForever logo\" title=\"FAForever\" align=\"right\" height=\"60\" /\u003e\n\u003c/a\u003e\n\n# Workflow Integration for Procedural Software\n\nThis repository provides a script to enhance the workflow between procedural software and a map editor for the game Supreme Commander: Forged Alliance. The script assists the user in converting the output of procedurally generated content into a format acceptable by the map editor. This effectively eliminates the need for tools such as Photoshop or Gimp that are usually used to manually convert files into the correct format.\n\n## Requirements\n\n- [Bash interpreter](https://git-scm.com/downloads): This tool allows running the conversion script. Any recent version will suffice.\n- [ImageMagick](https://imagemagick.org/): This tool performs all the heavy lifting. It provides a command line interface that we can use to convert the textures into the correct format. The conversion script is developed using the Windows binary release version ImageMagick-7.1.1-24-Q16-HDRI-x64-dll.exe.\n- [FAForever map editor](https://github.com/FAForever/FAForeverMapEditor): This tool allows manipulating the Supreme Commander: Forged Alliance map binary. We can import the output of the conversion script and immediately view the result.\n\nThere are no additional software or hardware requirements.\n\n## Intended Workflow\n\nInstead of one map, you'll work with two different maps. The first map is the 'input' map for the procedural software. The second map is the 'output' map that represents the map you can publish. Both the input and the output maps have a specific file hierarchy.\n\n### File Hierarchy of the Input Map\n\n- Any folder that starts with `input` can be used for input to the procedural software. The content of these folders is included by Git but ignored by the conversion script.\n- Any folder that starts with `convert` can be used as input for the map. The content of these folders is included by Git and is converted by the conversion script.\n- Any folder that starts with `procedural` can be used as input for the map. The content of these folders is ignored by Git, but it is converted by the conversion script.\n- The `procedural` folder can be used for intermediate results of the procedural software. It will be ignored by both Git and the conversion script.\n\n### File Hierarchy of the Output Map\n\n- The `heightmaps` folder contains the output of `convert-heightmaps` and `procedural-heightmaps`. The content is ignored by Git.\n- The `masks` folder contains the output of `convert-masks` and `procedural-masks`. The content is ignored by Git.\n- The `env/layers` folder contains the output of `convert-strata` and `procedural-strata`. The content is included by Git.\n- The `env/decals` folder contains the output of `convert-decals` and `procedural-decals`. The content is included by Git.\n\nBefore publishing the map, it is recommended to remove the heightmaps and masks folder as they serve no purpose other than pushing around bandwidth.\n\n## Adapting the Workflow\n\nThere are three parameters at the top of the script file:\n\n- `target`: The name of the output map. The path is relative (note the `../`). Requires a trailing `/`. You need to update this reference when you bump the version of the map.\n- `resolutionMask`: The resolution of the mask. This is usually 256 for a 5x5 map, 512 for a 10x10 map, and 1024 for a 20x20 map.\n- `resolutionHeightmap`: The resolution of the heightmap. This is 257 for a 5x5 map, 513 for a 10x10 map, and 1025 for a 20x20 map.\n\n## Running the Workflow\n\nIf you have a Bash interpreter installed, then running the workflow is as simple as starting the conversion script as you would start any other executable.\n\n## Suggestions\n\nUse the `png` format for all your output. The encoding reduces the file size, and it doesn't reduce the image quality.\n\n### For Gaea\n\n\u003cimg src=\"./images/gaea-build-manager.png\" alt=\"Gaea Build Manager\" title=\"Build Manager\" align=\"right\" height=\"360\" /\u003e\n\nIn the `Build Manager` and specifically the `Files to save` section:\n\n- Only export the main output of a node unless you specifically need the secondary (unprocessed) secondary outputs.\n- You can map outputs to a specific folder by introducing a `/`, as an example: `procedural-heightmaps/heightmap`.\n\nIn the `Build Manager` and specifically the `Options` section:\n\n- Use `RGB` as your color space. Other color spaces may confuse Image Magick.\n- Use `Raw` as your range. Other ranges produce different results from what you see in Gaea.\n\nIn the `Build Manager`, you should use the input map folder (`example_procedural.v0001`) as your output.\n\n### For World Machine\n\nThere are no specific suggestions for World Machine. The script was originally designed for World Machine.\n\n## FAQ\n\n### The editor does not automatically update the decals when I change decals\n\nThe editor does not make use of the [FileSystemWatcher class](https://learn.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher?view=net-8.0). If you're interested in implementing that, then do get in touch with us through [Discord](https://discord.gg/mXahVSKGVb) or by opening an issue or pull request at [FAForever map editor](https://github.com/FAForever/FAForeverMapEditor).\n\n### The script does not work out of the box!\n\nMake sure you have ImageMagick installed. Then make sure that you have read and applied the 'Adapting the Workflow' section. The script does not work out of the box - it can't possibly know the name of your map, for example. If you need further assistance, then do get in touch with us through [Discord](https://discord.gg/mXahVSKGVb) and specifically the mapping-general channel. You'll need to give yourself the mapper role in the 'Channels \u0026 Roles' page to see the map-specific channels.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaforever%2Ffa-automation-procedural-content","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffaforever%2Ffa-automation-procedural-content","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaforever%2Ffa-automation-procedural-content/lists"}