A Full Month of Doings 5:44PM 6-30-2008
I've been working on so much stuff lately that it's hard to decide what to devote each day to. Of course, practically everyone I know doesn't give a shit about the awesome stuff I do and rather I just jump into the rat race. But anyways, here's an overview of what I've been working on...

Not long after my last post, I updated my mod for the Age of Empires 3 expansion The Asian Dynasties called Gatling Guns for All!. Previously, you could only use the mod with a specific unmodified version of TAD, but I wanted the mod to be usable by all versions of both The Asian Dynasties and The Warchiefs expansions even if they've been previously modded. Thus, I had to create an installer (similar to the one I did for Stalker) that would modify only the aspects of the game that I changed. Originally (as I did in the Stalker mod installer), I tried to use regular expressions to find the appropriate setting to change. However, being that the game data is stored as XML, Regex had problems matching certain XML formatting quirks. So, I moved to a query language that I'd never used before called XPath, which is basically XML hierarchy-aware Regex. Though getting some of the nodes in AOE3's settings files to match was still tricky, XPath in .Net did the job perfectly.

When I went to package the new version of the mod, I actually found out that I had incorrectly archived an essential file in the wrong path in the first versions of the mod. Thus, nobody that downloaded it would have gotten the mod to work as intended. And only one person called me on it, though I thought he was a noob at first. But all has been rectified now.

Next, I started working on a script for this site that would color-code programming language syntax and elements so I can attach beautified code to some columns. The script uses a PEAR PHP library called Text_Highlighter to do the color-coding on the fly. However, at the moment, my part of the script still presents certain security risks that I will have to mitigate before it goes live.

That project was interrupted by a visit from Kaylen that turned into non-stop gaming in the form of Lego Indiana Jones. Although the game was littered with some annoying little bugs (having just been released), we did manage to get 100% completion. As most reviews have said, it wasn't really as fun as Lego Star Wars--how can you beat lightsabers and the force? Though bazookas and bushes you can jump into come close.

The next week, following a concern from a user, I began working on a major new feature for Cursor Lock. Though not really having anything to do with multimonitor gaming, the feature is a natural progression of the existing code. It allows the user to select whether to lock the cursor into the current screen (what it did originally), the selected window, or the selected window interior (client area). Locking the cursor into the window interior is particularly useful for playing windowed 3D games. While I was at it, I decided to completely overhaul the setup GUI to be much more intuitive, separating the selection of the different modes with pretty, graphical buttons. It's looking rather nice already and should only take a few more days of testing and fixing bugs until public release.

Last week, I got distracted when randomly deciding to replay Deus Ex: Invisible War and then subsequently desiring to mod out some of the major flaws in the game. Only a few changes would make the game much more palatable to the PC fanbase. One of the mod ideas I had was to combine the various proximity and thrown variants of grenades (EMP, scrambler, gas, and concussion), which would return the grenades to their vanilla Deus Ex functionality and give the player a lot more inventory space. So apparently, the developer of Deus Ex, Ion Storm, only decided to release the Thief: Deadly Shadows editor and not the Invisible War one, even though the games were made concurrently on the same engine (Unreal Warfare). I tried for days to get the Thief editor to work for Invisible War, but I don't see it ever working out easily; there are far too many hardcoded elements of the games in both the editor and the game executables. The best I could do was to get the DX2 packages to load in the Thief editor after it had loaded the core Thief packages first. Then, I could get the DX2 packages to save after some simple modifications, but that made it so there were both Thief and DX2 classes mixed together, making a good number of DX2 objects break ingame (e.g. inventory, particle emitters). In other words: Epic Fail.

However, while I was poking around in Invisible War's resources, I found the plaintext files containing the secret area's developer quotes. I decided it'd make a good contribution to my Deus Ex column, despite not being from vanilla Deus Ex. Then, whilst I was formatting the quotes for HTML, I got the crazy notion of using the game's font for the text. Unfortunately, the font was not in a TrueType or comparable format, but rather it was merely a texture and an accompanying text file (DX2_FONT.cel) of comma-delimited texture character widths (in pixels) that were ordered corresponding to their ASCII value. The texture character height was understood to be 23 pixels, so that a width of -1 in the text file meant to go to the next row. Using a quickly thrown together program, I turned the width values into a Paint Shop Pro script (macro) that would cut out all the characters into individual bitmaps. Finally, I manually pasted them into a font editor to complete the conversion. The font can be downloaded here, and then can be tested on the aforementioned DX2 quotes page.
-Snake   
Tags: modding, programming, website, .Net, PHP, Cursor Lock, Age of Empires 3, Deus Ex


A Special Happy, Fun-Time Holiday Post 7:39PM 12-24-2007
As is customary for an after semester post, I will say how the semester was a bitch and report my grades. Well, it was a bitch, and I didn't get anything below a C, so woot. The biggest bitch part was a recommendation report for an BS required English course; unfortunately, it was a group project and I chose a topic that my group was completely incapable of working on: parallel computing. Although a couple sections are missing, the paper is in a refined enough state that I've decided to post it here. I'm now a self-taught expert on parallelism, at least.

On my final exam day, CNET Download.com finally got around to approving my submission of Cursor Lock 2.0. It got a couple hundred downloads in the first few days alone, but has since slowed down to about 20 downloads a day. Of course, I never really expected it to be a hot, must-have app; it's more of an awesome, there when you need it app.

For my next programming project, I'm looking into finally doing a Trillian log converter, which I first mentioned this time last year. Trillian's native bastardized XML format does not scale well (the more you chat with someone, the longer it takes to access their log) and can only be read with the built-in log viewer. I think that any features which necessitated the use of a proprietary log format over HTML format are of questionable value. I'm sure I can replicate all of the most important features in simple, universal HTML format: bookmarks, search (via Google Desktop Search or something similar), calendar (from splitting into different files by date), and masking different message types (through some delicious CSS and JS). It has the added benefit of extensibility, too; I plan on giving all the page elements their own class, so users can change log formatting to suit their preferences.

I've only written a specification outline for the program so far. Mostly, I've just been relaxing to some gaming. The AOE3 expansion, Asian Dynasties, has renewed my interest in Age of Empires. I skipped the War Chief expansion because, frankly, I'm tired of fucking Indians. But the added map locations, high-level home city cards, and civs of Asian Dynasties is just what the game needed. Although China's unit training differences are too odd for me to handle, Japan has really killer unit upgrade cards plus powerful units already that compliment my turtling style.

Of course, I had to play Portal and Half-Life 2: Episode 2 also. Portal was so fun that I finished it in one sitting--it was a truimph. Episode 2 was also pretty good; there are some really intense firefights and well-crafted environments. However, as with Fortress Forever, locking issues started creeping up again. Lowering the sound acceleration in dxdiag seemed to make some difference in the time it took to lock, but ultimately they were still completely random. Monitoring component temperatures showed that the CPU temperature was a little high (but still nowhere near the 140F I reached over summer), so I cleaned the HSF out again. That further decreased the frequency of locks, but alas the problem remained with Source Engine games. My latest hunch is that the CPU is just getting tired of the overclock of 100Mhz (2.15 to 2.25Ghz) I imposed years ago. So I've been lowering that by half with nVidia's old nForce2 system utility before playing. So far, results have been promising.

As for games that don't lock my system up, Kaylen and I finally reached 100% completion in both Lego Star Wars games during her recent visit. It's clear that the second game is by far superior, but going back and playing the first game from the newer trilogy was still kickass lego fun. Next year: Lego Indiana Jones. Oh, hell yes.

-Snake   
Tags: gaming, Cursor Lock, Trillian, Age of Empires 3, Portal, Half-Life 2, Lego Star Wars



SnakeByte Blog 0.6 (bld 6-27-10)