Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>TIC-80 ticbuild development & debugging control surfaceNew to Visual Studio Code? Get it now.
TIC-80 ticbuild development & debugging control surface

TIC-80 ticbuild development & debugging control surface

Trident Loop

|
8 installs
| (0) | Free
ticbuild extension for VS Code - control surface and syntax highlighting for TIC-80 development & debugging
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

ticbuild TIC-80 development & debugging platform extension for VS Code

This is a VS Code extension adding support for ticbuild. ticbuild is a build system for TIC-80.

This extension allows you to

Control and monitor TIC-80 for debugging and development

Control surface, with a graphical designer, allows you to use knobs and controls to dial in the perfect variables, and to monitor variables over time.

alt text

Adds syntax highlighting to Lua preprocessing done by ticbuild

alt text

Links

  • VS Code Marketplace
  • ticbuild_vscode on Github (this project)

Related

  • ticbuild on Github
  • Somatic - web-based TIC-80 music tracker
  • Discord
  • TIC-80 homepage

This project is free, a labor of love; if you find it useful, please support by spreading the word or,

Support me on ko-fi

Usage

After installing, you should see syntax highlighting for Lua preprocessor (used by ticbuild)

You can also attach to a running instance of TIC-80 for control surface support. To do this, F5 on a ticbuild project to launch the cart in watch mode.

This extension will automatically connect to the launched TIC-80 instance; you can verify this in the status bar:

alt text

You can also manually connect to a running instance by using the command palette (ctrl+shift+P):

alt text

Select TIC-80: Attach. and you can specify a running instance.

Select TIC-80: Add Panel to add a control surface.

Control Surfaces

A ticbuild project can define a control surface for your cart. A control surface is a set of pages, knobs, inputs, labels, for interacting with Lua variables in a TIC-80 instance. Useful for dialing in things like physics variables or positioning things on screen.

Also useful for monitoring values or Lua expressions over time (via a scope).

Add your first control

Let's start with an example program

x,y=50,50
str="hello"

function reset()
    x,y=0,0
    str="reset!"
end

function TIC()
  cls(14)
  print(str, x, y)
end

We can bind controls to any global variable in Lua. In this case, x,y, and str are usable. Buttons can invoke global functions, in this case reset().

1. Add a control surface panel by running TIC-80: Add Panel in the command palette.

2. On the new panel, click design mode to enable editing.

design mode button

3. Click + Add Control alt text, and select the XY control.

Set x and y as the symbols to bind for the axes.

select xy control

4. Click "add control"

5. Exit design mode to make the control usable

design mode disabled

6. That's it! Animate your game by remote control.

Drag the thumb around the XY pad and you'll see the position update in the TIC-80 in real-time.

xy in action

7. Add a button: Enter design mode, add a button control.

button control

8. Set the statement to reset(), and click Add Control

add new button gui

9. Exit design mode, and click the new button.

You should see the text reset to position to the top-left corner 0,0, and the text is reset to "reset!" because the reset() function was invoked by your button press.

10. Try it out-- try adding a label control to see the value of str.

You can also use full Lua expressions in a label, so "Length: "..#str works as well.

Pages and views

Click on the TIC-80 activity button to show a control surface in a sidebar. Can be useful if you want a narrow control surface while you write code at the same time.

activity icon

You can also use the command palette TIC-80: Add Panel to add a full-page control surface.

Only one control surface is defined per project, but a control surface can define many pages, and each view can select which page it's displaying. By default, views show the "root" page which will show the entire control surface.

Layout

TIC-80 discovery mechanism

Discovery of running TIC-80 instances is described in the TIC-80-ticbuild fork.

ticbuild watch auto-attach system

When ticbuild watch launches the TIC-80, it instructs the discovery session file to be placed in the current project directory (and not in the global location). This allows VS Code to auto-connect when the current project is launched.

Troubleshooting

This project is in alpha state. You might not know what's going on. Places to check for issues:

  • Output console; select the TIC-80 Remote output channel.
  • Command palette -> Webview Developer Tools, the console may show output if there are errors
  • Look in the TIC-80 itself; if Lua execution errors occur it may appear there.

building

webview and extension are built via scripts/devbuild.cmd. It's primitive: ⚠️ you need to manually update the version if it changes or it will install the wrong version.

Webview has mocked in-browser dev experience

npm run watch

and serve in yet another terminal:

npm run serve

for dev we launch in a browser, but mock the data and vscodeapi.

Manual installation


# install
code --install-extension tridentloop.ticbuild-vs-code

# install from command line (install by file)
code --install-extension ./ticbuild-preproc-highlight-0.0.4.vsix

# uninstall
code --uninstall-extension tridentloop.ticbuild-vs-code

Release history

v0.0.5 / 2026-02-09

  • Language extension providers, providing info about macros and other symbols across the project

v0.0.4 / 2026-02-05

  • Remoting and control surfaces initial support

v0.0.2 / 2026-01-26

  • Initial version with only syntax highlighting.
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft