Skip to content

Overview

DarkEffekt Terminal is terminal emulation and rendering for Unity. It runs a real VT and xterm terminal inside a Unity project and shows it on a screen in a 3D scene or a flat uGUI panel, driven from the keyboard, the mouse, or a camera ray.

It comes apart into four parts you can use together or on their own:

  • The emulator is the terminal itself: it parses the VT and xterm escape protocol, keeps the screen grid and scrollback, and holds the cursor, colors, and modes. It has no dependency on UnityEngine, so you can drive your own renderer from it, or run it headless in a test.
  • The renderer draws an emulator’s screen into a RenderTexture at exact integer cell metrics, which keeps the glyphs free of subpixel shimmer. The texture is yours to show anywhere.
  • The screens present that texture. A scene screen puts it on a mesh and maps a camera ray to a cell; a uGUI screen puts it in a canvas. Any number of screens can present one session at once, each with its own screen type.
  • The interface framework builds full-screen interfaces from panels and controls. An interface draws its cells straight to the screen, or writes them as escape sequences through a connection.

A Terminal Session component ties them together: one emulator, one connection, and one renderer, with input routed from whichever screen has focus.

  • A working terminal on a prop in a game, a computer on a desk, a console on a wall, that a player types at or points at.
  • A live client for a text protocol: point it at a telnet host, a MUD, or a server of your own and drive that session on screen.
  • An in-game shell or console for your own game, hosted in the same process.
  • A full-screen interface of menus, gauges, and live camera feeds, built from elements and drawn straight to the screen.
  • A retro or sci-fi display, with CRT curvature, scanlines, phosphor glow, and aperture grille, or a clean flat panel.
  • A screen that reacts to the game: it switches on when the player sits down, rolls and breaks up when the signal fails, and cracks where it is hit.

The terminal shows what you feed it: a network connection, an in-process program, or your own writes. To run an operating-system shell on desktop, start the process yourself and bridge its standard streams through ITerminalConnection.

Input comes from the keyboard and the mouse. For a gamepad or any other source, call the session’s methods that send text, keys, and mouse events.