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

Pure Insanity

Sorceror
1. True, but the way that Praxiiz is doing it. Will allow for this rule to be broken for the first time ever, which is beyond sweet.
2. You only need to register the maps with the mapdefinitions.cs file, no core mod needed.
3. This new system will apparently handle creating/loading/saving these new bonus maps, so it doesn't have to be an existing map id.
4. The new maps can be w/e you want, they don't have to be clones like we've had to do in the past. Will be entirely new maps, apparently with insane size possibilities.
5. Not true as these maps exists on their own new id.

Basically, this system will by-pass a few of the client restrictions that we've been stuck with for as long as we can remember. Allowing us to have a shit ton of new additional maps, of different sizes. Still can't wait for the new release, old system was slow as hell at saving statics and stuff. And the new bonus maps sound awesome. =D
 

Praxiiz

Sorceror
If I remember correctly, v0.44 already has the faster save system in place (the release on page one of this thread). It saves off fragments instead of the entire client files, which makes it immensely faster. When you want to save the full Map#.mul, Statics#.mul and Staidx#.mul you just use the export command.

If you want to just wait for the next release, I am getting really close. I had a problem with the client not wanting to log into an auxiliary map (it would switch to an auxiliary map from a normal map fine, but it had trouble when a player logged out on the auxiliary map because of how the client loads the first map when someone logs on), but I solved this problem and it seems to be really stable. I still need to test it on a variety of clients.

I have one more corner case I need to take care of, and then some clean up before I can release.
 

Praxiiz

Sorceror
I'm now testing the system thoroughly before I release it. I am working testing the map wrapping right now, and I had a question for those of you who have altered the existing OSI maps. Most maps I've seen have ocean on the edges and the server wraps your boat around the world when it gets close to an edge. Has anyone ever made a map that is completely land? I am wondering how the server reacts to a player that is running towards the wrap point of the map.
 
I'm now testing the system thoroughly before I release it. I am working testing the map wrapping right now, and I had a question for those of you who have altered the existing OSI maps. Most maps I've seen have ocean on the edges and the server wraps your boat around the world when it gets close to an edge. Has anyone ever made a map that is completely land? I am wondering how the server reacts to a player that is running towards the wrap point of the map.

The wrapping only occurs threw the baseboat.cs from what I've tested, I had to write my own wrapping when I made a flying script years ago.
 

Thagoras

Sorceror
The wrapping only occurs threw the baseboat.cs from what I've tested, I had to write my own wrapping when I made a flying script years ago.

So, in other words, one should never have open land on map edges. Good to know.
 

Sythen

Sorceror
if you want to make regional rpg maps with no wrapping (old dungeons and dragons style) you can do so by surrounding your map edges with mountains and sea wrap points with invisible blockers in-game.
 

Pure Insanity

Sorceror
I think it would be more neat to treat each facet as it's own continent or something, and wrap all the maps into each other. Like keep going east to eventually reach Fel, south for Ilsh, ect. Then you could stop using the whole magical rip in space and time thingy that everyone calls a moongate.
 

tass23

Page
I don't know how many of you played on an OSI shard years ago, but I recall there being server lines on a map. Now the issue I'm thinking of here is, lets say you're in an unrevealed area walking around discovering, you can't see mobs because they are in an unrevealed area, or you can? What sucks about this is, if you can't see them, and they can see you, lots of times it's going to be a pretty quick death and I can see players getting pretty pissed dying over and over just walking around and unable to see mobs.

Praxiiz, what is the radius around the players that the map is going to start revealing itself? Is it like a half arc 5-10 tiles in front of a player, more or less?
 
I think it would be more neat to treat each facet as it's own continent or something, and wrap all the maps into each other. Like keep going east to eventually reach Fel, south for Ilsh, ect. Then you could stop using the whole magical rip in space and time thingy that everyone calls a moongate.


This is easy to do, just script in a new wrap that moves players to the edge of another facet instead of the opposite side of the map.
 

Praxiiz

Sorceror
The system updates 25 blocks at a time. This means that if you're standing in a block, it will update 2 blocks in every direction. This means that if I'm standing close to the center of the block, it will update two blocks all around me (16 tiles) plus whatever tiles I have in my block. So its anywhere from 16 to 24 blocks in a single direction.

I have attached two screenshots, both with game windows of 1280x1000. My overall screen resolution is 1920x1080, so I wasn't able to capture anything larger for a game window. The black triangles in the corners show where the client stops rendering the game window, regardless of how large your resolution. In theory, if you had your resolution high enough, you'd see the entire game window square and black edges all around it.

The black areas are caused by the game client and have nothing to do with my system. In my system, the unexplored areas just look like greenacres grass. (The green grass in the second screenshot is what unexplored map looks like.)

In the first screenshot you can see that the client has just received a block update, and you see a few of the statics north of me that are in the black portion.

update_range.jpg

In the second screenshot, I've walked 7 tiles to the north. You can see two rows of tiles that haven't been streamed to the client yet, but if I take one more step, it will update.

update_range.2jpg.jpg
 

Praxiiz

Sorceror
Also, the player will be able to see monsters regardless of the what the map looks like. In this final screenshot you can see an orc on the top side of the map. If I walk one tile to the south, he will disappear even though there are 3 tiles north of him. This happens on the regular OSI maps as well.

update_range3.jpg

When I chose the amount of blocks to update around the client, I did so after putting the client in a large resolution like this. What it really does is make it so that whatever your resolution, the amount of blocks that are updated will keep up with it, and in cases where you are running a normal resolution (800x600, 1024x768, etc) you'll be updating a few blocks that are off screen.
 

tass23

Page
Praxiiz said:
What it really does is make it so that whatever your resolution, the amount of blocks that are updated will keep up with it, and in cases where you are running a normal resolution (800x600, 1024x768, etc) you'll be updating a few blocks that are off screen.
Okay, awesome! That's what I was hoping for. I was just concerned that the map might not update fast enough if a player were running for example, but if it's updating a few blocks that are already off screen, sounds like you've got that taken care of. :)
 

Praxiiz

Sorceror
Also - for players wanting/needing their exact coordinates - they can always use a sextant and convert back to coordinates. That will give them the real location on the map, which they can then use in easyuo scripts. Gives some meaning to the useless thing :)
 

m309

Squire
Praxiiz, the possibilities with the work you're doing make it hard for me to stand up after reading. Good stuff.
 

Praxiiz

Sorceror
There will be a few known issues with this upcoming release. The first one is that Razor's Auto-Queue does not play well when a player is on an auxiliary map. I will be working on this issue in upcoming releases, but I don't want it to delay this release. For now just turn off auto-queue on the More Options tab on Razor when you're on an auxiliary map.

I am now going through a short list of things to clean up before the release. I am expecting to release either some time today or tomorrow.
 

Praxiiz

Sorceror
As I'm cleaning things up for the release, I just had to say, -hash- you are awesome.
-hash- said:
There exists a packet that allows you to do this as well:

0xB4 - Target Obj List
----------------------
Client->Server:No
Server->Client:Yes
Length:dynamic

byte 0xB4
short size
bool/byte allowGround = true
int targetSerial
short x = 0
short y = 0
short z = 0
short numEntries
loop x numEntries
{
short artworkID
short hue
short x
short y
short z
}

The client responds with a normal 0x6C Target packet when placed.

Perfect and accurate. Allows me to remove a big chunk of code on the client side.
 

tass23

Page
So Praxiiz, are the commands going to be the same? or will you be updating that first post with more info for this release?
 

Praxiiz

Sorceror
This release hasn't really focused on the editing aspect of the system. I've spent most of my time in this last release working on client side code getting the client to be able to support additional maps. One of the most important things to me is stability. In my opinion, the system is useless if it isn't dependable and stable. I've literally rewritten and refactored 95% of the client side code base in this release. I've rewritten the auxiliary mapping system twice now just so it would be stable.

I've implemented unit testing on my development end in both the C++ part (using GTest), and the C# client part (using XUnit). While I don't have near the code coverage as I would like, I am going to continue to write unit tests and increase code coverage as I continue to develop the system. I don't really have any QA right now other than myself and those who use my system.

I will be updating page one with the changes, and adding instructions on how to set up auxiliary maps. None of the commands have changed (although I'll probably try to get [m and [area working with the existing commands before I release).

I haven't forgotten about the editing aspect of the system and how clunky it is. I guess I've been hoping that someone would help out on the server side and contribute some commands, but regardless, I do have plans to extend them. This release has been a really slow release. I don't think the next few releases will take as long, but it will really depend on what I choose to do.

Here is my list of possible (maybe possible) ideas for up coming releases:
Extension of existing editing commands to make map editing faster (including cave entrances)
Pandora Plugin
Overlay Editor Plugin
Gump system on the serverside for configuration
Gump system on the serverside for editing
The grid system shown earlier in this thread for better in-game targeting
Random Dungeon Generator
Random Terrain generator using fractals, or some other approach
Catastrophe Map Commands (volcanoes, tsunamis, meteors, earthquakes, sinkholes and more)
Transparent water (as seen in this thread, I've experimented with this and I believe I can make an option to replicate it using this framework)

This last transparent water idea got me thinking about a way to build a lake so that it would be interactive. My idea is to use a combination of tile flags in the tiledata file to provide some water tiles that would be both transparent and passable (maybe using the foliage flag and transparency flag in tiledata). This would let you fill the surface with a bluish transparent tile, but when players walked into it, they would fall under it. I don't know if it would be practical to do an entire ocean using this technique, I haven't experimented with it on a massive scale yet. The experiments I have done with a transparent/foilage water tile have found mixed success. The transparent water effect isn't hard to do, but if you try to apply the foliage flag, the whole tile becomes some what ugly.

So that idea might not be successful, but if it does somehow work, it would be cool to have a system that tracks if you're underwater and provides drowning/swimming. The boat system would also have to be redone to allow ship movement over the tiles, and I haven't even considered how high seas could mess it up.

But it is something I'd like to research / experiment with at some point.
 

Pure Insanity

Sorceror
This release hasn't really focused on the editing aspect of the system. I've spent most of my time in this last release working on client side code getting the client to be able to support additional maps. One of the most important things to me is stability. In my opinion, the system is useless if it isn't dependable and stable. I've literally rewritten and refactored 95% of the client side code base in this release. I've rewritten the auxiliary mapping system twice now just so it would be stable.

I've implemented unit testing on my development end in both the C++ part (using GTest), and the C# client part (using XUnit). While I don't have near the code coverage as I would like, I am going to continue to write unit tests and increase code coverage as I continue to develop the system. I don't really have any QA right now other than myself and those who use my system.

I will be updating page one with the changes, and adding instructions on how to set up auxiliary maps. None of the commands have changed (although I'll probably try to get [m and [area working with the existing commands before I release).

I haven't forgotten about the editing aspect of the system and how clunky it is. I guess I've been hoping that someone would help out on the server side and contribute some commands, but regardless, I do have plans to extend them. This release has been a really slow release. I don't think the next few releases will take as long, but it will really depend on what I choose to do.

Here is my list of possible (maybe possible) ideas for up coming releases:
Extension of existing editing commands to make map editing faster (including cave entrances)
Pandora Plugin
Overlay Editor Plugin
Gump system on the serverside for configuration
Gump system on the serverside for editing
The grid system shown earlier in this thread for better in-game targeting
Random Dungeon Generator
Random Terrain generator using fractals, or some other approach
Catastrophe Map Commands (volcanoes, tsunamis, meteors, earthquakes, sinkholes and more)
Transparent water (as seen in this thread, I've experimented with this and I believe I can make an option to replicate it using this framework)

This last transparent water idea got me thinking about a way to build a lake so that it would be interactive. My idea is to use a combination of tile flags in the tiledata file to provide some water tiles that would be both transparent and passable (maybe using the foliage flag and transparency flag in tiledata). This would let you fill the surface with a bluish transparent tile, but when players walked into it, they would fall under it. I don't know if it would be practical to do an entire ocean using this technique, I haven't experimented with it on a massive scale yet. The experiments I have done with a transparent/foilage water tile have found mixed success. The transparent water effect isn't hard to do, but if you try to apply the foliage flag, the whole tile becomes some what ugly.

So that idea might not be successful, but if it does somehow work, it would be cool to have a system that tracks if you're underwater and provides drowning/swimming. The boat system would also have to be redone to allow ship movement over the tiles, and I haven't even considered how high seas could mess it up.

But it is something I'd like to research / experiment with at some point.

The transparent water thingy...you can already do that without any client mods/server mods for just the basic look.

I've done this before. I used the blood tiles, hued a good blue. Renamed to water, then I create a new set of dungeon pieces (also hued a nice blue) that gave a great look if looking outside the water, and kept a nice looking look when under the water tiles to make it look like you're under water. You can track them in the area with something as simple as a region.

Although the area I did this in, wasn't in a...boating area. Not sure how well it'd work or if it a boat could even move over these tiles.

The blood tiles (most of them) look like water when used like how I used them. Plus they're already transparent, and passable. =D
 
Top