Jump to content

Recommended Posts

I was still using Java 7...I installed version 8 and now it runs :)

Thank you for the help :)

I will post some feedback once I get a chance to use it :)

Share this post


Link to post
Share on other sites

An update is now available, with some major bugfixes and a bunch of new features! You can get it here.

Some notable changes:

  • The CCX format is now fully supported for both importing and exporting
  • Teleport connections now show direction using arrows, and blue teleports show wiring-dependent connections
  • Elements are now laid out properly in the palette
  • Map editor tabbing has been added
  • The program now saves its settings between exiting and relaunching

See the Changelog.txt file for the complete list of changes.

Share this post


Link to post
Share on other sites

THE TILES

I like the way the tiles are sorted; even the "all tiles" section is easier to use than in the official editor. I also like how this editor makes it possible to put empty item blockers (much easier than resorting to a hex editor). And I discovered some tiles that I didn't even know I existed. Not just "unused" tiles, but also traps that start open, and directional blocks without any directions.

However, there are some unused tiles that the editor does not allow to place, and levels containing them do not display properly. These include the random tile, and the voodoo tiles from Enter the Void in TSAlpha.

 

DRAWING

While the official editor allows only one method for placing tiles, this one offers several. The "line" and "fill" features have been useful on a few occasions. The path maker is good in theory, and I used it often in CCEdit. However, there are a few bugs in its implementation here. When using force floors, I would expect crossings to turn into ice (like in CCEdit), but it doesn't happen. It is also problematic with train tracks. Example:

unknown.png

Left: drawn path

Middle: result

Right: expected result

(image by Jeffrey)

The path maker works fine with ice though.

At first, I was a bit confused by what appeared to be two wiring tools, until I figured out one was for CC1 button connections, and the other drew visible CC2 wires. I managed to wire a few levels using this tool, but I encountered an annoying bug: when I try to make a loop in wires, the editor hangs, and I am forced to kill the process. The editor also fails to open levels containing wire loops.

 

"VIEW" OPTIONS

I like how connections are shown; it makes it really easy to see which buttons link to which traps/clone machines/flame jets. The ability to see the scope of an area button/time bomb is also very useful. The ability to see creature paths is also very useful, like Alt+A in ChipEdit. And I absolutely love the ability to see the 10*10 viewing area in the game (it would be nice to have it enabled by default) this isn't really an issue now that settings are preserved :)

Seeing teleport order is also nice. My only complaint? When the level has a lot of green teleports, it's crazy...

unknown.png

(image by Tyler)

 

IMPORTING AND EXPORTING

At first, I was a bit confused by the export/import/save features, but once I figured it out, it all became simple. The editor saves in its native CCS format. Then, the CCS can be exported into a C2M, C2G or DAT file.

I didn't get any opportunities to use the "import" feature. When I did, it eseentially behaved like "open". I assume its main uses would be to import CCX data into a DAT levelset, and add extra levels to a CC2 levelset?

I used the "export" feature for two things: creating a playable CC2 level, and converting CC1 levels to CC2. I had no issues exporting from CCS to C2M.

Converting CC1 to CC2 was much easier than using DAT2C2G: just open the CC1 set, choose the level, and export. It worked very well in most situations and, unlike DAT2C2G, converted PGChip ice blocks properly. The lines indicating button wirings was also easier to process than the DAT2C2G warnings file. I was also pleasantly surprised that a level with a time limit larger than 1000 converted properly (although the CC2 game displays 999 while these extra seconds drain away, like with chips).

However, the export feature has a few bugs. When I tried converting a CC1 level that contains a lot of chips under locks, the C2M file contained simple locks. When I used shift+click to put custom floors under monsters, the resulting C2M file had the monsters on regular floor. Also, when I converted an entire levelset, the paths in the C2G file started at the root directory of the filesystem, instead of using relative paths I tested it again in the 0.2 release and it has been fixed :)

 

OTHER THINGS

The changelog for the 0.2 release mentions changes to the “replace” option. I'm a bit confused as to what this option is?

I really like how settings are now preserved after closing and re-opening the editor. Now, I don't have to navigate to the directory containing my CC2 set every time; it is right there from the moment I open the editor.

I was really excited by the clipboard feature, which would hopefully make it possible to copy some tiles from one level to another. Unfortunately, the editor often failed to cut or copy the selected tiles, simply outputting some weird code on the command line. This generally happens when there are monsters in the area being copied, but I have not been able to reliably reproduce this bug, unfortunately :(

 

CONCLUSION

The editor isn't perfect, but it is an improvement over the official editor. The “view” options, the simple conversion of CC1 to CC2, and the various drawing tools make this much more fun to use than the official editor. Thank you for coding this :)

Share this post


Link to post
Share on other sites

Thanks for the positive feedback! It's definitely helpful, plus I'm always happy to hear my work has been of benefit to someone. :)

I'd like to address some of your comments in more detail:

3 hours ago, chipster1059 said:

THE TILES

[...] there are some unused tiles that the editor does not allow to place, and levels containing them do not display properly. These include the random tile, and the voodoo tiles from Enter the Void in TSAlpha.

I've debated adding the "random tile", but it's really just a glitch, not even as "real" a tile as the invalid tiles from CC1, so I'm hesitant about officially supporting it. Are there many people interested in actually using it?

And I have no idea what you mean by "voodoo tiles". Another CC2 invalid tile thing?

 

Quote

DRAWING

While the official editor allows only one method for placing tiles, this one offers several. The "line" and "fill" features have been useful on a few occasions.

I'm curious: by "fill" do you mean the "box draw" tool, or the "flood fill" tool? The "flood fill" tool is one I'm particularly proud of, as I can see many potential uses for it and it's something none of the previous editors have offered. :)

Quote

The path maker is good in theory, and I used it often in CCEdit. However, there are a few bugs in its implementation here. When using force floors, I would expect crossings to turn into ice (like in CCEdit), but it doesn't happen. It is also problematic with train tracks. [...]

I'd forgotten how CCEdit treats force floor path crossovers. That would definitely be a good feature for CC Creator to have, and I'll look into adding it. Regarding train track crossovers, I'm aware of the awkwardness, but was limited by how I designed the path mechanism. There might be something I can do about it, though, and I'll look at it at the same time I look at the force floor pathing issue.

Quote

[...] when I try to make a loop in wires, the editor hangs, and I am forced to kill the process. The editor also fails to open levels containing wire loops.

Yeah, this was just reported in the Skype chat and I added it to the Known Issues list. I was certain I had designed a whole mechanism to avoid that possible problem, but it turns out I only designed it in my head. :D Anyway, the issue is now fixed in my alpha code, but I don't know when/if I'll release another beta update (I'd really like to be releasing the production version Soon!).

 

Quote

"VIEW" OPTIONS

[...] the ability to see the 10*10 viewing area in the game (it would be nice to have it enabled by default) [...]

It's supposed to be enabled by default, but I set it to default-disabled in my alpha version and apparently forgot to set it back for beta release. I just checked, though, and update 0.2 has it working properly.

Quote

Seeing teleport order is also nice. My only complaint? When the level has a lot of green teleports, it's crazy...

unknown.png

(image by Tyler)

(Leaving the image in the quote 'cause it's hilarious.... :D)

Unfortunately I couldn't think of any better way to draw green teleport connections, that accurately conveys the manner in which any green teleport in the level targets every single other green teleport in the level. I'm just hoping people don't make too many levels like the one depicted, where the super-connectivity is an issue. And of course, you have the option of making the connection metagraphics show only on mouseover. But I'm open to alternate suggestions if anyone has any.

 

Quote

IMPORTING AND EXPORTING

At first, I was a bit confused by the export/import/save features, but once I figured it out, it all became simple. The editor saves in its native CCS format. Then, the CCS can be exported into a C2M, C2G or DAT file.

This is largely correct, though I was concerned that it might be a little too weird for people to figure out without the still-under-construction help manual. I'm glad to see that's not the case. :)

I say "largely correct" because it's not actually necessary to save to the native format before doing an export: you can export from an unsaved project just as well, it just doesn't mark the project as saved (because most of the export options only export part of the project).

Quote

I didn't get any opportunities to use the "import" feature. When I did, it eseentially behaved like "open". I assume its main uses would be to import CCX data into a DAT levelset, and add extra levels to a CC2 levelset?

Yeah, those are two probable uses. The main point of the "import" feature is that it adds to the current project, whereas the "open" feature replaces the current project, losing any unsaved work in the process (and resetting the edit history).

Quote

[...] I was also pleasantly surprised that a level with a time limit larger than 1000 converted properly (although the CC2 game displays 999 while these extra seconds drain away, like with chips).

CC Creator supports the full possible range of time limits, common to MSCC, Tile World and CC2, which is 0-65535 seconds. Once compatibility testing is enabled, it will give a warning when an "undisplayable" time limit is set.

Quote

However, the export feature has a few bugs. When I tried converting a CC1 level that contains a lot of chips under locks, the C2M file contained simple locks.

Locks on top of chips is not a valid combination in C2M; the file physically can't handle it, so the buried chips are ignored. Once compatibility testing is enabled, it will warn you that that's going to happen.

Quote

When I used shift+click to put custom floors under monsters, the resulting C2M file had the monsters on regular floor. [...]

Shift+click puts the tile in the "buried" layer, which is not supported by C2M (nor Lynx-mode Tile World). You need to place the floor first, then the monster on top of it, just like in the original CC2 editor.

I've considered adding a separate input sequence, such as control+click, to place a tile in the "terrain" layer while preserving the creatures and objects on top of it. Would people find this feature useful?

 

Quote

OTHER THINGS

The changelog for the 0.2 release mentions changes to the “replace” option. I'm a bit confused as to what this option is?

BsYc7L2.png

Quote

[...]

I was really excited by the clipboard feature, which would hopefully make it possible to copy some tiles from one level to another. Unfortunately, the editor often failed to cut or copy the selected tiles, simply outputting some weird code on the command line. This generally happens when there are monsters in the area being copied, but I have not been able to reliably reproduce this bug, unfortunately :(

That's really weird. It sounds like the program is throwing an exception (that's what causes the message to be printed to the command line), but I have no idea why that would be happening. If it happens again, can you copy the message for me?

Share this post


Link to post
Share on other sites
3 hours ago, The Architect said:

I've debated adding the "random tile", but it's really just a glitch, not even as "real" a tile as the invalid tiles from CC1, so I'm hesitant about officially supporting it. Are there many people interested in actually using it?

And I have no idea what you mean by "voodoo tiles". Another CC2 invalid tile thing?

I don't know what other members of the community think about this; perhaps you could ask around on Discord?

As for the voodoo tiles, here is Tyler's explanation: "everything past the latch gates, beyond the normal logic gates themselves, can be made into a voodoo tile; i was supposed to write a hex editing tutorial like 2 years ago lmao. all the voodoo tiles act as floor and take the exact appearance of their 32x32 square (i.e. no animation, and the icons in the bottom right are clumped together)"

3 hours ago, The Architect said:

I'm curious: by "fill" do you mean the "box draw" tool, or the "flood fill" tool? The "flood fill" tool is one I'm particularly proud of, as I can see many potential uses for it and it's something none of the previous editors have offered. :)

I was talking about the "flood fill" tool I really like it :)

3 hours ago, The Architect said:

Unfortunately I couldn't think of any better way to draw green teleport connections, that accurately conveys the manner in which any green teleport in the level targets every single other green teleport in the level. I'm just hoping people don't make too many levels like the one depicted, where the super-connectivity is an issue. And of course, you have the option of making the connection metagraphics show only on mouseover. But I'm open to alternate suggestions if anyone has any.

The "show only on mouseover" option could fix this issue :) I can't really think of any other workaround apart from creating a menu entry for every single type of connection, which would have the side effect of creating a really long menu, which might not necessarily be a good thing.

3 hours ago, The Architect said:

I say "largely correct" because it's not actually necessary to save to the native format before doing an export: you can export from an unsaved project just as well, it just doesn't mark the project as saved (because most of the export options only export part of the project).

Yeah, those are two probable uses. The main point of the "import" feature is that it adds to the current project, whereas the "open" feature replaces the current project, losing any unsaved work in the process (and resetting the edit history).

CC Creator supports the full possible range of time limits, common to MSCC, Tile World and CC2, which is 0-65535 seconds. Once compatibility testing is enabled, it will give a warning when an "undisplayable" time limit is set.

Thank you for clarifying about these.  The "undisplayable" warning does sound like a good idea :)

3 hours ago, The Architect said:

I've considered adding a separate input sequence, such as control+click, to place a tile in the "terrain" layer while preserving the creatures and objects on top of it. Would people find this feature useful?

I would find such a feature very useful :)

 

I'm still a bit confused by the "replace" feature.  What makes it different from flood-filling the tile with floor?

 

3 hours ago, The Architect said:

That's really weird. It sounds like the program is throwing an exception (that's what causes the message to be printed to the command line), but I have no idea why that would be happening. If it happens again, can you copy the message for me?

I experienced the issue again just now, trying to copy these tiles:

1w8YVz2.png

Here is the resulting command line output:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at cccreator.MapModel.updateCreatureRoutes(MapModel.java:1447)
	at cccreator.MapModel.setEntity(MapModel.java:1242)
	at cccreator.MapModel.copyCell(MapModel.java:1672)
	at cccreator.MapModel.copyArea(MapModel.java:552)
	at cccreator.MapEditor$8.createTransferable(MapEditor.java:1047)
	at javax.swing.TransferHandler.exportToClipboard(TransferHandler.java:784)
	at javax.swing.TransferHandler$TransferAction.actionPerformedImpl(TransferHandler.java:1753)
	at javax.swing.TransferHandler$TransferAction.access$800(TransferHandler.java:1692)
	at javax.swing.TransferHandler$TransferAction$1.run(TransferHandler.java:1715)
	at javax.swing.TransferHandler$TransferAction$1.run(TransferHandler.java:1713)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
	at javax.swing.TransferHandler$TransferAction$2.run(TransferHandler.java:1730)
	at javax.swing.TransferHandler$TransferAction$2.run(TransferHandler.java:1728)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at javax.swing.TransferHandler$TransferAction.actionPerformed(TransferHandler.java:1727)
	at cccreator.CCCreator.copy(CCCreator.java:596)
	at cccreator.Actions$12.actionPerformed(Actions.java:562)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:356)
	at javax.swing.plaf.basic.BasicMenuItemUI$Actions.actionPerformed(BasicMenuItemUI.java:802)
	at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1663)
	at javax.swing.JComponent.processKeyBinding(JComponent.java:2882)
	at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:699)
	at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:706)
	at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:706)
	at javax.swing.JMenuBar.processKeyBinding(JMenuBar.java:677)
	at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:307)
	at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:293)
	at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2974)
	at javax.swing.JComponent.processKeyBindings(JComponent.java:2966)
	at javax.swing.JComponent.processKeyEvent(JComponent.java:2845)
	at java.awt.Component.processEvent(Component.java:6310)
	at java.awt.Container.processEvent(Container.java:2236)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2294)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)
	at java.awt.Component.dispatchEventImpl(Component.java:4760)
	at java.awt.Container.dispatchEventImpl(Container.java:2294)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.awt.EventQueue$4.run(EventQueue.java:729)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Share this post


Link to post
Share on other sites
34 minutes ago, chipster1059 said:

I'm still a bit confused by the "replace" feature.  What makes it different from flood-filling the tile with floor?

It affects every tile in the map, not just in a specific region.

 

34 minutes ago, chipster1059 said:

I experienced the issue again just now, trying to copy these tiles:

1w8YVz2.png

Here is the resulting command line output:

[...]

Thanks, that's a great amount of info! I already have a suspicion I know what the problem is.

  • Upvote 1

Share this post


Link to post
Share on other sites

CC Creator 0.3 is now available, with some new features plus fixes for a few major bugs. You can get it here.

Notable in this update:

  • Compatibility options can now be configured (compatibility testing is still not available).
  • The Export feature now confirms before overwriting existing files.
  • The Path tool has been modified to deal more intelligently with force floor and railroad crossovers.
  • The wire loop-freeze bug has been fixed, along with the bug that prevented copying a selection with monsters to the clipboard.

See the Changelog.txt file for the complete list of changes.

  • Upvote 1

Share this post


Link to post
Share on other sites

It's been a long time since I had news, so here's an informational update! I've added a control+click feature to insert a terrain without erasing the rest of the cell contents. Also, I'm working on dialogs to edit the properties of individual tiles. Here's a preview:

1dVFivH.png

RXkqM9j.png

pNxqGao.png

I hope to be able to release a program update with these features in the next couple weeks, so stay tuned.

  • Upvote 6

Share this post


Link to post
Share on other sites

This looks really awesome.  The ctrl+insert feature is going to be really useful.  The tile menu could be especially useful for managing railroad tracks, and multidirectional cloners :chipwin:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×