RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Ultima Live - In Game Map Editing Framework

duponthigh

Sorceror
Yes i am very very impressed with your work , and dedication you have put in to this.Alot of people has there tounges hangen out :p . I had to pull mine back in I almost rolled over it with my office chair.Awsom concept dude Keep up the hard work I also would like to Thank You for you hard gruling work. god bless ya and your family
 

Pure Insanity

Sorceror
10000x10000 is pretty insane...

I doubt I'll even bother doing a map that big, or anyone. As the amount of time to do a decent looking one that big would be crazy, even with this system making it easier.

Ultimately...how many maps will you be able to register? I'd love to put this system to the test, can't wait till you release it. Have you tried populating it with a bunch of maps to see how well it handles it that way, instead of just map sizes.

Also, I know that the system could be used to pretty much keep full maps from getting into the players hands...making it easy to steal/copy. But will the system at the same time, support not having to send it all over the network? By just checking for the maps locally (I'd like to use the system for editing and getting maps ready, but not for live edits.) and not requesting it from the server. Thus allowing servers to just patch all these new extra maps once, and just maintain updates. Instead of updates and changes being live and sent over the network at all times.
 

Pure Insanity

Sorceror
You're right, idk was I was thinking. Just woke up, and posted without thinking. =P

Thanks for the correction. That's a good thing.

Seems looking at the core file, maps aren't limited by size or anything in the core. Which is good news for a system like this, also seems there is no limit on how many that can be registered. Has anyone ever tried just registering a bunch of clones and testing it to see how it handles it?
 

Pure Insanity

Sorceror
Also, am I right to assume that passing the MapDefinitions to see the the file index number to point to map 8 or w/e would work without any edits to the core?
 

Jeff

Lord
You're right, idk was I was thinking. Just woke up, and posted without thinking. =P

Thanks for the correction. That's a good thing.

Seems looking at the core file, maps aren't limited by size or anything in the core. Which is good news for a system like this, also seems there is no limit on how many that can be registered. Has anyone ever tried just registering a bunch of clones and testing it to see how it handles it?
Jakob did an instance system a while back, as far as I know, he had some unresolved issues, but things did work. I'm not entirely sure how many instances he tried at a given time, but I'm sure it was a few.
Here is the link to his works http://www.runuo.com/community/threads/instances-experiment.57254/
 

Praxiiz

Sorceror
Praxiiz, I have to say you're doing an awesome job here with this.
Yes i am very very impressed with your work , and dedication you have put in to this

Thanks for the encouragement. This has been a fun project.

how many maps will you be able to register?

The packet that is used to change maps uses a single byte for the map number. RunUO reserves the first 32 maps for core use. It also reserves 0xFF and ox7F. That leaves 222 maps. Keep in mind that you can register multiple logical maps to a single map on the file system. It's possible to increase the number of maps by changing the packet length and intercepting it on the client side, but I really don't see a need to support more than 222 map files.

But will the system at the same time, support not having to send it all over the network?

Simply remove

/* Begin UltimaLive Mod */
if (BlockQuery != null)
{
m_PreviousMapBlock = BlockQuery.QueryMobile(this, m_PreviousMapBlock);
}
/* End UltimaLive Mod */

from the bottom of the setlocation method in playermobile.cs, and the system will stop doing CRC checks when players move.

It will still handle changing out maps, but you'll have to distribute all your map files to your players. It does check to see if the map#.mul, statics#.mul, and staidx#.mul files exist when they're requested by the server, and if they don't exist, it will create blank ones.
 

Pure Insanity

Sorceror
/* Begin UltimaLive Mod */
if (BlockQuery != null)
{
m_PreviousMapBlock = BlockQuery.QueryMobile(this, m_PreviousMapBlock);
}
/* End UltimaLive Mod */

from the bottom of the setlocation method in playermobile.cs, and the system will stop doing CRC checks when players move.

It will still handle changing out maps, but you'll have to distribute all your map files to your players. It does check to see if the map#.mul, statics#.mul, and staidx#.mul files exist when they're requested by the server, and if they don't exist, it will create blank ones.

That's awesome and good to know. I also doubt anyone would ever need more than 222 custom maps. Especially if the custom maps could be 10000x10000. I can already imagine filling up one that size with a ton of custom dungeons. I really can't wait to play with this. =D
 

clark71822

Sorceror
I can't wait to play around with this either...I got several custom maps that I'd just love to be able to use alongside the default OSI maps instead of replacing them. Plus the fact the server could stream them to the client instead of having to download huge patches would be a plus too :)
 

Paradyme

Page
Hiya, tried this out but I get a crash as soon as I login.

PHP:
RunUO Version 2.2, Build 4292.22853
Operating System: Microsoft Windows NT 6.0.6002 Service Pack 2
.NET Framework: 4.0.30319.237
Time: 12/10/2011 20:24:36
Mobiles: 111208
Items: 512781
Exception:
System.ArgumentException: Destination array was not long enough. Check destIndex and length, and the array's lower bounds.
  at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable)
  at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length)
  at UltimaLive.UltimaLivePacketHandlers.PushBlockUpdates(Int32 block, Int32 mapID, UInt16[] recievedCRCs, Mobile from)
  at Server.Network.MessagePump.HandleReceive(NetState ns)
  at Server.Network.MessagePump.Slice()
  at Server.Core.Main(String[] args)

Using the SA Project Run UO SVN 768.
 

Praxiiz

Sorceror
I can't seem to match that svn version, although the newer one seems to work ok. The error bugs me, but without more info, I can't do anything from my end. I've already reworked a lot of that file anyway, so hopefully it will work itself out in the next version. It would be helpful to have that server in debug mode when it throws the error.
 

Paradyme

Page
Well, it was my friend connecting that crashed it. I cant get it to actually load the modified razor with the client. When I update razor files my razor crashes trying to load uo. Probably just a random error one in a million that only I get heh. Using Server 2008. Razor buggers up when I install more than one version of uo so I imagine something similar is happening for me here.
 

Talow

Sorceror
This error has to do with the files, The client is opening the files in a different way with the patch, You can't have multipal copies open, Create a copy of the files the server needs, move them elsewhere and point the server to the coppied files then try it again.
 

Praxiiz

Sorceror
Just wanted to let everyone know that I'm still working on this and making progress. I've refactored a lot of the project, and I can switch maps, but it isn't stable enough for a release just yet. I am working on some synchronization issues, and as soon as they are finished I will release.

I don't have as much time as I once did, basically just evenings. Some times its hard to do software development for 8 hours a day and then come home and do it some more :)
 

duponthigh

Sorceror
Heck yea i know what ya mean.Im a roofer an my roof leaks lol.My uncle is a mechanic but his car barley starts.Just wanted to thank ya for your update.So not to leave us hangen .Sound awsome cant wait to try it.:)
 
Top