I managed to find a spare few hours between exams to try out my idea, and it worked roughly as well as I expected. It was a game speed mod, to add bullet time effects and stuff. If you think that the default game action is a bit to slow, or just want to hear NPCís speaking like Mickey mouse, turn the game speed up a bit. If your reaction times leave a lot to be desired but you want to be able to dodge magic and arrows anyway, then turn game speed down a bit. Speed is controlled via the numpad in game, so you can slow the game down only in battles or something.
There is one major bug to do with NPCís skipping lines of dialog. Iíve never seen it before, but apparently unpatched oblivion does this too. In any case, since Iíd never seen it before writing this mod, itís probably safe to assume that my mod makes it worse even if it doesnít cause it. If you want to use my speed mod, make sure you turn subtitles on. With my speed mod active, even if I donít adjust game speed, NPCs seem to miss around 50% of their dialog.
Despite my exams,* obmm has reached 0.7.11 already. Each update has fixed something to do with the archiveinvalidation file. It turned out that in the hashing algorithm oblivion uses, increasing the final byte by any amount adds that number to the hash, and that oblivion doesnít hash file extensions. As a result, Ďbread01.ddsí, Ďbread02.ddsí and Ďbread03.ddsí have incrementing hashes. Because obmm 0.7.8 incremented the hashes, this resulted in bread02.nif ending up with bread01ís texture. This was fixed in 0.7.9 by checking for hash collisions, and changing a hash by more than 1 where required. Because of the necessity to keep things in hash order, some files could no longer be replaced. (e.g. if bread02.dds was replaced, but 01 and 03 werenít, then the BSA couldnít be modified correctly.) To get around this, 0.7.10 added an option to automatically create an archiveinvalidation file for the problem files. 0.7.11 added more configurability to stop any non textures turning up in the mini archiveinvalidation file. Thereís also been a few non archiveinvalidation related updates. Go check the changelog for details.
I have a nice idea for a mod** which will only take a few hours, and which will be cool^ if it works. Hopefully I can find a spare day or two in my exam schedule next week to try it out. Once the exams are over, Iíll have most of the summer free. I do of course have a Real Life^^ outside of oblivion modding, but I should still have time to pull off something major. The first things I need to do are finish MGE 2.6, obmm 0.8 and rewrite TESsnip, but my plans for after that are secret.^^^ You may commence speculation now. :)
*First one was yesterday, last one is the 7th of June. Tomorrow is mechanics and relativity, which is why I am typing this as an excuse to further procrastinate on my revision.
**When I use the term mod, please donít think of esp files. Iíll probably never release any traditional plugins for oblivion, unless theyíre examples for an oblivion version of MGE or something.
^Completely and utterly useless, but cool none the less. Of course, it probably wont work.
^^It may not quite justify the capital letters, but nevertheless itís my life and Iím proud of it. :p
^^^A word of warning - if a plan of mine is secret, itís generally because I donít have confidence in myself to pull it off, and donít want to get peoples hopes up. If I spend ages trying to do something and it doesnít work, you may see nothing at all from me over the summer.
obmm 0.7.8 is out, and has hopefully sidestepped the whole archiveinvalidation problem for good. After further research by dev_akm and his team,* the best guess is that oblivion did not originally require an ai file, but a bug in the structure of some nif meshes led to oblivion not loading textures correctly, and that the archiveinvalidation.txt was quickly added to avoid having to properly fix the bug, but that the archiveinvalidation implementation itself ended up adding even more bugs to the mess.** My idea, which Iím surprised no-one else thought of before, was to simply edit the BSA archives so that oblivion cannot find the original files, and is forced to search elsewhere for them. obmm will scan each of the BSAís, and check for the existence in the data directory of each file within the BSA. If a match is found, the hash of that file is incremented. Oblivion never reads file names, and relies solely on the hashes. As a result, it never notices the filename/hash mismatch, and never sees anything wrong. As far as the player is concerned, mods should suddenly start working correctly, entirely without the need for an archiveinvalidation file. To use this feature, open the archive invalidation options page, and check the Ďdirectly edit BSAísí checkbox. If you donít use obmm, you can either use my standalone BSA patcher, or wait for a similar feature to be added to wyre bash or ACV.
In other news, I actually got myself a job this summer. Iím now responsible*** for shifting 10,000 pages worth of website from one old and crappy content management system into a new and allegedly better one. The guy in charge seems cool, and despite the fact that he and everyone else in the office were wearing shirts and ties, didnít comment on the fact that all of us students turned up wearing jeans and hoodies. And, unlike slaving away on obmm, I actually get paid for doing this.^
*I seem to be getting some unwarranted praise for this. Let me point out clearly that I played no part in this archiveinvalidation research. I just acted on the results.
**That description is oversimplified, and quite possible wrong, but my main point is that itís a game bug, and not a deliberate attempt by Bethesda to screw modders. There seem to be an awful lot of these bugs or coincidences which taken as a whole look suspiciously like an attempt to screw modders, but for now Iím prepared to give them the benefit of the doubt. Of course, if at any point it does turn out that Bethesda have been deliberately sabotaging 3rd party modders efforts so that theyíre able to sell more of their $2 official plugins, I will be among the first knocking on their doors^^ with a custard pie in hand.^^^
***Along with a team of 29 other students and one anti-student. I donít have to do it all myself, thank goodness. :)
^Iím always envious of people who work as programmers. I sit in front of a computer for many hours a day, writing my little programs, hunting down bugs, getting yelled at when things donít work and so on because I find it fun. The fact that some people get paid for doing it seems to somehow go against the grain of the universe, as well as being distinctly unfair. Iím living in hope that one day my local games developer will drop me an email, and say Ďhey, howíd you like to come to our office and do exactly what you do every day anyway, and weíll even give you a bit of money for doing it.í.^^^^
^^Metaphorically speaking. Realistically speaking, I live on the wrong continent, and donít know where their door is anyway. Or even if they have a door. Leaving a custard pie in a PO box probably wouldnít have the same effect.
^^^Iíd quite like to turn up with a baseball bat in hand, but you can get arrested for that sort of thing. :p
^^^^Iím also living in fear of receiving that e-mail, but then it turning out that my local games developer is EA, but thatís a different and far scarier story.
Obmm has reached 0.7.6. .4 introduced a new and completely broken archiveinvalidation.txt generator, and .5 and .6 fixed it. .5 also introduced a fix Iíve been meaning to add for ages - if you had a corrupt plugin in your data directory, obmm would crash on startup without giving any useful indication why
On the topic of archiveinvalidation, dev_akm and a few others have been researching exactly how it behaves. To sum up their findings in two words: it doesnít. obmmís new ai generator was based on their findings that only textures need to be invalidated, and only if they already exist in a BSA archive. Unfortunately, not everything obeys these rules. Some textures which exist in a BSA archive appear even if not invalidated. Invalidating some meshes can cause oblivion to crash, or freeze up completely. Some other meshes need to be invalidated before showing up correctly. Not to mention the fact that invalidating a single file can cause all other files in the same directory to break. On the whole, I have great difficulty believing that the archiveinvalidation file is supposed to work this way. Either itís a game bug,* or Bethesda are deliberately trying to make life difficult for modders.** If it is working exactly as intended, then the least the devs could do is explain the rules.
I have a job interview tomorrow. I meant to learn more HTML ready for it, but somehow ended up writing a distant land thingy for morrowind.
*Iím yet to see the oblivion devs go out of their way to help modders. If this is a game bug, itís probably because all of oblivions textures are packed into BSAís and donít need to be invalidated, so they didnít bother testing the archiveinvalidation file. How hard could it be for them to release a BSA packer/unpacker, or document the bsa/esm/esp/ess file formats, or anything.
**I suspect Iím starting to get drawn into the whole Ďbethesda are deliberately trying to screw modders so that they can sell more of their $2 official pluginsí conspiracy theory here. To be honest though, itís a little hard not to be.^
^Edit: Since this post seems to be getting quoted over on the official forums, Iíd better state that I donít believe in this conspiracy. I was just commenting that my post made me sound like I do.
obmm is still only at 0.7.3. Iíve joined the Ďlets add an oblivion style distant land option to morrowindí club,* and have been busy writing a utility which will read a set of esm/esp files, extract the LAND records, create .x meshes out of them, load any required textures from the BSA files and merge them along with the vertex colours into a single 512*512 texture for each cell, and then save a set of .x and .dds files, one pair per cell. There were some issues getting the cell heights to match up, but andargor has just popped in with mGen** source code, which apparently automatically generates perfectly lined up exterior cells, so Shon will no doubt be able to solve that problem very quickly. Now someone just has to get MGE to draw the blinking things.
*The other members being Shon, whoís been generating some very pretty looking heightmaps, C_Mireneye, who has been playing around with the MGE source code, and about a dozen other people who keep popping in to give suggestions or moral support. Moral support is a vital requirement when dealing with morrowinds graphics engine; while writing MGE I must have experienced the urge to throw myself off the nearest cliff an average of once every 16 minutes.
**Iíd never heard of this till 10 seconds ago. Itís nice how useful things like this keep turning up. :)
^They also want photoshop skills. I can resize an image, change the brightness/contrast, remove red eye and scribble, but thatís about the extent of my knowledge. Luckily, this was just a desired skill and not required, since I donít have a copy of photoshop to teach myself with.
^^i.e. pretty good at the original CSS, but not even sure what CSS2 or 3 look like. I wouldnít even know they existed if it wasnít for all the IE bashers complaining that IE doesnít support them properly.
obmm is up to 0.7.3. It now has a (mostly non functional) BSA creator. The BSAís it creates can be unpacked by any of the BSA unpacking tools, and will be recognised and loaded by oblivion, but oblivion will not use any of the files from them. The ghost data file link bug seems to have been fixed, but has now been replaced by a security error. obmm has always refused to load omods which contain absolute path information or a Ď..í in their path to prevent omods from affecting anything outside of the data directory, but for some reason the omod creator seems to have started converting some of the paths to absolute paths, and hence messing up the omod. Beats me whatís causing it, but Iím sure Iíll track it down eventually.*
In an effort to get hold of a computer capable of running oblivion, Iíve decided to try and get a job this summer. Goodness knows if Iíll actually manage it. My university was looking for a bunch of people for some web project, which I should be quite good at,** so Iíve applied for that to start with. Assuming I get it, I should be able to afford a semi-decent computer by some time in late 2020. Iím half tempted to stick a big visible donate button on all the side menus, but that would be rather insulting to chorrol who are hosting this site for free, and itís something I promised I wouldnít do anyway.^ Maybe I should try to write and sell a game or something.
*Just in time for the next super bug to rear its ugly head, no doubt.
**Anyone who comments on the fact that this website was written in publisher is going to get smacked. :p
^I do actually get messages every now and again from people asking why I donít have a donate option. I usually reply with a simple Ďall my programs are freeware, and I do not accept donations.í Iím starting to suspect that saying this to people who want to give me money is a rather stupid thing to do.
obmm 0.7 is out. There were no huge changes - I just felt like updating the readme for once. In general, I update the version number if anything other than OblivionModManager.exe changes. The biggest new feature in 0.7 is that scripts now have select/case/break/endselect flow control structures, which removes the need for long chains of yes/no dialog boxes. The ghost file link bug is continuing to wreak havoc. Nobody has complained about it until recently, but that doesnít necessarily mean that itís a new bug - it could be that it wasnít noticeable until all the new big texture placers started coming out. Thereís currently a new beta out that may or may not fix it.
I recently had a PM from someone claiming to be working for a german computer magazine company called computec, and wanting to include obmm on a coverdisk. Iím not convinced it was real for a few reasons,* and I was even more suspicious when the first thing he asked for was for me to reply by email** and not PM, and to sign some random agreement.*** He then proceeded to ask if he could use my save manager too. After checking my own website a bit to make sure that I hadnít accidentally written a save manager in my sleep, I had to point out that he was PMing the wrong person. Since I refused to reply by e-mail or sign anything, I doubt obmm will be making any coverdisk appearances even if he was legit, but I still thought it was cool.
I am, of course, happy for magazines to use my programs on their coverdisks, but Iím sure not going to go jumping through any hoops to let them do it. After all, Iím the one doing them a favour, not the other way around. Itís not as if I get any advertising benefits or anything, because everything I write is free anyway. If they really do need me to sign something due to some bit of legal red tape or other, then the least they could do is offer some evidence that they are who they say they are.^
Anyway, now that that rants over, lets get back to obmm. Iíve been reading the mono roadmap and noticed that the windows forms components obmm uses arenít due to be added until this winter or later. I was hoping that theyíd be in the 1.2 release this summer. Looks like there isnít going to be a version of obmm that doesnít require .NET out any time soon.
*Firstly, while magazines have put oblivion mods on coverdisks before, Iíve never known one to include utilities. Itís also pretty rare for them to bother asking before including something. On top of that, my program is entirely in english. I know Germans are generally a lot better at english than most english speakers are at german, but youíd have to be pretty darn good to work out how to use obmm. I never trust PMs from people if they donít have any forum posts for me to read though. (Reading it back, that came out a bit wrong. What Iím interested in is the post content, not just how many posts they have. If they spend their time trolling, then itís a pretty good bet that the PM is just a troll too.)
**Iíve already made the mistake of putting my e-mail address into MGEís readme. I soon regretted it when I started getting more ĎYour program sucks. It just crashes when I try to launch ití^^ emails than spam. Iíve learnt my lesson for obmm, and not put any mention of my e-mail address anywhere. Replying to PMs on the offical forums is about all the n00b contact I can take. Luckily, the e-mail address I used for MGE was just a throwaway forwarding address, so no real harm was done.
***If they were going to include some commercial program, then something to protect themselves from malicious lawsuites would make sense. For a GPL licensed application, it doesnít. If I tried to sue them for illegal redistribution, then Iíd be the one breaking the law, unless theyíd already broken the licence. Apart from the self protection thing, I couldnít think of any other reason why theyíd want a written agreement, unless they wanted me to give a signed statement that my program didnít include viruses or other malicious code. If their only protection against viruses is asking the author very nicely, then I wouldnít touch one of their DVDs with a barge pole anyway.
^ok, so that was an incredibly stupid comment. If Iíd just gone and e-mailed him at the computec address he provided, then I soon would have found out if it was for real or not. My point was more that I shouldnít have to make any effort just because some magazine needs software to put on their sales boosting DVD, when Iím not going to get any benefit out of it whatsoever.
^^From the few who actually bothered to include the error message, the reason was obvious. They hadnít installed .NET. This raises the interesting question of how they managed to get hold of my e-mail address, since directly underneath it in the readme, and also in substantially larger text, was the Ďrequires .NETí message. Perhaps I should have hidden my e-mail address half way through the MWSE scripting page or something.
While adding my 28th of April update, I noticed that chorrol had started to generate access logs.* Iíve spent this morning playing around with the logs, and generated some pretty pictures. The first thing I noticed was a few sites remote linking my pictures. I didnít think I had anything worth stealing, but a good few people must have disagreed. One site was even linking that oblivion symbol I have above the contents table.
Some other points of note: - Practically everyone visiting this site is using windows - Over half the site visitors are using firefox - 13 slightly strange people remained on this site for over an hour** - The second most popular search engine term that brought people here was Ďdclist.txtí^ - 3 people typed my full web address into google, and then clicked on the search results to get to this page.^^ - Iím chewing through a gb of bandwidth every few days
In other news, I visited my friends house Friday, and had my first ever play of oblivion. I donít see what all the negativity is about personally; I only got about 2 hours play time in, but the little I saw of it was good enough. The faces are awful though. The emperor looks like someone smacked him in the face with a lemon.
obmm is up to 0.6.10, but still contains some nasty bugs. 0.6.11 will hopefully be out later today to fix the next batch. At this rate, itís going to be a while before I can start working on new features again. The biggest problem is that after a month of never touching it, everyone is suddenly trying to script things. Half the script functions seem to have got broken sometime between me adding them and now...
* If any budding oblivion modders want to create a mod site, stargelman and everyone else at chorrol.com have been awesome. There isnít the forced advertising of PES, or the speed problems of TESsource. Iíd recommend them any day.
** I never realized I was that interesting. :)
^ You know - that file that oblivion uses to keep track of paid for downloaded content. I assume they were looking for free downloads.
^^ Why??? Do you not have an address bar??? Iíve only ever seen one person do that before, and Iíd always assumed he was unique...