dev diary 1

7-13-99 10:27pm EST
Well, here's the first Reveal Developer Diary entry:

I'm working hard on the parser now. I had done a parser for B1 before I left for vacation, but it was missing crucial things in several areas to make it easier to use and more effective. I'm redoing the Math parser and engine now, so it is much more efficient and faster to read, and it allows much more relaxed rules (I used to force parentheses and other things like that which made the math ugly).

We're also adding a much more extensive debugging system, which Nom is helping me with, and a friend of mine from school, TombFyre, is helping me with the new object parser.

Hopefully we can get the parser done in the next few days.. after that will come the Execution engine, which is gonna have something I call Reveal Assembly, or Revasm. Basically, it's a crude form of Java bytecode, or a really really fast way of reading Reveal instructions inside sequences... It should make the execution engine even faster than Rev104's.

Lots of planning has gone into the development of RevB1. I've done a ton of work trying to find the right way to do everything and learn from the mistakes I made before, and I've gotten a lot of help from Syndrome and Nom and the other guys on irc about how things should be done. Some of the awesome new features, such as layered pages, alpha transparency, file handling not to mention all the changes in the scripting language to allow for dynamic objects, variables, logic, math, etc. all together will really make Reveal do ANYTHING you want. It's all starting to come together and soon you'll be able to see all these things work.

Finally, on another note, I've been playing with my dad's new build of Windows 2000, which is really impressive. I'm going to be doing all coding on it from now on. I've found some really nice new GDI calls that let you do alpha transparency in windows among other things, and I plan to support these as Actions in RevB1. So if you're lucky to have Windows 2000, you'll be in for a treat.

Well, that was the first Reveal Dev Diary. If it was a bit technical for you, then go read syndrome's fumes :)... This IS a developer's diary after all.


For those of you (like me) who aren't coders, I thrown in a few simple translations of some terms or ideas that RaV mentions that you might not be completely familiar with. The explanations aren't guaranteed to be correct of course, but I'll do my best.

A parser is the thing (very technical term there, sorry) which interprets the Reveal scripts that you've written. It goes through them converting the "human friendly" text into the leaner and meaner machine code which Reveal actual refers to when it's running. The parser is really one of the most important aspects of Reveal. It isn't just translating single lines one at a time, but integrating all of the references to objects and variables throughout your scripts into a single "world view" - that "world" being your interface. This "cross-referencing" is necessary because different sequence and object definitions will often refer to other objects and sequences. Also, the referred object may be defined later on in the script, or in a different file, or not yet created, since it's dynamic!

To come to terms with the complexity of this problem, it might help to imagine having 20 (or more) aliens trying to describe their planet and culture to you. The problem is that Flubodub is telling you about their religious traditions, but referring to concepts and artefacts that Mopooto and Fitsinarl are talking about when describing a typical workday and the economics of food production, respectively. Now, imagine that Mopooto's explanation is dependant on Beetomal's discussion of their wildlife but that Beetomal hasn't started talking yet and Mopooto has. Your task as the official Earth interpreter is to not only form a knowledge base of all they've described, but submit it to the bureaucracy within the appropriate paperwork in order for the information to be processed as efficiently as possible.

You can see that it gets pretty complex, especially with beta 1's variables and dynamic objects, but the beauty of the parser (and Reveal, for that matter) is that you (the user) don't have to worry about any of that stuff, you just define your interface in a syntax and structure that's logical and easy to understand for humans, not machines. That's what Reveal's all about.

The debugging system is the part that assists you in getting all the kinks out of your scripts. It lets you know when you've done something wrong in your script that Reveal doesn't like. Currently, Reveal rather vaguely lets you know that there's an error (not with what or where), but nom's determined to change that, adding in some other groovy features in the process, to make error checking and fixing both quick and painless.

Revasm gets back to the lean and mean machine code that the parser helps produce. In case you don't know, Assembly is a low level language that talks directly to the computer. While Revasm isn't actually assembly, it's similar in that works close to the metal, bypassing a lot of extraneous code (read: fluff), in order to get the best performance. To continue the earlier (possibly crappy analogy, it's the technical paperwork that makes no sense to humans, but the "system" can process it easily.

Final Translation: woohoo!

I apologise for my perhaps painful additions. If you'd like me to drop 'em, let me know.


headline | blueprints | fumes | designs
workshop | storeroom | what is it? | architects | rev.web