Until President Obama waves his hand and magically fixes the economy so I can find a job, I’ve been biding my time with several projects as usual. As mentioned in my post a couple months ago, I expected to complete a major overhaul of the content system by the end of last year and amazingly actually did so. I felt like the content pages were too bulky with the varying number of images and description lengths, and it didn’t look very clean. So I crafted a custom vertical tabview to organize the information into specific tabs for description, images (dynamically loaded with AJAX), changelog, and downloads (also AJAX). The default tab, called “Vitals”, is a combination of the other tabs, showing general information, a shortened description, one image, and the number of total downloads. The succinctness of the vitals tab helps keep the tabview height down and thus all the items on the page look uniform.
Of course, it all looks rather well until you go to test in Internet Explorer. Despite my attempts to keep everything within standards, IE6 still has issues such as flickering tab button background images and the always enjoyable broken box model. However, IE7 isn’t without its problems either and the tabviews seem to adversely affect my fixed positioning hack from last post.
I’ve also been redoing parts of the site to use more CSS and less inline formatting. Most of the web seems to be in love with CSS to the point that they blindly use only CSS, but I tend to be more pragmatic about it. Certainly, CSS is useful for centralizing style information that is to be used repeatedly or as part of an overarching theme. But the CSS standard is not quite complete enough to handle everything a developer might want to do. I frequently need a property that tells an element to be springy (i.e. fills up the remaining height or width of its parent), but there exists no such property in CSS2. A trick that I like to do with (100% height) tables is to use them to keep something vertically centered in a page or at the bottom of a window but able to expand. CSS has no way to do these things; its vertical-align property only works on inline elements (and don’t get me started on margin hacks). So I think I’ve made my point: it’s a good start, but it’s not there yet. (Plus: IE6. So even if it were there, we still couldn’t use it.)
But I haven’t just been diddling web development lately; I’ve also been back at VB.Net to release a public beta of my much slaved over alarm program cleverly named “Snake’s Alarm”. Not much has changed since I last worked on it in earnest in August 2007. I finally fixed any instability with the FMOD system playing two alarm sounds concurrently by just preventing it from doing so, figuring there wasn’t much use for two overlapping sounds playing. I have also perfected the snooze feature by adding options to control the max amount of snooze time allowed and to turn off the monitor when snoozing. There’s still a lot left in the TODO file, but this version is still completely functional and reliable.
In hardware news, I recently replaced my Radeon 9600XT with a GeForce 7300GT as a stopgap upgrade until I can finally afford a new system. It was seriously the best AGP nVidia card I could get on Newegg–they’re going like hot-cakes (whatever the hell that means). I had my eye on a 7600GS until it sold out when I went to buy. Now the 7300GT that I got is already sold out. I wrote a lengthy review on Newegg for the video card about a week before it sold out (albeit one person labeled it as helpful before then) that I’m going to republish below.
Pros: I haven’ t done a lot of benchmarks, but it looks to be about 60-120% faster than the Radeon 9600XT it replaced, depending on the game or benchmark of course. I chose to switch to nVidia because this card supposedly runs cooler and with less power than ATI’s final AGP offerings (and to prevent fanboy-ism). My tests with RivaTuner show the core runs a bit hot at idle (~116°F), but it only creeps up marginally in most games (~140°F). Video stress tests put it at about 166°F. Overall, the 7300GT’s performance is only somewhat noticeably better in most newer games compared to its predecessor.
What’s silly is that I’ve mostly been playing Diablo 2 (an eight year old game) since getting this new video card. I convinced Kaylen to play it with me, being that it would run on just about any computer and she was in exile over winter break. Though it seems I got her hooked since we played all the way through with my Paladin and her Sorceress. Since the first completion, I’ve been poking around in the game’s data files for any changes I can make to perceived flaws.
My biggest complaint about Diablo 2 has always been that you level too frequently at the beginning and hardly ever later on. I did a huge spreadsheet with player experience, monster level, and level-to-area calculations trying to come up with the best solution for a balanced and steady leveling system. One of the most telling graphs of this data is at right, showing the percentage increase in experience needed to get to the next level compared to the last level. In vanilla Diablo 2, after level 11, the player needs 25% more experience to get to each subsequent level, which can lengthen the process significantly as one approaches level 27, where the experience difference levels out at a more respectable 9%. I created a modification to the leveling system that merely smooths out the experience difference from level 5 to 30 and balances the resultant increased difficulty by lowering monster stats according to how far behind in levels the player is.
I’m not sure if it’s all as complicated as it sounds, but when I finally release the mod, I’ll be sure to include the spreadsheet for others to marvel at. I’ve also done a number of smaller mods and have already uploaded three such mods as of this post. One fixes the ever-annoying game font where the 5′s look like 6′s–a huge confusion when looking at item stats. More will follow as soon as they’re thoroughly tested in our new Barbarian and Assassin game.