Lyon

Discuss how totally awesome Bang! is here.

Moderator: Terryn

User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Post 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.

User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Post 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.

User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Post 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.

Image

User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Post 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.

User avatar
Dr. Dos
OH YES! USE VINE WHIP! <3
Posts: 1763
Joined: Tue Sep 11, 2001 9:11 am
Location: Washington

Post by Dr. Dos »

Quick rename it Rotyn we have a theme here buddy and that theme is the letter Y.

User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Post 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:

User avatar
asiekierka
YAHOO: ALL YOUR GEOCITIES ARE BELONG TO US
Posts: 223
Joined: Sat Sep 10, 2005 10:06 am

Post 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.

User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Post by Saxxon »

I like your idea in the other thread, it will be called Ruffnyan now.

User avatar
asiekierka
YAHOO: ALL YOUR GEOCITIES ARE BELONG TO US
Posts: 223
Joined: Sat Sep 10, 2005 10:06 am

Post by asiekierka »

Saxxon wrote:I like your idea in the other thread, it will be called Ruffnyan now.


NO.

User avatar
Dr. Dos
OH YES! USE VINE WHIP! <3
Posts: 1763
Joined: Tue Sep 11, 2001 9:11 am
Location: Washington

Post by Dr. Dos »

Sorry to say this project is canceled because I'm banning Saxxon forever!!!

User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Post by Saxxon »

It was Wednesday and you thought I was serious :(

User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Post 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.

User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

Yay the forum works! It was actually kind of discouraging seeing the site go down like that.

Ruffnyan/Roton lives.

User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post 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.

http://www.mediafire.com/?hfwdrm3evc92pal

User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post 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.

Post Reply