05-Nov-2016, 5:44 PM
The initial coding is sufficiently finished that I am finally ready to announce my new project: Chip's Challenge Creator (working title), the first unified editor for both Tile World and CC2, with script editing!
Below is a screenshot clip demonstrating my code's ability to load a familiar CC2 level and display it using the CC2 tileset:
The plan is to write the first version in Java, for ease and speed of development. The Java program should work on most people's systems, and I hope later to port the program to C++ for more power and versatility.
Below is a list of the planned features for the editor. I invite everyone to look over the list, and reply with any requests for additions or modifications.
Initial Release Features
[*]
Export - Exports data out of the project to a file (see Supported File Formats).
The Export options prompt for a target format, and require the exported data to be compatible with the selected format (see Compatibility Mode).
</ul></li>
[*]
Edit Options
[*]
View Options
[*]
Always Show Metagraphics - Selects whether enabled metagraphics are always visible, or visible only on mouseover.
[*]
Element Connections - Selects whether connection metagraphics are drawn in the Map Editor for elements like fire jets, traps, cloners, and teleports.
[*]
Logic Node Connections - Selects whether connection metagraphics are drawn in the Map Editor for logic nodes.
[*]
Effect Areas - Selects whether area-of-effect metagraphics are drawn in the Map Editor for elements like area controls.
[*]
Creature Order - Selects whether creature-order metagraphics are drawn in the Map Editor.
[*]
Creature Paths - Selects whether creature path metagraphics are drawn in the Map Editor.
[*]
Player Starting Position - Selects whether the player starting position is highlighted in the Map Editor.
[*]
Viewport - Selects whether the in-game viewport area is highlighted around the cursor position in the Map Editor.
[*]
Compatibility Errors - Selects whether compatibility errors are highlighted in the Map Editor.
[*]
In-game Graphics - Toggles between editor graphics and graphics as seen in-game (outside of wizard-eye mode).
</ul></li>
[*]
Series Options - Apply to all levels in the project series except where overridden in the Level Options.
[*]
Level Options - Apply specifically to the currently-selected level in the Level Selector.
[*]
Help Options
[*]
Tools - The built-in set of map editing tools.
For all tools that place elements, the primary mouse button places the primary Drawing Element, while the secondary mouse button places the secondary drawing element.
[*]
Palette - The set of available elements, organized into tabs, with an additional All tab displaying the full element set.
[*]
Map Editor - Displays the map of the current level in a tabbed, scrollable, zoomable viewport with optional metagraphics (see View Options). Clicking on a cell within the viewport applies the current tool to that cell (see Tools). Multiple level maps can be open at once in separate tabs.
[*]
Level Selector - Lists the levels in the project series. Clicking a level selects it as the current level and opens its map in the active tab of the Map Editor.
[*]
Level Properties Editor - Allows the user to edit certain essential properties of the current level without bringing up a separate window (see Level Options > Properties).
[*]
Compatibility Mode - Represents the different versions of CC supported by this program. Elements and other data not compatible with the current mode(s) will be listed in the Compatibility Errors window (see Level Options > Errors), and highlighted in the Map Editor if View Options > Compatibility Errors is enabled.
Multiple modes can be selected simultaneously, and every edit is checked against all currently selected modes.
Additionally, when exporting data to a specific file format, the data is checked against the modes supported by that format (see Export, Supported File Formats).
[*]
Supported File Formats
[*]
Levelset Files - Contain a series' levels without its script data.
[*]
Script Files - Contain a series' script data without its levels.
[*]
Project Files - The program's internal format for saving a whole project, including all levels and script data.
</ul></li>
</ul>
Possible Future Update Features
[*]
View Options
[*]
Level Options
[*]
Test Options - Options related to playtesting the current level in some version of CC. (Undecided how to support the various different versions in a homogenous style. Need to explore whether external playtesting works in CC2.)
[*]
Tools
[*]
Palette
[*]
Map Editor
[*]
Solvability Test - Tests for basic problems that make a level unsolvable (too few chips, inaccessible exit, door with no matching key that has to be opened, etc.).
Will not be able to find routes, or dynamically simulate movement or logic.
</ul>
With the heavy coding out of the way, I may have the project finished in a month or two. Hopefully the community will find it useful for creating the next generation of awesome Chip's Challenge levels!
Below is a screenshot clip demonstrating my code's ability to load a familiar CC2 level and display it using the CC2 tileset:
[Click to Show Content]
The plan is to write the first version in Java, for ease and speed of development. The Java program should work on most people's systems, and I hope later to port the program to C++ for more power and versatility.
Below is a list of the planned features for the editor. I invite everyone to look over the list, and reply with any requests for additions or modifications.
[Click to Show Content]
Initial Release Features
- File Options<ul><li>
New - Starts a new project with an empty series.
- Load - Loads a project from a file, or imports data to a new project (see Import).
- Save/Save As - Saves a project to a file, prompting for a filename if necessary (always, for Save As).
- Restore - Restores the project from the last load/save point (unavailable for a new project).
- Import - Imports data into the project from a file (see Supported File Formats).<ul><li>
Import Level - Imports a single level from a level/levelset file.
- Import Levelset - Imports a range of levels from a levelset file.
- Import Script - Imports level script data from a script file (does not import any levels).
- Import Series - Imports levels and level script data from a combination of level, levelset and script files.
[*]
Export - Exports data out of the project to a file (see Supported File Formats).
The Export options prompt for a target format, and require the exported data to be compatible with the selected format (see Compatibility Mode).
- <li>
Export Level - Exports the selected level to a level/levelset file.
- Export Levelset - Exports the selected range of levels to a levelset file.
- Export Script - Exports the script data of the selected level(s) to a script file (does not export any levels).
- Export Series - Exports the selected level(s) and their script data to a combination of level, levelset and script files.
</ul></li>
[*]
Edit Options
- <li>
Undo - Undoes the last edit action
- Redo - Redoes the last undone edit action
- Cut/Copy - Copies the selected text/level/map area to the system clipboard.
Levels and map areas are, if possible, presented in a format compatible with other CC editors, and additionally are presented as rendered images.
Cut additionally deletes the selected data.
- Paste - Pastes text/levels/map areas from the system clipboard into the current project.
Compatible with formats presented by other CC editors.
- Clear - Erases the selected text/level/map area.
- Select All - Selects the entire range of the active component, which can be a text field or the Map Editor.
- Select Type - Selects every cell in the Map Editor containing an element of the specified type.
- Fill - Places the current primary Drawing Element in every selected cell in the Map Editor.
- Rotate Element - Rotates the current primary or secondary Drawing Element clockwise or counterclockwise.
[*]
View Options
- <li>
Zoom - Controls the magnification/minification of the image in the Map Editor.<ul><li>
Zoom In - Zooms in by a magnification factor of 2
- Zoom Out - Zooms out by a magnification factor of 2
- Zoom Normal - Zooms to 100% magnification
- Fit Window - Scales the map image small enough to show the whole map in the window.
- Custom Zoom - Opens a dialog with a box to enter a custom zoom factor.
[*]
Always Show Metagraphics - Selects whether enabled metagraphics are always visible, or visible only on mouseover.
[*]
Element Connections - Selects whether connection metagraphics are drawn in the Map Editor for elements like fire jets, traps, cloners, and teleports.
[*]
Logic Node Connections - Selects whether connection metagraphics are drawn in the Map Editor for logic nodes.
[*]
Effect Areas - Selects whether area-of-effect metagraphics are drawn in the Map Editor for elements like area controls.
[*]
Creature Order - Selects whether creature-order metagraphics are drawn in the Map Editor.
[*]
Creature Paths - Selects whether creature path metagraphics are drawn in the Map Editor.
[*]
Player Starting Position - Selects whether the player starting position is highlighted in the Map Editor.
[*]
Viewport - Selects whether the in-game viewport area is highlighted around the cursor position in the Map Editor.
[*]
Compatibility Errors - Selects whether compatibility errors are highlighted in the Map Editor.
[*]
In-game Graphics - Toggles between editor graphics and graphics as seen in-game (outside of wizard-eye mode).
</ul></li>
[*]
Series Options - Apply to all levels in the project series except where overridden in the Level Options.
- <li>
Compatibility - Opens a window to select the compatibility mode(s) for the project series (see Compatibility Modes).
- Properties - Opens a window to edit the properties of the project series.
- Userdata - Opens a window to edit nonstandard userdata for the project series.
- Errors - Opens a window to view details of all reported compatibility errors for the project series.
[*]
Level Options - Apply specifically to the currently-selected level in the Level Selector.
- <li>
Add Level - Adds a new level to the project series, in the position immediately following the current level.
- Delete Level - Deletes the current level from the project series (same action as Edit > Delete when the latter applies to the Level Selector).
- Move Level Up/Down - Shifts the current level up or down by one in the project series order.
- Move Level To - Prompts for a number and shifts the current level to the corresponding position in the project series order.
- Previous/Next Level - Selects the level immediately before or after the current level in the project series order, and opens it in the active tab of the Map Editor.
- Go To Level - Prompts for a level number, title, or password, locates a matching level in the project series, and if found selects it and opens it in the active tab of the Map Editor.
- Compatibility - Opens a window to select the compatibility mode(s) for the current level (see Compatibility Modes).
- Properties - Opens a window to edit the properties of the current level.
- Hints - Opens a window to edit the hints for the current level.
- Button Connections - Opens a window to edit the button connections for the current level.
- Creatures - Opens a window to edit the creature order for the current level.
- Scripts - Opens a window to edit the script data for the current level.
- Userdata - Opens a window to edit nonstandard userdata for the current level.
- Errors - Opens a window to view details of all reported compatibility errors for the current level.
[*]
Help Options
- <li>
Editor Reference - Documentation for the program features.
- Element Reference - A complete, detailed description of the CC element set.
- About - Technical info about the program.
[*]
Tools - The built-in set of map editing tools.
For all tools that place elements, the primary mouse button places the primary Drawing Element, while the secondary mouse button places the secondary drawing element.
- <li>
Draw - Places an element under the cursor when the user clicks or drags the mouse.
Shift+click places the element in the overlay layer.
- Line - Draws a line of elements from where the user clicked to where the user released the mouse.
- Box - Draws a filled rectangle of elements with one corner where the user clicked and the diagonally opposite corner where the user released the mouse.
- Path - Like the Draw tool, but automatically rotates certain elements when the user changes direction, to make a continuous path.
- Flood - Flood-fills a region of the map composed of a single element.
- Wire - Lays wire between adjacent wirable elements.
- Connect - Adds a button connection between the first-clicked and second-clicked elements (only works between traps/cloners and their respective buttons).
- Toggle - Toggles all toggleable elements in the map.
- Select - Selects a rectangle of map cells with one corner where the user clicked and the diagonally opposite corner where the user released the mouse. Additional cells can be added/removed from the selection individually with Ctrl+click.
[*]
Palette - The set of available elements, organized into tabs, with an additional All tab displaying the full element set.
- <li>
Drawing Element - One of the elements currently selected from the palette for drawing in the Map Editor. Two elements can be selected at once, the primary and the secondary.
- Cycle - A group of different entities of the same element (e.g. four different directions for a creature). When an element is selected as the primary Drawing Element, its cycle (if it has one) is displayed separately, and the user can select a specific entity within the cycle. The user can also rotate forward or backward in the cycle using the Rotate Element option.
[*]
Map Editor - Displays the map of the current level in a tabbed, scrollable, zoomable viewport with optional metagraphics (see View Options). Clicking on a cell within the viewport applies the current tool to that cell (see Tools). Multiple level maps can be open at once in separate tabs.
[*]
Level Selector - Lists the levels in the project series. Clicking a level selects it as the current level and opens its map in the active tab of the Map Editor.
[*]
Level Properties Editor - Allows the user to edit certain essential properties of the current level without bringing up a separate window (see Level Options > Properties).
[*]
Compatibility Mode - Represents the different versions of CC supported by this program. Elements and other data not compatible with the current mode(s) will be listed in the Compatibility Errors window (see Level Options > Errors), and highlighted in the Map Editor if View Options > Compatibility Errors is enabled.
Multiple modes can be selected simultaneously, and every edit is checked against all currently selected modes.
Additionally, when exporting data to a specific file format, the data is checked against the modes supported by that format (see Export, Supported File Formats).
- <li>
MSCC - The classic port by Microsoft.
- TW:MS - The mode of Tile World that emulates MSCC.
- TW:Lynx - The mode of Tile World that loosely emulates the original Lynx version.
- TW:Pedantic Lynx - The mode of Tile World that pedantically emulates the original Lynx version.
- CC2 - The recently-released sequel.
[*]
Supported File Formats
- <li>
Level Files - Contain a single level.<ul><li>
Chip's Challenge 2 Map - extension ".c2m"
Used by CC2.
Supports CC2 Compatibility Mode.
[*]
Levelset Files - Contain a series' levels without its script data.
- <li>
Chip's Challenge Levelset - extensions ".ccl", ".dat"
Used by MSCC, Tile World, and other CC editors.
Supports MSCC, TW:MS, TW:Lynx, and TW:Pedantic Lynx Compatibility Modes.
[*]
Script Files - Contain a series' script data without its levels.
- <li>
Chip's Challenge 2 Game - extension ".c2g"
Used by CC2.
Supports CC2 Compatibility Mode.
Associates with multiple Chip's Challenge 2 Map files.
- Chip's Challenge Extension - extension ".ccx"
Used by Tile World (version 2).
Supports TW:MS, TW:Lynx, and TW:Pedantic Lynx Compatibility Modes.
Associates with a single Chip's Challenge Levelset file.
[*]
Project Files - The program's internal format for saving a whole project, including all levels and script data.
</ul></li>
</ul>
Possible Future Update Features
- Edit Options<ul><li>
Edit History - Displays the user's entire edit history back to program startup, enabling selective undo.
[*]
View Options
- <li>
Load Tileset - Prompts for the name of an image file to use as the program tileset. (Undecided whether this feature will allow custom tileset formatting or simply expect the same format as the CC2 tileset.)
[*]
Level Options
- <li>
Generate Random - Generates an empty level consisting of just floors and walls arranged in randomized rooms. (Possibly with a later update adding options to add shapes of various elements like water.)
[*]
Test Options - Options related to playtesting the current level in some version of CC. (Undecided how to support the various different versions in a homogenous style. Need to explore whether external playtesting works in CC2.)
[*]
Tools
- <li>
Auto-wire - Attempts to connect two wireable elements by automatically pathing the wire across the level.
[*]
Palette
- <li>
Custom Palette - Allows the user to create a custom organization for the palette by adding, removing and editing tabs.
- Mode-specific Palette - The palette only shows elements that are supported by the current Compatibility Mode.
[*]
Map Editor
- <li>
Layers - Selects whether to show the upper or lower layer of the current level map, or both, in the Map Editor.
[*]
Solvability Test - Tests for basic problems that make a level unsolvable (too few chips, inaccessible exit, door with no matching key that has to be opened, etc.).
Will not be able to find routes, or dynamically simulate movement or logic.
</ul>
With the heavy coding out of the way, I may have the project finished in a month or two. Hopefully the community will find it useful for creating the next generation of awesome Chip's Challenge levels!