VoodooGem

Post » Tue May 08, 2012 3:05 am

tl;dr: The Voodoo Shader Framework is a graphics extender that works with multiple games, allowing the same shaders to run on all of them. It's capable of post-processing (fullscreen, things like bloom and SSAO) and materials (shaders attached to a texture). The difference from other shader mods is plugins (Voodoo uses them to support games and can load extra ones, like script extenders), wider support (not just one game, same shaders work in any game with a plugin) and faster (for simple stuff, most testers report no FPS hit). Fast, simple, free, open-source, well-documented and incredibly flexible. Wiki, code, and other info at:

http://www.voodooshader.com
Comprehensive graphics framework for adding and extending shaders during development or after release.


If you're interested in more details about Voodoo, please keep reading (or skip to the bottom for links). Anyone with suggestions is encouraged to post. Anyone willing to help test, artists interested in what Voodoo can do for mods, or programmers curious about contributing code, please check the bottom of the post.

Intro:
After working a bit on the Morrowind Graphics Extender, porting a few shaders to the Oblivion one, and then writing an extended equivalent for Neverwinter Nights, I got tired of the constant porting and tweaking and incompatible bits. So, after a few requests for graphics extenders for other games (the basics are quite boring), I decided to put together a system capable of handling almost any game. After much trial and some error and many suggestions, the current system was born. The framework has been under development for some time, with a wide variety of outside influence keeping it sane and stable (primarily from friends and coworkers who have experience with similar projects), and the core elements are complete and tested.


What is the Voodoo Shader Framework?
The Voodoo Shader Framework is a large chunk of code to make graphics mods easier.

Instead of redundant and conflicting systems for each game, it uses a single universal core and plugins to fine-tune support for each game. The core handles loading config files and shaders, so one shader will work in any game with a Voodoo plugin.

In addition, a lot of maintenance and upkeep tasks are handled through Voodoo. Tools to help work with game resources, images, and even downloading updates to plugins are all provided. None of them are required, but they are there to make life easier.


What can Voodoo do for me?
It can improve the graphics of your old games and help you tweak the new ones.

For games that already have graphics extenders, it can often provide more features or better performance. With the configuration and update tools, Voodoo is a complete system, not just a few DLLs and some text files.

Perhaps more importantly, Voodoo provides consistency. You get the same tools, the same system, and the same effects across different games. You can set up your favorite look, and then just add on a few tweaks that each game needs.

A few shots of the basic functionality across a few games:
https://www.voodooshader.com/screenshots/morrowind-1.jpg
https://www.voodooshader.com/screenshots/oblivion-1.jpg
https://www.voodooshader.com/screenshots/skyrim-1.jpg
https://www.voodooshader.com/screenshots/fallout3-1.jpg
https://www.voodooshader.com/screenshots/nwn2-1.jpg
https://www.voodooshader.com/screenshots/gothic3-1.jpg
Same code, same shader, different plugins and settings.


How does Voodoo work?
A lot like other graphics mods, but less one big blob.

The main chunks are the core and the plugins. The core doesn't vary between games; it provides the basic shader loading, texture handling, and other important basics like logging and plugin loading. The plugins do the detail work, tying the core into the game. Plugins handle drawing your effects at the right time to get them under the menus, and can even provide improved water or other effects. All Voodoo plugins must provide a minimum set of features, to ensure compatibility across the system, but are free to do more for their game.

Each game plugin has a title related to the game name, plot, or something clever someone came up with. For Morrowind, its Gem, Oblivion is Sigil, Fallout 3 is Raven, Neverwinter Nights is Frost, and Neverwinter Nights 2 is Shard. The working title for Skyrim is currently Storm, but this isn't definite yet.

Voodoo provides two methods of loading into games. One is a Fraps-like GUI which is left running and loads into games as they start up. The alternative is a drop-in DLL, which some of the older graphics mods use. Both are provided and tested, so it's a matter of preference.

The Voodoo GUI also provides a simple method to download updates to the framework, or new plugins. This is all handled over a secure connection to the main Voodoo server, by simply downloading lists of available plugins (no personal data is uploaded). For those wanting to do it manually, downloads links will also be made available for new releases.


When/Where can I get Voodoo?
The framework isn't quite done yet, but I am looking for folks able to help test. Previous testing has gone great, and the latest upgrades are almost ready. The Skyrim module is partially complete, sharing a lot of basic code with Oblivion and other DX9 games. Testing will be done semi-closed at first, with a small group verify that things work before the public testing release.

I will be keeping this thread, and the others for other games, up-to-date with progress as it comes. Release announcements will be posted as necessary.



For the time being, anyone interested in any way is encouraged to get in touch. Post, PM, email, chat, whatever. This thread is open for suggestions, comments, and requests. I have a simple https://github.com/peachykeen/VoodooShader/issues, set up for everything, on the https://github.com/peachykeen/VoodooShader. If you just want to drop by an suggest something, Voodoo stuff is often discussed in the #voodoo (and hijacked #morrowind) channels on the Chatspike IRC network. You can also send over a PM or email.

A https://github.com/peachykeen/VoodooShader/wiki/FAQ is located on the project wiki, with hopefully a decent variety of answers. Any unanswered questions, please post or send them in.

If you are an artist interested in what Voodoo can do for your work, please get in touch. There's quite a bit of variety, primarily the material shader system. It is designed to attach shaders to textures, providing effects beyond what the game itself would.

For any programmers curious about Voodoo, you can see the framework documentation here and all source code is available at https://github.com/peachykeen/VoodooShader. Voodoo is completely open-source under the Lesser GPL, providing plugin authors the freedom to use whatever license they feel comfortable with. It is also designed to be widely compatible with other programming languages beyond the native C++.

For those curious as to the history, some simple graphics are automatically generated from the code on https://www.ohloh.net/p/voodooshader. They don't give much detail, but progress has been steady for a while now and growing slowly as I add modules and work on the design.


Again, questions or comments or contributions of any kind, please post or get in touch. I will be following and updating this thread as I can.

Cheers, peachykeen

Edit Jan 7 2011:
After a few ridiculously complicated bugs (which is what I've taken to calling typos) and a New Year's that I don't fully recollect (hopefully everyone else had good holidays), testing can finally commence! :biggrin:

To begin with, I redid the website a bit with more info on what Voodoo Shader is and some shots of it in action: https://www.voodooshader.com

Currently supported games include Morrowind, Oblivion, Skyrim, Fallout 3, Fallout: New Vegas, Neverwinter Nights 2 and Gothic 3. Testing can be done in any of these, but make sure to note which one you were using.

In a joint test of the (already mostly tested) UI/package manager and Voodoo framework, there are three steps to the process. First, verify you have .Net 2.0 and MSVCR10 installed (links provided). Second, download Voodoo itself. Third, run a game. Detailed instructions are provided.

Testing Instructions: https://github.com/peachykeen/VoodooShader/wiki/Voodoo-Test-Instructions

Please follow these as closely as possible. If you have any questions, comments, or really anything, let me know. That can be done by post, PM, email or on IRC (chatspike.net, #voodoo or #elderscrolls, say my name or voodoo to highlight me).

There are a few issues still hanging around, I'm sure. One known bug, which seems to effect only Morrowind and Oblivion, is a crash-on-exit. This is because of the game not shutting down D3D, which causes some confusion when destroying resources. If you run into any others, let me know.

And before anyone asks, the included shader is intended to be obvious for testing purposes; you just can't miss it. :wink:
User avatar
Liii BLATES
 
Posts: 3423
Joined: Tue Aug 22, 2006 10:41 am

Post » Tue May 08, 2012 9:50 am

How come you never mentioned this to me? And I would gladly test this!

One major question though, you said it's faster. Does this mean that even on my crappy system (2GB RAM, single core processor at ~2.2GHz and ~800MB of graphics memory) I could run some pretty good shaders and what not instead of just using it to bump my resolution to 1280x800?
User avatar
Miss K
 
Posts: 3458
Joined: Sat Jan 20, 2007 2:33 pm

Post » Tue May 08, 2012 8:04 am

I could test out how it works with steam for you.
User avatar
pinar
 
Posts: 3453
Joined: Thu Apr 19, 2007 1:35 pm

Post » Tue May 08, 2012 10:06 am

I finally buy a PC powerful enough to run MGE and everything i throw at it and then you come up with this - i want to cheer you on but somhow i feel self - deflated :)

What will this mean for mods like Vurt's grass?
User avatar
Emma Louise Adams
 
Posts: 3527
Joined: Wed Jun 28, 2006 4:15 pm

Post » Tue May 08, 2012 2:23 am

I don't mind testing this. I don't have a 'Morrowind' installation though, just a 'TC' installation...
User avatar
Janine Rose
 
Posts: 3428
Joined: Wed Feb 14, 2007 6:59 pm

Post » Mon May 07, 2012 11:43 pm

I'd be up for potentially testing this in the near future, after my work on the mod-pack is done. Does it support, or will it support the features like animated grass? Conditional full screen shaders that are easy to use? i.e. to add things like a drunk effect to the game, or what-have you (that would only be on while drunk and not eat up FPS the rest of the time)?


It does sound pretty brilliant :)
User avatar
Paula Rose
 
Posts: 3305
Joined: Fri Feb 16, 2007 8:12 am

Post » Tue May 08, 2012 2:21 pm

At the moment, Gem is set up to use a single shader for testing purposes. Once I’ve made sure everything works properly, a user-configurable list will be used. Gem will also support advanced materials (shaders applied to objects in-game, providing current generation rendering effects).

Emphasis mine. This part very much makes me want to learn how to write shaders... assuming that one could dynamically link shaders to objects through scripts, you could create some pretty neat magic effects. Amongst countless other applications, of course.


Best of luck with this and I'd be happy to help with testing. Projects like MGE XE and Voodoo are rather exciting.
User avatar
Matt Fletcher
 
Posts: 3355
Joined: Mon Sep 24, 2007 3:48 am

Post » Tue May 08, 2012 1:58 am

Edit: Double post.
User avatar
Joie Perez
 
Posts: 3410
Joined: Fri Sep 15, 2006 3:25 pm

Post » Tue May 08, 2012 3:18 am

Count me in for testing :drool:
User avatar
Jaki Birch
 
Posts: 3379
Joined: Fri Jan 26, 2007 3:16 am

Post » Tue May 08, 2012 11:06 am

Wow. this will be interesting. how far along are you? For efficiencies sake I hope this comes to completion, my computer will probably run this rather well :).
User avatar
Kari Depp
 
Posts: 3427
Joined: Wed Aug 23, 2006 3:19 pm

Post » Tue May 08, 2012 5:30 am

How come you never mentioned this to me? And I would gladly test this!

One major question though, you said it's faster. Does this mean that even on my crappy system (2GB RAM, single core processor at ~2.2GHz and ~800MB of graphics memory) I could run some pretty good shaders and what not instead of just using it to bump my resolution to 1280x800?

It depends. Shaders do still cause a FPS hit, that's unavoidable. By doing a clean rewrite and knowing where I'm headed from the bottom up, I can optimize things better than MGE (which kind of twisted and turned on the way). My DX8.9 layer has no noticeable performance hit and fixed a few small bugs that may be present in MGE's, so it should run a bit faster. You won't see magical FPS boosts and no drop while running 900 shaders, but speeds will be improved.

I could test out how it works with steam for you.
Awesome, I'll throw you a test copy as soon as I get release build of that together.


I finally buy a PC powerful enough to run MGE and everything i throw at it and then you come up with this - i want to cheer you on but somhow i feel self - deflated :)

What will this mean for mods like Vurt's grass?
Heh, sorry. :P As for mods like Vurt's grass, I plan on supporting all major MGE features. The more complex ones will take more time, and I may rework some things to be more efficient (like allowing external data files to define some texture and placement info), but distant land, batched grass and whatnot are all on the list. :)

I don't mind testing this. I don't have a 'Morrowind' installation though, just a 'TC' installation...
That's not an issue, as long as it uses the Morrowind engine relatively unmodified (things like the code patch don't matter). :)

I'd be up for potentially testing this in the near future, after my work on the mod-pack is done. Does it support, or will it support the features like animated grass? Conditional full screen shaders that are easy to use? i.e. to add things like a drunk effect to the game, or what-have you (that would only be on while drunk and not eat up FPS the rest of the time)?

It does sound pretty brilliant :)
It will support animated grass and trees, as part of the "all MGE features" goal. Conditional shaders will be usable through a flags setup or by scripting them to turn on/off.

Emphasis mine. This part very much makes me want to learn how to write shaders... assuming that one could dynamically link shaders to objects through scripts, you could create some pretty neat magic effects. Amongst countless other applications, of course.


Best of luck with this and I'd be happy to help with testing. Projects like MGE XE and Voodoo are rather exciting.
I'm not sure how well linking shaders to objects through scripts will work, but it should be possible (not something I'd considered before, actually). Linking shaders to objects before-hand and then manipulating the shader settings through scripts is certainly possible.

That also opens some of the simple things we can't do at the moment, like normal/parallax maps, velvet and fur effects, typical shaders.

Wow. this will be interesting. how far along are you? For efficiencies sake I hope this comes to completion, my computer will probably run this rather well :).
I have an internal (meaning unstable and prone to change) test copy. The core appears to be stable and is certainly functional. The Morrowind bindings have been working (on and off ;)), the Oblivion bindings seem to be working but I'm getting in touch with the OBGE devs, and the NWN2 bindings appear to be working but are still a WIP. Very little done with NWN1 bindings, and the Anachronox and Bloodrayne bindings are still on the drawing board.
The screens I posted are from test copies, so they show shaders running in-game just fine. I held the announcement off until I had visible progress. :)
User avatar
naomi
 
Posts: 3400
Joined: Tue Jul 11, 2006 2:58 pm

Post » Tue May 08, 2012 1:02 pm

Ok, on my PC Knu's SSAO shader drops my FPS from 60 to 3, and truebloom g6_i6drops it down to like 8, so with Gem could I run either of those? (when i run all of the shaders you packed into the file on the shader library i get 0.12 fps)
User avatar
Lifee Mccaslin
 
Posts: 3369
Joined: Fri Jun 01, 2007 1:03 am

Post » Tue May 08, 2012 6:21 am

Best of luck with this :goodjob:
And because we were allowed to make suggestions...
Could you implement proper horizons? http://en.wikipedia.org/wiki/Horizon
((sqrt(1.5*h/8192*385))*5280/385)/s=c
h = player's Z-pos in Morrowind's units.
s = scale, because rendering a couple hundred cells is a pain and Vvardenfell is bigger in lore anyway. (30 like timescale global and lore to game)
c = number of cells that should be rendered.
As an optional thing of course. :cookie:
User avatar
Catherine N
 
Posts: 3407
Joined: Sat Jan 27, 2007 9:58 pm

Post » Tue May 08, 2012 7:43 am

Sounds awesome :)

Could it possibly support KOTOR1/2/Jade Empire in the future (same engine as NWN i believe?)

Best of luck to you.
User avatar
Miranda Taylor
 
Posts: 3406
Joined: Sat Feb 24, 2007 3:39 pm

Post » Tue May 08, 2012 4:01 pm

I knew you were working on something for NWN 1 but I wasn't expecting you'd head toward something like this. It sounds great. Good luck to you!
User avatar
cassy
 
Posts: 3368
Joined: Mon Mar 05, 2007 12:57 am

Post » Tue May 08, 2012 7:41 am

I'll definitely help test this baby out, and I can't wait to see what you have cooked up. I really need to buckle down and learn programming so I can help with stuff like this. I recently tried learning some c++ (but got svcked back into morrowind), the biggest problem I had with trying to learn programming was the language that was used to explain some of the most basic of processes in coding was way over my head and I got the impression that the guide I was reading was written for people who were already fluent in C or some other language. I would very much like to find a guide that has the technical explanation, followed by the same explanation in caveman speak.

Anyway I've gotten way off track here, keep up the good work, and I wish I could do more to help.
User avatar
Stacey Mason
 
Posts: 3350
Joined: Wed Nov 08, 2006 6:18 am

Post » Tue May 08, 2012 5:08 am

This is great stuff and will help this game last all that much longer.(Sometimes it strikes me that this game will last for so long we will have holodeck technology before itgoes away.)

I will ask the most difficult question now. What kind of time frame can we expect on this if you were to continue working at your present speed. I by no means expect a solid time table but a rough estimate would be great.
User avatar
Lovingly
 
Posts: 3414
Joined: Fri Sep 15, 2006 6:36 am

Post » Tue May 08, 2012 9:19 am

Anyway you could make it support billboards for distant land?
User avatar
mishionary
 
Posts: 3414
Joined: Tue Feb 20, 2007 6:19 am

Post » Tue May 08, 2012 12:24 am

I'll definitely help test this baby out, and I can't wait to see what you have cooked up. I really need to buckle down and learn programming so I can help with stuff like this. I recently tried learning some c++ (but got svcked back into morrowind), the biggest problem I had with trying to learn programming was the language that was used to explain some of the most basic of processes in coding was way over my head and I got the impression that the guide I was reading was written for people who were already fluent in C or some other language. I would very much like to find a guide that has the technical explanation, followed by the same explanation in caveman speak.

Anyway I've gotten way off track here, keep up the good work, and I wish I could do more to help.
I'm studying computer science and took some c++ and I thought that getting started was the hardest part. Once you first get the basics down I thought it was much easier after that so just stick to it and hopefully you'll get it.
User avatar
Phillip Brunyee
 
Posts: 3510
Joined: Tue Jul 31, 2007 7:43 pm

Post » Tue May 08, 2012 3:52 am

*snip*
That also opens some of the simple things we can't do at the moment, like normal/parallax maps, velvet and fur effects, typical shaders.

So how do the velvet fur effects work? Does it apply across everything or can you make it work on only specific meshes/textures? Obviously am thinking of cloth in the game.
User avatar
GPMG
 
Posts: 3507
Joined: Sat Sep 15, 2007 10:55 am

Post » Tue May 08, 2012 5:45 am

Ok, on my PC Knu's SSAO shader drops my FPS from 60 to 3, and truebloom g6_i6drops it down to like 8, so with Gem could I run either of those? (when i run all of the shaders you packed into the file on the shader library i get 0.12 fps)

Both those effects are very, very expensive in terms of per-pixel computations. From my tests at this point, FPS will increase, but you won't magically get all of the speed back. Gem will still have a speed hit, and it will vary based on features and shaders. Hardware will have some effect, since some of my optimizations require features MGE doesn't use. These are usually present, and I'll provide fall-back paths when they aren't, but the fallback will be slower.

Best of luck with this :goodjob:
And because we were allowed to make suggestions...
Could you implement proper horizons? http://en.wikipedia.org/wiki/Horizon

As an optional thing of course. :cookie:
I'll have to figure out exactly how I'll be rendering distant land, but I expect working a formula like that into the far fog distance would be relatively simple (particularly with my current concept). :)


Sounds awesome :)

Could it possibly support KOTOR1/2/Jade Empire in the future (same engine as NWN i believe?)

Best of luck to you.

In theory, yes. It's designed to work with as many games as possible. I already have quite a list I plan to support, ones I enjoy or would like to play with.

Current games with planned support (and % chance of it happening):
Morrowind (100%)
Oblivion (100%)
Fallout 3 (99%)
Neverwinter Nights 1 (100%)
NWN2 (100%)
Anachronox (I think a MW-like DX8.9 system would work, so 80%/probable)
BloodRayne 1 & 2 (80%/probable)

I'm open to suggestions for any other games. If I don't have them, I may be able to pick up a copy, if not, I'd have to do what I can and rely on testers. In my opinion, the more games supported, the more value the entire system has and the more people it will benefit, so I'll be dedicating more time and effort to improving it. :)

I knew you were working on something for NWN 1 but I wasn't expecting you'd head toward something like this. It sounds great. Good luck to you!
Aye, the success of the NWN 1 version surprised me, and I'd been having occasional multigame system requests for some time. Once I found a good way to do it, I started in and here we are. :)

This is great stuff and will help this game last all that much longer.(Sometimes it strikes me that this game will last for so long we will have holodeck technology before itgoes away.)

I will ask the most difficult question now. What kind of time frame can we expect on this if you were to continue working at your present speed. I by no means expect a solid time table but a rough estimate would be great.

If I continue at my current speed and don't run into any major issues, I'll be sending out a basic test copy of the Gem module to Morrowind testers within a week. I ran into a slight bug with Windows a minute ago, so that timeframe is very flexible. I don't get paid for this, so I can't dedicate all my time (need to search for work on the side ;)), but I do enjoy it and spend as much time working on it as I can.

The core module is in a working and apparently stable state at this point, and the shader linker is functional and has most of its features, although not entirely complete.
The MW module appears to be working in the basics, I need to iron out an issue with the hook and do some quick internal testing before I start alpha testing. :)

Anyway you could make it support billboards for distant land?
Yes, that is possible.

I'm studying computer science and took some c++ and I thought that getting started was the hardest part. Once you first get the basics down I thought it was much easier after that so just stick to it and hopefully you'll get it.
Definitely. Some things seem crazy complicated at first, but eventually you make sense of them and once it sticks, you can start putting them together in some fun ways.

So how do the velvet fur effects work? Does it apply across everything or can you make it work on only specific meshes/textures? Obviously am thinking of cloth in the game.
How I have the material system set up at the moment, it is connected to texture name.

When the game starts, my code checks a folder of material definitions. Any properly formed XML files it finds are loaded and added to the material map, ordered by name. When the game loads a texture with the same name, my code loads a shader. Whenever the game uses the texture, I jump in and make it use that shader as well.

To set up cloth in-game, you'd just find a shader (let's say it does a velvet effect and is called velvet.cgfx) and add a little file to the material definition folder like so:
    

Now, you can tweak the shader by changing parameters, so you could use one shader for many velvet colors, or include all the materials for your mod in one file. Anyway, that's the basics of it. Like everything (almost ;)) else about this project, I'd love suggestions from you all. You'll be the ones using it, after all. I made this so that, as a shader designer, I could have everything I wanted in a system. I'm not a fan of using restrictive setups, so any feedback is absolutely welcome.

Edit: I also have a velvet shader already set up and working in CgFX, so for this particular situation, that code snippet is literally all you'd have to do to set it up. I've tested the system a bit in my NWN project and it works pretty easily. I'm upgrading it for this one, but hopefully it'll be as easy to use. It also doesn't get in the way if you don't use my setup, like MGE's rarely-used hook system.

And a post I missed:

I'll definitely help test this baby out, and I can't wait to see what you have cooked up. I really need to buckle down and learn programming so I can help with stuff like this. I recently tried learning some c++ (but got svcked back into morrowind), the biggest problem I had with trying to learn programming was the language that was used to explain some of the most basic of processes in coding was way over my head and I got the impression that the guide I was reading was written for people who were already fluent in C or some other language. I would very much like to find a guide that has the technical explanation, followed by the same explanation in caveman speak.

Anyway I've gotten way off track here, keep up the good work, and I wish I could do more to help.
You're probably right, but once you get the hang of what the patterns are and how they fit together, things start falling into place beautifully. You're welcome to take a peak at my code, of course, and toss over any questions. No promises it'll be easy to understand, some of this can be messy stuff, but I try to document it decently.
User avatar
Nikki Lawrence
 
Posts: 3317
Joined: Sat Jul 01, 2006 2:27 am

Post » Tue May 08, 2012 12:08 am

Sending PMs with a basic alpha version to a few folks now for testing. If it works for most of them, then I'll post it here or PM it to everyone who offered to test. It works great on my system, but that's no guarantee of anything, so we'll have to see. :)
User avatar
Marion Geneste
 
Posts: 3566
Joined: Fri Mar 30, 2007 9:21 pm

Post » Tue May 08, 2012 7:57 am

Don't forget me PK.
User avatar
Craig Martin
 
Posts: 3395
Joined: Wed Jun 06, 2007 4:25 pm

Post » Mon May 07, 2012 11:49 pm

Sending PMs with a basic alpha version to a few folks now for testing. If it works for most of them, then I'll post it here or PM it to everyone who offered to test. It works great on my system, but that's no guarantee of anything, so we'll have to see. :)
Guess i'm not cool enough :frog:

Can't wait till you finish this. Is porting to other games difficult? It seems like sprucing up some older games and replaying them could be a lot of fun.
User avatar
Heather Dawson
 
Posts: 3348
Joined: Sun Oct 15, 2006 4:14 pm

Post » Tue May 08, 2012 8:32 am

Guess i'm not cool enough :frog:

Can't wait till you finish this. Is porting to other games difficult? It seems like sprucing up some older games and replaying them could be a lot of fun.

Nah, nothing like that. :P I'd just like to make sure it works for a few people before sending it out to everyone and getting 35 identical error reports for some little thing I missed. Especially since some of the testers have been having problems getting it set up.

As for porting to other games, it really depends on the game. DirectX games tend to be much simpler than OpenGL. I already have generic setups for DX8 and 9, so it just takes copying those and tweaking them a little for the game's specifics. Being able to port it around for many games is my goal, just have to get the basics working solidly.
User avatar
Irmacuba
 
Posts: 3531
Joined: Sat Mar 31, 2007 2:54 am

Next

Return to III - Morrowind