Kye is a real-time puzzle game with a variety of interacting objects. It takes ideas from puzzle games like Sokoban and Boulder Dash, but the inclusion of active objects gives it a real-time component, and it can also produce arcade-game levels like those found in Pac-Man. Anyone can create new levels for the game.
Kye was created by Colin Garbutt of Towednack and first released in 1992. Starting with version 2.0, the game became charity shareware - registration required a donation to Save the Children, and the donor received the latest version and 20 additional levels in return.[1] As time passed, roughly 500 additional levels from various developers and designers would be added to the registered package; they could also be opened in the unregistered version.
The Kye is also the object controlled by the player in the game, from which the game takes its name. This was the name of Garbutt's dog, according to the help file.
Version 1 of Kye was released in January 1992, and was widely distributed in the UK in collections of shareware games. This version contained all the main features of the game, including mouse control, real-time movement of objects, and the active monsters.
Version 2 was released in May 1992. People who registered version 1 got version 2, and a larger collection of levels. Version 2 introduced a visual level editor and new objects which increased the scope of the game, including black holes, shooters and timer blocks.[2]
Both of these versions were for created for Windows during the 3.x era, and as such are 16-bit applications. They will not run on modern 64-bit versions of Windows unless within a 16-bit compatible virtual machine. In any case all associated directory and filenames used must keep to the DOS naming limitations - i.e. no more than 8-letter names and 3-letter filename extensions.
Subsequently, Kye has been reproduced for platforms other than Windows 3.x. This has been from scratch since the original coding is not available. Python Kye [3] reproduces the behaviour of the original game very closely, including some behaviour that was probably unintended by the original author. It comes with its own level editor and uses level files in the same format as the original game. Xye [4] is a version written for modern Windows which has some departures from the original behaviour and introduces some entirely new elements; it also has its own level editor and uses a different level file format, although it can read files of the original format (though Xye omits the ability to move diagonally, so levels that rely on this are not playable).
There have been other versions of Kye produced or attempted since 1992, including versions for hand-held devices, but these other versions seem defunct now leaving only Python Kye and Xye still supported in 2016.[5]
In December 2022 a version of Kye for Commodore 64 was released by Hungarian programmer Patai Gergely.[6] Compared to the original Windows 3.x version this remake includes music and improved movement, thanks to better handling of repeat inputs using joystick control.
The player controls the Kye, a green sphere, using either the mouse or the keyboard. The only action in the game is movement – Kye interacts with the game by pushing objects, pulling them, or consuming/collecting them (by stepping onto them). Each level is a single screen, of 30×20 squares, each of which can contain a single object. The objective of the game is to collect all of the diamonds in each level, after which the player proceeds to the next level. There is a password system enabling a player to return later to a level he/she has reached previously.
The main objects are the Kye, diamonds, solid walls, soft blocks (which are consumed by walking through them), and solid, movable blocks (which can be pushed around). There are also stickers, which act as magnets and come in horizontal and vertical varieties. A sticker attracts and immobilizes any movable object (other than Kye or another sticker of the same variety) that comes within two squares of it along its axis. Kye can also use them to pull objects. Combinations of these objects alone gives an entirely non-real-time puzzle, enabling puzzles like Sokoban to be constructed. (Although Kye lacks a fillable-hole object, it is possible to combine the sticky blocks with some traps to enable a Sokoban-like gameplay.)
There are also real time moving objects - sliders and rockies. These have some similarity with falling-rocks puzzle games, but since in Kye they can go in four directions, and there are also turning blocks (clockers and anticlockers) that can redirect a stream of sliders or rockies, it is possible to construct circular flows and periodic mechanisms. The bouncers, which are the only non-player-controlled objects that can push other objects, allow mechanisms to be constructed.
There are also beasts: spikes, blobs, twisters, gnashers, and viruses. These home in on Kye, who loses a life (of four allotted for each level, as 0 lives count as a life) on contact with one. This gives the game its arcade element; however, the game's documentation states that the beasts are intended to be outwitted rather than outrun – for example, by pushing blocks to trap them or attracting them to stickers or black holes.
Version 2 added timer blocks (making it easy to add time-delay mechanisms to levels), black holes (which destroy objects that flow, wander or are pushed into them), and shooters (which create new sliders or rockies). These take Kye further from the puzzle game area where it started, and more into the arcade game genre.
Kye allows users to create and play custom level files, in a simple text-based format. A level file contains one or more levels, which the player progresses through in the same way as when using the standard level file. Version 1 had no level editor, thus requiring level files to be created using a text editor. Version 2 introduced a built-in visual level editor, though it only supported the editing of single-level files. Third-party level editors have also been created with multi-level file support, such as the Python Kye Editor.[7]