Giter Club home page Giter Club logo

worldalteringeditor's Introduction

C&C World-Altering Editor (WAE)

Modern open-source map and scenario editor for

Motivation

The World-Altering Editor is a new map editor for the second-generation classic Command & Conquer games, designed to replace the old FinalSun/FinalAlert2 (FS/FA2) map editor developed in the TS/RA2 modding community in the early 2000s.

To make it familiar for existing mappers, the editor is designed to follow the FS/FA2 UI design, but with modernizations and changes to make the editor smoother and more efficient to use.

State of the project

The editor includes practically all tools present in FS/FA2 and a significant number of new ones. Many familiar tools have been improved with significant quality-of-life improvements. These improvements make it much more efficient to create maps with WAE than the old FS/FA2 map editors.

New functionality and helpful features are being constantly added to make the mapping experience smoother and more efficient. Some examples include a zoom function, lighting preview, a much improved trigger editor interface, and a terrain generator for rapid detailing of large areas.

System requirements

WAE is graphically more demanding than FS/FA2, but can also utilize modern hardware much more efficiently, meaning that if you have a decently modern computer, WAE achieves smoother performance with better graphical quality.

To run WAE, you need the following

  • .NET 8 Desktop Runtime
  • DirectX11 compatible GPU*. At least 2 GB of VRAM is recommended, although WAE can run on less.
  • 64-bit system. If you absolutely need a 32-bit build, you can modify the source to produce one.

* Some Intel GPUs, such as HD Graphics 4000, are known to have driver issues that prevent them from running WAE. It is recommended to have an AMD or Nvidia GPU for WAE, but newer Intel GPUs can also work.

Downloads

For most end-users, it is recommended that you download our latest official release: https://github.com/Rampastring/WorldAlteringEditor/releases

Development builds are available through our automated build workflow which is run whenever new commits are pushed. You can download the editor from the build artifacts: https://github.com/Rampastring/WorldAlteringEditor/actions

If you are mapping for Dawn of the Tiberium Age, the editor is bundled with the mod.

Contributing

We gladly accept contributions as long as they are well made and we deem them as beneficial for a significant part of the editor's userbase.

Follow the guidelines in Contributions.md when creating pull requests.

License

The editor is licensed under the GNU General Public License, version 3. If you create and publish a derivate, you need to also release your source code for the fork. Please see LICENSE.txt for more details.

EA has not endorsed and does not support the World-Altering Editor.

Screenshot

Screenshot of the editor

Introduction video

Dawn of the Tiberium Age Scenario Editor Introduction

The World-Altering Editor was originally developed by the Dawn of the Tiberium Age staff for their mod. TS and YR support were added later to offer a boost in mapping efficiency to the rest of the second-generation C&C community.

Dawn of the Tiberium Age Scenario Editor Introduction

worldalteringeditor's People

Contributors

crimsonum avatar eliasmasche avatar mailaender avatar mortonpl avatar rampastring avatar starkku avatar zivdero avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

worldalteringeditor's Issues

WAE for YR cannot edit ScriptAction [DoThis] in the correct form

In the TS, second parameter of ScriptAction [DoThis] (11,X in map) contains 25 value, while in RA2/YR it is 30/32.
Some values have added or changed their numbering in RA2/YR. But ScriptAction [DoThis] in WAE for YR, still maintaining the form in TS.

Values for RA2/YR update can be find in Assign New Mission part at [https://modenc.renegadeprojects.com/ScriptTypes/ScriptActions]

Please add collections+inis for SmudgeTypes and TerrainTypes

As title says, the OverlayTypes aren't the only ones with entire categories of objects....

In my mod I have dozens of specific TerrainTypes, like cherry blossom and almond trees, hay bails and such, that really could use their own groupings.

Count ore/tiberium value globally

The current tool for counting credits cannot be used map-wide, because the map is a rectangle and the tool selection area is a a rotated rectangle (diamond). FS/FA2 always display credits on map, here it could be implemented as a C# script or a Tools menu entry.

No Raise / Lower cell height upon placement hotkeys

Within current and latest FA2SP, when selecting a cell or cliffs and hovering over the ground to place them, you can press 'Page Up / Page Down' to raise or lower the height of the cell you are about to place respectively.

This is a huge QOL improvement.

Please show all files, or allow the option in the File->Open dialog

Currently there's no way to browse or select anything not *.map from within WAE, only during startup where it can be manually typed. At the very least there should be some consistency allowing a user to type in a name there too, but even better would be just to have a way to show all files, or allow us to define the file extensions we want to see.

Just a simple dropdown where we could see all the common map types, .map/.mpr/.yrm, and an additional "everything" choice is enough. There's probably no sense defining custom types in one of the configs to enable this, it should just show them all, but if additional mod-specific extensions are possible to add to the list, then maybe?

Ice growth overlay and cursor ignore map height

When displaying or modifying the ice growth flag of cells, the graphical overlay and the cursor ignore terrain height, causing them to appear misplaced.

GIF 14 3 2024 21 01 20

Tested using the TS client build from the 1.0 release.

Add support for YDrawFudge

YDrawFudge in rules.ini offsets the drawing of a terrain type's shape on the Y-axis. Currently, the key is not read by WAE, causing for example the various "Fona" types in TS:Firestorm to appear several pixels lower than they do in-game.

Example:

[FONA01]
YDrawFudge=-12 ;this object is fudged 12 pixels upwards

Add support for more bridges to paint

Currently, the "Paint Low Bridge" tool only paints the one bridge version, it should be expanded to support other bridge types (as well as high bridges) and preferably be de-hardcoded.

Improve Copy Paste tool with more options

Copy paste tool is one of the most important tools of WAE, but sometimes is necesary delete objects to paste, it's specially a problem with smudges. and copy paste object properties could be useful as FA.

-Add an checkbox to overwrite each type of object, current WAE only replace overlays and tiles.
-Add an checkbox to copy object properties.

image

[Bug] Large buildings have drawing artifacts

Large buildings can be displayed with drawing artifacts or not displayed at all. It is yet to be determined if it's caused by foundation size or overall shape dimensions.

Example (using buildings from Mental Omega 3.3.X):
image

Terrain from secondary mixes overridden by content in primary mixes

Looking at the code, it appears WAE loads theater mixes last (on-demand) for the map, probably in an effort to save memory. I do not see any sort of filtering regarding loading mod content beforehand....

Sooooo perhaps a filename collision check added to the mapfile theater loading section is enough, to see if that particular resource (tile in this case) is already loaded? It wasn't clear to me if all the filenames available in the game+mod are recorded to compare against.

I don't think the alternative of recording which secondary mix also contains terrain, and then re-loading it after the theater mixes is quite as elegant.

Placing a Waypoint can't be cancelled?

Seems silly not to be able to unclick the place waypoint, the interface doesn't make it exceptionally clear what mode you're in when using the tools, and it's easy to be stuck with a tool you didn't want. I would expect a simple ESC could cancel the dialog asking for WP number, but a way to cancel/close it would be good too.

Closing the "Resize Map" window doesn't return you to the "Map Size" window

When you go to "Map Size" and click "Change Map Size...", clicking X or Apply doesn't take you back to the "Map Size" window like it would in FinalSun. After changing a map's size, mappers will almost always need to adjust the Visible Map Area right afterwards, so having to reopen the "Map Size" window every time is inconvenient.

Ideally the "Resize Map" window could also have a checkbox that makes it automatically adjust the Visible Map Area in accordance to values you're resizing the map by.

make base nodes draggable

if simply delete and re-create base nodes, this node will be put in the last of the building list. making base nodes draggable will be convenient to adjusting bases.

Remove MapEditorSettings.ini

The release zip package includes MapEditorSettings.ini, which causes the user's settings to be reverted every time they replace WAE's files with a new version. Considering that WAE already generates this file on its own, it's better to not include it.

Add a wall painting tool

Currently, it seems that the only way to paint connected overlays like walls is manually by picking the right frame. There should be a tool for this like in FA2.

Don't register duplicate TechnoTypes

If a TechnoType is listed in rules twice, it shouldn't be registered twice, as the game doesn't do that either.
Exists in vanilla YR with NAPSYA.

image

Overhaul the random terrain generator dialog

The current RTG interface can be admittedly pretty confusing and overwhelming for a beginner user.

image

  1. The arbitrarily hardcoded amount and order of groups is pretty overwhelming on the first sight and the hardcoded tab order means flexibility limitiations.
  2. IMO separate chances for specifically open and closed cells (which are also named confusingly IMO) are an unneded complications and seldom used to warrant the two co-existing.

What I propose instead is a dynamic group list UI for any amount of groups which wouldn't be as overwhelming for the user.

1234567

The user would be able to create his own groups (may even name them) with arbitrary group contents which they can pick by pressing on the selected tiles/objects on the left of each group (a "bag"), and specify where they should appear and with what frequency. Group amount would be a bit bigger because it would not be possible to specify different open/closed frequencies for the same group, but not many groups are like this and chances are you would want a different set of stuff when painting over/under something anyways.

Add map lighting and ion storm lighting

Currently maps are not affected by map lighting. The editor should be able to display map or ion storm lighting by tinting and darkening all graphics. The editor could also take Ground value into account, changing brightness of cells at different heights.

Buildable walls defined as BuildingTypes should support NewTheater art

As per conversations on Discord, it seems only the Theater= tag is supported, so NewTheater= support would be additional, rather than a change. Just like BuildingTypes can use Theater art instead of NewTheater in RA2, overlay walls should support NewTheater.

I just double-checked and even unbuildable walls work fine with NewTheater art, with the only change being that they automatically use isoxxx.pal instead of unitxxx.pal (which is what walls defined as buildings use)...

Add cliff drawing tool

WAE should include a tool to draw cliffs automatically as close to a user-defined path as possible

Dehardcode editor themes

Currently there are two themes available ("Default" and "Tiberium"), neither of which is editable via INIs. It would be nice to have a system similar to that of XNA Client.

Support light emitting BuildingTypes

The map editor should display tiled light emitted from BuildingTypes.

Example configuration from rulesmd.ini:

[GALITE]
LightVisibility=5000
LightIntensity=0.2
LightRedTint=0.05
LightGreenTint=0.05
LightBlueTint=0.01
; rest omitted for brevity

Overlay Collections don't allow subsequent frames to be used or specifed?

Most of my rock and debris (logs) overlays have at least 2 frames of artwork, often the same art with a different tint, such as sandy/tan vs blue/gray, for use in different spots. I have several rock overlays that have at least 20 frames.

The collections function only uses the first frame, which makes it rather useless in my case, BUT, to be really useful, we should be able to specify not only the overlay (per line) but the frame of that overlay. This way we could include or exclude alternative tint frames for those that use them, or as an example create a collection of only the darkest rocks (frames) of each overlay.

Something like OverlayType0=TROCK01,1 where the extra argument is frame #, but defaults to the first frame without. Frame # could start at zero or one, as long as it's clarified, but I would expect from zero.

Improve the line break logic of text boxes.

At present, in text boxes(like Action Description), the newline logic of text is based on the recognition of spaces between words. However, for some other languages (such as Chinese), spaces may not be used in their language systems, which leads to the program believing that the entire paragraph is a single word, resulting in some multilingual processing problems.
image

Improve sidebar previews

Sidebar previews should include the whole object, including turrets, barrels, building animations, etc.

Linux Compatibility

Someone had to say it!

Presently, the editor itself does not support Linux. It uses a windows-specific runtime and has items such as WinForms in use.
While wine (+ mono) is able to make certain elements run on linux, dotnet 7 is expected to support linux there are no dotnet 7 runtime dependencies for wine (at least accessibly through winetricks), so it is unable to run the editor.

While the updater is less important, as it will likely be updated through a mod's cncnet client rather by a developer rather than an individual user, having the editor support linux (at least through linux compatibility) would be extremely useful.

Given how FA2 can be run through wine, it would be sad to see it's replacement be restricted to Windows.

Display previews to Copy Paste tool

Copy and paste tool only shows tiles in preview, in the next pic I copied everything except tiles, there is no way to know the exact position of the objects.

image

Add Centre Marker

Add a marker for the centre of a map, similar to FA2 with its starting player positions, as seen in the attached image:

image

Expand ground raise/lower tool to cover all basic LAT types

In order to avoid features being destroyed, we need to set a limit of what the tools will deform, and it makes most sense to enable it for all the LAT tiles, which we already know are 1x1.

...

Additionally, since RampBase and RampFix can be changed to match up with another tileset, for example "grass" in urban in SE, ideally there should be a way to force/override the default flat tile used when morphing the ground back to level. FA2 defaults to ClearTile, which is fine, but we should have the ability to pick an alternate tileset, also a 1x1, also logically a LAT tileset, but not critical to be one I would think?

Theaters.ini seems like the right place to add this override, and I could see it being practical to use both the tile group names defined at the very beginning of the theaters (GreenTile, SandTile, ClearTile, RoughTile) or the tileset number. If the implementation limits the ground morphing to just the LATs, then the naming is fine, if it's opened up to other 1x1 tilesets, then perhaps supporting both styles is best as the value.

Example theaters.ini entry:

[Urban]
ConfigINIPath=urban.ini
ContentMIXName=isourb.mix
TerrainPaletteName=isourb.pal
UnitPaletteName=uniturb.pal
FileExtension=.urb
NewTheaterBuildingLetter=U
MorphedToLevelTileset=GreenTile

Yuri's Revenge version of editor won't load

Log from except.txt

14.10. 19:01:33.872    Unhandled exception! @ 19:01:33
14.10. 19:01:33.872    Message: Invalid font index: 0
14.10. 19:01:33.880    Stack trace:    at Rampastring.XNAUI.Renderer.GetTextDimensions(String text, Int32 fontIndex)
   at Rampastring.XNAUI.XNAControls.XNALabel.RefreshClientRectangle()
   at Rampastring.XNAUI.XNAControls.XNALabel.set_Text(String value)
   at TSMapEditor.UI.MainMenu.Initialize() in D:\a\TSMapEditor\TSMapEditor\src\TSMapEditor\UI\MainMenu.cs:line 52
   at Rampastring.XNAUI.WindowManager.AddAndInitializeControl(XNAControl control)
   at TSMapEditor.Rendering.GameClass.InitMainMenu() in D:\a\TSMapEditor\TSMapEditor\src\TSMapEditor\Rendering\GameClass.cs:line 139
   at TSMapEditor.Rendering.GameClass.Initialize() in D:\a\TSMapEditor\TSMapEditor\src\TSMapEditor\Rendering\GameClass.cs:line 133
   at Microsoft.Xna.Framework.Game.DoInitialize()
   at Microsoft.Xna.Framework.Game.Run(GameRunBehavior runBehavior)
   at Microsoft.Xna.Framework.Game.Run()
   at TSMapEditor.Program.Main(String[] args) in D:\a\TSMapEditor\TSMapEditor\src\TSMapEditor\Program.cs:line 26

Draw shape turrets of BuildingTypes

Currently SHP turrets on buildings are not shown at all. The editor should draw them and show correct facing.

Example configuration in rulesmd.ini:

Turret=yes                         ; boolean
TurretAnim=                        ; Animation
TurretAnimDamaged=                 ; Animation
TurretAnimIsVoxel=no               ; boolean
TurretAnimX=0                      ; integer
TurretAnimY=0                      ; integer

Add other tiles to LATPanel?

Snipaste_2024-01-21_21-04-13

The second LAT Pavement in new urban is quite useful. Is there a way to add it to the LATPanel, even if it's not actually a LAT tile?

Cloaking / Gap Generating Overlay

Add an option to enable / disable an overlay or visual representation of what's hidden with cloak generators or gap generators attached to objects when placed.

Would be very useful for towers designated to protect survival style AI spawns to make sure things are hidden properly.

Weapons are already parsed for their ranges, I assume would just need to add this to the parsing? But beyond my expertise.

AI Trigger's Secondary Teamtype is Replaced with a Duplicated Primary Teamtype When A Map is Loaded

As the title states, when you have an AI trigger that uses a different Secondary Teamtype, WAE will replace it with a Duplicated Primary Teamtype when loading the map.

Unsuspecting mappers may then accidentally save these overwritten teamtypes, and cause unintended results with their custom AI triggers.

Note: If they noticed, and fixed, the overwritten values, and then save the map, the corrected values will still be there.

Add support for custom Foundation

Currently the editor will crash if a building has foundation other than Foundation=WxH, where W and H are width and height. Because of this, editor is not compatible with YR mods using Ares Foundation=Custom feature.

Custom Foundation "reference" (if you can call it that): https://ares-developers.github.io/Ares-docs/_downloads/custom_foundation.html

It appears to me the configuration for custom foundations is as follows:

Foundation=Custom
Foundation.X=                   ; integer, foundation width 
Foundation.Y=                   ; integer, foundation height
Foundation.N=                   ; comma separated pair of integers, X Y coordinates of the Nth foundation cell
FoundationOutline.Length=       ; integer, length of foundation outline in cells, iow. circumference (8 neighbour convention)
FoundationOutline.N=            ; comma separated pair of integers, X Y coordinates of the Nth foundation outline cell

An ad hoc way to address this is to read Foundation.X and Foundation.Y and treat the foundation as a rectangle of this size, but matching foundation outlines require a proper solution.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.