Skip to content

History

Revisions

  • Getting Started: the Fit flags explained, and the right button in the Tools window Six fixes, one of which was a factual error in a UI instruction. The Profile Editor is the FIRST button in the Gui Editor's Tools window, not the second. The second is Set Theme, which changes the theme on the Gui currently loaded -- a different thing entirely, and a reader following the old sentence would have opened it, found no colors, and been stuck. The four Fit flags on the sprite control are now dictated precisely and explained one line each -- Full Size on, Keep Proportions on, Clamp Image off, Tile Image off -- rather than singling ClampImage out. The old text harped on ClampImage without ever saying what it or its neighbours do, which leaves a reader with a superstition ("ClampImage bad") and no model. Full Size and Keep Proportions are the two doing the work: use the space, do not distort. The section now says which flags matter, what each is for, and sends anyone who wants the interactions to the GUI Guide's GuiSpriteCtrl reference, which documents all four properly. The theme section now has the reader change something instead of being told they could: click the button profile, set Font Size to 30, watch the preview. The theme's default size is meant for editor panels and is too small for two big buttons on a title screen, so it is a change with a visible payoff -- which is what makes the change-and-look loop worth teaching at all. The title picture's letterboxing warning now says "if you have a smaller screen", because that is when it happens. And the guide is consistently American: color, center, behavior, gray, toward. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 19, 2026
    acf54b8
  • Getting Started: six corrections and a theme section that comes first 1. Linux does have a ready-made download. Early Access 4 ships builds for Windows x64, macOS on Apple Silicon and Linux x86_64; the guide claimed Linux users had to build from source, which would have sent people off to compile an engine for no reason. Now names all three, and says that an Intel Mac is the case that does need building. 2. The title picture is no longer something the reader must draw before they may continue. The art pack has one with the game's name already painted into it; drawing your own is offered rather than required. 3. The example's buttons are centre-anchored horizontally and anchored to the bottom, and the step now says so and says why -- a title screen is the most likely screen in a game to be looked at in a window nobody planned for, and the default top-left anchoring sends the buttons wandering the moment somebody drags a corner. 4. Dropped the paragraph explaining that buttons ought to do something. Readers know. 5. THE THEME MOVED TO THE FRONT of step 13, which is where it belonged all along. It used to be a note in the step's conclusion -- after the reader had already placed and themed every control, which is the one order that makes extra work, since a control already placed keeps the profile the editor wrote into it. Now it is the first thing in the step: open the Profile Editor, look at the theme node, copy Coin Collector's palette or pick your own, rename the theme off "Base", set $CoinCollector::Theme, and go round the change-Save-look loop until you like it. With a screenshot of the palette so the numbers can be read off, and the note about Set Theme kept as the reason to do this first rather than as a warning after the fact. 6. Added a section on enemies, which is what a reader wants next and what the PlanetX reading list only implied. An enemy is a coin that moves, the thing more is a self-rescheduling tick, and enemy.cs/bug.cs/brute.cs are 198/19/25 lines -- which is the whole point, and the same class/superclass split as step 4's shotgun. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 19, 2026
    ab16042
  • Getting Started: which things need their collision shape moved, and which do not Step 11 was telling the reader to move all three shapes down to the ground. Only two of them should be. The hero and the crate are drawn standing up: a figure seen from above still has a body above the feet carrying it, and a crate has a front face you should be able to walk behind. A coin has neither -- it lies flat, so the whole picture is already the part on the floor and its middle is its footprint. Its sensor stays where it started. The step now says why, because "move your shapes down" as a blanket rule is wrong and a reader applying it to a coin would be following the guide correctly and getting a worse answer. The hero's circle also grows from 0.65 to 0.8, and the step now admits that number is tuned rather than measured -- with which way to lean and what each mistake feels like to play. Too small and he slips through gaps that look too narrow, which reads as him being insubstantial; too big and he stops at gaps that look passable, which is worse because the player will try again and blame the game. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 19, 2026
    d84ef46
  • Getting Started: a step on depth, an art pack, and coins you can reach Three things, and the guide grows a step for the first. NEW STEP 11, "Walking behind things". Until now the hero slid over the front of every crate like a sticker, because within a layer the engine draws in creation order and he was made first. The step covers the three ideas that fix it and that every top-down game uses: sort by the ground (setLayerSortMode "-Y"), name the point that touches the ground (setSortPoint, at the feet rather than the chest), and collide with the part on the ground (a small circle at the feet, and only the crate's bottom half). It also does the pixels-to-units conversion slowly once, because that is the arithmetic a 2D game asks for all day: 6 units over 128 pixels is 0.047 units per pixel, and every number in the step comes from it. Steps 11-14 become 12-15. THE ART PACK. Act 2 now assumes a downloadable zip of the six PNGs rather than asking the reader to draw a character before they may continue. Drawing your own is the better game and the worse way to spend the four hours you set aside to learn an engine. The guide says so, mentions it in passing, and closes with a section on throwing the borrowed art away -- including which two numbers from step 11 have to be re-measured when the new character's feet are not where mine are. COINS INSIDE CRATES. A coin that spawns inside a crate cannot be reached, so the counter never fills and the level is silently unwinnable. Blocks are now placed first and each coin asks the scene for a clear spot: pickCircle with the "collision" pick mode. The step explains why that argument is load-bearing -- the background sprite covers the entire level, so without it every spot looks occupied. The collision-shapes screenshot moved from step 10 to step 11, where the shapes on screen are the ones the reader just made. Step 10 now says plainly that its shapes are still blunt and that step 11 is where they get shaped. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 19, 2026
    b0126ae
  • Getting Started: step 11's pictures are Coin Collector's own now Both screenshots in that step were of PlanetX. The animation editor is now showing the reader's eight-frame walk strip -- the thing the paragraph above it just told them to make -- with the inspector confirming the cell grid they typed in. The particle editor is showing their coin burst. The burst is caught in flight rather than after it has finished. It is a one-shot, so a picture taken whenever the editor happened to settle was an empty preview and a graph; it is now coins mid-air over the curves that colour them. Captions updated to match: the particle graph is the colour channel, not alpha. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 19, 2026
    29ca3a0
  • Merge: Coin Collector — the rename, and what a real theme and a real title screen taught the guide Second pass over the Getting Started Guide, all of it driven by building the game rather than by reading the text. The game is now Coin Collector, and the title art has the name painted into it. A bigger hero, a camera that survives a window resize, a sprite that turns around when it walks left, and a title screen with two buttons that both do something. Two silent bugs found and fixed: naming profiles literally, which breaks the moment a reader themes their project and takes the progress bar with it; and an image and an animation sharing one asset name, which resolves to the image and never plays. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 19, 2026
    3c319db
  • Getting Started: the game is called Coin Collector It got called that out loud often enough that the name stuck, and it is the better name. Renaming now costs a pass over one page; renaming after the URL has been shared costs more. Every screenshot showing the old name was retaken rather than edited: the New Project dialog, both asset dialogs, the Gui Editor, the running game and the title screen. The others were retaken too, because the project they photograph was rebuilt under the new name and there is no sense keeping pictures of a project that no longer exists. Two things improved on the way through. The project Title is now "Coin Collector" WITH the space, where the folder is CoinCollector and the module is CoinCollectorGame. Three names, three shapes, and the dialog derives the last from the first by dropping the space -- which is exactly what "Why two names" was trying to explain with two examples that looked identical. The section is now about three names and the screenshot shows all of them at once. Step 12 gained a real title screen. It no longer reuses the level background: the reader draws a picture with the game's name in it, because a title screen is the one place a game says what it is called and no engine text tool will beat a drawing program at a logo. It also now teaches the cover trick -- art LARGER than the screen, sizing set to fill, ClampImage off -- so a background stays covered when the window is resized instead of letterboxing. And it warns that the Gui Editor's canvas is the editor's shape rather than the game's, so a full-bleed background looks letterboxed while you are editing it and correct when you run it. That one would otherwise read as a mistake the reader had made. Also renamed in Asset-Manager-Editor-Guide and Project-Manager-Guide, which both used the old name as their worked example. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 19, 2026
    1620232
  • Getting Started: ask the theme for profiles instead of naming them Wiring up a real theme found this, and it is the worst kind of bug: silent. The guide had controls name profiles literally -- BaseEmptyProfile, BaseLabelProfile, BaseProgressProfile. Those belong to the stock theme a project is created with. Make your own theme, which step 12 now actively encourages, and those names stop resolving. Nothing errors. Every control quietly falls back to the engine's bare default, which for a label is unstyled text and for a progress bar is an INVISIBLE BAR. Measured on CoinCapture with a real theme applied: label and bar both reported GuiDefaultProfile, and the bar simply was not on screen. The documented answer is in the GUI Guide already: a theme is an object that owns profiles and you fetch one by category. So the guide now sets $CoinCapture::Theme once in game.cs and every control asks %theme.getProfile("empty" / "label" / "panel" / "progress"). Retheming the project is then one line, which is what step 12 promises. Category lookup folds case, so the spelling does not have to match the theme file. Also adds a backing panel to the HUD, because the same test showed the readout legible over dark ground and gone over bright ground as the player walked. A theme's text colors were chosen for that theme's own surfaces, not for arbitrary game art. That is why every HUD has something behind its text, and the guide now says so. And the title screen loses its OPTIONS button. It did nothing. Two buttons, both wired -- START runs a method on the game, QUIT runs quit() -- which also makes the point that a Command is just script and does not care whose function it calls. Every button on a title screen is a promise. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 19, 2026
    b2b6930
  • Getting Started: a bigger hero, a camera that survives a resize, and a sprite that turns around Four changes from reading the finished game rather than the finished text. The hero was "3 3", a twentieth of the screen. At "6 6" he reads as the character the game is about instead of a detail on a large background. His collision circle goes from 1 to 2 with him -- left at 1 the shape would have been a third of the art, which changes how pickups feel -- and the comment now says why the shape is smaller than the picture at all, since that is deliberate rather than sloppy. The camera stretched when the window was resized, and the guide said nothing about it. It now has the fix as its own short section in step 6, where the camera is built: hold the camera HEIGHT, work the width out from the window's aspect, in an onExtentChange callback on the named window. Verified rather than asserted -- 60x45 at 4:3 becomes 80x45 at 16:9, so a wider window shows more world and nothing distorts. It is the first engine callback the guide shows that is not onAdd, and the second thing a reader gets for having named an object. The walk cycle only faced right. setFlipX mirrors it, which is why almost nobody ships a mirrored copy of a walk strip. The two signs are tested separately rather than as setFlipX(%x < 0) on purpose, and the guide says why: the short version snaps the character to face right every time they walk straight up or down. And step 12 now says out loud that the theme it handed the reader is the editor's own -- deliberately neutral, and beside their own art it will read as a stock dialog on top of a painting. It points at the Gui Editor Guide for the Profile Editor rather than trying to teach theming in a paragraph. Held on a branch: the text now says "6 6" and the published images still show the smaller hero. It merges once the pictures are retaken. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 19, 2026
    a171c48
  • Merge: the Getting Started Guide's screenshots, and a background sprite The guide went live with thirteen [SCREENSHOT] placeholders. It now carries twelve real images and no placeholders; the thirteenth asked for a file browser and the ASCII tree above it already did that job. Also in here: a background-sprite section the guide was missing, and four corrections that only came out of building the thing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 19, 2026
    adc98eb
  • Getting Started: drop the folder-tree screenshot The last of the thirteen placeholders, and the only one that was never a picture of the engine -- it asked for a file browser showing CoinCapture beside PlanetX. The ASCII tree printed immediately above it already shows exactly that, more legibly than a screenshot would and without putting one operating system's window chrome into a guide that opens by telling the reader there is a build for Windows and one for macOS. The page now carries twelve images and no placeholders. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 19, 2026
    f90d04c
  • Getting Started: the CoinCapture screenshots, and the bug building it found Twelve of the guide's thirteen placeholders are now real images. The remaining one is the folder tree, which is a file browser rather than anything the engine draws. The seven CoinCapture shots are of a game that was actually built by following this guide -- the project wizard, five image assets through the dialog, eight script files, an animation, a sound, a burst, a title screen authored in the Gui Editor. The finished game was then exercised rather than just photographed: the hero moves, coins collect, the HUD counter follows, and clearing a level does not leak the old one (21 scene objects before a restart, 21 after). Eight checks, all passing. Following it also broke it once, in a way only building it could find. Step 11 told the reader to make an image asset called heroWalk and then an animation asset called heroWalk. A module has ONE id namespace across every asset family, so those are not two things with the same name in different families -- they are one id with two claimants, and it answers with the image. playAnimation then fails with a console line about the "correct asset type", which never says the word name, and the walk cycle silently never plays. The animation is now heroWalkAnim, with the trap written out, and the guide points at PlanetX doing the same thing already: spacemanWalk is the strip, spacemanWalkAnim is the animation. Also corrected: the New Image Asset dialog fills Target Module in as CoinCaptureGame_1_1, not CoinCaptureGame_1. A module signature is ModuleId_VersionId_BuildId, three parts (moduleManager.cc). The guide had two. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 19, 2026
    9b27a59
  • Getting Started images: clear out the old page's assets The guide was rewritten and stopped referencing any of these; the plan for that rewrite had already decided the old page's image folder and its MyT2DProject.zip download went with it. Eleven files, about 1 MB, none of them reachable from any page. Gone: Boundaries, Impact_Explosion, Screenshot, asteroids, folderview, folderview2, gitzip, rocketship, ship4, skyBackground, MyT2DProject.zip. KEPT, and worth saying why so nobody finishes the job later: gitURL.png and gitbuttons.png are not Getting Started images at all any more. They live in this folder for historical reasons and are used by Cloning-the-repo-and-working-with-Git, which is live. They are also the two the EA4 audit rescued when it repointed that page off the dead s01l.com host, so deleting them re-breaks exactly what was just fixed. The only remaining hits for four of the deleted names were inside MyT2DProject.zip itself -- the old sample project bundling its own art -- not references to them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 18, 2026
    de7506a
  • Getting Started: the six screenshots that did not need CoinCapture Six of the guide's thirteen placeholders are of things that already exist, and those are now real images: the Project Selector, PlanetX in play, the Console over a running level, the New Project dialog, the animation editor and the particle editor. The remaining seven are of CoinCapture and wait on the project being built by following the guide. All shot at 1280x960 by three harnesses in the engine repo's tests/shots, so they can be retaken when the editor changes rather than being hand-captured artifacts nobody can reproduce. Two are staged rather than merely grabbed. PlanetX's aliens idle outside an aggro radius of 20 against a 60x45 camera, so a screenshot taken where the level drops you is one spaceman alone on empty ground; the harness walks him to the thickest nest and the swarm that arrives is real. The particle shot picks the alpha channel because it is the one curve on that emitter with a shape, and the paragraph beside it is about dragging points around. The Project Selector image is cropped to 1280x440. Its card grid is anchored top-left and neither centres nor scales, so more than half of a 1280x960 frame is empty dark -- true, and a waste of a reader's screen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 18, 2026
    7dc8298
  • Getting Started: correct what the screenshots caught it saying Taking the pictures is the first time anyone has run the guide against the engine and compared. Four things did not survive that. The console block in step 3 quoted numbers that cannot happen. A real level 1 prints 52 bugs and 111 scene objects here; the guide claimed 47 and 168, and 168 is not reachable at level 1 at all (the ceiling is about 150). It also quoted four lines where the engine prints seven, omitting difficulty, objectives and brutes. Replaced with a real capture -- the same one the screenshot above it now shows -- and, more usefully, said out loud that the reader's numbers will differ, because the level is generated from a fresh seed every time. A beginner comparing their console against a screenshot and finding every number different needs telling. The library screenshot sat above the instruction that creates the asset it depicts -- "with the new hero image asset", three paragraphs before the reader presses Create. Moved below the Create step. BlankGame's game.cs is fourteen lines, not nine. The New Animation Asset dialog has four rows, not three; Target Module was missing from the list, which is the one field a reader cannot type in and so the one most likely to worry them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 18, 2026
    a5bebc5
  • Getting Started: a background sprite, and the layers that put it behind the hero Step 7 made one image asset and stopped. Step 12 then told the reader to "drag a sprite control onto the canvas for a background" without ever having them make a background asset -- a hole you only find by following the guide. One asset closes both. The reader draws background.png, adds it below the hero line, and the hero disappears: same scene layer, so the newer sprite wins and it happens to be screen-sized. That is the hook for scene layers, which the guide had never covered at all. The engine facts it now states are read off the source rather than assumed: 32 layers (Utility.h), Scene.cc draws 31 first and 0 last so a bigger number is further back, SceneObject defaults to 0, and same-layer ties break on creation order (SceneRenderQueue sorts on ascending serial id, newest drawn last). That last one is written up as the real lesson -- depending on creation order works until something is created in a different order. PlanetX's own named layer constants are shown as the grown-up form of the same idea. Step 12 now names the asset the reader already has, and carries the ClampImage trap: it defaults on, which clamps an oversized image's centering offset back to zero and pins it top-left. Stated as a symptom to recognize, since that is how it actually presents. Also renames "The three layers, outermost first" to "containers" -- it was about Canvas/SceneWindow/Scene and would have collided with the new meaning. Nothing links to the old anchor. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 18, 2026
    1161c20
  • docs: name the two Doxygen references correctly Home linked one doc set, called it "Doxygen Engine Documentation", and pointed it at TorqueScriptDocs -- which is the script reference, not the engine one. Anyone following that link looking for C++ found script, and the actual engine reference has been live and unlinked the whole time. Both are now listed and labelled for who each is for, and both use https rather than the http the old link had. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 18, 2026
    95c1f09
  • docs: a Getting Started Guide for the engine that exists The old one was written in 2014 and said so. It had the reader clone the repository, compile it, and then plan a project in an empty folder; it used a modules/ layout that no longer exists, recommended an IDE that is no longer sold through a link that no longer resolves, and did not show a sprite until chapter 10. Its four screenshots had been broken for years by a space between the brackets. This replaces it, in two acts. Act 1 changes a game that already works. Torque2D ships PlanetX, so the reader plays it, changes one number and feels it, opens the console and breaks something on purpose, then gives the spaceman a shotgun -- about fifteen lines of code, every one of which does something visible. Nobody sits in front of an empty file wondering what goes in it. Act 2 builds a game of their own, from the New Project dialog to a title screen, a HUD and a level that restarts without leaking. Every step names the PlanetX file doing the grown-up version of the same job, so the demo becomes a worked solution the reader keeps long after they finish. WRITTEN AGAINST THE ENGINE, NOT AGAINST THE PLAN. Every claim was checked in engine/source before it went in, and the engine won eight disagreements. The ones worth knowing: a sprite animates with playAnimation, not setAnimation -- that name belongs to GuiSpriteCtrl and to particle emitters, so it is right in those guides and would have been wrong here. Deleting an object DOES cancel the timers posted on it -- SimObject::onRemove calls Sim::cancelPendingEvents -- so the teardown step teaches the case that actually bites, a timer on something that is not being deleted reaching into something that is. The New Particle Asset dialog defaults its target folder to the image's folder, where particle.taml is not declared, which is the declared-assets trap firing silently on the happy path. A reviewer caught the largest error. Naming an object already puts it in a namespace of that name, so the hero had a name and a redundant class saying almost the same thing. Steps 8 to 10 now turn on the real distinction: name the one-of-a-kind thing and get its namespace free, class the twelve coins because a name is unique and you cannot have twelve of it. PlanetX proves the cost -- its two spacemen share a class and have no name, which is why its key handlers write PlanetXGame.level.player2 where the reader's write TheHero. That correction also turned up a live bug: the coin tested %object.class $= "Hero", which reads empty once the class is gone, so coins would never have been collected. Thirteen screenshots are marked with placeholders and still to be taken. Two fixes to pages this work proved wrong. Console-Guide showed the echo prefix with a space it does not have, and did not say that the console throws a statement's result away -- so a bare expression prints nothing at all, with no error to explain it. SpriteBase-Guide now notes that the same operation is playAnimation on a sprite and setAnimation on a GuiSpriteCtrl, because code moved between them fails with an unknown-command warning that points nowhere near the cause. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 18, 2026
    81daa6f
  • docs: document the three editors 4.0 actually ships The README calls the editors the major change with 4.0. Until now the wiki documented one of them. Someone opening Torque2D met a Project Manager, an Asset Manager and a console with nothing written about any of them. Project Manager Guide. What a project is, the New Project form field by field, and the Game and Library panels. Most of its weight goes on two things a person will otherwise learn by breaking something: Module Name, which becomes the folder, the ModuleId, the namespace the engine calls create on, and the front half of every asset id; and renaming, which has to rewrite the module's own source for exactly that reason. Editing module.taml in a text editor leaves a module that loads, reports its new name everywhere the UI looks, and silently never runs. Asset Manager Editor Guide. Finding, making and editing the five kinds of asset, with the Saving section placed before any of the per-kind material because it is the part that loses work. The particle section says why that editor exists at all: the same effect built by typing time and value pairs into a taml file is close to impossible to get right, because you cannot see what you are doing. Console Guide, replacing a page that had read "Coming Soon!" since 2016. This is the tool that replaces a debugger, so it leads with inspecting a running game. Two behaviors that make the console unlike a script file and cannot be guessed: it adds the parentheses when what you type has no brackets, spaces or braces, so typing a function name runs it, and it adds the semicolon. dump() gets the emphasis it deserves -- when a sprite will not appear, it tells you what the engine actually believes about it. It also documents two features that were compiled in, started at boot, and written down nowhere: telnetSetParameters opens a remote console with separate read and write passwords, and dbgSetParameters opens a remote script debugger. That last one corrects Torquescript-overview, which this branch had it say there is no debugger for TorqueScript in 4.0. There is one; what it lacks is a client, since the IDE that provided one is gone. The claim was made from the absence of a usable debugger rather than from looking for one. Also fixes a dangling anchor in TextSprite-Guide, found by teaching the link checker to follow cross-page anchors. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 18, 2026
    2590459
  • docs: retire what 4.0 replaced, and move governance to the repo Contributing had routed every contributor through an Open Source Software Agreement on garagegames.com, which no longer exists -- so there was no working description anywhere of how to contribute. Following Torque3D's lead, the process now lives beside the code in CONTRIBUTING.md and this page is the welcoming introduction that points at it. Pull-Requests-Coding-Standards carried the same dead instruction and lost it too. What replaces the agreement is the rule Torque3D uses: your contribution must be legally yours to give, and compatible with the MIT license. Steering-Committee-Charter is deleted. It described a six-member body with a chair, monthly meetings and quorum rules, and required a GarageGames representative to chair it and approve any transfer of the project. Torque3D never amended its copy either -- it left it behind and governs through CONTRIBUTING.md and a code of conduct. If the team grows it will likely organize into functional roles as Torque3D has, rather than reinstate this. Changelog is deleted; it stopped in 2013 while claiming to be updated on every push, and now lives in the engine repo where an entry can be written in the same pull request as the change. Retired to stubs, each naming what replaced it rather than 404ing: Video Tutorials, made for 1.x/3.x and predating all three editors; Intro to the GUI Parts 1 and 2, written for 2.0 against a Torque2D-2.0\modules\ layout -- between them the last six photobucket images on the wiki. GUI-Guide and Gui-Editor-Guide cover that ground now, which was not true when the legacy banner was written. Torquescript-overview called TorqueScript "a proprietary scripting language", which is wrong for an MIT engine, and recommended buying Torsion plus two editors last updated for Mac OS X Leopard. Now VS Code and the two real TorqueScript extensions, including the gotcha that they override C# highlighting because .cs is shared. Torsion is gone as a recommendation from three other pages, along with Scripting-Tutorial's walkthrough of its UI. Directory-structure had two rows that were simply false -- engine/compilers/ holds only android-studio now, and space/ and test/ do not exist. Replaced with real rows for PlanetX/, tests/ and images/. Home.md: the version banner said "between 3.5 and 4.0" on the eve of Early Access 4, seven orphaned pages are linked, and the retired tutorials are out. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 18, 2026
    e29f5a6
  • docs: repair the link and image rot Every engine link, internal link and anchor in the wiki now resolves. Checked mechanically, against git ls-tree of the branch each URL names rather than by eye. Fifteen links pointed into modules/, the content layout 4.0 replaced -- ten of them the toy sources Input-Guide sends readers to, plus two rendered images. All now point at toybox/, and every target was confirmed present on development before the rewrite. graphics/color.cc is gColor.cc now. Eight images and links were broken by a space between ]( -- which renders as literal text, not a link. Four were Getting-Started-Guide's screenshots. Two more had been pulled from a dead host, but copies were already sitting in this repository's Getting_Started_images folder, so those images are recovered rather than dropped. Network-Tutorial's table of contents pointed at github.com/TorqueGameEngines/wiki/... -- no repo name, so all four 404'd. They are same-page anchors now and cannot rot that way again. Also: the Box2D FAQ moved off Google Code, which shut down in 2016. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 18, 2026
    acc34e7
  • docs: correct what the guides claim the engine does Checked every page against engine/source rather than against itself. Three kinds of problem, all verified before and after editing. Wrong behavior. The asset guides said refreshAsset() writes the asset's file and that assets save themselves whenever a field changes. Neither is true since 4.0 -- refreshAsset only announces the change, saveAsset writes -- so a reader followed the wiki, never saved, and lost the edit. Both pages now lead with the text-editor comparison and carry the dirty/save/revert/snapshot API that replaced it. AssetSnapshot, getAssetSnapshot and setAssetSnapshot are gone from the engine; createStateSnapshot/restoreStateSnapshot document them. Wrong names. getWindowExtents, onExtentChanged, clearAllColor, sortByAText, getcameraSize, setREnderMasks, getitemCount, setPolyScale, setImageFrameName, getFieldValue, copyModules, restoreAssettags and the edge collision-shape pair either never existed or were renamed. GuiContentProfile appeared eight times as the answer to "which profile goes here" and is not a type at all -- those fields take a GuiControlProfile, and a theme fills each one from a named category. Callback-Guide lost 18 class blocks naming classes that do not exist; GuiMenuBar turned out to have a live successor and was remapped rather than deleted. Missing coverage. Scene, SceneObject, GuiControl, GuiCanvas, GuiColorPopupCtrl, CompositeSprite, Taml, FontAsset, ModuleManager and the rest are now fully documented -- roughly 200 methods, written grouped by task rather than listed. Where a method has a trap it says so: getMass returns zero outside a Scene, setSize does nothing when autoSizing is on, a paused Scene is still drawn, getLoadedPageCount below getPageCount means a font page image is missing. ImageFont-Guide becomes a migration signpost -- the class has been gone since 3.3, and the page had documented it in full anyway. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 18, 2026
    11aed3a
  • Animation docs: named cells come from the image now, not a flag 4.0 removes AnimationAsset's NamedCellsMode field and its setter. Whether an animation selects frames by name or by index is read from the image asset - explicit mode means named cells - so the two can no longer disagree, which they could and did: setting the flag true on an image with no named cells produced an animation with no frames and no explanation, and re-cutting an image left the flag asserting something the image had stopped agreeing with. AnimationAsset Guide: - NamedCellsMode is out of the field list, and its section is replaced by a "Named cells" section saying where the answer actually comes from and how to change it. getNamedCellsMode() survives as a read-only query. - AnimationFrames and NamedAnimationFrames now state their mandatory condition in terms of the image's ExplicitMode rather than in terms of the flag, and the named example no longer carries NamedCellsMode="true". - New "Changing an image's mode": switching an image between explicit and cell mode converts the animations on it, both lists are kept so the switch is reversible, and an entry that cannot be translated is skipped with a warning. - A migration note, checked against the engine rather than assumed. An old file carrying NamedCellsMode still loads and loads correctly, because the mode is taken from the image either way. But the attribute is no longer a field, so it is read as an ordinary dynamic field - kept, and written back out on every subsequent save, indefinitely and silently. Round-tripped one through TamlRead/TamlWrite to confirm: getFieldType comes back empty, the dynamic field count is 1, and the attribute reappears in the output. Two errors in "Additional API" that predate this, corrected while in there. The getAnimationFrameCount headings described the getAnimationFrames LIST getters, which return a different thing. And the section said invalid frames "are simply dropped", which neither kind does: an out-of-range NUMBER is clamped to the nearest valid frame, so the animation goes on playing and quietly shows the wrong art, and a NAME that no cell answers to is kept exactly as it is and draws nothing. That distinction decides how you detect each one - clamping changes the value so the specified and validated lists differ, whereas a kept name leaves them identical and needs the new getMissingFrames(). Both are now documented as such, along with getFrameCount(), which answers in either space and so spares script from asking which mode it is in first. ImageAsset Guide, two corrections caused by the same change: - "You must remember to set explicit mode to true prior to saving the asset otherwise the explicit cell details won't be saved" is no longer true. That sentence described a real trap - saving with the mode off deleted every cell in the file permanently, and with them the only thing that could resolve an animation's names. Cells are saved whenever there are any now. The knock-on is that a file records ExplicitMode whenever it has cells, so that cells with the mode off read back that way; a file written before this, which has cells and says nothing, is still read as explicit mode on. - The auto-naming paragraph said an unnamed cell is given "a frame number" as its name. It is given "Frame" followed by its own index. The distinction is load-bearing: getExplicitCellOffset/Width/Height dispatch between an index and a name on the first character, so a cell literally named "0" would be read as an index and be unreachable by name. Also documents the collision walk, which is new - deleting a cell from the middle renumbers every cell after it, so a wanted name is frequently already taken. Added getExplicitCellOffset, getExplicitCellName and getExplicitCellIndex to that section's method list. The last two are the pair that connect an image to an animation built on it, and they answer whether or not explicit mode is currently on, because the cells outlive the mode; the methods that change cells still require it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Xh3XULt9PtdCtsaYHGnYE

    @greenfire27 greenfire27 committed Aug 16, 2026
    3c1c596
  • Gui docs: split the editor out, and fix the sizing names The GUI Guide now says who it is for. It is the reference for building a screen by hand in script, and it says so at the top, with a short pitch for the editor and a link for people who would rather drag controls around. Themes get a paragraph in the same place: what they are, that a hand-coder does not need one, and how to pull a profile out of one if they want it. Everything else about themes moved to the new page. The sizing options are the important correction. HorizSizing and VertSizing were named for the wrong edge -- "right" pinned the LEFT one -- and 4.0 EA3 renamed them anchorLeft/anchorRight/anchorTop/anchorBottom and scale. The section is rewritten around the new names, in a table, with the everyday choice called out. The old names follow it rather than leading, since they still load and nobody has to change anything they have already written; what they DO need to know is that files are now saved with the new spelling and an older engine cannot read them. Then the control changes, all of them aimed at someone writing script: - List box and drop down save their rows now, so the TAML shape is written out and the "build it in onWake" advice is no longer the only way. getItemList/setItemList too. - GuiControl grows a Methods list it never had. applySizing is the answer to "I set fill in script and nothing happened", which is worth a page on its own; childrenReordered, pullIntoView, rendersChildren, canBeChildOf. - Tree view had no Settings section at all: IndentSize, IconImage, IconSize, plus onGetItemIcon, refreshItem, getItemIcon. - Tab book gains addPage, and a note that an empty book used to render as nothing whatsoever. - Frame set gains getFrameLayout/setFrameLayout and why you would want them (a frame dies with the control in it). - Button no longer seeds "Button" as a caption, which is why a blank one would not stay blank -- and why check boxes said "Button" too. - Scroll control leaves room for its own bar, so a child that sizes across is no longer drawn under it. The Gui Editor Guide is new: opening it, what each panel is for, placing and arranging controls, the Explorer's eye and padlock columns, why the properties pane hides fields, the menus and their shortcuts, which save format loses what, and the Profile Editor's profiles, borders and cursors. Written for someone who has not built a GUI before. Home.md had no GUI entry in its reference list at all. Both pages are in it now. And Intro to the GUI Part 1 still recommended GuiImageButtonCtrl, which 4.0 EA3 deletes -- a profile's imageAsset was already indexed by control state, so a plain button does it -- so that carries a correction note. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JDKWjuEF5Nuw791mpU7aPF

    @greenfire27 greenfire27 committed Aug 8, 2026
    0bdb0cf
  • Document the audio Priority field AudioAsset Guide: add "Priority" to the field list and a Priority section explaining voice culling and how the flag protects a sound. Audio Guide: note in "Multiple Sounds" how priority keeps a looping sound (e.g. music) from being culled and restarted in a busy scene. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014UdmDkK9o8GVHfzQkJ3EPs

    @greenfire27 greenfire27 committed Jul 18, 2026
    8b7424e
  • Android guide: the engine now runs on-device (verified) + modern font notes Android boots, renders and runs on a real device (Pixel 7 Pro, Android 13, via Firebase Test Lab). Drop the "runtime not re-verified" warning, add a short "Is Android working yet?" section, and refresh the Fonts notes: Droid -> Roboto, the modern Windows-name-record requirement, the bundled Roboto-Regular.ttf, and the blank decorative-font caveat. Update Building.md's Android status from "still being verified" to verified. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6jsrTtG7fhRRRYG9NvHZW

    @greenfire27 greenfire27 committed Jun 27, 2026
    39195a5
  • Web/Emscripten is available: rewrite the Web Deployment Guide and update Building The CMake Web target now builds and runs in-browser, so: - Web-Deployment-Guide: full rewrite from "not yet available" to a real guide (emsdk prereqs + Windows python-stub gotcha, generate-emscripten.sh build, HTTP serve to run, deployment notes incl. .wasm MIME + the large .data, and current limitations: scrollers/clip-planes, no networking, baked content, font handling). - Building.md: Web row in the quick reference now points at generate-emscripten.sh; added a real Web (Emscripten) section; corrected the iOS section (now runtime-verified on device + simulator, with the device-signing script). - Home.md: list Web under Platform Development and link the Web Deployment Guide. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6jsrTtG7fhRRRYG9NvHZW

    @greenfire27 greenfire27 committed Jun 26, 2026
    190614b
  • docs: rewrite the Skeleton (Spine) guides for masterspine + license/version reality The Skeleton guides documented an obsolete API with dead binding links. Verified against the masterspine branch and rewrote both: - The classes live only on masterspine and are actually SpineObject / SpineAsset. Document the real API from the masterspine _ScriptBinding.h / initPersistFields (track-based setAnimation/queueAnimation, Skin, Scale, TimeScale, AnimationData, flips, jitter; SpineAsset's AtlasFile/SpineFile/PreMultipliedAlpha). Fix binding links to point at masterspine. Page filenames kept so cross-links don't break. - Explain why Spine is gated: including the Spine runtime requires a valid Spine license even if unused, so it was moved to the masterspine branch. Add full hand-holding to enable it (fork, fetch/merge origin masterspine, resolve conflicts, and wire the sources into CMake since masterspine predates the CMake migration). - Warn that the bundled runtime is spine-c 3.8 (Jan 2020) while current Spine is 4.3: modern exported data won't load, updating is non-trivial (4.x API breaks, 4.3 spine-cpp refactor), and the project won't maintain it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6jsrTtG7fhRRRYG9NvHZW

    @greenfire27 greenfire27 committed Jun 25, 2026
    5b922d3
  • docs: correct class-guide field/method gaps against the engine source Verified each gap against the class _ScriptBinding.h / initPersistFields() before editing: - Sprite-Guide: document the complex (per-corner) color API (setUseComplexColor, getUseComplexColor, setComplexColor, getComplexColor, fadeToComplex, fadeToTimeComplex). - Scene-Guide: add pickRay and pickRayCollision to the picking example, with their return formats (object-ID list vs. per-object collision detail). - SpriteBase-Guide: add the missing NamedFrame field (setNamedImageFrame / getNamedImageFrame). - SceneObject-Guide: fix the BlendMode typo (getBlendMode -> setBlendMode). - TextSprite-Guide: link TextSprite_ScriptBinding.h (was bare text). - AudioAsset-Guide: AudioAsset has no script methods (no _ScriptBinding.h); clarify that Volume/Looping/Streaming/VolumeChannel/AudioFile are usable from script as persistent TAML fields, not as callable get/set methods. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6jsrTtG7fhRRRYG9NvHZW

    @greenfire27 greenfire27 committed Jun 25, 2026
    5af9a5c
  • docs: flesh out the Light Object guide The page was flagged as truncated, but it is actually complete — LightObject only exposes two fields (LightRadius, LightSegments), confirmed against LightObject_ScriptBinding.h and initPersistFields(). Polish rather than rewrite: normalize headings to match the other guides, show how to set the light's color (the inherited BlendColor, referenced in the intro but never demonstrated), add a script and TAML example, and add the missing LightObject link to the Home navigation's Scene Objects list. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6jsrTtG7fhRRRYG9NvHZW

    @greenfire27 greenfire27 committed Jun 24, 2026
    5c101c9