Older blog entries for dto (starting at number 47)

12 Jan 2001 (updated 12 Jan 2001 at 07:40 UTC) »

I am typing this in ithought, a neat program from voltron.

I finally decided how to name/split up/diddle the functions that are currently spread in engine_commands.c, engine.c and so on. I decided to let myself think a little more "object-wise", and picked up my worn copy of Design Patterns and sat for awhile. In accordance with the Doc/View model,

  • Engine intrinsics go in engine.c
  • Engine message interface definitions (enum, etc) go in commands.h along with other types of messages
  • code for engine DOC responses go in something like engine_doc_imp.c
  • code for engine VIEW responses go in engine_view_imp.c
  • Audio mixing functions go in mixer.c

Later on there will be multiple VIEW's for patterns; most likely, one for tracker-style and one for piano-roll-style. I could place those in pattern-view-tracker-imp.c (um, maybe I want to shorten that??)

:-) wish me luck

don't bother looking for support if you have a big problem, all that's left is people who think they're the first to tell you to install debian

Got some Octal hacking done... made some nice simplifications. I realized that the engine_commands thing was getting too complex. I had a group of functions all with the same calling convention, and an array of pointers to them whose order matched an enumeration, and a dispatch function to call the appropriate handler for a message that basically packed the arguments and one of the enum values into a struct. Then I realized how complex this was going to get when both the core thread, AND multiple objects (different views) in the UI were going to react differently to the same messages.

So now the whole chebang is replaced with each "class" having one function to respond to all the messages (they all had the same prototype anyway.) A switch statement makes the right behavior happen according to which message is being recieved. It's not a traditionally accepted OO technique, that's for sure---switch statements are seen as a sign of improper OO design by some people. But I can't express how much simpler this is when written as a switch statement. All the message behaviors for a "class" are contained within a single function. The code that can be executed by user requests is clearly separated from internal helper functions that shouldn't be accessible to outsiders. And the function prototype is not repeated 13 times anymore, just once for the whole interface function.

I have never found inheritance interesting or useful other than to implement interfaces. This is especially convenient now that I'm back to plain C, since C is good at interfaces and little function packages (but not so good at inheritance.) Decoupling inheritance and polymorphism seems like a win. I guess this is what people mean when they say "inheritance breaks encapsulation." But that doesn't mean it's all bunk.

Last night at 4 AM I installed RH7, wiping out my root partition in the process. I kept all my /home files, as they were on their own section. Now I have a three-partition setup, for /, /usr/local, and /home.

What a mess, though. Here's what I have to do to get back to normal:

  • install kernel 2.4
  • install XF86 4.0.2
  • install USB Graphire tablet drivers
  • Install Gimp 1.2
  • possibly install Eazel even though it requires 2^73 other packages
  • install Blackbox
  • install Helix-Gnome but then undo most of the things it does (auto X startup etc) and NOT run sawfish
  • set up soundcard
  • set up GPM for Graphire
  • set up my usb joystick
  • set up Kerberos for use with my GNU account
  • see if I can get some 3-d support going

This time I need to do things right.... making proper backups of config files, and making notes on installation processes so that I can remember how I did things. I know I'll need to re-learn how to install the Graphire device, and tweak the settings.

7 Jan 2001 (updated 7 Jan 2001 at 04:36 UTC) »
Doesn't anything have a decent ending?

At the end of the century we've watched the "Big Three" long-running sci-fi and fantasy institutions collapse and run out of steam:

  • Ultima
  • Star Wars (yes it is dead)
  • Star Trek (this one too)

Star Trek has the distinction of just gradually fading out, whereas the other two had spectacular failures... worthy of ridicule for generations to come. (I realize Star Wars isn't officially over yet, but only Spielberg and a real screenwriter could possibly save this sinking ship.)

It's pretty disappointing; I don't get the feeling that Farscape and LEXX are going to provide the same kind of sustenance. Oh well. Maybe real tile-based games will be in vogue again, or perhaps interactive fiction will come back in a big way.

Yeah, sure.

Oh, and yakk, I kept this short just for you :-).

6 Jan 2001 (updated 6 Jan 2001 at 07:48 UTC) »
My Review of Ultima: Ascension.

I was excited. It was on sale. It comes with cool tarot cards for each of the virtues. The box screenshots look nice. It promised to resolve the plot issues building up for years. I'd read some bad reviews but I had still enjoyed Pagan despite its flaws.


It sucked beyond time, beyond space, beyond all possible belief. I've been playing the series since The False Prophet, and after the dizzying heights of Sepent Isle I've watched this series go downhill. Pagan was less than stellar, but Ascension takes every Origin-ism, hits bottom, and breaks through to a new bottom we knew nothing about. I couldn't continue playing, I was so unhappy with it.

This game has a very deep "Phantom Menace" feel to it: high expectations, long gestation period, redesigns/rewrites up until the last minute, bad acting, nonsensical plot revisions (midichlorians), and most sadly, high visual quality without real aesthetic beauty and without any real depth beyond the computer graphics.

I will mostly skip the games countless technical problems, since many other reviews document them better than I can. I noticed only that the game was dog slow and that the Avatar has an unfortunate tendency to lose important items without warning.

Lack of world interaction. We went from the "if you can pick it up, you can use it" style of gameplay to a beautiful but soulless 3-d space where only the bare essential functionality has been programmed in. You can open doors and pull the levers that get you to the quest items but that's about it. Pagan had only minimal world interaction outside of its overcomplicated multiple magic systems, but at least you could pick up and rearrange everything. Ultima 9 goes so far as to prevent you from picking up many objects, as the game keeps track of just which objects are useless screen art and which are important. It's a helpful feature given the game's size (and the problematic inventory interface) but it also serves as a reminder that most of what you see onscreen is mere window-dressing.

What went wrong? The key to Ultima was not just the story, but the realistic world. This is not in graphical terms---the realism is in the behavior of objects and things like day and night and weather. Reading all the interviews with Richard Garriott in the out-of-print "Official Book of Ultima", which contains a lengthy in-depth study of the ideas and technology and people behind The False Prophet gives you the impression that having an object be "useless screen art", as in U8 and U9, is anathema to Ultima. One example he gave was of a pole being turned into a ladder by the player, perhaps as an alternative solution to a climbing puzzle.

Garriott contrasted a Sierra-type game, where the pole was most likely just pixels, to Ultima 6 where it would be a real entity with weight and various other properties. That having a flexible game engine allows the player to solve things his own way and carve a unique path through the world is explicitly acknowledged all over this book, but this insight seems to have been lost.

This may not be Origin's fault. I think it's a general pitfall with 3-d games: even the roleplaying ones tend to have very simple maps with only quest locations being interactive, and not very many objects to find. There are good exceptions, like System Shock 1/2 (many items) and Ultima Underworld but Ascension does not make it into this group.

Like every other Origin game I am aware of, the voice acting is ghastly except for the main villain (Guardian, Shodan, that Kilrathi) and possibly the main character. The Guardian is still the same actor, although after The Black Gate they keep adding more and more computerized distortion to his voice, pitching it down (and making it cliche in the process.) I have no idea why; Bill Johnson's great menacing baritone did not need it.

I think the Avatar is the guy who played the overdramatic Stranger in "Nocturne", but since he never says anything of interest you can shut him off. They even have a special button for shutting off just the Avatar. I wonder how the actor feels about this.

An even larger problem is that Ultima-style adventuring does not mix well with full-voice. In ultima games you need to explore many towns and talk to large numbers of people, everyone with their own back story and something to contribute. You can read much faster than these actors talk. They have two choices making a game like this: simply let everything take forever and have players shut off the voices, or have less dialogue and fewer characters. Origin chose the second, and it ends up feeling like Final Fantasy VII (and that's NOT good.)

Lack of Originality.

  • The Black Gate: something is wrong with the Ether that disables magic; the people are turning away from the virtues (for the Fellowship); seems to be connected to a sphere, cube, and tetrahedron made from Blackrock appearing in the dungeons. One or more Bitannian cities/landmarks has been destroyed.
  • Labyrinth of Worlds: Something is wrong with Castle British that seems to be connected with the appearance of large geometric shapes made from Blackrock, once again down in the dungeons.
  • Serpent Isle: Something is wrong with the Ether that disables magic spells.

  • Ascension: something is wrong with the Ether that disables magic; the people have turned away from the virtues (for their opposites); this seems to be connected to enormous geometric blackrock shapes that have their roots in---guess where!---the dungeons. One or more Britannian cities/landmarks have been destroyed.

It's the same with the puzzles. Pull levers, manuever Lara Croft--- um, I mean "the Avatar", onto pressure plates to open the next part of the dungeon, etc etc.

Plot Problems. I hate to sound like a Trekkie, but there are deep consistency issues with Ascension, particularly in its relationship with Pagan. This is actually one of the most disappointing things about the game: it simply chucks out a great deal of what was being set up since U7TBG, with little explanation.

U7 ends with the Avatar unable to return home and the Guardian still taunting him; SI then begins with the Avatar's team pursuing Batlin. SI ends with the Guardian snatching up the Avatar in the Void; Pagan then begins with the Guardians gargantuan red hand depositing Avatar in the ocean. Pagan's ending movie was ambiguous---the Avatar, having been transformed into a demigod, solemnly walks through white towers, snow, and into a desolate Guardian-world with a giant face-shaped mountain. My point is that the cliffhanger from one game was always somehow resolved in the next game's opener.

  • Ascension doesn't do this. There is no movie, and you begin at home on Earth! No explanation on how you got there or why it was possible (events in U7 seemed to have precluded it.) There is no explanation at all of what the mysterious ending movie in Pagan showed, or why you don't begin the game there instead of on Earth. They don't even just say "oh that film was a dream, you really went home."
  • Does it make any sense for Iolo to be working for Blackthorn? Could they have at least explained it?
  • What about all the hints of apocalypse in Britannia that you get in SI and Pagan? The dream sequence where you see Castle British in flames and L.B. wondering why you don't return? The castle seems fine in U9, except that now it's in a different place and there are only four or five rooms. Everything since you left Britannia gives the impression that the Guardian entered it and has dominated it. But when you start U9 we merely have a more intense version of the circumstances that begin U7: blackrock objects causing a subversion of the Virtues. I mean, didn't the Guardian have 200 years in between this visit and your last to mess everything up? That is at least enough time to come up with something new to unleash upon Britannia, not just more Blackrock objects that mess with people's minds.
  • The Avatar becomes a demigod at the end of Pagan. In U9 you can be defeated by a rat if you don't have the Avatar positioned right to strike it. This probably explains why they start the Avatar on Earth, since he would lose his powers there. In other words, they had to avoid starting the Avatar with any power in U9, and rather than really fixing it they just zap him to earth even though it contradicts the story.
  • Why does Britannia now have parts of Pagan's magic system? There weren't any pentagrams or necromancy (see the magic book that comes with the game) before!
  • Where does this tapestry idea come from? I could be wrong, but I don't remember ever seeing this in the Museum of Britannia in any previous game.
  • Characters don't speak in the normal Britannian dialect anymore. "Thee, thy" etc. Instead most of them adopt cartoonish voices.

There are a lot of other issues, even in the fully patched version I have. The inventory system is worthless, and makes you lose items. It's not really based on weight like in U7, there's a certain number of "slots" and when you exhaust them you can't pick up more stuff. (I heard at one relatively late point that there was no inventory, so maybe this was a tacked-on afterthought?)

There's no paper doll either so equipping armor can be problematic. This is made even worse by the erratic behavior of the mouse cursor and the slowness of the whole engine. Combat sucks, anything larger than a rat you basically have to run from. Killing one of the thief/brigand characters takes forever, and you can't realistically fight two at once. You can usually avoid them because the AI is stupid.

Finding things according to directions can be difficult---they usually are not very specific, and the dialogue often differs subtly from the real map.

In short, the finest CRPG/adventure series in history ends with a colossal dud. Every Ultima pushed the boundaries of game engines to do new and unique things, and provide cool activities for the player. All but this one. Since Garriott used to see the engine as driving the development of the play mechanics and story, it seems that the driving philosophy behind Ultima died quite a while before the series did.

I was pleased to see that the GTKfb project is moving forward. I've been keeping a loose eye on this as I am interested in eventually running Octal on a less crashy platform. Also, a possibly faster platform!

Tasks for this week:

  • Work on IglooMag engine V3
  • Work on Octal, get first 'mini MVC' editor component running
  • Probably watch Patlabor I again :-)
  • Stick my redhat stickers all over everything while waiting for RH7 to install
  • Finish grad school application and decide what I want to study there
Gecko Rules -- Netscape Sucks.. I have heard a fun quote in jest about Microsoft's Paper Clip Assistant. "This is a perfect example of form following function---to Hell."

I have been using Mozilla since M17 on my own machine. I have also used Netscape 6, the commercial incarnation, on the Windows boxes on the office network since they released it.

The HTML rendering and CSS compliance are great. I recently used the Gecko rendering engine to test-drive all the pages for a major website I developed over the past few months. Concurrent testing with other browsers showed that even very late versions of Internet Explorer still get a number of CSS ideas wrong, whereas Netscape Gecko rendered them all perfectly. Notable examples include fixed CSS positioning, mixups between padding/margin settings, and proper support for dashed/dotted line styles. (The last one did recently show up in IE.) There are a few minor bugs related to Javascript, but all in all I would have to say that from a web designer's perspective, Netscape Gecko is a winner.

Netscape 4.x was slow, bloated, and prone to crashing. On top of that, its compliance (especially with respect to things like CSS) was very poor. So has Netscape finally returned with Gecko to triumph over Internet Explorer with real standards compliance and power? I'm not so sure about this yet. Because for the vast majority of people, exposure to this superior Web rendering engine will have to come through Netscape Six.

Unlike its predecessor, NS6 renders sites beautifully and correctly, and allows you to take advantage of new CSS tricks. It also has a pretty and highly configurable interface. But sadly familiar are the incredible slowness, size, and crashiness with which Netscape's new browser does its duty.

I run a 450MHZ AMD processor with 192 megabytes of RAM. Should it take upwards of twenty seconds to open the mail screen? Should it take five or ten to switch mail folders? Must there really be such a long delay between a right-click and the appearance of the context menu? The general high-latency feel of the XUL user interface gives the impression of running a remote X application. I don't know if I can blame them for this---when working in small dialogs, or doing one thing at a time, the performance problem isn't noticeable. But XUL seems to scale quite badly: a large Bookmarks menu or a hefty mail folder bring the system to a crawl.

There are more annoyances than this. I would presume this is a multithreaded program, but if XUL slows down in one Mozilla window they all lock up, and don't redraw themselves or respond until the other window finishes its work. As is usual with Netscape products, it always wants to touch some secret website while starting up (this becomes obvious when your network connection is down.)

The "Sidebar" is cute at first, but it becomes very intrusive. It pops up automatically when you get search results on most search engines. Fine, the Preferences menu has a checkbox that lets you decide whether or not this happens. But I am feeling a little disenfranchised, because it seems not to matter whether you punch that little checkbox---the Sidebar comes up anyway.

This is unfortunate, because the sidebar seems to do nothing but show a briefer version of the search results you are already looking at in the right frame. There are a number of other (also uninteresting) options in the sidebar, but I can't help but be impressed by the Search portion's complete redundancy. I guess the idea is to get you to use this to search, rather than the search engine pages made for that purpose.

This would be less annoying if the sidebar's controls were not so problematic. Sometimes it suffices to click the little triangle in the middle of the divider, and it goes away. But sometimes clicking there will "attach" the sidebar to your mouse. This happens in a non-obvious way, so that you might happily move your mouse to some menu or button only to find that the sidebar is coming along with you (at XUL's signature 0.3 frames per second.)

I have quickly begun using alternative Gecko front-ends like Skipstone and Galeon for day-to-day tasks. With a lightweight frontend, Gecko browsing is a pleasure. But it's unlikely that many Windows users will benefit from these frontends.

I think it's anyone's guess whether or not this new browser will be able to beat IE. It wins hands down on standards compliance, but on usability it loses quite easily to the streamlined Internet Explorer. Now it's a battle of CPU's and public relations (and, I hope, bugfixes. One bugfix would be providing an alternative interface that really works.)

I've recommended Netscape 6 to a number of Windows users recently, who like its themes and good site rendering but quickly tell me "hey -- this thing is slow." And it crashes a lot.

11 Dec 2000 (updated 11 Dec 2000 at 04:22 UTC) »
Now playing: Gescom "viral rival"

I watched Ghost in the Shell today---I bought it on DVD and bugged my brother until he agreed to sit and view it. We paid extra for the version with language options, so I was able to watch it in Japanese with English subtitles. It was worth the money: no more bad mixing, rushed/altered dialogue, or corny voices. The Japanese allows you to hear the original performers' voices and inflections without the awkwardness of fitting english dialogue on top of animation timed for Japanese speech.

It's also now more apparent how butchered the dubbed translation was. Scene's like Bateau and Motoko's post-dive conversation shine with subtitling. The dubbing made it very difficult to tell that Motoko is actually quoting the Bible, whereas the subtitling offers the poetic version of the text that will be familiar to English-language listeners. The final scene suffers from the same problem.

Outside of literary references, there are a lot more scenes which, now freed from awkward translations, just make more sense. The argument between the Puppet Master and his apparent captors, Motoko's self doubt, or really any other of the film's scenes with philosophical discussion or exposition.

I really hope I can get a subtitled version of Princess Mononoke, no matter how cool Claire Danes is.

I'm having cinnamon toast at 1:15 AM and apparently doing a Boards of Canada marathon. Stressing out on how to deal with the fact that the website doesn't work on Netscape 4.7 or earlier.... only NS6 does the trick.

It's almost finals time! Eeh. But once this is over, only one more semester of undergrad....... taking the GRE in January and April, and then who knows?

Whoa... it's been more than a month since my last entry. In that time I've built the soon-to-go-public Igloo Magazine (a division of S://KIMO), prepared to resume work on Octal, and gone into a full-bore "senior slump."

Ariane left for Canada yesterday, and she won't be back for several weeks. This is pretty depressing, as she is my lifelong friend and we hang out all the time. However Michal and I have been playing a lot of Unreal Tournament lately, so I think I will have something to occupy my time.

I picked up a great Wacom Graphire graphics tablet for my birthday...... good Linux/GIMP support, very smooth.

38 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!