Posts by Ydro

    Hi everyone,

    I want to share my Urban Assault Level Generator project.

    This project is reimplementation of two legacy Urban Assault level generators that were either no longer maintained or difficult to configure and use today.

    The first backend, Generator1, is derived from the old Random UA.exe work originally associated with AOE_Danny. That tool was never fully finished and remained in a beta state. In this project, I rewrote its behavior in Python and extended it into a maintained codebase with improved generation support, broader environment handling, and campaign-related map support such as briefing and debriefing maps.

    The second backend, Generator2, is based on the PHP generator released by dportalesr on GitHub. Since the original project was open source, I was able to study its logic, reimplement it in Python, and integrate it into the same project. I also fixed and cleaned up parts of its behavior so it is easier to use out of the box.

    The main goal of this project is not just to preserve these generators, but to make them readable, usable, and easier to extend for future developers.

    Current features include:

    - two supported generator backends: Generator1 and Generator2
    - both CLI and GUI frontends
    - a small documented backend API
    - generation of a single random level
    - support for custom seeds for reproducible output
    - configurable difficulty
    - Generator1 support for scenario/skill selection
    - Generator1 custom generation options through the GUI workflow
    - full campaign generation for:
    - the original campaign
    - Metropolis Dawn: Ghorkov
    - Metropolis Dawn: Taerkasten

    - GUI tabs for switching between Generator1 and Generator2
    - GUI code separated from generator logic to make the project easier to maintain and extend
    - no third-party Python dependencies for normal use
    - GUI built with tkinter

    The project also includes documentation for the CLI and backend API, along with tests for the current implementation.

    Download:

    GitHub - dubstabber/Urban-Assault-Level-Generator: Random level generator for Urban Assault RTS game
    Random level generator for Urban Assault RTS game. Contribute to dubstabber/Urban-Assault-Level-Generator development by creating an account on GitHub.
    github.com

    You can run it directly from a source checkout without any special build step.
    For the GUI, use:

    - launch-gui.cmd on Windows
    - launch-gui.sh on Linux

    You can also run it directly with Python, for example:

    PYTHONPATH=src python -m ualg.gui


    Edit 29.06.2026:

    I added two more generators with different variety, rules and difficulty modes. The generator4 with extremely-hard mode selected is truly for the most demanding UA players!

    A new beta version has been released with many changes.

    Along with numerous bug fixes, I’ve added a 3D map view feature that dynamically refreshes based on changes made in the 2D view mode.

    Developing this 3D map view was a huge challenge, but I managed to complete it - mostly with the help of modern AI agents like Codex and Claude Code, which performed extensive reverse-engineering tasks on the UA executable file to help reconstruct the 3D rendering pipeline.

    The 3D map is still in beta, but it already includes all the necessary objects required to display models and sectors. It can be toggled using the Tab key, the View menu, or the context menu -> View sector in 3D (right-click on a sector).

    The 2D view remains a first-class feature of this level editor. This means that changes made in 2D will not be reflected in the 3D view until you switch to it. This helps prevent heavy calculations and long loading times during fast editing in 2D.

    Currently, the 3D map includes basic movement controls:

    - WSAD for movement
    - Hold the right mouse button to rotate the camera
    - Use the mouse scroll wheel for faster forward and backward movement
    - Hold Shift to move faster

    I have not performed thorough testing yet, so this version is marked as a pre-release.

    In addition, I’ve added undo and redo features, allowing you to revert changes on the map or reapply them using a Godot-style command pattern.

    You can download it from my releases page.


    Note: I only tested it on linux. The windows version was tested via wine/proton so I am not sure if it works flawlessly on real windows OS.

    I have released a new version of this editor with new features, such as a warning log system that shows all unsupported data when opening a map, and rectangle-based multi-sector selection.

    Custom mod data is now handled properly, and the editor resolves all errors caused by unknown vehicle and owner IDs.

    The main changes:
    - Added a warning/error log system that displays detailed data not supported by the editor when opening a map
    - Added a sky gallery picker for easier sky selection in the level parameters window
    - Added a briefing/debriefing gallery picker for easier selection in the briefing/debriefing maps window
    - When multiple sectors are selected with Ctrl + left-click, already selected sectors can now be deselected
    - Added a new Edit menu in the nav bar
    - Added the ability to select all sectors of the map via the Edit menu or with a keyboard shortcut
    - Added the ability to swap sector owners in the Edit menu, with multiple faction options
    - Multiple sectors can now be selected with rectangle selection by holding Shift + left mouse button
    - Added new keyboard shortcuts
    - Added a building gallery picker in the "Add Building" window
    - UI context submenus now display elements faster
    - Stylized elements in the shortcut window
    - Changed "Urban Assault Level File" to "Level Definition File"
    - Various fixes in the input handler
    - Improved stability of UI elements
    - Fixed a bug where host station behavior data was not saved correctly
    - Invalid owner IDs for host stations and squads are now handled properly and replaced with pink color squares
    - Leading and trailing whitespaces are now removed from level descriptions and prototype modifications when saving a map
    - Various fixes and optimizations in the level parsing process

    Thank you, Schloss!

    This is more information than I expected.
    Now it makes sense that many different variables come into play, affecting the total amount of energy for the AI.

    At first glance, this may seem like a technical topic that isn't necessary for beginner creators. However, I believe it will significantly impact the balance of the level as a whole.

    I have released a new version of the editor with a tooltip for the energy input field, including some of the information you requested, along with various improvements.
    There is also a new section in the help menu titled 'Additional Information,' which covers various topics from your post. The level builder document is also included in this section.

    However, I found one inaccuracy regarding unit availability. Sometimes, the AI can create units that are not enabled in the level files. After some testing and tinkering with the game files, I discovered that some units/buildings are enabled in the user.txt file under the modify_vehicle sections.
    Additionally, there are various files in the profile folder with N.rst extensions, where N appears to be a level number. These files also contain a structure similar to user.txt, and units/buildings need to be disabled there for proper level testing. This is what I was looking for when experimenting with levels. The .srt files are recreated every time I delete them and then run the game.
    I am not sure if this behavior can be disabled. During my testing with various maps, the units seem to be enabled under certain circumstances.

    When it comes to AI handicaps, I think the UA_source project has the potential to address these limitations. An additional switch could be added to remove the dynamic cost system and the creation delay modifier for more challenging gameplay.

    The new version of the editor is now available on my GitHub releases page. I hope the new information I've provided is clear enough to understand. If not, feel free to point out any mistakes I may have made.

    Also, sorry for the long delay—I’ve been overwhelmed with other projects.

    I have reviewed your suggestions and come to some conclusions about what I plan to do with the editor.

    I plan to create a new window in the Help section to provide essential information for map creators, explaining some of the game mechanics. While I am still unsure about the layout and UI structure, here are some topics I intend to include:
    - How to unlock all levels in the campaigns for testing purposes.
    - Information about include directives.
    - How units and buildings are preserved for AI and the user.

    After testing the energy system with reservoirs, I am still unclear about how it works.
    For instance: If AI bots have only one energy reservoir, their total energy should logically be set higher than that of the player to compensate it. However, this does not seem to be the case—or perhaps I misunderstood the mechanics.

    Example: I added an AI Ghorkov host station with energy set to 1000 (so 1000 × 400 = 400,000) and enabled the Tekh-Trak unit, which costs 500 energy. Logically, if the AI creates this unit, its host station should have 500 energy left.
    However, during testing, this was not true. Instead of consuming 500 energy, the host station lost only 1 square among 8 visible squares.

    Before adding a tooltip to clarify this, I want to ensure that all the information is accurate so other creators can easily understand what happens under the hood.

    You mentioned a special upkeep/maintenance system exclusive to AI. Could you explain how it works?
    I noticed that, in certain levels, even if I disable all units and buildings for a host station, the AI still creates some of them. For the user, units are preserved if they were unlocked via tech upgrades in previous levels, so it also differs from AI.

    I think it would be helpful to add another section in the Help menu that opens a "how-to-build-level.doc" (English version) file for creators who want to learn more about the level file structure. However, I am unsure if I have permission to include this document.

    Thank you for your feedback Schloss Charlottenburg!

    It's good to hear that someone besides me is interested in the level editor. :smiling_face:

    Taking your suggestions into account, I have released a new version of this tool with more fixes and changes.

    The unit and building names should now match the names used in the game.
    To better represent the differences between the energy system mechanics for the AI and the User, I have added a tooltip to the reload constant input field, explaining some of its quirks. I hope this will make it clearer.

    However, during my testing, I encountered a bug in the Metropolis Dawn campaign for Taerkasten. Let me explain the details:
    There are at least three new units in the Metropolis Dawn expansion, namely "Thor's Hammer," "Ostwind," and "Crusher." The problem is that "Thor's Hammer" and "Ostwind" do not exist if I add the directive include script:startupT.scr, which is supposedly used for the Taerkasten campaign. However, when I change the directive to include script:startupG.scr, which is used for Ghorkov maps, all the units work perfectly. I am not sure if this issue is specific to me or if it's a bug.

    Considering this, I think it doesn't make sense to add the Taerkasten directive for the Taerkasten campaign maps since it includes fewer units. "Crusher" is the only unit that works in both campaigns.

    Anyway, I hope this editor will help advance the mapping/modding scene!

    After years of struggling, I am finally releasing a fully open-source level editor for this unique RTS game.

    Unlike the previous Java release, this version features a much more stable UI with a real coordinate system that mimics in-game positions.
    Some of its features:
    - Drag and drop: Move host stations and squads by simply dragging them with the left mouse button to change their positions dynamically.
    - Save and Open: The level can be quickly saved and opened through the file menu. It can also be opened by simply dragging and dropping a file into the editor window.
    - Six Environment Sets: Each environment (City, Hills, Nacht, Ice, Desert, Myko) is fully supported to handle any possible level in the game.
    - Zoom In and Out: The map can be zoomed in and out to focus on different areas of the workflow. This is a game changer for level editing.
    - Building Designer: An intuitive tool that displays all possible building images for the currently selected environment and allows for quick building editing in real-time.
    - Full Metropolis Dawn Support: The editor has a special database file that can be used to adjust its capabilities for any specific mod.

    How to use:
    1. Open the Urban Assault Level Creator
    2. Create a new level or open an existing level from the File menu or by dragging and dropping an .ldf file
    3. Start creating your level and save it via the File menu or with the "Ctrl+S" shortcut

    Download: https://github.com/dubstabber/Urb…reator/releases

    It does not require any external dependencies.

    If you find any bugs or want to suggest improvements, feel free to share them in this post or by creating an issue on my GitHub page.

    This editor is not perfect, and there are design choices I made to establish a boilerplate to work with. For example, the UI theme is currently in a basic state and could benefit from UX improvements.

    That said, I have tested the editor on Linux (Fedora) and Windows 11 and haven’t encountered any bugs during my testing.

    You can check some of the screenshots here: https://github.com/dubstabber/Urban-Assault-Level-Creator