Skip to main content

What is Kiscule?

Note: This page was originally written by Chrispy. It was recovered from the now-deleted idTech 7 wiki, and copied here with minimal edits. This section is incomplete and needs further research to expand upon it.

Kiscule is the replacement for SuperScript from id Tech 6, it was designed originally for The Void Engine (Dishonored 2). It underwent some evolution between the merge of id Tech 6 and Void and was renamed to just "logic entities" or "logic graphs" but we'll continue to refer to it as Kiscule because that's more succinct.

Kiscule does not exist in id Tech 6 (so it is not present in Doom 2016).

What can it do?

Kiscule is probably the most powerful scripting tool in the engine. It has variables (types int, vec3, string, angle, vec2, time, gameteam, float, entity, entitydef, entityclass, color, bool) as well as collections of these types (lists). Variables can be used as arguments to operations.

Kiscule can be used to do almost anything gameplay related.

Example Usage

Here is a rough outline of a logic .decl, more complete examples can be found in the extracted .resources files, in the generated/decls/logicentity directory.

{
	edit = {
		versionNumber = 21;
    	mainGraph = {
			className = "idLogicGraphAssetEntityMain";
			object = {
				id = 2;
				pos = {
					x = -2168;
					y = -2273;
				}
				variables = {
					num = 0;
				}
				nodes = {
					num = 0;
				}
				links = {
					num = 0;
				}
			}
		}
	}
}
  • All id are arbitrary, just pick a unique number.
  • Any references to pos or to icons can be ignored. They are used in id Software's logic graph editor, which we don't have access to here. It doesn't affect anything in the game.
  • Each links id is unique and doesn't seem to matter much.

You can also declare pins that go between links, here is an example:

pinVariables = {
	num = 1;
	item[0] = {
		id = 2;
		model = {
			className = "idLogicVariableModelEntityList";
		}
	}
}