SmartMerger #3

Post » Tue May 08, 2012 8:39 pm

Previous Topic(s):
http://www.gamesas.com/topic/1120974-upcoming-mod-tool/
http://www.gamesas.com/topic/1140559-smartmerger/
http://www.gamesas.com/topic/1146795-smartmerger-2/

Downloads:
http://planetelderscrolls.gamespy.com/View.php?view=Utilities.Detail&id=78
http://rtcvb32.herobo.com/SmartMerger/MW_SmartMerger_v26D.zip

Online Documentation:
http://rtcvb32.herobo.com/MW_SmartMerger_Docs/

Since the previous topic has been locked, here is the new one.
Current version: 2.6D
User avatar
mike
 
Posts: 3432
Joined: Fri Jul 27, 2007 6:51 pm

Post » Tue May 08, 2012 4:00 pm

In regards to http://www.gamesas.com/topic/1146795-smartmerger-2/page__view__findpost__p__20631201, I fixed the issue by reverting back to the version available on planetelderscrolls.

EDIT: And it still crashes when generating a merged_objects
User avatar
FITTAS
 
Posts: 3381
Joined: Sat Jan 13, 2007 4:53 pm

Post » Tue May 08, 2012 3:06 pm

Not sure how helpful I can be, or if you still need the help; Recently re-installed my OS taking care of stability issues. I hate it when my system keeps crashing for no good reason. Anyways, recent news.

SmartMerger D: (Or rename to SmartMergeD?)

Seems I lost some of my sources, but on track once more. So far I can read esm/esp files, write them, and output all information from subrecords, including flags and related. First priority is to try and get nearly all the current functionality in the new sources, although with certain aspects greatly simplified and using inheritance it's cleaner, although not sure if it's faster yet. Contemplating putting sources on http://sourceforge.net/. (what type of license to go for?)

Depending on how much it takes for my head to explode, hopefully I'll get the D version to have all current/previous features inside of 3 months (Guess I'm back in my programming mindframe). I'm trying for 95% code coverage and full unittests (the last 5% being tests where it throws due to a failed test :tongue:)

Beta testers welcome once I have a version that can do something useful. I'm sure spiffyman will be one of them.
User avatar
Celestine Stardust
 
Posts: 3390
Joined: Fri Dec 01, 2006 11:22 pm

Post » Wed May 09, 2012 12:05 am

So, how does dialogue merging look for the future?
User avatar
Kayla Keizer
 
Posts: 3357
Joined: Tue Dec 12, 2006 4:31 pm

Post » Tue May 08, 2012 6:24 pm

I would say expect a big improvement.. I'm just not sure if I should use an array/tree for each entry that keeps track of what's left and right (Which is a lot of overhead, but better in the long run?) or go with with keeping track as it steps through the list what's to the left and right. Both seem to cancel eachother out a bit. I was thinking of having a second list of info records it keeps track of when it can't confirm a record is to the left or right, in which case it tries again later.

I was thinking of having it deferring files to merge if all of it's requirements weren't loaded, but there are cases when you don't have those loaded so file order may be more important than deferring. Not sure yet. So many things to try and keep track of. So many things to decide on. Some things just to try and see how they do.

edit:


Mmmm I've come up with how to handle them, so there's only 2 arrays, a tree and an associative array. Now that I think about it it's quite simple and genius.

Spoiler

Basic idea which I will implement involves two arrays, a tree and an associative array. Goes something like this..
//dclass Record {}class INFO : Record {  int i;  ulong inam;  int opCmp(Object rhs) {   INFO info = cast(INFO) rhs;   if (inam == rhs.inam)	  return 0;   //if INAM isn't the same, then  return i - info.i; }}class DIAL: Record { RedBlackTree!(INFO) tree; INFO[ulong] infoRecords;}

The idea behind it is using a unique I (which is initially large for each info, say a million or something) will allow me to sort and put them into a tree where they can be ordered (and not by their string ID number). If I need to find a specific record to get the number to compare against, infoRecords can return that. Should incorporate speed, sorting, and if I insert a record before another record, it just gets the new I number halfway between the last record and the one it's adding. So assuming it's thousands and it's being 2,000 and 3,000, it would be 2,500. And so on and so forth.
User avatar
Stephanie I
 
Posts: 3357
Joined: Thu Apr 05, 2007 3:28 pm

Post » Tue May 08, 2012 3:07 pm

Hmmm Guess I'll make a note of this...

Added feature to deal with finding land textures easier (at least listing them all)

http://rtcvb32.herobo.com/SmartMerger/MW_SmartMerger_v26D.zip

http://www.gamesas.com/topic/1369632-tes-construction-set-how-to-figure-out-what-texture-is-used/
User avatar
Shelby Huffman
 
Posts: 3454
Joined: Wed Aug 08, 2007 11:06 am

Post » Wed May 09, 2012 1:36 am

Wouldn't it be cool to merger http://www.mwmythicmods.com/MAPoMODSUpdated01.jpg into one mod compilation? I suppose all but "Morroland" and "Blacklight + Silgrad Tower".
User avatar
Hannah Whitlock
 
Posts: 3485
Joined: Sat Oct 07, 2006 12:21 am

Post » Tue May 08, 2012 2:33 pm

I think the same argument goes around for merging the three main masters, plus a couple.

  • Savegame data. The new merged module won't recognize most of the old items, especially if any FRMR's change.
  • Mods likely done by different authors, and may not want works combined.
  • other mods may be dependent on said mods (Expansions or fixes) and may not work (or refuse to work) when merged.

Probably the biggest is that since they are already separate, mods relying on them have to be tweaked. If someone cares to begin a project for that perhaps it would be great. But honestly I don't think I'll have the time fairly soon. Nor would I have the Patience.
User avatar
Imy Davies
 
Posts: 3479
Joined: Fri Jul 14, 2006 6:42 pm

Post » Tue May 08, 2012 1:07 pm

The idea behind it is using a unique I (which is initially large for each info, say a million or something) will allow me to sort and put them into a tree where they can be ordered (and not by their string ID number).
I was actually thinking of exactly that when I was typing my post, why not just assign something completely new(even if only temporary) while sorting things, instead of using whats there because of the problems it causes. I wasnt sure of how you had handled anything so far.(assuming I got what you are saying right)
User avatar
Calum Campbell
 
Posts: 3574
Joined: Tue Jul 10, 2007 7:55 am

Post » Tue May 08, 2012 3:34 pm

Current C implementation uses double linked lists for the info records. That's my choke point in the code; I could add the additional code now to deal with that, but without inheritance and other details helping in normal C I'm not so sure; plus add a feature and all other records need to carry the extra weight too.

Actually I don't think it will help in C. For it to help in C I need to implement a AVL tree (which I have one converted) or something that's self-sorting; Otherwise it will be resorting after each insert and could be as slow as it is now if not worse. Well that's the price I paid for using C. I tried working on v2.7 to add the tree support to managing all the records already (And remove the 'sorting:' block after loading each file :tongue:), but I've decided unless it's really important I'll just leave it be while I try to get my D version done. I want to say the code re-write for basic merging (plus referencing) is over 50% done, and additional features afterwards would be simple to add.

Edit: I've also been wondering what if I use double instead of an int/long and just increment by one instead? That actually sounds like it would be better due to how floating point works...

Spoiler

Edit2: Just to be more elaborate, regarding http://dlang.org/d-floating-point.html, there's a far larger amount of precition between 0 and 1 than there is between 1 and 2. The higher the magnitude the lower the more precise precision gets. It's also an odd interesting thing to read. Basically in a nutshell it will be 1.0 to 1.9999, and the multiplier (and sign) determine what the number actually is. so 7 is calculated as 1.75 * 22. Good reading...
User avatar
gandalf
 
Posts: 3400
Joined: Wed Feb 21, 2007 6:57 pm


Return to III - Morrowind