Skip to content

Releases: Xcommand/ArgentForge

Argent Forge 1.3.0

Choose a tag to compare

@Xcommand Xcommand released this 24 Oct 00:19

Argent Forge 1.3.0

A way through a mod's code. Right-click a name in a script and the menu says where it is defined in
the archive you have open, and the answers come in the order the game reads them, so the first one is
the one that counts in game. Hunting through forty files to find the class you actually wanted is the
thing this removes.

One name written in three files, offered in the order the engine reads them, with the jump back on top of the menu

What it answers

  • Classes and their parents, what replaces X points at, and state labels including the ones an
    actor only inherits.
  • The functions a mod writes: a class's own, its parent's, and one written at file scope or inside a
    namespace.
  • SNDINFO aliases and the sound files behind them, CVARINFO cvars, MAPINFO levels by both their
    map name and their lookup name, GLDEFS and DECALDEF definitions, and LANGUAGE keys in
    either spelling, with or without the dollar a caller writes in front of them.
  • The picture a sprite name stands for, by its four letters or by a whole frame name, in both
    spellings a mod uses. A brightmap never answers for the picture it brightens.

A sprite frame in a state line, its picture above it and the jump to it in the menu

Coming back

A jump remembers where you were. Alt+Left and Alt+Right, or the mouse's side buttons, walk back
and forward through the files you came through, and they work from a picture as well as from a text.
Both are ordinary keybinds under Settings > Input, so they can be moved. A jump opens the file in
the editor its own type asks for and moves the entry tree to it, so you always see where you are.

A sound written as a path, one name rather than two, and the SNDINFO line that defines it

Names as the mod writes them

weapons/sshoto and soldier.hitmonk1 are one name each, not two, and a quoted run is taken whole,
which is how A_StartSound("leech/idle", 1) reaches the line that defines it. A pk3 name can be as
long as the mod wanted; the eight-letter limit belongs to a WAD.

When it says nothing

Over a file with names in it the menu always answers, even when the answer is none: the grey line says
how many classes, names and files were read. That is the difference between 'this mod has no such
thing' and 'the archive was never looked at', and it is the first thing to check when a jump you
expected is missing.

A named random pool (random[VR_WeaponRNG]) is the one thing that has no answer on purpose: the
engine makes one up the first time a mod writes its name, so no file declares it.

Checked before the build

The reader that finds these names runs headless against 21 groups of checks, on fixtures written the
way mods actually write: a class commented out, a replaces chain, an inherited state label, a sound
whose alias repeats its file, a server heading in CVARINFO, a lookup name mid-line, a decal in
quotes, a particledef with no body in front of a class, a brightmap, a language key with a dollar.
On a large mod the index reads 987 classes, 2010 names and 11448 files, and it asks the archive's own
listing how big each file is, so not one picture is loaded to find out it isn't text.

The guide

New page: Reading a mod's code.
Everything this fork adds is in CHANGES.md.

Download

argentforge_1.3.0_win64_portable.zip below: unpack anywhere and run ArgentForge.exe. Windows 7
SP1 64-bit and up.

Argent Forge 1.2.1

Choose a tag to compare

@Xcommand Xcommand released this 18 Oct 10:22

Argent Forge 1.2.1

A LANGUAGE file written as a spreadsheet. That's the shape a modern port uses for its own strings:
one line per string, one column per language, thirty of them inside one file. The Language
Constructor opens it now, on the rules it already had.

The port's own language.csv as a table: four of its thirty-one languages on screen, and the rows nobody has translated standing quiet

What opens

  • The dropdown picks the file as ever. Over a table like this Additional asks which of its
    languages to put beside the first one, because thirty columns at once is nobody's idea of a table.
  • A cell the file left empty is a language that hasn't got the string, which is exactly what the
    engine reads: the game falls back to the source text. The column shows that text quietly, and what
    you type goes into the empty cell rather than into a second line for the same string.
  • A line break inside one of those cells is written there as a real newline, where a mod's own lump
    writes the two characters \n. The table shows the marker either way and gives the file back the
    spelling it uses.
  • default is an ordinary column: read it, edit it. Filter, which marks a row as belonging to one
    game, is read and left where it is.

What it doesn't do yet

  • Add new language won't add a language to such a file. There a language is a column of the header
    rather than a block to open, and writing one means touching every line of the table.
  • The Menu Constructor's preview resolves a $KEY through the default column, so a port's strings
    come out in English whatever language you picked there.

Why it was slow until now

Reading a table of two thousand lines cell by cell cost fourteen seconds per redraw. The reader keeps
an index by label and the file's own list of languages now, and the same table redraws in a tenth of
a second.

Checked before the build

Over the port's whole table, 1 743 400 bytes, 33 columns, 2369 lines: read, edited and written back
with nothing lost beyond the cell that was edited; one edit moves one field and no other; an empty
field fills in place; a new line taken back out leaves the file byte for byte what it was. The same
checks run on a slice of that file kept in the tree, so they don't need anyone's mod folder.

Carried from 1.2.0

Two things went wrong in that build and were fixed the same night, in the archive that went out under
the 1.2.0 name. The Menu Constructor's language dropdown showed a file while the window still thought
none was picked, so a new $key was refused without a word; and its preview read the language once,
when the window opened, so a translation typed in the table kept showing its old text. A key typed
into an empty field now takes its own name as the text rather than nothing.

Guide

Translating a language
grew a section on the spreadsheet shape, including the two limits above.

Get it

argentforge_1.2.1_win64_portable.zip below: unpack the folder anywhere and run ArgentForge.exe.
Nothing is installed and no file is written beside the exe. It keeps its own settings folder, so an
existing SLADE install is untouched, and Settings > Extra Features > Integration pulls an old
SLADE configuration across once. Needs 64-bit Windows.

Argent Forge 1.2.0

Choose a tag to compare

@Xcommand Xcommand released this 17 Oct 20:34

Argent Forge 1.2.0

The Language Constructor. It shows a mod's LANGUAGE lump as a table you can read the way the menu
will be read, and writes the colours you see back into the file as the codes the engine expects.

The Language Constructor with a cell open: the colour codes visible while you type, and the words drawn in the colour the game will use

Translating a language

  • One row per string, one column per language file. The dropdown at the top says which file new
    strings go into and which column is the original; Additional ticks the other files you want
    beside it. A file you didn't tick isn't in the table, so an archive with nine language files
    doesn't put nine columns in front of you.

  • A string the second file doesn't define yet is filled with the first file's text in a quieter
    colour. That's a placeholder: the table saying 'this one isn't translated' without making you run
    a report. Translate it and it stops being quiet.

  • Colour inside the text. The engine reads a colour as \c plus a letter inside the string, and the
    table shows the words in that colour with the code hidden, which is what the menu will look like.
    Right-click a cell for Colour... - the program's own picker, snapped to the nearest colour the
    game can actually draw, written in at the caret - Remove the colour from this cell, Copy and
    Paste.

    Two language files as two columns, and the right-click menu over a cell

  • One click opens a cell. Enter writes it, so does moving to another cell, Esc takes back what you
    typed, and Ctrl+Z / Ctrl+Y inside the window are the text editor's undo and redo. A long value
    opens a field tall enough to read all of it, and keeps the file's \n markers visible where it
    breaks the line, so a line break is something you can see yourself deleting.

  • Table and editor follow each other. Pick a row and the editor moves to its line; pick a line and the
    row lights up. A string kept in another file of the archive opens that file rather than telling you
    it isn't here, and only the strings of the files in view are listed, so a row is never an empty
    promise.

Menus

  • A $key you invent is written for you. Type a name no language file defines into any field the
    player reads in the Menu Constructor, and the key is created in the file you pointed at and as a
    placeholder in every Additional one.
  • The Menu Constructor got the same language dropdown, and its preview now draws the menu in the
    language picked there.
  • Shift selects a run of rows or a run of menus, and the run acts as one: it moves, copies, pastes
    and deletes together. A paste of four blocks comes back with a single Ctrl+Z.
  • The three constructor buttons in the text toolbar show only over a file one of them can edit, and
    Tools still lists all three for the times you want a window without the file in front of you.

Corrected

  • MENUDEF.txt and MENUDEF.dat are the archive's MENUDEF now. A comparison that included the
    extension missed them, so a mod's menus weren't offered to the constructor.
  • A binary lump isn't a language table and no longer opens as one.
  • A string added to a block copies the indentation of the line above it instead of putting a tab on
    top of the file's default.
  • The Menu Constructor's language dropdown showed a file while the window still thought none was
    picked, so a new $key was refused without a word. It now writes the key into the file it shows
    you, and a key typed into an empty field takes its own name as the text rather than nothing.
  • The Menu Constructor read its language files once, when the window opened, so a translation typed
    into the table kept showing its old text in the preview. The preview reads them again on every
    redraw, and a cell written in the table reaches the archive entry as it reaches the editor.
  • Preferences > Extra Features split up: the image editor, the three constructors and the launcher
    integration each have a page of their own now. The old Import SLADE Settings button and the
    AceZDL settings live under Settings > Extra Features > Integration.

Guide

Translating a language
walks through the window from a LANGUAGE lump you've never opened, including what a \c code is
and why a placeholder is worth having. The other pages are in
docs/user.

The reader behind the table is checked headlessly against real mod files before a build ships: every
lump has to read, edit and write back without touching a byte the window didn't mean to change -
4801 labels across 29 language lumps this time, zero losses.

Get it

argentforge_1.2.0_win64_portable.zip below: unpack the folder anywhere and run ArgentForge.exe.
Nothing is installed and no file is written next to the exe. It keeps its own settings folder, so an
existing SLADE install is untouched, and Settings > Extra Features > Integration pulls an old SLADE
configuration across once. Needs 64-bit Windows.

Argent Forge 1.1.2

Choose a tag to compare

@Xcommand Xcommand released this 15 Oct 17:14

Argent Forge 1.1.2

The sprite preview: what it plays, and how true it plays it.

Playing states

  • Hold SHIFT and the preview plays the states you selected as one animation, instead of only the
    block under the mouse. Pick a run of state lines and the loop runs across all of them, each held
    for the tics its own line asks for.
  • Settings > Actor Constructor > Play across a 'goto' instead of stopping lets that animation
    follow the jump: a run that ends in Goto ReadyKnife carries on inside ReadyKnife rather than
    turning over the same three frames. It follows up to sixteen jumps and stops when a chain comes
    back to a state it already showed, so a circular script can't spin the popup forever.
  • The name under the picture says which state it belongs to, FireExtRight: 7UNGZ0, so the moment
    the animation crosses into another state is visible rather than guessed. There's a setting to have
    the bare picture name back.

Corrected

  • Frame lengths are counted against the game clock now. Each frame used to start when the timer got
    round to it, which added a few milliseconds every frame and left a long animation running further
    and further behind the speed the script asks for.
  • Two Actor Constructor settings, Playback speed and Frame to write in front of it, came up
    empty on opening and then wrote their default over your saved value as soon as you pressed OK.
    Both show what's stored now.
  • From upstream SLADE: the gradient dialog has a button to swap its two colours.

Get it

argentforge_1.1.2_win64_portable.zip below: unpack anywhere and run ArgentForge.exe. It keeps its
own settings folder, so an existing SLADE install is untouched, and
Settings > Extra Features > Import SLADE Settings pulls an old configuration across once.

Argent Forge 1.1.0

Choose a tag to compare

@Xcommand Xcommand released this 12 Oct 23:29

Argent Forge 1.1.0

The Menu Constructor. It edits a mod's menus in the MENUDEF text you already have open, and shows
you what the game would draw.

The Menu Constructor with its preview open on a mod's MENUDEF

The Menu Constructor

  • Opens from the text editor's toolbar, from its right-click menu, or from Tools > Menu Constructor.... The title says which lump in which archive the window is editing, because several
    are open at once.

  • Blocks on the left, that block's lines in the middle, the arguments of the selected line under
    them. Nothing is kept twice: the window writes the text, so the editor's Ctrl+Z is the undo for it
    as well.

  • Preview draws the menu the way the engine does, at the resolution you tell it to imitate: the
    same line spacing, labels right-aligned to the gutter the engine works out for itself, the game's
    colour codes, and LANGUAGE labels resolved through the same two passes the game makes. A line the
    engine would stop loading on isn't drawn at all, and the window says why. The picture behind the
    menu is the one the game would be sitting on, and a knob dims it when it fights the text.

    Two menus as the preview draws them

  • The names it offers come out of your own archive: the cvars it declares, its TEXTCOLO ranges, its
    LANGUAGE labels, the pictures inside it, and the widget classes it writes in its own ZScript, whose
    Init() becomes that line's fields. You pick from that list instead of typing a name and hoping.

    The archive's own cvar names offered under a field

  • SHIFT does the arranging: Shift+Up and Shift+Down move a block or a line, Shift+click picks a run,
    Shift plus the wheel over the preview sets how large it draws, Shift+Ctrl+Z redoes. Ctrl+C and
    Ctrl+V carry a block or a line between the window and the text editor in both directions, and
    Delete works in whichever of the two lists has the keyboard.

  • An empty MENUDEF is a starting point rather than a dead end. The window asks where your first menu
    should hang, under the game's Options list or on the main menu, and writes both blocks it takes to
    be seen in game. One Ctrl+Z takes the pair back.

    Where the first menu should hang

    The page and the line that points at it, written

  • Lines you didn't touch come back exactly as the file had them: mixed CRLF and LF, indentation,
    comments, and the shapes the window has no row for.

Smaller things

  • Open Containing Folder shows the folder a selection lives in, from the entry list's right-click
    menu, its left toolbar, or the Entry menu. It is there for a project opened as a folder, not for
    an entry inside an archive.

    Open Containing Folder, and the window it opened

  • AceZDL: Settings > Extra Features writes this program's path into the launcher's Config.xml, so
    its "Open with SLADE" starts Argent Forge, and keeps the path that was there before so you can put
    it back.

    Extra Features: the SLADE import, the Recent Files size and the AceZDL block

  • Settings live in Argent Forge's own folder now rather than SLADE's SLADE3, so the two programs
    stop writing over each other. A first run offers to pull an existing SLADE configuration across,
    and the same import sits under Settings > Extra Features.

  • The Start page's Recent Files list has a font size of its own under Settings > Extra Features,
    and a configuration written from nothing starts on the dark editor scheme.

  • The splash screen is our own artwork, and nothing asks SLADE's server for anything any more.

Notes

  • The lists the window works from are generated from GZDoom's own sources and from a pile of real mod
    files by the scripts in scripts/gen, so what it offers is what the engine's parser reads rather
    than what someone remembered from a wiki.
  • The MENUDEF reader is checked headlessly against a corpus of real mod files before a build ships:
    every block pasted and taken back has to hand the file over byte for byte.

1.1.1

Same release, one fix on top of it. A window closed while minimized, or on a monitor that has since
been unplugged, used to come back at a corner nobody could reach: the taskbar showed it, the screen
didn't. Such a corner is refused now, both saved and read back, and the window opens centred. That
matters most for the map editor, which is the window people leave open for hours. The archive is
argentforge_1.1.1_win64_portable.zip.

Download the newest argentforge_1.1.*_win64_portable.zip below, unzip the folder anywhere and start
ArgentForge.exe. Nothing is installed and no file is written next to the exe. Needs 64-bit
Windows.

Argent Forge 1.0.0

Choose a tag to compare

@Xcommand Xcommand released this 28 Sep 11:16

The first public build. Everything here sits on top of SLADE 3.2.12, which Simon Judd wrote.

Less typing in DECORATE and ZScript

  • The Actor Constructor: flags, properties and state actions as a list you click through, with the
    engine's own vocabulary behind it. It reads your file, changes the lines you touched and leaves the
    rest of the bytes exactly as they were. It sits next to the text editor and follows the caret to the
    actor you're looking at.
  • Value hints say what a property wants in the engine's words: INT, FLOAT, "STRING", INT or (EXPR), with ? on the parts you can leave out.
  • A new actor, or a new actor file where you point, and the root include lump gets the new file
    registered for you.

See what you're editing

  • Hover a state line in the code editor and the sprite appears; hold SHIFT and it animates.
  • The picture editor got real painting tools: shape, size and feather, opacity on the wheel, blend
    modes, colour jitter, Pixel Perfect lines, tiled view that paints across the seam, and brush presets
    you can hand to someone as a file.
  • Undo covers all of it, including the steps that used to be one-way: format conversion, offsets,
    strokes.
  • Argent Light and Argent Dark, and the start page follows whichever you pick.

For someone opening it for the first time

  • A written guide in three parts, from Help->User Guide.
  • The start page says what this build changed instead of quoting SLADE's news feed.
  • Nothing installs, and no file is written beside the exe. No automatic request leaves the machine
    either: SLADE's version check is gone, and Help->Releases... opens this repository's releases
    page instead. Help->Online Documentation still shows SLADE's wiki, because that is the software the
    docs describe, and it loads only when you open it. A crash keeps its report on your machine: the
    button that used to post it to SLADE's server is gone.

Unzip, run ArgentForge.exe. 64-bit Windows. Settings live in %APPDATA%\SLADE3, the folder SLADE
itself uses.