Tag Archives: Deus Ex

Diablo II Mods and Code Stuff

Hello all. My apologies for not updating this website more.  My life has become complicated lately, and in these uncertain times I find it difficult to want to write about it.  A shame really, as the site has never been more popular.  Seems like every time a new game comes out lacking multi-monitor support, I get hundreds of new visitors and users for Cursor Lock; a few weeks ago, it was Cites: Skylines.  And today with the announcement of another new Deus Ex game, my version of the soundtrack is hotter than ever.  It does make me feel good to know that I can produce things that people need, even if it’s only for video games.

Speaking of video game content, I spent a lot of time a few months ago working on a new class for Diablo II.  Well, it’s not really a completely new class, more like a subclass since I only changed one skill tree for the Amazon.  It just really bugged me how the Amazon felt so lame compared to the Diablo 3 Demon Hunter.  It’s really difficult to keep the monsters from swarming the Amazon, so I designed some Demon Hunter-inspired skills to help remedy the problem, such as caltrops, turrets, and smokescreens.  You can see these skills in action in the video below.

I also just wanted to fulfill my desire to do some really hardcore modding for Diablo II.  The game has a rather awkward system for making modifications.  If it were made today, we’d probably have XML files and LUA scripts to work with.  But since it was made 15 years ago, we instead have to settle for massive CSV files.  You can find the Demon Hunter mod on my Diablo II mod page.  And massive props to the Phrozen Keep for continuing to support D2’s modders.

Another thing that bothered me about Diablo II for so long is that when you die your corpse keeps all your equipment on it, and you respawn basically naked and unarmed.  Your only options are to run in, snatch everything off your corpse, and teleport back to town, or rage quit and hope that your corpse returns to town like it’s supposed to.  Obviously, this is almost always zero fun and is why no games handle death like this anymore.

Unfortunately, there’s no way to change this in the game’s CSV tables.  But I didn’t let that stop me.  Every now and then, a problem comes along which must be solved through assembler hacking, and this was one of those times.  But I didn’t really have a clue which function was involved in character death.  So, I just put breakpoints on every function in IDA and attached to the running process.  It took a while of breaking, disabling breakpoints, and resuming, but I eventually narrowed it down to several dozen functions involved in death.  Some functions did death animations, some saved character data, but then I found a suspicious bit of code that would loop 14 times—the number of equipment slots.  This was the code where the game looped through each equipment slot and moved the item from the player to the player’s dead body.  And then there was nothing left to do but some trial and error to figure out where I could safely jump over the offending code and re-enter.  Now the only problem is that this mod will have to be updated every time there’s a Diablo II patch. 😥

Here we see the fateful jump operation to bypass the character equipment being removed.

Here we see the fateful jump operation to bypass the character equipment being removed.

Since then, I’ve been turning back to more PHP/HTML/CSS/JS coding.  I’m working on a project that I can’t disclose at this time but which quite possibly could be my most epic work yet.  Wish me luck in completing it.

Recently, I’ve also been using PHP as my go to scripting language for everyday projects.  A couple days ago, I wanted to be able to pull all GPS image data from a directory and display it in Google Earth.  PHP has file IO, EXIF, and XML libraries, so it was real convenient to bash out a script using that.  Then I realized I had created an account on Github recently to comment on some projects and thought why not just put this code on there.  So I did.  Maybe I’ll add more small projects like this in the future.

Posted in Modding, Programming, Website | Tagged , , , , , | 2 Comments

Steam Widget in the Wild!

Steam Widget on WordPress.org

As I said I would last weekend, I got my new Steam Widget up on WordPress.org.  I still want to add some things like stats links and currently in-game, but I think it’s a good first release.

Also, I forgot to mention this in my last post, but it’s pretty cool still.  A German guy did a drum remix using my remastered versions of the Deus Ex UNATCO and Area 51 themes and posted them on Youtube a few months ago.  Check it out.

Posted in Media, Programming | Tagged , , , | Leave a comment

Deus Ex and such

I just finished my second playthrough of the new Deus Ex game, Human Revolution. It has a few bugs but is generally the best game I’ve played in a while. Though, I must say that the original Deus Ex is still a smidge better. So far I haven’t given a full review, but if I did so it’d be on Metacritic where I’ve been doing my other reviews.

Also, in my last playthrough of DX:HR, I took a bunch of screenshots of the weapon mods and Praxis Kits that I found and then gave descriptions of where they’re located. With Steam’s nifty new screenshot management, I was able to easily upload them all to my Steam page for your reference. It’s probably the beginnings of a new DX guide.

So I’m still doing a ton of gaming since I started working full-time and less of being productive. However, one thing I’ve been contemplating is converting my site to WordPress for a few reasons. It would add commenting features for all my posts and other content, and I’m hoping that getting more feedback would be a good motivator for me. Also, having a slick backend should help me post more often. Plus I’ve been using WP a lot at work lately and I’m pretty comfortable developing for it now so it shouldn’t be much trouble to extend it to my needs.

The only thing I’m stumbling on is the design of the new WordPress site. I’ve been toying with a mockup for the last month but I’m not sure I like any of it. I’ve been trying to keep some of the colors and graphics of the current site’s style. Maybe I need to start over from scratch on this.

Posted in Gaming, Website | Tagged , , | Leave a comment

OMG!! Deus Ex 3!!!1

I’m crazy psyched about the upcoming Deus Ex game. Maybe I’m just being a fanboy, but I think the trailers Eidos Montreal have put out for it are the best I’ve ever seen for a video game. The style, clarity, music, action, and glimpses of story are all hyper-intense–a couple even get me choked up at times. In the HD trailers, it’s hard to even tell the difference between pre-rendered CG, in-game cutscenes, or actual gameplay footage.


Beyond the feel of the game, the play sounds like it’s shaping up quite nicely as well. PC Gamer has a couple of good articles about all the gameplay aspects up:

Posted in Gaming | Tagged | Leave a comment

Snake crunches more numbers

(Any excuse to make a spreadsheet.)

Since the election is over (as predicted, Obama landslide–yes, I am a happy snake) and I’m now lacking my daily dose of poll data, I’ve turned to crunching other data to support my statistical addiction. Obviously, the first data I looked at was the final election results so I could update my “blue shift” map. Naturally, this led to an examination of the differences between my previous map (from the last blog post), which used predictions based on polls, and the final results. The map this data produced basically only shows where polls were over- and understating support for a candidate. While I was at it (and because it was trivial to drop new data into my SVG generator program), I generated maps for the 2004 and 2008 final presidential election results. All four maps follow–click for the full image, obviously.

The aspect that jumps out the most in the first image (Blue Shift) is how Arkansas is the only state shifting decidedly more Republican; Louisiana and some other adjacent states are also slightly more red or neutral. As I alluded to last time, it appears that the demographics in these states are such that: A. there was profound white prejudice/misinformation against Obama and B. there wasn’t enough black/minority support to overcome this.

The poll performance map is even more interesting. Immediately, North Dakota and Wyoming stand out as performing way better for McCain than expected–I’m going to attribute these two to the limited number of polls. It’s also likely that Rhode Island, Vermont, and Hawaii fall into that same category except in the Democratic direction. Arkansas, as previously discussed, also under-performed prominently for Obama. But I think the biggest conclusion we can draw from this map can be seen if we look at the bigger picture. The Southeast and Central states are all mostly under-performers for Obama, while the western states over-performed (in general). Perhaps, when they get in the polling booth, rural westerners are generally more open-minded and less bigoted (and thus more accepting of a black president) than rural southerners? It could also say something about the turnout regionally. More information is required before we can make a decisive conclusion, but it’s interesting nonetheless.

It occurs to me that the maps aren’t particularly useful for seeing specific results. I considered rectifying that at one point but decided that the purpose of the maps was mainly to compare states to each other, which the maps do quite well. However, if you want to see the data I used, I uploaded the spreadsheet here (Excel 2002 format).

More recently, I’ve been studying the visitor demographics for my site–pondering my precarious IE support and wishing IE6 would just go away already. Though sadly, the data suggests that IE6 usage will persist. It’s like the herpes of web development. Anyways, I collected the data using this site’s raw logs, counting only distinct IPs for a particular browser (i.e. multiple hits are filtered out). Then, I made some pretty charts in Excel to show off the results. Nothing is really surprising here, but… it’s interesting nonetheless. 😉 Charts below.

As a status update, I’ve been working on my Deus Ex guide again and… yes… it’s almost complete 😮 . And I’ve only had to play DX what must be 12 times over 7 years to write it! I’m not complaining, though. Really, it feels like the definitive guide to Deus Ex on the internet and I’m quite proud. Look for an updated GameFAQs version soon.

Also, I’m working on a massive overhaul of the SnakeByte content system which will feature tabviews (emulated with clever HTML, DOM, JavaScript, and CSS, of course), more images, changelog support, and even some AJAX. It’s about 75% complete as of this post, with expected completion before the end of the year.

Posted in Website | Tagged , , | Leave a comment

A Full Month of Doings

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.


Lego Indiana Jones

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.

Posted in Modding, Programming, Website | Tagged , , , , | Leave a comment