Data to be loaded into you game, such as images, test, sounds, and animations.
A type of subsystem used to manage simple autonomous particles.
Batch type is an efficent
List-like data structure used on most Indigo APIs.
Bitmap material simply draws textures as-is, according to the needs of the primitive using the material.
Blending is the process of compositing one layer onto another, and is a combination of the blend mode, and a blend shader that tells the graphics card how to combine the pixels.
The blend mode is the mode that the graphics card should use when compositing on pixel/fragment on top of another.
A shader used for blending one layer onto another.
The initial data provided to the game, used to 'boot strap' the application.
Typically refers to the area that the primitive occupies on the screen.
BoundaryLocator is a tool used to accurately compute the on-screen size of an element. The calculation can be expensive depending on the primitive type.
A simple animation primitve that loops and animation over time without holding state.
A cheap copy of a primitive that can be quickly and efficiently drawn to the screen.
A clone blank is a normal primitive, like a graphic, to be used as the reference data for many clones / copies.
The concrete method used to draw many copies of a clone blank to the screen. Limitiations are that you cannot change the details, like materials, only the transformation.
A specialised version of cloning that allows you to draw many instances of tiles from a tilemap.
A rigid body used in a physics simulation.
Depth from the camera / player, where 0 is closest and increasing positive values are further away.
A pseudo-random number generator seeded on the current frames running time to facilitate testing and issue reproduction.
The base type of anything that can be drawn onto the screen, essentially represents an area of the screen.
A shader used for rendering entities onto a layer.
The main interface an Indigo game developer is exposed to when trying to write a game. It is a user friendly game template that constructs the Frame Processor that Indigo needs to run your game, and starts the game engine.
A description of an action that is emitted during a frame and made available to the subsequent frame, such as a keyboard event.
Describes how a shape, say, should be filled. With a solid colour or a gradient, for example.
A data type that describes how font information is layed out on a sprite sheet for use with
A shader that works out what colour value each pixel of a rendered entity should be.
Contains general information about the current frame, such as the running time and a time delta since the previous frame.
Movement that is adjusted to account for the time elapsed between frames in order to proceed at a consistent rate.
A sample of the current time provided to every frame. All computations are assumed to happen instantly at the time given.
Part of Indigo plugins, generators are tools for generating code at build time that represents your game config, assets, or other data sets.
An OpenGL dervived programming language used to write graphics shaders.
A primitive type for simple drawing of textures/images to the screen. Allows for cropping.
An unusual UI element that is transparent - in fact not rendered - that acts as an invisible button.
The ImageEffects material is used to rendering images / textures to the screen while applying one of a number of typical effects, such as adjusting the transparency or colour tint.
The current state of input devices like the keyboard, mouse or game pad.
Indigo games are rendered in layers, where the layers stack up on top of each other, and depth only applies within the current layer. As you place one layer on top of the previous one, you can decide how to blend the layer together to create interesting effects.
An infinite mathematical line that can be compared to other lines to test for intersections.
A specific section/segment of a Line, useful in many modelling / calculation scenarios where you need to think about the edges of things, or rays, or tangential lines and so on.
Indigo is a Pixel art engine, and in order to see the pixels, we need to zoom in! Magnification can be set globally and also per layer.
A material is what is used to tell primitive types how to render.
A matrix is a maths construct that in graphics programming is used for stacking transformations, such as move, rotate, and scale.
A mutant is a twist on a
Clone. Clones are carbon copies of their original that have be repositioned. Mutant's on the other had do not change any spatial information, instead they modify only the shader - which in fact means you can change/mutate them in strange new ways from the original (including spatially, by way of the vertex shader).
A mathematical function that appears to create randomness, but is usually psuedo random, and so predicatable / repeatable.
Used to gather state and events that were the result of a frame update.
The style of art Indigo was made for. Pixel art was, in the late 80's - early 90's, the only art style available, and went out of fashion in favour of vector and 3D graphics, as the industry persued ever higher graphical fidelity.
Pixel art can back into fashion in the 00's as a retro kitsch nostaligic throwback, and was largely dismissed again shortly there after.
Modern pixel art is a style in it's own right. It takes advantage of up to date computer graphics rendering hardware and techniques, such as dynamic lighting and a wide colour pallette, while it's blocky nature lends itself to a sort of impressionism, leaving the viewer to fill in the gaps.
A spatial data structure that can be used to find things by location.
The ability to reliably replace a function call and arguments, with the result type and observe no change.
A part of your game that represents a particular stage like a screen or a level.
A piece of the final scene to be presented that can be combined with other pieces to form the final scene.
A pair of small programs written in GLSL (a C-like language) comprised of a vertex program that tells a graphics card where to place an entity on the screen, and a fragment program that specifies what color to draw each pixel.
A function that produces a value for given time. Used in procedural animation.
A combinator used to manipulate, process, and compose Signals.
A primitive type for rendering animations, such as characters.
An image / texture that contains all the frames of one or many animations.
The line around a shape, has variable thickness.
A small, well encapsulated game that can be combined with the main game. Used to organise sections of you game and to manages tasks and processes in the background.
A primitive type that renders text as a series of individual entities. In contrast to
TextBox, text renders well at any scale, but is relatively expensive.
A text rendering approach that draws letters to the browsers canvas. This has the advantage of supporting any web font, but the draw backs of being slow and forcibly anti-aliased (smoothed). This means the font looks good at a magnificaiton of 1, but poor at higher game magnifications.
Time Varying Value
A value that is updated automatically based on some behavior and the time delta between frames.
An audio track, with Volume.
A transform is the combination of translation (movement), rotation, and scaling, that can be applied to an entity.
A Scala 3 to GLSL transpiler
Data type that represents position and magnitude as a 2D coordinate, the magnitude being the distance to the origin (0, 0).
An (x, y) coordinate that represents a position on a graph. Vertices make up the points at the corners of triangles, for example.
A shader program that arranges the location an entity will be drawn at on the screen.
The viewable screen area.
The web based 3d rendering technology that Indigo is built upon.
Contains all the colliders and other elements of a physics simulation.