Eketech Voxel Editor, Version 2
Loaded Puzzle:
Texture Picker    
Embed Texture Reset to Default Texture
Rows: Columns:
ekvx2 export/import
Import     Save to File
Ekvx2-ed with configuration for Orthot III
Version: 0.1.0
Author: Jonathan Hart (AKA "Eketek")

Ekvx2-ed is intended to be a general-purpose WYSIWYG 3D editor.

It's direct inclusion in the Orthot III project is partly a desire to keep everything very simple, and partly due to an assumption that the editor will only ever be used for Orthot III (if that assumption ever changes, aside form the launching HTML documnet, the editor sub-project is also to refrain from any dependency on anything specific to Orthot III, so a spin-off should be straightforward)

Project page: https://github.com/Eketek/orthot

If you would like to contribute, be be warned that the project is still somewhat more like a hastilly assembled mess of JavaScript than an elegantly coded and well-documented software project. Eketek at least knows what to do about it.

Color Picker
Recent Colors
# Hues

Orthot 3 Puzzle Editor Instructions


This document is written with the perspective of the Orthot 3 Editor as "Orthot-3 Editor". Technically, it should be called "Eketech Voxel Editor Version 2, with a configuration for Orthot 3", but that is arguably too cumbersome.

The Orthot 3 Editor is a volumetric modelling and layout tool. It handles two main types of objects: Blocks and Attachments. Blocks are anything which physically occupies a fixed-size cube-shaped volume. Attachments are non-volumetric objects which are attached to the sides of a Block.

The interface is driven primarilly by a mouse, and secondarilly by keyboard. The mouse is used to pick positions, activate Tools, to manipulate the 3D View, and to activate/manipulate property-editing GUI elements. The keyboard is used to augment the mouse in selecting position, to interact with text-based property editors, and for keyboard shortcuts.

Click the "Import/Export" button (right side of the Display) to save or load a puzzle.
Click the "Test" button (right side of the Display) to test your puzzle (this opens or reactivates another window/tab).


Tools are operators that get applied to positions/objects located at the position which has been picked through mouse-movement. In general operations are:
Add an instance of the tool-specified object at the picked position or position+side (or replace an existing non-coexistable object)
Remove all blocks and attachments at the picked position
Remove all attachments at the picked position+side
Edit properties of an object at the picked position or position+side


Mouse positions are transformed from 2d positions on your Display to 3d positions in your puzzle. The function used for that transformation is called the "pick mode". There are two basic modes available: Mouse Ray - In this pick mode, picking is performed against existing objects in your puzzle which are positioned exactly under the mouse cursor. Based on tool properties, this may pick either the position of the picked object or the position adjacent to the picked object. Additionally, some tools are selective about which objects to pick against (a tool might pass through "scenery" and/or "liquid" and pick something further back which is "solid"). Planar - In this pick mode, picking is performed against an infinite plane. The picking plane may be offset along a perpendicular line by using the "arrow" or "wasd" keyboard buttons. Planar pick mode comes in three flavors: "XZ", "XY", and "YZ" - each of which permits free mouse-based picking in two dimensions, but needs keyboard input to alter the third.


A cursor is positioned at the picked position. Depending on which tool & pickmode is active, the following cursors will appear:
White box frame - this is used for unaligned blocks
White square frame - this is used for unaligned attachments (or not, since none of the tools are set up that way)
White square frame with a white arrow - used to indicate which direction is forward (both for attachments and for orientable blocks)
White square frame with a white arrow and a red chevron - The chevron is used to better emphasize which direction is right (relative to forward).


Most of the different types of objects on Orthot have an orientation. When orientation is used, it will be derived from the picked position (based on where the mouse is in relation to the exact center of the picked side of the picked position). Orientation is also indicated by a 3d cursor which shows a forward-pointing arrow.


Many tools/objects have special properties which can be edited. Tool/Object properties appear on the left side of the Display either when a tool is selected or when an object is being manipulated by the edit tool. Properties altered when a tool is active will affect all objects generated by that tool after the alteration (but not any objects which have already been placed). Properties altered through the edit tool affect only the selected object. The exact behavior of the properties editors is based on what sort of property each one is (color picker for adjusting colors, tile picker for adjusting tile-based textures, textarea for adjusting text, checkbox for enabling or disabling thigns, etc...).


Wall - The three flavors provide different levels of customization (amount of surface specifications)
paint-Wl - This tool sets the surface properties of individual terrain sides, allowing you to "paint" arbitrary patches of your terrain
Stairs, PBlock, Crate, IceBlock - These are fairly generic blocks with no special properties
Start - starting position
startMSG - text (or text-entry-name) to display when standing in the starting position
defeatMSG - text (or text-entry-name) to display when respawning after defeat
fpview - if checked, start in first-person perspective (consider using this for cramped maze-type puzzles)
Exit - End position, puzzles are considered "solved" if one of these is reached.
dest - name of zone to teleport to (puzzle pack only, defaults to main area)
target - name of target position to spawn at in destination zone
Target - Named position (target position for use with zone portals and exits)
zPortal - Teleporter to another puzzle/zone.
dest - name of zone to teleport to (puzzle pack only, defaults to main area)
target - name of target position to spawn at in destination zone
Portal - Links two or more positions within the zone
class - If set, the portal is a bidirectional link with every other portal of the same class.
name - If set, the portal is the destination of a one-way link from any portal which has the same value as its target target - If set, the portal is a one-way link to a portal with the same value set as its name
Icefloor and ladder are fairly generic attachments with no special properties
Button - An attachment that emits a signal when it gets pressed and when it gets released
press - Signal to emit when the button is pressed.
release - Signal to emit when the button is released.
Gate - A barrier which, together with all other gates connected in a straight line, extends and retracts when signals are emitted.
extend_signal - Gate extends (from retracted or retracting state) when something emits this signal.
retract_signal - Gate retracts (from extended or extending state) when something emits this signal.
toggle_signal - Gate flips between retract[ed/ing] & extend[ed/ing] when something emits this signal.
Lock and Key - If the key and the lock share the same color, then the key opens the lock. (Lock uses its first color for this) Mouse and Moose are fairly vicious creatures with no special properties
Flag - A scenery-type object which indicates whether or not a puzzle has been completed. A flag is green if indicating completion, red otherwise.
code - Name of puzzle to indicate whether or not it has been completed.
InfoBox - A scenery-type block which displays a helpful (or not) message when the player is standing in it.
message - text (or text-entry-name) to display when standing in the InfoBox position


The pattern picker and border picker interface provide options to import custom terrain textures. Terrain textures use a special colorization scheme (to allow for a high level of variety with a relatively minimal graphics data). The Red, Green, Blue, and Alpha color components from the Border and Pattern textures are used as inputs into a fragment shader which performs a simple compositing & colorization operation. The color components are used as follows:

Border-Red  Terrain Color
Border-Green  Edge Color (adjust with "Settings" tool)
Border-Blue  Unused
Border-Alpha  Influence of the Composited border-tile on the rendered output
Pattern-Red  Terrain Color
Pattern-Green  hiliteA (adjust with "Settings" tool)
Pattern-Blue  hiliteB (adjust with "Settings" tool)
Pattern-Alpha  Unused

Terrain color, edge color, hiliteA, and hiliteB are multiplied by associated input color component values (range 0-1). The border components are blended additively with other border components, the pattern components are blended additively with pattern components, and the two resulting colors are then alpha-blended based on border-alpha.

At some point in the future, other options for texturing terrain may be added - some more complex, some simpler.


A puzzle package is just a standard '.zip' archive. All file names must be unique. Filename extensions are required. Any directory structure may be used (the puzzle loader treats the entire archive as a single directory). The file names assigned int he archive are used to resolve references/links between puzzles.

***All floating dialog boxes that appear in-editor may be escaped with the "Escape" button.***