Page 4 of 38

Posted: Sat Jul 02, 2011 9:36 pm
by Saxxon
Smilymzx wrote:That's nice,

Ever since I rediscovered EZZT, I was going to make a format based off both MZX, ZZT and SZZT using it, But I may use the newer format you suggested!
I don't advise using the new format for anything but playing around. Most people will still be using the original ZZT.

For fun, I did export a world in XML format. :)

Scrolls will actually open. They will also work more accurately to the original game, other Things on the board will not be executed in between scrolls coming up from the same code.

Standard strings are no longer used. All OOP code is kept in its native format and manipulated as such, so loading and saving should not change its contents because of Unicode.

Posted: Wed Jul 06, 2011 7:51 am
by Saxxon
Some of Tim's code appears to be unoptimized. Especially during object access, most of it is to the effect of:

PlotAt(Thing(ActIndex).X, Thing(ActIndex).Y, Thing(ActIndex).UnderID, Thing(ActIndex).UnderColor)

Instead of a more optimized approach which I prefer to use:

MyThing = Thing(ActIndex)
PlotAt(MyThing.X, MyThing.Y, MyThing.UnderID, MyThing.UnderColor)

Which will access the array only once as opposed to four times. However, the way it is originally written can create some very interesting results. Suppose the global ActIndex is changed halfway through a function by another function during execution. Two different and unrelated objects will be manipulated! This can (and does, but rarely) happen in the original code.

When left as it is in the original engine, there would be unforeseen side effects when objects are deleted.

Posted: Tue Jul 12, 2011 2:26 pm
by Saxxon
When the player is energized, the base properties for the player element are actually modified. This means if you have "dead" players (players with no stats) then whenever they are drawn they will have whatever character the player is set to have.

If a player enters a board while energized and the player character is set to 1, all the dead smileys on that board will have char 1. When the player is not energized, dead players will always have a char of 2.

Not really useful, but interesting.


Posted: Wed Jul 13, 2011 4:57 pm
by Saxxon
Going to separate the ZZT engine code into a library called Roton. Lyon will be the user interface. This way, you could reference it in another .NET project that could be written in VB, C#, etc.

The required files for distribution will be increased - to run any future version of Lyon, you will need Roton.dll in the same folder (which will be provided, of course).

Another side effect of this is that Lyon and Roton source will be updated and distributed separately.

Posted: Sat Jul 16, 2011 1:39 am
by Dr. Dos
Quick rename it Rotyn we have a theme here buddy and that theme is the letter Y.

Posted: Sat Jul 16, 2011 6:28 pm
by Saxxon
Dr. Dos wrote:Quick rename it Rotyn we have a theme here buddy and that theme is the letter Y.
Oh no that's right :ohno:

Posted: Wed Jul 20, 2011 10:51 am
by asiekierka
Remember when you wanted stuff from Lyon to appear in the portable Tyger?

Dr_Dos doesn't feel like it.
I do.

Check out the Tyger thread for the first version of my fork.

Posted: Wed Jul 20, 2011 10:37 pm
by Saxxon
I like your idea in the other thread, it will be called Ruffnyan now.

Posted: Thu Jul 21, 2011 6:44 am
by asiekierka
Saxxon wrote:I like your idea in the other thread, it will be called Ruffnyan now.

Posted: Thu Jul 21, 2011 7:29 pm
by Dr. Dos
Sorry to say this project is canceled because I'm banning Saxxon forever!!!

Posted: Thu Jul 21, 2011 11:03 pm
by Saxxon
It was Wednesday and you thought I was serious :(

Posted: Tue Jul 26, 2011 4:23 pm
by Saxxon
I think I'll have the default drum sounds included in the DLL and add the ability to specify your own drum sounds. It'll keep a cleaner directory and allow for some more customization.

Re: Lyon

Posted: Tue Sep 13, 2011 7:16 pm
by Saxxon
Yay the forum works! It was actually kind of discouraging seeing the site go down like that.

Ruffnyan/Roton lives.

Re: Lyon

Posted: Sat Oct 01, 2011 6:43 pm
by Saxxon
In the past week I rewrote everything from the ground up. Much better compatibility this time. Still trying to wrap my head around Mission:Enigma's gate bug, I can't seem to figure it out. In the meantime, I am writing tests for ZZT. Got a bunch of flag tests down. There are 8 failure points so far.

Re: Lyon

Posted: Mon Oct 03, 2011 11:13 pm
by Saxxon
Still haven't solved the M:E bug. It's terrible to track because it is so unpredictable and relies on the order of objects and a bug in ZZT's code that references an incorrect object (sometimes outside of the valid table).

Scrolls roll open and closed now.

Video, audio, scroll, messenger and input are all made modular. The Roton engine contains built-in interfaces for all of these that work well with .NET, and Lyon uses only the built-in ones. However, if you decide you don't want messages or scrolls to be displayed the same way, you can create your own interface when you use the Roton engine. (not like I really anticipate people using it like a library anyway) This means manipulation of the world doesn't have to be tied to a video/audio/input interface anymore.

Centipedes match the game exactly. Some of them were turning around and moving on the same turn, this was fixed.

ZZT and Super ZZT handle object death a little differently. ZZT will keep the under-color if the under-element matches the #BECOME line (so #become fake will be whatever color fake it's on regardless of its own color). However, Super ZZT will use the color of the object itself. The engine will pick which mode to use appropriately.

Saving worlds now consolidates ZZT-OOP code the same way as the original game. The lowest-numbered object will now always hold the code, and everything that binds it will be a higher index. This solves a few rare/obscure bugs resulting from saving.