This is the deep one. A point-and-click adventure is the richest thing you can build here: rooms you walk, hotspots you examine, inventory you combine against the world, conversations that branch, and a script that ties it together. If you are coming from Adventure Game Studio, most of your mental model transfers, and this page is explicit about where ours differs, what is simpler, and what genuinely is not here yet.
An adventure is four ideas stacked together, and once you see them you can build anything. Rooms are the places you walk. Hotspots are the things you click. Inventory is what you carry between them. And the Story is the branching backbone that remembers what you did. Pick the Point-and-click adventure genre and the editor opens twelve tabs built around exactly that: Scenes, Room, Objects, Rules, Inventory, Cutscenes, Story, Script, Import, Media, Settings, Validate, plus Play. Feeling lost? The Adventure guide wizard walks the whole loop in six steps, from Add a room to Script a cutscene. Like AGS, we layer interactivity. Unlike AGS, your logic is written in FoundryScript, not a C-like room script.
pointclick control scheme has no keyboard input and no physics, so do not design a puzzle around a jump that will never happen.Half the editors here have no tab. Click Explore Project and the shell splits three ways: your document in the middle, the project tree left, a Properties grid right. That tree is the real table of contents: General Settings, Colors, Sprites, GUIs, Inventory items, Dialogs, Views, Characters, Mouse cursors, Fonts, Audio, Global variables, Scripts, Import AGS project, then Rooms, which expands to every room as {n}: {label}. Nodes badged soon are not built yet, so leave Colors and Fonts alone. Properties edits the game itself: Start room, Width, Height, Game speed (fps), Background, Show HUD, Gravity; Name, Genre and the counts are read-only. AGS keeps its tree pinned open. Ours hides behind a button, and Characters, Views, GUIs, Dialogs, Mouse cursors and Global variables exist nowhere else. Skip the rail and you will never reach the character editor. Full screen gives the three panes the whole viewport.
0 before you test anything, or you will spend an hour blaming your sprites.Rooms live on the Room tab, and the Room picker chooses which one you are editing. As the intro puts it: "Draw where the actor may walk, carve holes around furniture, and place hotspots the reader clicks to look, use, take, or talk." Pick Walk area, click to drop points (the counter reads {n} points. Click to add), then hit Finish shape with at least three points, or just double-click. cancel throws the shape away. Use Hole to punch out the sofa. Green is walkable, red is not. clear walk area and clear holes start you over, and the tally sits in Walk polygons: n · Holes: n. Unlike AGS, there are no fifteen numbered areas with per-area scaling here: you get one region, polygons minus holes. Simpler mental model, fewer indexes to remember. Edits autosave.
RemoveWalkableArea and RestoreWalkableArea exist in script but are stubs that do nothing, so never build a puzzle on them. Pathfinding is A-star over a 16 pixel grid, 8-connected and smoothed by line-of-sight, and the walk speed is 160 pixels per second.A hotspot is the part of a room that answers back. Draw one with the Hotspot tool (blue in the legend), select it, then give it a Name and a Default verb. Your verbs are fixed: Walk to, Look at, Use / Open, Take, Talk to. Facing on arrival offers Right or Left only, because the engine has two facings, unlike AGS loops. With the hotspot selected, the Approach tool sets where your character walks before interacting. That is AGS's walk-to point, and it is the difference between opening a drawer and opening it from across the room. Then + Interaction per response: a verb, needs an item, divert to an Ink knot, a script fn (AGS event), and actions.
showWhen conditions exist in the data model but have no editor yet, so do not design a puzzle around hiding a hotspot.Three tools, three jobs, and the difference is worth burning into your brain. A hotspot waits to be clicked. A Region (yellow in the legend, tooltip "Draw a region (tint / scale / walk-on events)") never gets clicked at all, it reacts to your actor stepping into it. Give the row a name, then use Scale (%) to shrink your character as they wander upstage, Tint to wash them in the colour of the room they just entered, and onWalksOnto fn to fire the script. Scale defaults to 100 (range 1-200), tint amount to 30 (0-100). A Walk-behind (purple, dashed edge) does the other half of depth: it draws scenery in FRONT of the actor. Each polygon appears under Walk-behinds (n) as Area 1, Area 2 and so on, with one Baseline Y field. That baseline is a horizontal line: above it, your character is drawn behind the pillar; below it, in front. One number, and the flat painting becomes a room.
onWalksOff and onStanding, and the runtime genuinely fires all three, but there is no field for them here. Unlike AGS, which gives you all three events in the room editor, those two only reach FoundryInk via AGS import or hand-edited data.Distance is a lie you tell with scale. Tick Depth scaling and four fields appear: Near y, Near scale, Far y, Far scale. Defaults put near y at room height with scale 1, far y at 0 with scale 0.6, so your character shrinks as they walk up the room. AGS pins scaling to each walkable area; we use one linear band across the whole room. Simpler, less granular, and that is the trade. Depth sort (walk behind scenery) is separate, so tick it when props should overlap.
Then Screen layout: Single or Split. Split reveals Room width (0-1) (default 0.62) and Detail scene. AGS has no equivalent. The close-up panel, driven by showDetail and clearDetail, keeps the room visible while you push a padlock, or a face, right up into the reader's eye.
showDetail action runs. Pick the scene, or wire the action, before you blame the layout.Open Characters in the Explore Project rail. Hit New character and you get six fields, no more: Script name (letters, numbers and underscores only, so cEgo), Real name, Starting room, Normal view, Speech view and Speech colour. Exactly one character wears the star. Press Make player character to move it. A view, over in Views, is a stack of loops, and each loop is a strip of frames: Loop 0 (down), Loop 1 (left), Loop 2 (right), Loop 3 (up), just like AGS. New view gives you four empty loops; fill them with New frame, set Dly per frame, tick Run next loop to chain. Be honest with yourself about scope: Speech view is stored but not played yet, walk speed is fixed by the control scheme at 160 px/s, and idle, blink, thinking and diagonal loops are import-only. Following does not exist. No art means a 32 x 64 placeholder body.
The Inventory tab holds Inventory items: the catalog of things the reader can pick up and use. A hotspot can give an item, require one to work, or take it away. Hit Add, then fill in Name, an Icon (sprite assets only), a Swatch colour, and Description (Look at) so examining it says something worth reading.
The puzzle mechanic is exactly one thing: use an item on a hotspot, wired through that hotspot interaction's needs field. Key on door. That is the entire grammar, and it is enough for a real game.
Unlike AGS, there is no item-on-item combining here. No rope plus hook. Design around locks, not craft benches, and plant the clue in the world before the reader meets the lock.
FoundryInk has two conversation systems, and only one of them branches. Learn the difference now and save yourself a wasted afternoon.
The Story tab is Ink, a real branching narrative engine. Choices, state, saving and resuming (inkState) all live here. You write Ink, press Compile, and get knots. A hotspot interaction can divert straight to a knot, so a door, a corpse, or a nosy neighbour can all drop the player into real narrative.
The Dialogs panel in the Explore Project rail is a flat menu, not a tree. New dialog makes dDialog{n}; Create new option makes New option. Columns are Option text, Show, Say. At runtime the shown options draw with a Stop talking row. Clicking one speaks the line if Say is on, then redraws the same list. Nothing branches. Only Stop talking exits.
Unlike AGS, your conversation logic belongs in Ink. Treat Dialogs as a menu and an import fidelity surface.
@S / @1 blocks) is stored but never executed, and you cannot edit it. Dialog. SetOptionState and RunDialog are stubs, and AGS's text parser does not exist here. If your imported game leaned on dialog scripting to gate options or jump topics, rebuild that logic in the Story tab.Open Mouse cursors in the rail and you get Mouse cursors (interaction modes), the list that holds your pointer graphics. Hit Add default modes first thing (it only appears while the list is empty) to seed Walk to, Look at, Interact, Talk to, Use inv, Pick up, Pointer and Wait. Why the rush? Because the verb bar only renders when at least one cursor exists. Zero cursors, no bar, and a player with nothing to click. Use New cursor for extras, set a Graphic, and tick Std mode so a click actually fires the matching interaction. Here we part ways with AGS: its nine modes are extensible with custom verbs, ours are fixed at five (Walk to, Look at, Use / Open, Take, Talk to). No verb coin either.
walk, look matches look or eye, use matches interact, use or hand, take matches pick, take or grab, talk matches talk or speak. Pick up works purely because of the word "pick". Rename it "Grab it" and it still binds; rename it "Snag" and your graphic stops appearing.Open GUIs in the Explore Project rail and press New GUI. You get gGui1, visible, parked at 0,0, sized 200 x 120. Six control kinds live here: button, label, slider, listbox, textbox and invwindow, carrying the script-name prefixes btn, lbl, sld, lst, txt and inv. Every new control arrives as an 80 x 24 box at 0,0.
Here we part company with AGS, plainly: there is no visual drag layout yet, so you type x, y, width and height yourself. This panel is structural for now, with drag layout landing in a later installment. The GUI still renders at runtime in screen space, honoring visibility, and a click on btnSave invokes the FoundryScript function btnSave_Click. The name is the wiring, so choose it deliberately.
The Script tab opens on Script (FoundryScript), a C-like language that compiles to bytecode and runs on our own sandboxed VM. No file, network, or page access, and your source never leaves the studio; Compile tells you in seconds whether it holds together. The mental model is deliberately small: only three things get called. game_start() runs once, repeatedly_execute() every tick, and named functions run only where you wire them, a hotspot's script fn field, a region's onWalksOnto, or a GUI button's {scriptName}_Click. AGS's wider lifecycle (room_Load, on_key_press, on_mouse_click) is never called here. You get player and mouse, plus entities by script name (cEgo, oDoor, iKey). About 50 of roughly 130 API members are genuinely wired; the rest compile and do nothing so imported scripts survive. SetVar, GotoScene, GiveItem, Character. Say and Dialog. Start work. RunDialog, Object. Animate and AudioClip. Play do not.
Open Cutscenes, choose a scene in Cutscenes for, and name the sequence in Cutscene name. A cutscene is an ordered list of steps: move an actor, flash narration, wait, play a sound, or divert the story. Steps run top to bottom, so the list is the timeline. Mark a step with previous to run it alongside the step above, which is how an actor walks while narration reads. Each step shows only the fields it needs: an (actor) plus x and y, right or left facing, a clip name, narration, an (object), a (scene), and ms or ms cap for timing. Reorder or remove steps in place, then fire the whole thing from a hotspot or a rule with the playSequence action. AGS hands you blocking script instead; we hand you a sequencer. showDetail and clearDetail drive the split-screen.
playSound step with previous against your showText step. There is no voice-acting feature, no speech-file naming convention and no lipsync, so do not plan a recording pipeline around one.Already have a game in the AGS Editor? Open the Import tab, under the heading Import an Adventure Game Studio project. Hit Choose AGS project folder and point at the folder holding Game.agf, alongside your .asc scripts, acsprset.spr, and roomN.crm files. It reads the files in your browser, so nothing is uploaded. Rooms land as scenes, sprite and room art comes across, Music/ and Sound/ audio comes with it, and scripts convert to FoundryScript. The pipeline narrates itself: Reading Game.agf, Converting scripts, Importing sprites, Compiling converted script. The report then hands you chips for Characters, Views, GUIs, Dialogs and Cursors, plus Compile errors and Lines needing manual conversion. Unlike AGS, hotspot events are lossy: only Look, Interact, Talk, PickUp and AnyClick map to verbs, capped at eight per hotspot. Open View converted FoundryScript before you trust it.
.agt file is a packaged template rather than a project, so open it once in the AGS Editor (File, then New game from template) and pick the folder it creates.The Validate tab is your pre-flight check. Open it, read the Validation heading, and press Re-check after any change. A pass reads "This game is structurally valid and ready to publish (add a cover too)." A fail reads "Fix these before publishing:" and lists the real blockers: no scenes, no start scene set, placed objects pointing at a missing object type, referenced media missing from the library, and scene jumps that lead nowhere. Below that, "Suggestions (won't block publishing):" flags empty scenes, rules referencing an undeclared variable, and the big one, "No scene places a player object, so the game may not be controllable." You also need a cover image before you can publish. Unlike AGS, saves are one automatic save per reader per game. No slots, no save menu, so write a story that resumes gracefully rather than one expecting the player to manage saves.
Behind the Explore Project rail. AGS keeps its project tree pinned open; ours hides behind a button, and those editors (plus Mouse cursors and Global variables) exist nowhere else. It is the first thing to click.
There is one walk area: a union of polygons minus holes. Scaling is one linear band per room (Near y / Near scale / Far y / Far scale) rather than per-area. Simpler, and less to keep track of, but if your design leaned on numbered areas you will rework it. RemoveWalkableArea and RestoreWalkableArea compile but do nothing.
No, and this catches everyone. The Room tab's Room script box compiles so you can fix imported code, but the runtime only ever loads the global program from the Script tab. Paste room logic into Script to make it run.
It will run without crashing, which is the design goal. About 50 of roughly 130 API members are wired to real behaviour; the rest compile and safely do nothing. So an imported game boots and plays, but check the import report and expect to rewire the parts that no-op.
Because the Dialogs panel is a flat option list, not a tree: clicking an option speaks it and re-renders the same list. Ink, on the Story tab, is the real branching engine with choices and state. Write conversations in Ink and use Dialogs as a menu.
Neither, currently. The verb set is fixed at five (Walk to, Look at, Use / Open, Take, Talk to), and the only item mechanic is use-item-on-hotspot. There is no item-on-item combining and no verb coin.
None of those exist. Use an exit object or GotoScene instead of edges. There is no FollowCharacter. Saving is one automatic save per reader per game, with no slots and no save menu, so write a story that resumes.
Split-screen (a close-up detail panel beside the room), Ink for branching narrative with save and resume, the Cutscenes step sequencer with parallel steps, the Rules engine, and a browser-side AGS importer that converts your scripts and reports on every one.
Rooms, hotspots, inventory, a branching story, and script when you need it. That is a real adventure game, and it plays in a browser with nothing to install.