[WIPz] Automatic Random Enchantment System (ARES)

Post » Wed Sep 01, 2010 6:40 pm

My response to this is multifaceted. One, my gut reaction is "ugh" - I mod primarily to tinker with all the neat toys, so restricting myself like that bores me. Sorry, not going to do that. Two, the new features allow the mod to work much better, which is generally desirable. Third, and most importantly, with a better back-end, the system is much more easily tested. This is pretty obviously important.

I always have to fight the urge to rewrite everything when I pick up a project. It's almost a compulsion, when you know there's a better way to to what you're doing. I usually lose :(

But in this case, since the original scripts were written so long ago (before arrays, strings, inventory refs, user functions ...), I should think a rewrite is pretty necessary.
User avatar
Benjamin Holz
 
Posts: 3408
Joined: Fri Oct 19, 2007 9:34 pm

Post » Wed Sep 01, 2010 11:43 am

Exactly. We're not talking about a new doodad or whatever, we're talking about major improvements in the core backbone of the system.
User avatar
Heather Dawson
 
Posts: 3348
Joined: Sun Oct 15, 2006 4:14 pm

Post » Thu Sep 02, 2010 1:10 am

Uhm. Bump?

:D
User avatar
Adrian Powers
 
Posts: 3368
Joined: Fri Oct 26, 2007 4:44 pm

Post » Wed Sep 01, 2010 10:35 am

:D
Dammit man - I was about to do just that :lol:

We're gonna get banned one of these days...
User avatar
Bonnie Clyde
 
Posts: 3409
Joined: Thu Jun 22, 2006 10:02 pm

Post » Wed Sep 01, 2010 11:12 am

Oh hey. Timely.

I've been poking at ARES a bit in the last two days. Mostly, I'm stumped on NifSE's BSA issues (though I remain in communication with MentalElf), so I needed something else to do when the construction crew down the block severed our Internet, TV, and phone cables (yes, we were thrilled).

Mostly I've been working on the internals of the OBSE plugin DLL, nothing exciting. I decided to redo this bit, since the version I had is mostly being replaced by OBME, and the version I had... wasn't very good. Yeah. So that's exciting, I suppose.

For organization, here's my thoughts: a DLL/ESM pair will form the ARES backbone, and I'll be developing my own ESP to go with it, implementing the affixes I've designed. I'm still somewhat unsure about which details will be in which files; for performance and ease-of-coding reasons, I'd like as much as possible to be in the DLL, but for modularity and ease-of-modification reasons, I'd like as much as possible to be in the ESP and/or ESM (the ESM has the nice feature of providing default functionality that can more-or-less easily be overwritten by a dependent ESP - authors will have to be very careful about doing that, though). For example, the ESM will, by default, point the DLL to the VendorSoulGem leveled list for determining when enchantments of a given soul-value should be found (again, this will be the level that your enemies need to have in order to have these items - this is not scaled to the player but to those who actually have the items - though such details may easily be handled by the ESP), but one could write a "patch" that points it to a different leveled list - perhaps the one used by Nehrim, or by FCOM, or whatever (indeed, this leveled list is going to be ARES's only dependency that might need changing from system to system - otherwise you should be able to drop ARES into any modded game, and have ARES adapt to match what's in the game).
User avatar
john page
 
Posts: 3401
Joined: Thu May 31, 2007 10:52 pm

Post » Wed Sep 01, 2010 11:56 am

sounds like an interesting system. i always liked the prefix/suffix system from diablo. i think it will fit very well within oblivion, and add some much needed variety to magical items
User avatar
kasia
 
Posts: 3427
Joined: Sun Jun 18, 2006 10:46 pm

Post » Wed Sep 01, 2010 10:39 pm

Instead of pointing ARES.dll to a specific leveled list via the ESM, perhaps you could hard-code a unique and reserved leveled list -- let's say, "ARESLeveledList" -- in the same way as DefaultPlayerSpell and suchlike. Do similar with anything else that's 100% essential for operation, eliminating the need for an ESM. Like JRoush's various offerings, ARES would then do nothing by default, requiring a mod to activate it by giving values to its reserved objects/GMSTs/etc. Of course you could still release content in ESM format for easy third-party overrides, you're just not stuck with it (and neither is anyone else).

Standard disclaimer: I may have completely misinterpreted your description and spouted a paragraph of gibberish. :D
User avatar
Vicki Blondie
 
Posts: 3408
Joined: Fri Jun 16, 2006 5:33 am

Post » Wed Sep 01, 2010 11:35 am

For organization, here's my thoughts: a DLL/ESM pair will form the ARES backbone, and I'll be developing my own ESP to go with it, implementing the affixes I've designed.

My suggestion - though I doubt you need it - would be to put the mechanics in the dll and the content in the esm/esp. In other words, write the basic template of an affix and all of the hooks needed to implement it in C++, and then populate the mod file with a table of the affixes.

I've been working on a way to add new form types to the game. If you're interested, I might work with you to create a new 'Affix' or 'Affix Line' form type with it's own internal table and a dialog in the CS - essentially the same setup as Magic Effects, Races, Birthsigns, etc. This may not fit your needs, or your personal style, but it can't hurt to offer :)
User avatar
Catharine Krupinski
 
Posts: 3377
Joined: Sun Aug 12, 2007 3:39 pm

Post » Wed Sep 01, 2010 9:58 pm

Instead of pointing ARES.dll to a specific leveled list via the ESM, perhaps you could hard-code a unique and reserved leveled list -- let's say, "ARESLeveledList" -- in the same way as DefaultPlayerSpell and suchlike. Do similar with anything else that's 100% essential for operation, eliminating the need for an ESM. Like JRoush's various offerings, ARES would then do nothing by default, requiring a mod to activate it by giving values to its reserved objects/GMSTs/etc. Of course you could still release content in ESM format for easy third-party overrides, you're just not stuck with it (and neither is anyone else).

Standard disclaimer: I may have completely misinterpreted your description and spouted a paragraph of gibberish. :D

Well, yes, ARES (dll/esm pair, or dll if I eliminate the esm) would do nothing; that was intended. The point of the leveled list, though, is that it's something that modders can and (presumably) have manipulated - I'm assuming (for the moment) that OOO, for example, changes VendorSoulGem to rebalance when the gems are available - and the goal here is that in most cases, VendorSoulGem will be (hopefully) balanced to match an individual game. I'm basically using VendorSoulGem as a glorified GMST for determining the appropriate level ranges at which to place enchantments of a given strength.

If I use a new form, then it must be changed to match a given game every time. Using a pre-existing form allows me to capitalize on the fact that it may have already been used. That's the goal, anyway.

My suggestion - though I doubt you need it - would be to put the mechanics in the dll and the content in the esm/esp. In other words, write the basic template of an affix and all of the hooks needed to implement it in C++, and then populate the mod file with a table of the affixes.

I've been working on a way to add new form types to the game. If you're interested, I might work with you to create a new 'Affix' or 'Affix Line' form type with it's own internal table and a dialog in the CS - essentially the same setup as Magic Effects, Races, Birthsigns, etc. This may not fit your needs, or your personal style, but it can't hurt to offer :)

That would be... interesting. I could definitely see that being cool. Hrm, I might have to manually populate the ESP the first time, which will svck, but it would provide a great interface for this. Yeah, I'm definitely interested.
User avatar
Anthony Santillan
 
Posts: 3461
Joined: Sun Jul 01, 2007 6:42 am

Post » Wed Sep 01, 2010 10:03 pm

If I use a new form, then it must be changed to match a given game every time. Using a pre-existing form allows me to capitalize on the fact that it may have already been used. That's the goal, anyway.

I'm only passingly familiar with leveled lists (placing items in the game world? Filthy!) but can't you use ARES.es[m|p] to provide an ARESLeveledList which contains a single item that's always returned: VendorSoulGem? Best of both worlds, it would seem.

Of course, I'm mainly playing devil's advocate at this point. One way or another, I'm sure it'll work fine!
User avatar
Project
 
Posts: 3490
Joined: Fri May 04, 2007 7:58 am

Post » Wed Sep 01, 2010 9:42 pm

That's certainly possible but I'm not sure I see the point in doing so. What I'd planned on was a global ref

Can't have global Refs. Well then, I suppose that's probably what I'll do!
User avatar
Paula Rose
 
Posts: 3305
Joined: Fri Feb 16, 2007 8:12 am

Post » Wed Sep 01, 2010 10:29 pm

I've been working on a way to add new form types to the game. If you're interested, I might work with you to create a new 'Affix' or 'Affix Line' form type with it's own internal table and a dialog in the CS - essentially the same setup as Magic Effects, Races, Birthsigns, etc. This may not fit your needs, or your personal style, but it can't hurt to offer :)
Nice. Chalk me up as another "interested party" :D
User avatar
Matt Gammond
 
Posts: 3410
Joined: Mon Jul 02, 2007 2:38 pm

Post » Wed Sep 01, 2010 5:38 pm

Fiore is probably watching to make sure I do this.
User avatar
trisha punch
 
Posts: 3410
Joined: Thu Jul 13, 2006 5:38 am

Post » Thu Sep 02, 2010 1:23 am

Fiore is probably watching to make sure I do this.


:yes:
User avatar
Barbequtie
 
Posts: 3410
Joined: Mon Jun 19, 2006 11:34 pm

Post » Wed Sep 01, 2010 10:18 pm

Well, I more-or-less have a script-based interface for the backbone. I was kind of hoping to hear more from JRoush before proceeding, because the rest is about interfacing between Oblivion scripts and the DLL, and that's going to depend a lot on how JRoush's idea works.
User avatar
Claudia Cook
 
Posts: 3450
Joined: Mon Oct 30, 2006 10:22 am

Post » Thu Sep 02, 2010 2:36 am

Well, I more-or-less have a script-based interface for the backbone. I was kind of hoping to hear more from JRoush before proceeding, because the rest is about interfacing between Oblivion scripts and the DLL, and that's going to depend a lot on how JRoush's idea works.

How soon are you planning to move on this? I was under the impression that this was still on the back burner for you, so I haven't really been working too hard on it.
User avatar
Kara Payne
 
Posts: 3415
Joined: Thu Oct 26, 2006 12:47 am

Post » Wed Sep 01, 2010 2:52 pm

Well, NifSE's kind of stalled, so this came to the fore-front. I mean, no rush, but yes, I'd definitely be interested in what I can do.

OK, what from my end can I do? I mean, I suppose the first thing to do would be to make my classes derive from TESForm, which means I should probably be using COEF, right?
User avatar
Mr. Allen
 
Posts: 3327
Joined: Fri Oct 05, 2007 8:36 am

Post » Wed Sep 01, 2010 9:58 pm

Well, NifSE's kind of stalled, so this came to the fore-front. I mean, no rush, but yes, I'd definitely be interested in what I can do.

OK, what from my end can I do? I mean, I suppose the first thing to do would be to make my classes derive from TESForm, which means I should probably be using COEF, right?

This is what COEF was designed for, but you don't necessarily have to use it. You will have to derive from TESForm, though.

The hangup here is that only one plugin can make the necessary hooks. This could mean a separate plugin (e.g. "AddFormTypes.dll"), but I thought it would be easier to just bundle the code with each plugin that wants to use it, and have hooks set by the first one to load. I haven't written this part of the code yet, so that brings the whole things to a standstill.

I'll be traveling for the holidays for the next two weeks, and I'm not sure how that will affect my progress. If you can you wait until the second week of January, I'll have a working prototype you can copy from. I'm going to be using this system myself for AddActorValues and OBME.

*scurries off to work*
User avatar
Jessica Colville
 
Posts: 3349
Joined: Wed Oct 18, 2006 6:53 pm

Post » Thu Sep 02, 2010 12:29 am

Heh, well, I'll play with COEF in the time being, making things derive from TESForm and such. The project's been going for three years, another two weeks is not going to kill anyone, I think. In the meantime, I'll take a long, hard look at the old scripts - the oldest part of the mod, and the most daunting.
User avatar
Angela Woods
 
Posts: 3336
Joined: Fri Feb 09, 2007 2:15 pm

Post » Wed Sep 01, 2010 11:58 pm

Honestly, from my perspective. This all sounds very taxing.

Very, very, taxing.
User avatar
Harry Hearing
 
Posts: 3366
Joined: Sun Jul 22, 2007 6:19 am

Post » Wed Sep 01, 2010 1:39 pm

Yeah, it is a bit.

I have so far... download COEF. That's about it...
User avatar
JLG
 
Posts: 3364
Joined: Fri Oct 19, 2007 7:42 pm

Post » Wed Sep 01, 2010 11:46 am

another two weeks is not going to kill anyone, I think.
Urgh.... :dead:
User avatar
Julie Serebrekoff
 
Posts: 3359
Joined: Sun Dec 24, 2006 4:41 am

Post » Wed Sep 01, 2010 11:33 am

Done yet? (it was a joke)
User avatar
Tamika Jett
 
Posts: 3301
Joined: Wed Jun 06, 2007 3:44 am

Post » Wed Sep 01, 2010 2:33 pm

Oh no, we're one post from the thread limit! I sure hope DragoonWraith posts an update right away so the thread doesn't get locked before we have a link to the new one! Eh? Eh?
User avatar
Barbequtie
 
Posts: 3410
Joined: Mon Jun 19, 2006 11:34 pm

Post » Wed Sep 01, 2010 2:00 pm

Sure, you can find it http://www.gamesas.com/index.php?/topic/1154410-wipz-automatic-random-enchantment-system-ares/. Minor updates to the first post; nothing those who have followed the thread haven't seen.
User avatar
Guinevere Wood
 
Posts: 3368
Joined: Mon Dec 04, 2006 3:06 pm

Previous

Return to IV - Oblivion