Saturday, June 27, 2009

My Theories On The 25 Groups Limit

I had been chatting with another Second Life resident earlier today, and offered him an invite to the 4Freedom group. He declined the offer, because he was at his limit on groups. After being told that, I started thinking "Why did they choose that limit?" Then, a pair of theories dawned on me. Either by flawed testing or a flawed chat system (or both) they felt that their servers could not handle the lag from users having more than 25 groups.

We all know that the system is flawed, because it frequently drops messages, and lately group chat sessions have been crashing a lot, the Free Scripting Library especially. And as for flawed testing? I think the Lindens must have been testing the group chat lag with a "worst case scenario". Perhaps this would be done by having all of the testing groups sending and receiving chat messages continuously. A valid test for seeing worse-case load, but not a valid test for everyday load.

For me, the only groups I get a lot of chat from are Free Script Library and Isle of Wyrms Citizens.

Sunday, June 21, 2009

Oblivion on Wine 1.1.24

Well, last friday version 1.1.24 of Wine was released, and after visiting family over the weekend I came back and built the new version. I know I could just install the stock version, but I like the small but noticeable framerate increase I gain from my custom compiling flags. And believe me, I will notice. I notice lag in games more than other people do, because of my higher visual standards. Anyways, once again here is my test machine:

Processor: AMD Athlon X2 5000+ Brisbane
Memory: DDR2-800 SDRAM
Video Card: BFG Tech GeForce 9800 GT, 1gb of video RAM, overclocked out of the box
Operating System: Arch Linux 2009.02, i686 architecture
Linux Kernel:
Video Driver:
Wine: Version 1.1.24, compiled with these flags for a small boost to performance: "-march=athlon64 -mmmx -msse -msse2 -msse3 -m3dnow -02 -fomit-frame-pointer"

This version has a slightly improved framerate, as I was not noticing as much lag.

This is the most noticeable change in Oblivion. Crashes are occuring much less frequently in this version. So far, I have had no crashes on startup, one or two on exiting, and the crashes on game loading still occur, however. Crashing when enabling or disabling mods does not occur for me anymore, perhaps because I am using OMOD in order to do so. And I haven't seen the crash while waiting reoccur in either 1.1.23 or 1.1.24, so I am wondering if that one was just a fluke.

The Oblivion script extender still doesn't work, throwing the same errors on the command line. I have sent an email to one of OBSE's developers, but so far have received no response. Anyone who is interested in seeing this fixed should vote for it here:

You'll need to register for the site, which shouldn't take very long at all.

Monday, June 15, 2009

Oblivion on Wine 1.1.23

Greetings all. I have decided to begin reporting how well Oblivion runs under each version of Wine, a compatability layer for running Windows games and applications under Unix and Unix-like systems such as Linux, Mac OS X, etc. Here is my test system:

Processor: AMD Athlon X2 5000+ Brisbane
Memory: DDR2-800 SDRAM
Video Card: BFG Tech GeForce 9800 GT, 1gb of video RAM, overclocked out of the box
Operating System: Arch Linux 2009.02, i686 architecture
Linux Kernel:
Video Driver:
Wine: Version 1.1.23, compiled with these flags for a small boost to performance: "-march=athlon64 -mmmx -msse -msse2 -msse3 -m3dnow -02 -fomit-frame-pointer"

To start things off, I installed Oblivion and configured Wine as per the instructions detailed on the Unofficial Elder Scrolls Pages. I would recommend installing the directX headers even though it isn't required past version 1.1.20, as there is an annoying error window about dxdllreg.dll that pops up if you don't.

My Impressions on 1.1.23: Oblivion runs with far less lag than it did in previous versions, thanks to the improvements to Wine's direct3D code. I can play on High graphics settings (HDR disabled) with no problem, without installing any of the mods used to reduce lag (operation optimization, qarl's reduced normals, etc.) The castles and the cities which previously lagged for me at single-digit frame rates (Cheydinhal, Bravil) now run much much better. As well, shaders work much better, pbuffer has none of the problems I had with it in the past (crash or screen flipping upside down when entering outdoor areas). And all of this is running "fullscreen", in Wine's virtual desktop. I would normally run it native fullscreen, but I do so due to some crashes (frequent in both Windows and Wine), and my tendency to multitask.

Also, the Oblivion Mod Manager now works under Wine, allowing you to change mod loading orders and install mods that are distributed in the omod format. However, to use it you will first need to install winetricks. On arch, you run "yaourt -S winetricks", and on Ubuntu/Debian you run "sudo apt-get install winetricks". Then, when winetricks is installed, you run "winetricks dotnet20" to install .Net 2.0. The only notable problem is some minor interface bug, which can be mildly annoying. (kudos to Timeslip for releasing OBMM under the GPL)

What Doesn't Work:
  • HDR (High Dynamic Range) doesn't work. You'll be greeted by a blank screen if you have it enabled. If you do want HDR, give the Fake HDR mod a try, though I haven't tested it yet.
  • Antialiasing doesn't work, at least for me. It might work for some people, though.
  • The Oblivion Script Extender mod still doesn't work, so you can't run mods that use it, such as the keyring or deadly reflexes.

Minor Problems:
  • Sometimes when the loading screen comes up when changing areas or fast travelling, the loading screen will rotate 180 degrees.

This version has several issues with crashes, but some of them are easy to work around. It is recommended that you keep a terminal window open, so you can enter the command "wineserver -k" if Oblivion freezes on a crash.
  • Crashing on Startup: This happens on occasion, when Oblivion switches to fullscreen mode. If this occurs repeatedly, what I do is I run "wineserver -k" on a terminal, and then I restart Oblivion from its launcher, wait a few seconds, then close it. Then I restart the launcher again, wait a few seconds, and then start Oblivion. If I get another crash, do the "restart and then close" part twice.
  • Crashing after Enabling/Disabling Mods: Oblivion sometimes crashes after changing the mods list. What you do when enabling or disabling is you exit the launcher after changing the mods you're using. Then, you restart Oblivion normally.
  • Crash When Loading a Saved Game: Oblivion frequently crashes when loading or continuing a saved game from the main menu. What you do is you start a new game (press space to skip opening movie), and then you load your saved game.
  • Crash When Using Local Map Outdoors: This one is nasty. For now, I just recommend to avoid using the minimap when outdoors. However, it sometimes does work, so the problem may be occuring at random. Though, it seems to me like it repeatedly occurs in certain areas.
  • Crash While Waiting: This has occured at random, and only seems to occur when I am waiting for a long period of time, such as when doing Glarthir's quest.
Oblivion Script Extender: The problem that caused OBSE to fail previously is gone, but a new problem has come up. I've placed the terminal output from it below, in case anyone knows what is going on. If you do, please tell me in the comments section:

wine: Unhandled illegal instruction at address 0x7ee347b0 (thread 0019), starting debugger...
Unhandled exception: illegal instruction in 32-bit code (0x7ee347b0).
Register dump:
CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
EIP:7ee347b0 ESP:00efea0c EBP:00efea18 EFLAGS:00210206( R- -- I - -P- )
EAX:00340000 EBX:7efe4448 ECX:7efecaa8 EDX:00000000
ESI:00340000 EDI:00340005
Stack dump:
0x00efea0c: 7efc3a9e 00340005 7efe4448 00eff498
0x00efea1c: 7efc583b 00340000 00340005 0d7cb338
0x00efea2c: 01c9ed22 00000000 00000182 00000001
0x00efea3c: 00000000 00000000 00000000 00000000
0x00efea4c: 00000000 00000000 00000000 00000000
0x00efea5c: 7efe4448 7ffd4000 7ffd41d4 00eff498
=>0 0x7ee347b0 GetTempFileNameW+0x220() in kernel32 (0x00efea18)
1 0x7efc583b call_thread_func+0x4b() in ntdll (0x00eff498)