Start here
DatumHue is a creative workstation: you write apps in Lua, and it runs them. Apps draw in 2D and 3D, play sound, take input from keyboards, mice, touch screens and gamepads, and load and chart data.
Many apps run side by side, arranged by a window manager that is itself a Lua app. Yours can start other apps, send them messages and share data with them.
Who this manual is for
You write apps, and you know Lua: local variables, functions, tables and loops. You don't need to know anything about DatumHue yet.
New to Lua? Programming in Lua teaches the language from the start. Its first part covers everything this manual expects you to know.
What you need
- DatumHue, installed so that
datumhueruns in a terminal. The README in your download shows how. - A text editor. Set up your editor adds completion and documentation for every DatumHue function as you type.
- A terminal, to run your apps and read what they print.
How this manual is organized
- Learn holds tutorials you follow in order. Each one builds a single program, a step at a time, and every step ends with it running.
- Guides each answer one question: how to lay out a screen, handle Back, or save data between runs.
- Concepts explain how things work underneath: how your app runs, coordinates, permissions.
- The Reference lists every function, type and option of the version you have installed.
- Tools covers the command line and the file formats.
Where to begin
Start with Run your first app: five minutes from an empty file to a window that greets you. The steps after it build a ball pit, one feature at a time: balls that bounce, a toolbar, then physics. The Learn overview lists every tutorial and its steps.
At a glance
| Graphics | 2D shapes, text and sprites; pixel images; 3D scenes with lights, bloom, fog, voxels, particles and glTF models; shaders |
| Sound | Synthesized tones, chip voices, music and samples, filtered and mixed on named buses with echo and reverb |
| Input | Keyboard, mouse, touch and gamepads |
| Interface | Buttons, text fields, lists, tables, menus and pages, in light and dark themes |
| Physics | 2D and 3D bodies, joints, collisions and sensors |
| Grids | Pathfinding, distance maps, field of view, Voronoi regions, cellular automata |
| Data | CSV and Parquet tables, SQL queries, charts |
| Storage | A private store for each app that keeps its data between runs |
| Apps together | Messages, events and shared documents between the apps on this workstation |
| Language | Lua, in a sandbox |
Your edition also signs people in, lists and installs packages, and shares messages and documents with other workstations connected to the same deployment.