Boats / Travel

Discussions of the design and development of in-game content.

Moderator: Team Members

Post Reply
User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Boats / Travel

Post by John Adams » Mon Apr 27, 2009 7:59 am

A few things came up the other night, and it got us all thinking openly about boats in particular (and other modes of transportation that cross zone boundaries). I spent A LOT of time riding boats in live so I have facts to offer. If you do not spend the time logged in to live, riding boats and taking statistics, please do not bother offering an opinion based on bad memory. Assumptions and guess-work only piss me off, especially when I follow said advice and it turns out to be wrong ;)

On that pleasant note... Here's what I know about the boat to/from Commonlands/Kylong Plains

Fact: Boats leave their port at one speed, and slowly gain momentum which is a great effect visually. It is my opinion that they do this not so much for the visual stimulus, but to ensure the boat "timer" is exact.
  • Proof: Ride a boat, you will see the speed up.
Fact: Boats run on timers. A round trip from Commonlands->Kylong->Commonlands is approximately 5 minutes. I am certain due to server lag or normal latency, there is no >>exact<< measurement of time - any moreso than there is an exact measurement of where an NPC will walk to on their loop/cycle.
  • Proof: I road the boat 10+ round trips, writing down each departure, zone start/end, time to travel from the zone line back to a dock, over and over. Each time was consistent, within 2 seconds.
Fact: Players that are riding the boats all end up on the boat, regardless of the time it takes them to zone. Doesn't matter if your machine is fast or slow, the boat is where it is going to be at the exact time it is supposed to be there.
  • Proof: I rode the boats on 2 computers, 2 accounts, one machine considerably "laggier" than the other. As both toons emerged, I would do a /loc on both, and regardless what time a toon zoned through, the boat was at the same x,y,z (approximately, since 2 toons cannot occupy the exact same x,y,z duh)

    Note: Remembering EQ1 boats, which would have to be almost 8 years ago, boats used to "wait" once the players zoned through. Some more than others. EQ2 boats DO NOT WAIT. Soon as you (the player) zone through, your boat is already moving, and may almost be to it's destination waypoint.
Fact: You cannot /camp while travelling. If you try this on a boat, you are told you cannot do it.
  • Proof: "You cannot camp while on a transport."

    Note: Casting? Anyone know FOR A FACT you cannot cast while on a transport?
Fact: If you LD on a boat, you do NOT come back to game on the boat. You are transported to the nearest dock to where the game detects you have disconnected.
  • Proof: I /exit the game right before zoning to Kylong from Commonlands. This means, I LD'd IN commonlands, yet when I logged back in, my toon was standing on the Antonica dock (not the Commonlands dock) in Kylong. What I am kinda "assuming" here is that the live World did not actually detect my LD'ness until the boat arrived at Commonlands dock, then took off for Antonica. Perhaps that's why I ended up on the not-nearest-to-Commonlands dock. More testing required, but I doubt this is that big a deal.
Fact: Harbormasters --
  • a. When their boat is out of the zone (despawned), they say:
    "The Overlord's Edge is currently in Kylong Plains."

    b. When their boat is in their zone but not at the dock awaiting passengers, they say:
    "The Overlord's Edge will be arriving from Kylong Plains shortly."

    c. When their boat is at the dock awaiting passengers, a timer is running and they are counting down:
    "The Overlord's Edge will be leaving for Kylong Plains in 60 seconds."
    "The Overlord's Edge will be leaving for Kylong Plains in 50 seconds."
    etc...
Timed run:
23:01:15 - left Commonlands dock for Kylong
23:01:58 - at zone to Kylong
23:02:02 - You have entered Kylong Plains.
23:02:36 - when I ACTUALLY appeared so I could type /loc again
23:03:13 - arrived at Kylong dock
23:04:27 - left Kylong dock for Commonlands
23:05:03 - at zone to Commonlands
23:05:07 - You have entered The Commonlands.
23:05:32 - when I ACTUALLY appeared so I could type /loc again
23:06:04 - arrived at Commonlands dock

Nearly every one of my 10+ trips, the timers were about exactly the same (within a few seconds). Any offsets were likely caused by lag, latency or some other act of God. I am 99% certain SOE boats run on a precisely calculated schedule, regardless if players are sitting on them or not.

Spend time doing the research, and prove me wrong. I know you're are dying to. ;)


Why bring all this up? Because I'd like to start theorizing how we're going to handle "transports" of this nature. We do not need them anytime soon, but it would be nice to sort it out in case we need server core work done to support them.


So, theories on how can we accomplish this? I have an idea, sponsored by Bion and Scatman as we were the ones discussing it in detail the other night. When a boat leaves a dock, it heads towards the zone line. At a given spot, we "transport" the player (via teleporter) to the next zone, where a boat should be already there, heading towards the dock from the zone line. When the player zones, World needs to place that player at the exact spot they were on that boat when they zoned.

The only thing I can think of is that when the player zones, we need a snapshot of their x,y,z in relation to the center of the boat, so when the player spawns on the other side, wherever the boat is, we take the center of the boat and apply that offset, and place the player in the same spot.

Unfortunately, I do not see how we can do this using the current World/LUA system, and might need some special code to handle cross-zone automated travel. We have to also keep in mind mutiple passengers on boats, balloons, whatever. Griffons (like from BB to Tim) are single-passenger and probably going to be easier to handle/calculate.

Thoughts?

Bion
Retired
Posts: 241
Joined: Sun Sep 16, 2007 1:47 pm

Re: Boats / Travel

Post by Bion » Mon Apr 27, 2009 9:21 am

While i do have a bad memory at times :P

Fact: you can not cast while flying on a griffion


the msg i am not sure about the only thing i am sure about was that it was gold and said can not while on a mount when i click a CA it was something to the effect of.
You can not use abilities while traveling on mounts

i a guessing that the reference to not using ca's on mounts refers to automatic transports because i know you can fight and everything on player mounts

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Boats / Travel

Post by John Adams » Mon Apr 27, 2009 9:38 am

Yeah I'll verify for sure on CA's/Spells on Boats later today when I get home. I'm pretty sure you're right, that you cannot use them. Though, things like Recall and whatever... or uninterruptable spells. Doesn't really make sense that I cannot buff you while we're sailing. :)

User avatar
ZexisStryfe
Posts: 1026
Joined: Thu Jul 26, 2007 6:39 am
EQ2Emu Server: Sytherian Legends
Location: Connecticut
Contact:

Re: Boats / Travel

Post by ZexisStryfe » Mon Apr 27, 2009 10:35 am

You may actually be able to buff now, since they have been made uninteruptable.
~ EQ2 Emulator Project Manager

Image
Image
Image
"Zexis, from this day forth, you shall be known as... '3 of 6'" - John Adams

LethalEncounter
Team: Zombie
Posts: 2717
Joined: Wed Jul 25, 2007 10:10 pm

Re: Boats / Travel

Post by LethalEncounter » Mon Apr 27, 2009 4:14 pm

wow, lotsa boat info all at once :P Boats are definitely going to require some additional thought to make sure that we get it working properly and don't leave people in the middle of shark infested waters if they come back after going LD. Unless that was the server admin's plan of course :twisted:

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Boats / Travel

Post by John Adams » Mon Apr 27, 2009 4:55 pm

As I noted, I think if we just find the nearest "safe point" for anyone who LD's while transporting, we should be ok. I'll let you absorb the rest.

Btw, this was not a work order... this is just a discussion hah. So don't you go getting all distracted and make boats work! ;)

bolly
Retired
Posts: 389
Joined: Mon Sep 21, 2009 3:03 pm
Location: Leeds, UK

Re: Boats / Travel

Post by bolly » Fri Oct 02, 2009 9:39 pm

LethalEncounter wrote:wow, lotsa boat info all at once :P Boats are definitely going to require some additional thought to make sure that we get it working properly and don't leave people in the middle of shark infested waters if they come back after going LD. Unless that was the server admin's plan of course :twisted:
Oh the joys of my mother lifting the phone to call someone whilst I was travelling the boat across timorous deep (eq1) and then again during the corpse run

This should definitely be on the feature list

User avatar
Arremis
Retired
Posts: 388
Joined: Sun Sep 02, 2007 10:11 am
Location: Memphis, TN

Re: Boats / Travel

Post by Arremis » Sun Oct 04, 2009 9:36 am

Here are my thoughts on how the boats work (sort of what John said):

Since John has established the boats are on a timer, it's safe to assume that whether players are on it or not, when it reaches the zone line the boat timer for zone 1 ends (and the boat "vanishes" to the next zone), and the boat timer for zone 2 begins (causing the boat to "appear" in the next zone).

In regard to there being people on the boat, I imagine what happens when the boat timer ends for zone 1 is that some calculations are taken. These would be how many people are on the boat, what their locations are in relevance to where they are on the boat, who these people are in relation to the locations, and what these people look like - i.e. the model look of their characters.

Over in zone 2, the boat timer starts, the boat "appears" in the zone, and continues it's timed travel to the destination dock. I imagine now that the locations of the people who were in zone 1 are placed in the proper locations on the boat in zone 2, and these locations continue moving in relation to the boat.

At this point, characters are going to start zoning, so for the sake of appearance, "mock" models of the characters from the previous zone are placed in these locations (to assure that no matter who zones through first, it appears that everyone has zoned at the same time, and if anyone happens to be in the water, they see this as well).

Now that everyone is in place, the characters start zoning, and the "mock" models are replaced with the actual character models in the locations where they are supposed to be, and everyone arrives at the intended destination at the intended time from when they left (assuming they haven't decided to jump ship before it reaches the dock).
I am the UI Master...there is no charge for my awesomeness.

User avatar
xinux
Team Member
Posts: 680
Joined: Wed Mar 10, 2010 11:10 am
Location: Destroyer of Servers

Re: Boats / Travel

Post by xinux » Wed May 08, 2013 1:52 pm

Just throwing this here.


Boat creation packet

Code: Select all

-- OP_ClientCmdMsg::OP_EqCreateGhostCmd --
5/8/2013 10:50:46
69.174.200.14 -> 10.15.155.168
0000:	01 3A E7 01 00 00 FF 54 02 22 AD 59 01 00 FF FF .:.....T.".Y....
0010:	00 00 00 00 F2 CB DA 0F 00 00 00 00 00 00 00 00 ................
0020:	3E 4A 44 85 50 00 00 00 FF 95 54 F7 A5 E7 60 F2 >JD.P.....T...`.
0030:	FF BF 5A 3F EE C0 6A 44 CF 7F FF 98 C1 FF DF 0A ..Z?..jD........
0040:	1C 0B 1C 0B FF 86 01 C0 19 83 FF 03 82 10 12 C7 ................
0050:	80 29 05 42 F9 FF FF 3F 80 3F 83 FF FF 7F 7F 65 .).B...?.?.....e
0060:	97 01 80 1C 02 0E FF FF FF FF 09 FD 09 FD AF FF ................
0070:	FF FF FF FF 7F 7F 7F 40 0D 00 4A 6F 75 72 6E 65 .......@..Journe
0080:	79 27 73 20 45 6E 64 00 00 00 00 00 00 00 00 00 y's End.........
0090:	00 00 00 01 00 00 00 00 01 00 00 00 0A 00 00 00 ................
00A0:	96 5F 95 44 6A C0 EE 3F 45 70 FC C1 00 00 00 00 ._.Dj..?Ep......
00B0:	96 5F 95 44 6A C0 EE 3F 45 70 FC C1 00 00 00 00 ._.Dj..?Ep......
00C0:	73 4C 91 44 6A C0 EE 3F EA EC 8D C2 68 A8 A3 40 sL.Dj..?....h..@
00D0:	3F 5D 89 44 6A C0 EE 3F 7B 39 A8 C2 DC 6E CF 40 ?].Dj..?{9...n.@
00E0:	75 97 81 44 6A C0 EE 3F FF E9 8D C2 1C 62 CB 40 u..Dj..?.....b.@
00F0:	A8 5D 6B 44 6A C0 EE 3F 11 2A 06 C2 09 C4 23 41 .]kDj..?.*....#A
0100:	4C 0E 5D 44 6A C0 EE 3F 2A 8C 37 C1 96 4F C4 40 L.]Dj..?*.7..O.@
0110:	5D A0 55 44 6A C0 EE 3F A0 18 4D 3F 37 C6 CD 40 ].UDj..?..M?7..@
0120:	5D A0 55 44 6A C0 EE 3F A0 18 4D 3F 00 00 00 00 ].UDj..?..M?....
0130:	5D A0 55 44 6A C0 EE 3F A0 18 4D 3F 00 00 00 00 ].UDj..?..M?....
0140:	00 00 00 00 00 00 00 00 0A 00 00 00 00 00 DC 42 ...............B
0150:	00 00 00 00 00 00 00 00 00 00 00 00 00 00 DC 42 ...............B
0160:	00 00 00 00 00 00 00 00 00 00 00 00 EF 98 5B 43 ..............[C
0170:	00 00 00 00 00 00 00 00 68 A8 A3 40 E7 25 81 43 ........h..@.%.C
0180:	00 00 00 00 00 00 00 00 DC 6E CF 40 09 F9 8C 43 .........n.@...C
0190:	00 00 00 00 00 00 00 00 1C 62 CB 40 8C B8 91 43 .........b.@...C
01A0:	00 00 00 00 00 00 00 00 09 C4 23 41 D3 8A 91 43 ..........#A...C
01B0:	00 00 00 00 00 00 00 00 96 4F C4 40 00 00 92 43 .........O.@...C
01C0:	00 00 00 00 00 00 00 00 37 C6 CD 40 00 00 92 43 ........7..@...C
01D0:	00 00 00 00 00 00 00 00 00 00 00 00 00 00 92 43 ...............C
01E0:	00 00 00 00 00 00 00 00 00 00 00 00 06          .............
Boat something packet

Code: Select all

-- OP_ClientCmdMsg::OP_Unknown_708 --
5/8/2013 10:50:45
69.174.200.14 -> 10.15.155.168
0000:	01 3A 63 01 00 00 FF C4 02 AD 59 01 00 0D 49 44 .:c.......Y...ID
0010:	85 00 00 00 00 01 00 00 00 0A 00 00 00 96 5F 95 .............._.
0020:	44 6A C0 EE 3F 45 70 FC C1 00 00 00 00 96 5F 95 Dj..?Ep......._.
0030:	44 6A C0 EE 3F 45 70 FC C1 00 00 00 00 73 4C 91 Dj..?Ep......sL.
0040:	44 6A C0 EE 3F EA EC 8D C2 68 A8 A3 40 3F 5D 89 Dj..?....h..@?].
0050:	44 6A C0 EE 3F 7B 39 A8 C2 DC 6E CF 40 75 97 81 Dj..?{9...n.@u..
0060:	44 6A C0 EE 3F FF E9 8D C2 1C 62 CB 40 A8 5D 6B Dj..?.....b.@.]k
0070:	44 6A C0 EE 3F 11 2A 06 C2 09 C4 23 41 4C 0E 5D Dj..?.*....#AL.]
0080:	44 6A C0 EE 3F 2A 8C 37 C1 96 4F C4 40 5D A0 55 Dj..?*.7..O.@].U
0090:	44 6A C0 EE 3F A0 18 4D 3F 37 C6 CD 40 5D A0 55 Dj..?..M?7..@].U
00A0:	44 6A C0 EE 3F A0 18 4D 3F 00 00 00 00 5D A0 55 Dj..?..M?....].U
00B0:	44 6A C0 EE 3F A0 18 4D 3F 00 00 00 00 00 00 00 Dj..?..M?.......
00C0:	00 00 00 00 00 0A 00 00 00 00 00 DC 42 00 00 00 ............B...
00D0:	00 00 00 00 00 00 00 00 00 00 00 DC 42 00 00 00 ............B...
00E0:	00 00 00 00 00 00 00 00 00 EF 98 5B 43 00 00 00 ...........[C...
00F0:	00 00 00 00 00 68 A8 A3 40 E7 25 81 43 00 00 00 .....h..@.%.C...
0100:	00 00 00 00 00 DC 6E CF 40 09 F9 8C 43 00 00 00 ......n.@...C...
0110:	00 00 00 00 00 1C 62 CB 40 8C B8 91 43 00 00 00 ......b.@...C...
0120:	00 00 00 00 00 09 C4 23 41 D3 8A 91 43 00 00 00 .......#A...C...
0130:	00 00 00 00 00 96 4F C4 40 00 00 92 43 00 00 00 ......O.@...C...
0140:	00 00 00 00 00 37 C6 CD 40 00 00 92 43 00 00 00 .....7..@...C...
0150:	00 00 00 00 00 00 00 00 00 00 00 92 43 00 00 00 ............C...
0160:	00 00 00 00 00 00 00 00 00                      .........
EQ II - Build=1360 (Orig) - Build=1360 (DoF) - Build=2654 (KoS) - Build=3375 (Classic) - Build=3554 (EoF)
EQ II - Build=4412 (RoK) - Build=5122 (TSO) - Build=6118 (SF) - Build=7628 (DoV) - Build=8295 (Aod)

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests