Sean Middleditch » 2005 » November
Finally got my SATA drive back from Maxtor after it broke. Sadly, the mounting brackets that my case requires for disks are all missing except for the one already in use. After much looking, I think I just need to buy a new case. Whcih isn’t too bad since I wanted a new one anyhow. Of course, I had planned on buying a Shuttle XPC case/mobo and with that a new CPU and memory, all of which is just right out of the question given the cost, so I will have to find a bearable ATX case.
My Maxtor drive in my work station at work died on Monday. Have it back already and most of the system working again (running Ubuntu instead of Fedora, as a bonus) except for the install of Windows in VMWare, which I had just gotten done last week and which took many many hours.
I hate hardware. Software only ever fails because it was told to do something wrong. Hardware fails just because the universe hates me. ;-)
So, despite being in RC stage for over two months and being built regularly on my server, AweMUD 0.23 is borked. Namely, it’s missing files, as the Makefile.am file isn’t including them. I’m thinking I migtht’ve copied an older Makefile.am into the final release somehow, because otherwise this just doesn’t make sense - it would have been caught.
Rollin gup 0.23b now. :-/
More work is now done on the AweMUD and Scriptix mergers.
I’ve unified the string representation used in both systems for starts, which wasn’t too bad. I also unified Scriptix::Value with AweMUD’s ScriptValue wrapper class, which was a *huge* pain. Mainly due to C++ type conversion rules kicking me in the ass over and over.
The ScriptValue wrapper had all sorts of automatic converters to turn various native and AweMUD-specific types into Scriptix values. The Scriptix::Value class did not, relying on manual creation of a IValue* object to assign to the value. Making one class that did automatic conversion and making code not intended for automatic conversion was… painful.
The biggest offender was the bool converter. Every native type converts to bool, and when some of the old code (modified in batch with sed and ViM scripts) tried to assigned slightly incorrect pointers or other data to the new Value class it would often just convert it as a bool instead of giving me a type mismatch error. After finally finding the problem after many hours of [drunken] debugging, I solved things by just removing the bool converter. There is no bool type in Scriptix yet, and C++ bool values were just converted to ints anyway. Once that was out of the way, I then had to track down some issues with the String type conversion that manifested in the bowels of Scriptix where I was doing a few funky optimization hacks.
The final problem, which sucked up a huge amount of time, was this little tidbit of code:
class Value {
…
Value (long value);
Value (int value) { Value((long)value); }
};
The problem was of course the second constructor. What I had intended to do was make it so that ints would be converted to Scriptix numbers just like longs without C++ giving me weird type mismatch errors (because apparantly an ‘int’ is just as likely to really be a ‘void*’ as it is to be a ‘long’… yeah, I know _why_ C++ does this, but it’s still irritating). What the code actually does is quite different, though. The Value constructor contructs another value, throws away the result, and returns leaving the pointer member unassigned and thus full of garbage. Once I finally realized what the code was doing and beating my head into a wall for not only writing that crap but looking at it 100 times and not seeing the problem, I fixed it up and everything was good to go.
The following items still need to be done for the merger:
* Get rid of ugly varargs/C-like error handling code in Scriptix and use the AweMUD logging facilities
* Move the AweMUD ScriptFunction* wrappers into Scriptix’s tree and integrate nicely
* Merge Scriptix::System with the AweMUD’s derived version and the IManager-based controller
* De-namespace all of Scriptix, except for the compiler, since Scriptix is no longer a reusable library
* Merge Scriptix::Struct and Scriptable, pick a naming convention for attributes/members
Fairly sure I just failed my Calc3 exam. Couldn’t finish two of the problems. There were only six of them. ‘Tis the suck.
On the upside, I have several brand new shiny bottles of alcohol, which are doing wonders for my mood, if not my motor skills.
I’ve also got a whole new set of hardware for my server, which is in need of updating (the 700mhz Duron and 256MB of RAM just isn’t cutting it under its current workload, especially wrt to compiling large gobs of code for automatic testing purposes) and got my new SATA hard-drive back from Maxtor, so I can finally reinstall my OS and files _properly_ and start installing all those games I’ve been dying to play. Guess that means it’s also time to get another short-term Cedega subscription so I can get the latest version.
In particular, I have Planescape: Torment and Morrowind that I want to play.
I’ve now got a copy of VMware Workstation installed on my box at work, and am (after only three hours) about three-fourths of the way through getting Windows XP Professional SP2 + updates installed.
The sole benefit to getting all this up-and-running is being able to test Internet Explorer against the website and intranet applications I develop at work. That’s a lot of time, resources, and money spent just to test a bloody browser.
On the upside for me, I can probably use this to test development of projects like AweMUD on FreeBSD or Open Solaris when I don’t have anything important to do at work.
It’s sad that I couldn’t use Bochs or one of the other VMs to do this, or even to test FreeBSD on my machine at home. I wrestled with Bochs and QVM for several hours and gave up. Until one of the Free VMs has the ease of use of VMware, or can at least come within a galaxy’s breadth of that ease of use, I’m going to be sticking with the proprietary software. I’d rather have software that actually works and which I can actually get running than software which is Free but useless.
I’ve been playing a good bit of Final Fantasy: Crystal Chronicles with friends and family over the weekend. I think that party games are one of the best genres to evolve over the last few years on consoles, and I myself particularly love the idea of a party-oriented RPG. (Not to confuse RPG players, but by “party” I mean having a bunch of friends over wanting to play a game, not a group of characters in that game.)
Crystal Chronicles has got a lot of things “right,” but many more things wrong, from a party perspective. Even as a more classical RPG, there are things that Crystal Chronicles does which makes the over-all game experience less fun.
The first annoyance people will likely notice while playing CC is that chalice. Stray out of its protective aura and you take damage. Sadly, as small an area as one has to begin with while keeping four characters on the screen at once, the even smaller radius that the chalice provides forces the players to stick into a very small, very hectic space. The worst part of the chalice, however, is that it effectively removes one player from playing the game. While carrying the chalice, the player can do nothing but walk. The player may drop the chalice at any time, but in quite a few battles doing so is quite problematic, especially when you have three other players trying to utilize mobility and strategy to defeat the bad guys.
A second big problem with CC is the towns. The towns serve to add shops and a few very simplistic story entries. Quite simply, the towns are useless. Worse, though, is that they eat a huge amount of play time. While one player needs to go to the merchant, another needs to go to the blacksmith, but they cannot both take care of their business at the same time, as the characters have to stick together in a small area on the screen, and the merchants and blacksmiths and so on are never standing around next to each other. The game would not lose anything of value by reducing towns to a simple per-player menu, and the game could remove a huge source of down time by removing the towns.
In a similar vein to the towns, the over-world map is likewise a huge sink of time. It doesn’t really serve any purpose other than to make the players press a lot of buttons and spend a lot of time selecting which dungeon they want to enter. The story nodes are even worse, adding little to the meat of the game experience, and they don’t even really add all that much to the story. The story in CC is present but weak and poorly executed, and the cut-scenes just eat up a lot of time with no real benefit to the players.
The final problem with CC is the repetition. There are only a small handful of levels, and while each has three cycles, players generally need to repeat the same cycle of a level over and over again in order to get decent artifacts for every character. While the players don’t exactly have to do this, few will choose not to. Possible solutions might be to allow players to collect more than one artifact per playthrough of the level (possibly allowing the players with higher scores to pick second or third artifacts after the other players have picked theirs), or to disallow replay of a level until another year has passed and thereby curbing the powergaming mentality that pretty much all computer RPG players have been trained to have.
All in all, while Crystal Chronicles is a fun game, I believe that the above three mistakes severely damage the enjoyment level of the game. Having played for many hours over several days, I’ve noted that we’ve spend an equal or greater amount of time dinking about on the world-map or in towns than we have actually playing the game, and that we end up repeating each area three or four times per year just in order to let every character keep up with the rest in terms of major artifacts.
I’m hoping that Crystal Chronicles: DS manages to alleviate these problems. Each player having their own screen entirely might remove the restriction forcing players to stick together in small areas, which would make not only the dungeons but also the towns more bearable.
AweMUD 0.23 is out. Scriptix 0.31 is along for the ride, of course.
So I’ve been having this funny trouble after installing OpenSSH 4.2p1 where I could SSH into my host moonweaver, but not my host stargrazer. SSHing from stargrazer was fine, just not into. I chalked it up to some silly misconfiguration and put it off for another day.
Well, a couple days ago, I took a look at it. I couldn’t find a misconfiguration problem anywhere. I even went so far as to put identical ssh_config and sshd_config files on both hosts. Still no change. I wasn’t getting any useful errors out of sshd, and my ssh -vvv gave me nothing more useful than, “No key exchange for context.” Like I know what the hell that means.
Anyways, about an hour ago, I decided to up the logging level of sshd to DEBUG3. Sure enough, that gave me something useful to know: the host principal wasn’t found in the keytab.
The funny thing was, the host principal was most definitely in the keytab. I tried regenerating the keytab with no effect. The Kerberos configuration just seemed dandy.
Out of desperation, I tried typing hostname -f. Bingo. On the moonweaver, the proper fqdn was returned. On stargrazer, I was getting localhost.localdomain. Which meant that Kerberos on that host was looking for a host principal of host/localhost.localdomain, not the proper host.
Then the trick was figuring out what was going on. After much digging in every init script, configuration file, and man page I could find, I finally found a website which told me that a common error was putting a line like the following into /etc/hosts:
127.0.0.1 localhost.localdomain localhost
Sure enough, I changed the line to read:
127.0.0.1 localhost
And hostname -f started returning the proper fqdn and SSHing into stargrazer started working fine.
I don’t think I added that line in there. I’m fairly sure I didn’t. I’m fairly sure it’s an Ubuntu default file. Once my SATA gets back from the shop and I reinstall the OS, I’ll have to double check that. If it is an Ubuntu default, I will most definitely raise a bug report on it.
My two final contracts are just about wrapped up. That’s a huge load off of my shoulders. Not to mention it’ll give me a little extra cash to pad out my savings so I won’t feel like I’m living quite so dangerously in the financial department.
I still, of course, have tons of school work to do, KANAR.org work to do, AweMUD work to do, friends to hang out with, and possibly a new project with a friend making a computer game/game-engine. (Yet to determine if it will be OSS, although I’d like to be, especially given that this project will largely just be a learning exervise.) At least, however, none of those other than school have any sort of deadlines attached to them, so I can slip and not worry about it. :-)
On a completely different note, I added a plugin to WordPress to let me see the search engine queries people are using to find my blog. Some of the more interesting ones:
* rampant mouse - company and website owned by a friend, now unfortunately defunct
* dovecot gssapi - this and quite a few variations on searches regarding GSSAPI and Kerberos, it’s almost like I’m the only guy blogging about trying to get that stuff working
* ghost in the shell sex scene - o_O just weird to begin with given that I didn’t write about such a thing, and whoever found this blog searching for that: shame on you!
* kanar - great, the last thing I really want is all my fellow players finding my personal blog
* the slayers manga - close to the top hit for one of my most favorite mangas ever and I only blogged about it once, how cool/weird is that?
The worst thing is, I really don’t want that kind of exposure. This blog was intended more for friends and others in the developer community, not weirdos looking for Ghost in the Shell hentai. :-/
Well, the biggest AweMUD news is that I have merged the Scriptix codebase in with AweMUD. There is now no longer any need to download, build, and install Scriptix separately from AweMUD. This should make building AweMUD a piece of cake now.
The next big piece of news is that the snapshots should be working again. Of course, nobody actually ever told me they were broken. Who knows how many users downloaded it, saw it didn’t build, and moved on with their lives. ::sigh:: I’m updating my auto-build system to pull off of the snapshots instead of the Arch repo. The snapshots are pulled from the Arch repo, so the change should create a complete test of all distributions of AweMUD, as well as the code itself.
I think that once I push 0.23 out the door, I’m going to concentrate on cleaning up the AweMUD/Scriptix merged code, and push out 0.24.