In response to Smoko
Smoko wrote:
PirateHead wrote:
The day I "drop it" will be the day somebody re-implements BYOND in Free Software.

This makes me laugh because you're implying BYOND isn't free.

BYOND is not Free Software, but it should be.
In response to PirateHead
According to the GNU it isn't free software, but according to the price tag it is. Take your elitist open source attitude elsewhere. We don't care for it here.
In response to Smoko
Smoko wrote:
According to the GNU it isn't free software, but according to the price tag it is. Take your elitist open source attitude elsewhere. We don't care for it here.

In response to Guy Hendricks
Guy Hendricks wrote:
There already is a decompiler. It works something like this, I hear:

> mob
> jeffroe
> key = "jeffroe_seven"
> verb
> attack()
> //insert verb here
>

Comes out as:

> mo
> jer
> ey "jeffe_ve
> verb
> tc)
> /e vbe
>


That's an... interesting view of it. No, actually, it would come out something like this:
/mob/jeffroe
key = "jeffroe_seven"
/mob/jeffroe/verb/attack()
// body of verb here

Which is functionally equivalent. Though note that none of the original comments would be preserved.

That said, having access to the BYOND source would have made writing a decompile a lot easier. Which is probably a reasonably good argument against it.
In response to Hobnob
Wow really? I had been under the same assumption it garbles code and work has to be done to make it usable.
In response to Hobnob
Are the names only preserved in DEBUG mode, or have you figured out a way to get the stored values associated with it in normal mode as well?
In response to Popisfizzy
Popisfizzy wrote:
Are the names only preserved in DEBUG mode, or have you figured out a way to get the stored values associated with it in normal mode as well?

Names are only preserved in DEBUG mode. The code that a decompiler such as the one Hobnob suggests would produce could be further processed in order to organize it and make it even more readable, however.

Decompiling BYOND programs is definitely possible already, especially ones released in DEBUG mode.
In response to PirateHead
PirateHead wrote:
Names are only preserved in DEBUG mode.

Nope. Bandock has been able to extract strings as well as variable, proc, verb, and typepath names from any DMB file. As Lummox stated when I asked about it, it's because of text2path() and call()() that they're stored.
In response to Popisfizzy
All proc, atom, variable, etc. names are preserved in both debug and non-debug mode compiled DMBs. The only extra thing that debug mode gets you is the name of the original .dm file a verb/proc was defined in, and (less usefully) the line number of each original statement.

The big limitation of decompiling is that variable types aren't preserved in procedure arguments and var decelerations. In many cases you can guess that <code>var/H = M</code> should be <code>var/mob/human/H = M</code>, but not always.
In response to Hobnob
Hobnob wrote:
All proc, atom, variable, etc. names are preserved in both debug and non-debug mode compiled DMBs.

Yes, I was aware of this. I wasn't sure if more information was provided or not, though.
In response to Lummox JR
Lummox JR wrote:
Guy Hendricks wrote:
What kind of game were you working on. I'd be interested in trying it out. By the way, what was your favorite IF? Mine was Infocom's Moonmist.

I'm sure I have my old source around for the game somewhere, but it never got anywhere near finished. Instead, a few years later I took the plot of that and wrote it up as a book, done in the same tongue-in-cheek style. At some point I should really polish up the rough spots and stamp it finished. The story was set in a sort of kinda-medieval time but loaded with (intentional) anachronisms; it was about a hero of a great war, now traveling anonymously and completing quests, who gathers a party of six (including himself) and quests to overthrow a rogue Duke making a grab for power.

I love anachronisms! I have an idea for XYZZY: An exploding briefcase. (I'm related to Erwin Rommel, who tried to put Hitler on trial, but is mis-credited with trying to blow him up with a suitcase. Eventually, the Rommel family ran with it. XD)

Sadly I've only played a handful of text adventures in my time--I can't bring myself to call them "interactive fiction" which to my mind robs them of a certain mystique--but the ones I've played include Zork I, Planetfall, Stationfall, Suspect, The Hitchhiker's Guide to the Galaxy, and of course Ditch Day Drifter and Deep Space Drifter. There were probably others, but at any rate those are the ones I played through and completed. I've been exposed to but never finished a number of others including Colossal Cave and Zork II. Picking a favorite of all those is fairly difficult. Zork was my first text adventure. Suspect was very unique in that you had to follow everyone around and work out their movements throughout the evening. Hitchhiker's Guide was my first introduction to that story at all, and I found it to be an incredibly clever game. Ditch Day Drifter was incredibly well-conceived, and I was enthralled by Deep Space Drifter, especially the early puzzles involving swapping around those different program cubes.

I also loved Hitchhiker's Guide. I had to use save states to get past the exploding keyboard, though. Moonmist was an mystery, like Suspect, Witness, and Deadline. Speaking of Deadline, I remember doing something like this: (The ">" symbol isn't Lummox JR's quote in this case, it's user input. I said that for the people who never played these kinds of games)

Garden [IIRC]
[I don't remember what it's description was.]
There is the corpse of [since I have terrible memory, I'll call her Hillary Clinton XD] here.
Hillary Clinton is here.
ASK CLINTO [only need 6 letters] ABOUT CORPSE
"I don't know anything about that."

On the same note, I think this happened in Suspect:

ASK WIDOWE[R] ABOUT CORPSE [his [i]wife's[/i] corpse]
He doesn't seem interested in the corpse.

Can't remember which game:
PUT RED FLOPPY ON BLUE FLOPPY
Done.
LOOK
[Blah blah]
There is a blue floppy here. On top of the blue floppy is a red floppy.
PUT BLUE FLOPPY ON RED FLOPPY
Done.
LOOK
[Blah blah]
[The floppies disappeared because neither of them are in the room.]

And this one wasn't from Infocom:
[What you need to do is give your dad something, Coke, I think, and he gives you keys or something]
[Wherever]
"Ain't you grounded?"
TAKE COKE
Taken.
[Your score has increased by 1 point!]

And a funny example of broad definitions:
PET PORCUPINE
You pet the dead porcupine. It seems a little happier.

Incidentally the author of TADS wrote an incredibly great reference for it, and included some great tips on writing adventure games in general. I'd bet that's probably online free by now.

Yeah, I use that manual a lot.

EDIT: By the way, I've decided that, since my computer is working one-tenth as well as it did a few weeks ago, I'll try that again. I can't really work on my fast paced 2D HL2/Portal hybrid on what has only enough power to run Word. :P Naturally, I've been playing IF a lot, and love making IF. So I'll try my TADS code maker again.

BYOND was originally designed for MUDs, so it's actually ideal for text adventures. The only problem of course is you'd have to work out how to implement undo states if you wanted that feature, and you'd probably want to build a good custom parser.

Undo seems easy enough (then again, programming GTA:VC seems easy enough until you try XD): Before the execution of a turn, save to file "[uppertext(ckey(world.hub))]_save[turn].sav". If turn is larger than however many turns, delete the lowest numbered turn. Undo would load "[uppertext(ckey(world.hub))]_save[turn-1].sav"

The custom parser seems do-able, but not exactly easy. I could, I suppose, use a ADVENT/Adventure/Colossal Cave style parser. Take only the first 2 words, then take only the first 3 letters of those words.

That reminds me:
SCREW BEAR [You were supposed to type "SCREAM BEAR".]
The bear jumps back, startled. [So did the guys playing...]

Lummox JR
In response to Tom
Crashed was definitely working on a python-based IDE, and I assume he's still working on it - I wrote a simplistic DM lexer in C++ he could use with Scintilla for syntax highlighting and other such niceties.
In response to PirateHead
Again, there are *very* valid (and maybe even personal reasons) why Tom does not go open source now, including (but not limited to) security, management of time/resources, and embarrassingly twisted code (although I think that's been improved upon in the last months). And as I recently learned from Alathon, Mozilla did a complete re-write before going open source because the earlier code was a mess. Maybe BYOND is at the same point? Who knows.

I think it would be better for folks not to become trolls of the open source 'movement'. It has it's good points and bad points.

Tom may come around to embracing open source in the future, but not now. And we should respect his decision by not beating him over the head every chance you get with the 'Bat of OSS'. It would only make you more annoying! :)
In response to Hobnob
Hobnob wrote:
Guy Hendricks wrote:
There already is a decompiler. It works something like this, I hear:

> > mob
> > jeffroe
> > key = "jeffroe_seven"
> > verb
> > attack()
> > //insert verb here
> >

Comes out as:

> > mo
> > jer
> > ey "jeffe_ve
> > verb
> > tc)
> > /e vbe
> >

That's an... interesting view of it. No, actually, it would come out something like this:
> /mob/jeffroe
> key = "jeffroe_seven"
> /mob/jeffroe/verb/attack()
> // body of verb here
>



Doesnt 'Have to'
http://www.freefilehosting.net/files/3f6ml
garbled.txt
Page: 1 2 3