Repository navigation
Releases: Xcommand/ArgentForge
Release list
Argent Forge 1.3.0
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.
What it answers
- Classes and their parents, what
replaces Xpoints 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. SNDINFOaliases and the sound files behind them,CVARINFOcvars,MAPINFOlevels by both their
mapname and theirlookupname,GLDEFSandDECALDEFdefinitions, andLANGUAGEkeys 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.
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.
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
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.
What opens
- The dropdown picks the file as ever. Over a table like this
Additionalasks 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. defaultis 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 languagewon'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
$KEYthrough thedefaultcolumn, 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
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.
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;Additionalticks 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
\cplus 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 forColour...- 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,Copyand
Paste. -
One click opens a cell.
Enterwrites it, so does moving to another cell,Esctakes back what you
typed, andCtrl+Z/Ctrl+Yinside 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\nmarkers 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
$keyyou 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. Shiftselects 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 singleCtrl+Z.- The three constructor buttons in the text toolbar show only over a file one of them can edit, and
Toolsstill lists all three for the times you want a window without the file in front of you.
Corrected
MENUDEF.txtandMENUDEF.datare 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$keywas 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 Featuressplit up: the image editor, the three constructors and the launcher
integration each have a page of their own now. The oldImport SLADE Settingsbutton and the
AceZDL settings live underSettings > 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
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 stoppinglets that animation
follow the jump: a run that ends inGoto ReadyKnifecarries on insideReadyKniferather 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 speedandFrame 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
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
-
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. -
Previewdraws 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. -
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. -
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. -
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 Foldershows the folder a selection lives in, from the entry list's right-click
menu, its left toolbar, or theEntrymenu. It is there for a project opened as a folder, not for
an entry inside an archive. -
AceZDL:
Settings > Extra Featureswrites this program's path into the launcher'sConfig.xml, so
its "Open with SLADE" starts Argent Forge, and keeps the path that was there before so you can put
it back. -
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 underSettings > 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 inscripts/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
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 Documentationstill 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.











