Overview and Documentation
HCGE is a versatile, multiplatform 2D game development system. Its editors and powerful script interface allow users to create the characters and environment that make up the game, while the program handles I/O, low-level player/object management, etc. Many 2D Genre are possible with this system, such as Platform, Adventure, SHMUP, Fighter, RPG, Paddleball/Pinball, and others
Full documentation for all file formats, script commands, management systems, and editors is included with PC and Mac download packages and on this site. The sections below provide links to relevant texts, and the "Getting Started" document is provided as an overview and entrypoint
For most platforms, HCGE includes an online update and download system that will activate if it is not set to run a specific game at startup- Official Games Using HCGE can be downloaded from within the program itself, and upon entering the Game Menu, it will test for updates to the program and any installed games that have proper update settings
Processor and memory requirements for reliable performance will change depending on the content of the game, but the absolute minumum requirements are:
Bear in mind that the Wii uses a 729MHz processor, while the PSP uses a 333MHz processor, and both have only 24MB of RAM available for use by HCGE. The Wiz has 32MB of HCGE-available RAM, but although it is made to run at 750MHz, there is overhead somewhere within the Linux kernel and/or the SDL sound implementation that bring it down to the level of the PSP. Games built for use on these systems must target these numbers
Each platform has a separate download package:
Windows, Linux, *MacOSX, PSP, Wii, GP2X Wiz, GCW-Zero
* An issue with the current Mac build requires that SDL actually be installed, as opposed to just existing in the app package, for HCGE to run without immediately exiting. If you do not already have SDL installed, please right-click the HCGE app and select "Show Package Contents", and then navigate to "Contents/Frameworks" and right-click and copy "SDL.framework". Then, navigate to your main hard drive's "/Library/Frameworks" folder and paste "SDL.framework". You may need to use your administrator password to complete the operation, since this is a system folder. This will only need to be done once. I will be seeking to solve this issue in a future update, and I apologize for the inconvenience.
3DS - requires a 3DS/New3DS capable of running "The Homebrew Launcher"
If you experience any problems with any version of HCGE, please report them at the forum!
If I don't know about it, I can't fix it!
For private and no-fee use, HCGE is distributed under a "Pay-What-You-Want" system; the software is provided to everyone free-of-charge, but users are encouraged to contribute to help ensure that development can continue. Users who intend to sell materials created using HCGE and services related to HCGE must obtain a commercial license, however, a license is not necessary until such point that currency is to be exchanged. Please see the license section for further detail
When determining an amount, please consider the following:
Support me on Patreon!
To contribute by mail, or to donate materials such as hardware for platform testing, please send an email request titled "Mail-In Contribution" to domain "headcannon.com", username "stealth".
Thank you very much for your consideration!
The following features make HCGE a powerful solution for game development:
Games developed for HCGE can readily be run on any of the platforms listed above, regardless of the platform used for testing and development, without any additional steps (this assumes that the processor and RAM limitations of the Wii and PSP have been accounted for during development, and that their button config files have also been created)
HCGE uses a custom sound system supporting music and sound effect volume controls, looping and non-looping .wav format sound effects, .wav and .ogg format music with lead-in intro before the loop, and .XM music with up to 16 channels, most standard effects, and "song events" that allow the music to control the game, or the game to control the music
Level Scroll Management:
HCGE's level management system allows for an adjustable number of tile layers for scrolling, each of which can be enabled/disabled at any time during gameplay. Each layer may be set to one of six scroll modes: full layer fixed or relative scroll, and tiled or lined scroll on either the X or Y axis. Scrolling properties for each unit on each axis can be set up within the level editor, or each scroll unit can be controlled manually through script to apply finer control or special scroll effects. There are also settings to allow for level section looping for simulated extended height/width or repeating segments
The tiles that make up a level may contain more than one "frame" that can either be changed automatically at intervals set by the user within the level editor, or can be set by script. Aside from the display frames, the tile also contains a solidity map that defines where collision with the level will occur in the form of "top-only" or "all-sides", as well as an "angle" setting, used by the path tracer, and a "Floor Type" setting, all of which can be read by script
HCGE uses a 256-color palette with adjustable "level palette" settings. A level may contain several interchangeable palettes that may be swapped at any time. Each palette may be set to one of three modes, the first being 64 level colors and 64 reserved global colors, with the remaining 128 being copies with an adjustable "alpha" applied for water/lighting effect, and the remaining 2 modes using no alpha, allowing either 128 level and 128 global, or 192 level and 64 global. Palette entries may be animated by "frame" in the same way as tiles, and may also be cycled with neighboring entries. Each entry within the active palette may also be changed directly by script
Objects are run and displayed in order of "Priority". They may be set to move freely throughout the level or to conform to level collision settings based on script-controlled movement properties, or their position may be adjusted entirely by script. They may also be set as "Projectile Objects", which can process collisions with other objects, whether those objects are "Projectiles" or not. Any object may reference any number of swappable sprite listings, and any number of interchangeable and even combineable scripted object animation functions
Player characters use a more complex setup than normal game objects to make them more versatile. Multiple "Movement Modes" may be assigned to each player character that define how the player reacts to input, his state, and his environment. Movement is processed by a more-heavily-featured "Path Tracer", which is capable of vectored movement based on floor angle settings, can be made to follow a path around a complete circle, gathers more information about the player's movement and collision state, and uses unit-by-unit movement for high accuracy in collision, even when moving at a diagonal line through freespace. Adjustable automatic viewport control may be enabled for players, and defineable "Key Events" call script functions that control the player's reaction to input. Any number of player characters may be defined for any game. Two active player objects are available which correspond with the two active player displays (single or split-screen), and may be set or reset to any defined player character at any time
Setup Scripts exist for all aspects of a game for assigning properties to aspects such as sprites, player characters, objects, and general level control, and for loading data lists such as music, sound effects, and fonts
The "Status Script" is a special type of script that can be used to create displays such as HUDs, intros, titlescreens, menus, in-game dialogue, and debugging displays. These scripts allow the use of fixed or numerical counter text, animated or unanimated sprites, and windows for text/sprite/window grouping and clipping areas, as well as "selections" for defining and reacting to menu-style input
Aside from basic setup, HCGE's script system also consists of a custom, instruction-based programming language that is used for controlling the behavior of all game elements. Setup scripts make reference to Script Functions using this language to assign them to events such as player input, player/object collisions, player movement, "Status Script" control, level events, etc. Any one of these functions called at any time may access and manipulate any other game element for any reason
HCGE comes with several built-in editor systems that are accessible (for non-"packed" games) during gameplay and from within the interface's "Utilities" menu. They are described in more detail in their own section
The built-in level ripper, accessible via command-line or the interface's "Utilities" menu, may be used to "rip" tiles from PCX or TGA images. The tiles imported into the named tile file are also arranged to create a level layout layer in the same design as the image itself. Tiles and layout sections may be imported to existing levels. Tiles using an image that has already been copied are not duplicated. The created level may be further manipulated within the Level Editor
A few other Utilities are also available via command-line and the interface's "Utilities" menu to assist in creation of game data, such as an option to export a portion of a PCX or TGA image's palette to a "Set_Palette_Range" script command, and an option to shift a palette area in one image to another location. Other debugging options include warping directly to a certain level, and entering the level editor directly within a gameplay level, or with other specified files
Below is a list of editors included with HCGE:
The built-in Tile Editor works in conjunction with the Level Editor to allow manipulation of level graphics and layout. This includes touching-up or drawing new tile art, setting tile solidity and collision properties, creating tile animation, modifying the palette, and creating palette animation
Layout and State Editor
The built-in Object Editor allows modification of location and state of objects that have been placed in a level. Enter this editor from gameplay, and adjust object properties, (optionally) save, and return to gameplay. Use this feature to test or monitor object behavior, or set up object initial states when objects of the same type may start with different behaviors
The built-in Sprite Editor allows visual manipulation of sprite properties. Enter this editor from gameplay, and modify drawing offsets, collision boundaries, and hotspot locations for player or object sprites
First-party HCGE Templates/Examples (General)
This is a list of General HCGE Functionality examples and templates developed by Organized Chaos:
Check out the Headcanon Section of the site for more information!
The HCGE is not an "opensource" project, and under no circumstances will sourcecodes be distributed. Please don't ask.