I feel like

Woah! DreamZZT and FrotzDC are mentioned in the O’Reilly book Gaming Hacks: 100 Industrial Strength Tips & Tools by Simon Carless. Apparently it was published in 2004, but I had no idea it existed until a random google search turned up the index from the book. Anyone know where I can track down a copy? I’m curious to see what it says, but I’m not about to pay $30 for it 😛

Over the (yellow) border

I started working on an editor in DreamZZT:

You can even enter the editor during the game by typing ‘edit’ in the debug console, quitting the editor returns you back to the game:

Would you like fries with that?

I completly rewrote the popup text window API today to be much more C++ey, and with it come a few new widgets that can be placed inside: radio buttons and checkboxes.

The title area at the top now shows tooltips, too, like the original ZZT:

The code to construct the above window is:

TUIWindow w("Options");
w.addWidget(new TUILabel("General"));
w.addWidget(new TUIWidget());
TUIRadioGroup *sfx = new TUIRadioGroup("Sound:         ");
sfx->add("On");
sfx->add("Off");
w.addWidget(sfx);
TUIRadioGroup *web = new TUIRadioGroup("Online scores: ");
web->add("On");
web->add("Off");
w.addWidget(web);
w.addWidget(new TUIWidget());	
w.addWidget(new TUILabel("Special Effects"));
w.addWidget(new TUIWidget());
w.addWidget(new TUICheckBox("Pan between boards"));
w.addWidget(new TUICheckBox("Torch gradient",true));
w.addWidget(new TUICheckBox("Animated water"));
w.addWidget(new TUIWidget());	
w.addWidget(new TUIHyperLink("save","Save settings"));
w.addWidget(new TUIHyperLink("cancel","Cancel"));

Much nicer. Of course, you can still construct a popup window the ZZT way:

w.buildFromString("$woah\r
this kind of thing gets hard to maintain\r
when it's all stuffed in a giant string\r
crazy ZZTers.\r
\r
!agree;I agree\r");

Though you can’t add radio buttons or checkboxes through that. After I finish up the text-editing widget, I’ll start working on adding a very basic level editor to DreamZZT.

You have failed your mission.

Gregory Janson is way too good with ZZT-OOP. I spent the day trying to get Mission: Enigma running on DreamZZT, and it’s uncovered a LOT of bugs and interesting ZZT quirks. The hardest part, though, has been trying to solve the puzzles. Mission: Enigma is pretty challenging, and very well done!

In the process of picking apart Mission: Enigma, I’ve added two more debug commands:

watch – Lets you select an object to watch the ZZT-OOP of. Now the debug console will only display the ZZT-OOP of objects that you’re currenctly watching, instead of every object on the board. Makes it much easier to follow what’s going on!

inspect – Lets you view an object’s entire ZZT-OOP program in a text window.

flags – displays a list of the currently set flags.

Also, since Mission: Enigma’s title screen is so amuzing, I finally got around to letting you actually watch the title screen and press enter to start the game when you’re ready. You can also actually return the main menu again by pressing ESC.

Finally, after putting them off for six years, I had an epiphany last week on how to implement Centipedes! Got them in this weekend and they seem to work pretty well. The only objects still not implemented in DreamZZT are slime, ricochets, and ninja stars.

Use the source, luke!

DreamZZT’s source code is now available under the terms of the GNU General Public License version 2. The source can be browsed or checked out of my public Subversion repository, and is also available from the DreamZZT homepage. In order to build DreamZZT, you’ll first need to build tiki.

To celebrate, I’ve put together the first binary release of DreamZZT in close to 3 years: 3.0.4-beta1. Downloads are available for Windows, Mac OS X (10.4 universal), and Linux. Due to technical issues, builds for the Dreamcast are not available at this time. So head on over to the DreamZZT homepage and grab a copy!

Known issues with this beta:

  • There is no menu when you push ESC, just press S to save or close the window to quit.
  • There is no file browser, so saved games will always be ‘saved.sav’ and New Game will always load ‘town.zzt’
  • The game doesn’t pause when debug command ‘warp’ is executed, allowing debug messages to overwrite the board selection dialog box.

Please report any other bugs either in the comments here or over at the forums.

#send sam:update_journal

You can now execute ZZT-OOP statements directly from the debug console. I put together a quick little demo video of the debug console that you can grab here (8 MB, QuickTime 7.1).

I also made a lot of progress in moving the source from C to C++. I’ve decided DreamZZT 3.0 will be open source (GNU General Public License, version 2), so I guess I have to make it presentable 😛 All of the objects in the game world are now represented by their own C++ classes, which is a pretty good start. I still need to create classes for the boards and the overall world.

As for what still needs to be done before I start rolling out public betas again, here’s a quick to-do list off the top of my head:

* Sharks
* Slime
* Stars
* Slap the GPL header on top of all the source files
* Grab the drum patterns from kevedit and add them to my music player (yay, GPL!)
* Finish rewriting the guts in C++
* BUGS BUGS BUGS!

?zap

For those of you that need to cheat while playing ZZT, DreamZZT now has an interactive console that can be brought up by pressing the ` key (inspired by Kev‘s mzxdbg).

Lions, Tigers, and Bears! Oh my!

I made a lot of progress on DreamZZT this weekend. I finally got around to writing the AI for bears and ruffians, which just leaves sharks, slime, and centipedes left to do. The centipedes are going to be the most complicated to write, so I’m going to continue to ignore them for now. If you want to play Centepede, go to an arcade 😛

I also got sound working! Just the melodies for now, no drums, but it’s a lot more interesting with noises 🙂 I tried to capture another movie with Snapz Pro X, but the sound gets pretty choppy while recording, so you’ll all just have to wait ’til it’s released.

You are blocked by an invisible wall.

I put together a quick little video that demos some of the visual improvements DreamZZT has over the original ZZT. This video shows off the animated water effect, as well as the improved torch effect. You can grab the Quicktime video here (780KB).

DreamZZT is finally back to the point where The Town of ZZT should be completeable, though the lack of bears, ruffians, and centepedes makes it a little less challenging. I hope to at least get bears and ruffians working soon, but I think I’ll hold off on centepedes for a while longer (they’re probably going to be the hardest to write, because of the way they move).

I’m hoping to have a playable demo out in a few weeks.