ServUO needs Refactoring and categorizing

Tasanar

Moderator
ServUO Developer
Oct 16, 2014
4,551
129
32
trueuo.com
Shard Name
Heritage
Donate
Donate money to this user
A while ago @Norman changed the ServUO directories around. It pushed all items into a few folders and has only since caused more confusion. Especially from those moving over from other emulators. Almost everyone who was actively developing hated it at the time, it was still pushed through at the time and then he disappeared leaving us in this weird limbo.

There are still a ton of inconsistencies. Quest items all over, Mobiles all over, stuff still in the wrong folders, ect. I was approached by multiple people within our community who suggested we bring this up (mostly through the ServUO Discord), and I agree.

We should go back to a system where mobiles, systems, and functions where grouped by era and common sense, not just all thrown into one folder.

We should convert this to a milestone task and figure out what actually works best, based on our community.

https://www.servuo.com/threads/possibly-painful-merges-ahead.4422/
This is where it started ^ it was never followed through to begin with and it is not even followed at all to this day. Items, mobiles, ect, have still been grouped to their basic systems and eras leaving it a mess of nonsense going every which way. Want to find an auction safe? Good luck....DemonKnight...that's a named creature? Nope normal....SeedBox....functional? Yet other veteran rewards are in VeteranRewards... We have it figured out just fine because we use it daily but anyone else coming on is beyond confused and I get it..where is the sense in any of this. RunUO made...sense...we can all work together to fix this too. How would the community like to see this changed?
 
Last edited:

Po0ka

Well-Known Member
Aug 19, 2014
732
92
Antarctica
We need as much input as needed, we need a clear tree-list of the folder structure and as much input as possible.
Personally, reverting to the old would be just as much pain to improve later on, so improving right now would already be a good thing.

Ex:
Having a folder for Systems, which would have the Housing system, the Craft system, etc. Each of them containing the right namespace folders suc as Gumps, Items, Mobiles. That way we won't have to search for HouseGump in the general Gump folder, we would simply search in Systems, then the related namespace of what we want, then the desired class.

For the mobiles, splitting them be Era is probably a good solution, this allows shard owners to simply take out the desired era creatures if they want, or making quick edits to say, to all the SA creatures at once.
Splitting them by Melee and Magic however, i doubt that it would be useful, same goes for the general Humanoid folder, which could also be splitted in multiple categories, such as Giants, Undeads, Gargoyles and so on.

To summarize, we need a bullet list hierarchy of folders that we can modify as the suggestion inputs go in.
Furthermore, having that set as a Milestone would be a good idea in my opinion.
 

Ravenwolfe

Moderator
ServUO Developer
Sep 7, 2013
1,162
140
Texas
www.ultimaonlinephoenix.com
Shard Name
UO Phoenix
While I hate the current organization as much as you do, think on the following:

1. This will cause issues with current shards and people who started with it like this. They are probably used to it just like we were used to the original way. More importantly, this requires many changes to the structures and a ton of merging issue for existing shards.

2. If you use Visual Studio (and you should!) then the organization should not really big a big deal since it will find what you want for you.

3. You will never get the community (or even two people) to agree on the structure.

Totally agree with you on hating the structure, but it would cause a lot of grief and considering #2, is it really worth it?
 

Tasanar

Moderator
ServUO Developer
Oct 16, 2014
4,551
129
32
trueuo.com
Shard Name
Heritage
Donate
Donate money to this user
I do not use Visual studio. I do not have it installed and have applied all my updates by hand, since day one. ServUO structure is terrible. Not the fault of our current staff, who do a great job. The few who came before broke it, and it makes no sense and should be fixed.
 

Po0ka

Well-Known Member
Aug 19, 2014
732
92
Antarctica
I'm pretty sure that alot of shards aren't up to date with the current repo and i'm pretty sure many are updating that by hand.
If we would ever get a big update that would prevent backward compatibility, it would need to be announced, approved, and properly documented so that when someone updates a morning, there wouldn't be any surprises.
I do agree that throwing a bomb in the code because someone once threw a bomb isn't a great idea, but as Tasanar said, it's broken and it needs to be fixed somehow, the more we wait, the more it will accumulate bad practices and burden the efficiency.

Welp, my opinion has merely no weight concerning that matter; I don't use ServUO for my development and this problem is one of the few reasons why i'm not.
 

Dexter_Lexia

Moderator
ServUO Developer
Jul 3, 2014
3,935
169
43
Shard Name
Alexandria
Donate
Donate money to this user
No thanks, not again. I use folders search via windows, and I never have trouble finding anything. If you index your files, it will also search contents in the cs files themselves.
 

PyrO

Well-Known Member
Jan 27, 2015
1,167
95
Dexter I would recommend that you either use Cntrl + , in visual studio or something like sublime text. It searches way faster than windows search does.
 
Last edited:

Dexter_Lexia

Moderator
ServUO Developer
Jul 3, 2014
3,935
169
43
Shard Name
Alexandria
Donate
Donate money to this user
Ill try it, thanks pyro. I usually search the scripts/server files only. Windows 10 is significantly faster than its predecessors.
 

Dorth

Member
Jun 6, 2017
5
0
34
As someone who recently switched from RunUO to ServUO, the changes were heavy to learn and I sometimes ask myself why some things are the way they are in ServUO. However, RunUO had a lot of weird partitioning as well. And the idea of merging my changes on my current shard (half of the ones I had I lost going RunUO->ServUO) with a major re-structuring makes me seriously weigh the possibility of branching off at that point in time. While that expression is so annoying in coding, "if it ain't broke, don't fix it" might apply here, since the bad consequences of a big re-org could be worse than all the benefits together.

Maybe, in the meanwhile, moving the SeedBox with the VeteranRewards and other similar actions could be taken as they become obvious, rather than in the search of a perfect system.
 
Last edited:

Ravenwolfe

Moderator
ServUO Developer
Sep 7, 2013
1,162
140
Texas
www.ultimaonlinephoenix.com
Shard Name
UO Phoenix
I dont have an issue at all moving things as we make changes, just not all at once. The bigger problem is gonna be deciding what goes where. Ill bet two people would disagree with placement 75% of the time. So now your gonna have people sending pulls moving things where they think they should go. A slippery slope i think.

Again, i use VS, so it makes no difference at all to me.
 

Shazzy

Well-Known Member
Mar 6, 2015
532
32
56
Wisconsin
shazzysuoshard.proboards.com
Shard Name
Shazzy's Shard
Maybe, in the meanwhile, moving the SeedBox with the VeteranRewards and other similar actions could be taken as they become obvious, rather than in the search of a perfect system.
I totally agree with moving the obvious to start with.
One of the emulators out there has all there scripts as Data/Then Era It Was Released <---THAT is hard to follow. I honestly do not know what ERA Pub 87 was :(

Services/VeteranRewards/the system and all rewards available in tha folder makes sense.
Mobiles/Monsters/AOS, SE, ML, etc....I could see....ish....
But then are you going to do:
Items/Addons/AOS, SE, ML, etc.....there I see a train wreck :( And when it comes to anything that is craftable, the craft systems thenselves seperate out eras for those who want to choose.

I would decide on what your first level directories are going to be, for examle Quests. Services and Scripts both have a Quests forlder. In my opinion, you could make Services as a Definate level one folder. Inside you could have:
Quests/<Era>/<Quest Name>/Every FRIGGING thing that has to do with that quest from the giver, gump, items, reward, whatever. All in one.

When I go to look something up, they do not have the reward here, the name of the quest there, the name of the NPC somewhere else.

Also, to me it is like throwing all the gumps into one Gump folder. It just makes no sense.
Just my opinion I could be wrong :)
 

Ravenwolfe

Moderator
ServUO Developer
Sep 7, 2013
1,162
140
Texas
www.ultimaonlinephoenix.com
Shard Name
UO Phoenix
Just my opinion I could be wrong :)
And thats the whole problem. Everyone has an opinion and none of them are "right" or "wrong".

You say everything pertaining to a certain quest should be in its own folder. Sounds good, but code is reused. A gump might pertain to several quests. Some NPCs have more than one quest or more than one purpose. How do you decide a folder on that?

Sorry to beat a dead horse but use your tools and the structure wont matter. I'm helping on a ServUO shard and a RunUO shard at the same time and the different structures dont change a thing for me.

If this project was under a single person, it would be easy to reorganize, but a community project, no one is going to agree on the structure and it would be a lot of grief for current shards. If it is indeed as Pooka said, that people arent snycing and are doing updates by hand, then the structure shouldnt matter anyway. Im also unclear on the efficiency arguement because the compiler could care less what folder something is in.
 

Vorspire

Vita-Nex: Core
Admin
ServUO Developer
Jul 29, 2013
1,131
238
32
United Kingdom
core.vita-nex.com
Shard Name
Ultima Shards: Multiverse
Donate
Donate money to this user
If the project had proper namespaces and naming conventions, those could have been used to categorize everything, that is how VS does it by default - it treats folders as "namespace providers", so when you do something like "Add -> New Class...", the generated CS file is already namespaced according to its directory tree.

At this point, RunUO/ServUO are too far gone to do this, Mark was going to do this with RunUO 3.0 (which you can see the remains of in the RunUO repository).

The only thing that would be capable of fixing this "mess" would be an application designed to restructure large projects while maintaining functionality.
Problem is, changing namespaces for Item and Mobile classes causes world save errors, and those types would need to be aliased using the [TypeAlias] attribute...

TL,DR; Too much work, not worth the outcome.
 
  • Like
Reactions: Dexter_Lexia

Tasanar

Moderator
ServUO Developer
Oct 16, 2014
4,551
129
32
trueuo.com
Shard Name
Heritage
Donate
Donate money to this user
But why was it even changed in the first place....it made more sense then than it does now. I only use ServUO but I still feel more at home when I look for stuff in the RunUO folders. I am probably one of the odd men out, where I do most of my updates by hand, without programs. These changes did alienate people. I figured it out but I still spend a lot of time *scratching my head* as to why some items and mobiles are placed in one spot, while others in another. It was sloppy when Norman did it and it was rolled in the course of a week. Items in wrong folders, named mobiles in Normal and Normal mobiles in named...still to this day now.
 

Vorspire

Vita-Nex: Core
Admin
ServUO Developer
Jul 29, 2013
1,131
238
32
United Kingdom
core.vita-nex.com
Shard Name
Ultima Shards: Multiverse
Donate
Donate money to this user
All we can do now is as previously suggested - correct things as we see them, as you have found something just now. It would be better to do it over the course of multiple commits, rather than a massive single commit with multiple files being moved.
 

Tasanar

Moderator
ServUO Developer
Oct 16, 2014
4,551
129
32
trueuo.com
Shard Name
Heritage
Donate
Donate money to this user
Agreed as a community and not as one person these changes should be proposed and implemented.

To start I propose:

Change One
- Move all quest items mobiles gumps and rewards into one folder. Since real UO has two quest engines, and we do too, put them both in their own folder in one master folder, inside Services. As it stands we have quests inside of Services and also Quests as their own folder inside of Scripts. @Shazzy is 100% correct with the quests. Move all the quest items and mobiles and gumps, that deal with quests into this one master folder, that can be sub divided.

Change Two - Move DemonKnight from Normal to Named. He is not "normal" since he is one of a kind and only spawns in one location.
 

zerodowned

Moderator
ServUO Developer
Jun 28, 2014
1,770
221
But why was it even changed in the first place....it made more sense then than it does now. I only use ServUO but I still feel more at home when I look for stuff in the RunUO folders. I am probably one of the odd men out, where I do most of my updates by hand, without programs. These changes did alienate people. I figured it out but I still spend a lot of time *scratching my head* as to why some items and mobiles are placed in one spot, while others in another. It was sloppy when Norman did it and it was rolled in the course of a week. Items in wrong folders, named mobiles in Normal and Normal mobiles in named...still to this day now.
I don't disagree with you, I hate that BaseCreaure is in the Normal folder. I prefer base scripts to be all in one folder like they use to.
But, if you're applying updates by hand...then why not just search for the file you need?
Switching files around to different locations could make it more complicated for those who aren't applying the updates like you and I do.
 

Tasanar

Moderator
ServUO Developer
Oct 16, 2014
4,551
129
32
trueuo.com
Shard Name
Heritage
Donate
Donate money to this user
I do it all by hand and have been since Norman changed it. At the end of the day my project will live on. What these changes do is really alienate new users or those switching over, that do not have the know how to edit everything by hand or use programs. (/knowledge of the programs)

I propose making some common sense changes. When I started with RunUO back in 2006 I knew nothing, nothing about C+, file structure, ect. I could still somewhat navigate and find the scripts I was looking for. Especially if that one item was combined in other scripts so I could not search the name out right. I can navigate ServUO just fine, just like I imagine the guy working at the dump knows his way around the mounds of trash. I only propose making it easier for others, and having it make sense.
 

Shazzy

Well-Known Member
Mar 6, 2015
532
32
56
Wisconsin
shazzysuoshard.proboards.com
Shard Name
Shazzy's Shard
When the changes were done last, I moved all the scripts to their new location(and drank heavily!) At this time I can keep up with the updates - I use WinMerge - because the files match in the folders.

If changes are made to better the flow, then I think everyone actively updating would be good with this.
Quests might be one of the harder to agree on sections, so again, what would be the obvious level one folders(some are already in place I am sure)
Over thinking makes things a lot harder :)
So,
Abilities should not be lv1. It should be in with Mobiles(with the Abilities of the 6, etc, mobile abilities) and in with Weapons(weapon abilities).
Accounting - lvl 1
Commands - lvl 1(but even here, do you have GenDespise here or in Services/<NewDungeons>or whatever.....
I will stop here for now :]
 
Last edited: