|
Опкоды, Формулы, Клиент Разбор и изучение взаимодействия клиента с сервером |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
12.12.2013, 02:59 | #1 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
Кластер внутри мапы?
похоже близзы сделали то, что казалось сделать невозможным. или это какой то механизм, схожий с фазированием. или само фазирование. суть в следующем:
ну, в общем, последнее время плотно гамаю на оффе. да да, на старости лет много смотрю, узнаю старое, смотрю на новое, всматриваюсь как сделано, слежу за поведением окружающего, ну тд и тп, в общем делаю все то, что необходимо делать для разработчика сервера. у меня один перс. играть им я начал еще в 3.3.3 (как сейчас помню). только в этом году, летом, докачал его до максималки, приодел и все такое. стало скучно. сейчас с друзьями в факультативном режиме прокачиваю второго перса, друида, ночные эльфы, альянс. друид - это значит калимдор. но рано или поздно заносит в штормвинд, если альянс. я не зря это все пытаюсь подробно рассказать и вот почему: калимдор. там квесты и вообще начальное развитие персонажа. на азероте им не играл и нигде не бывал. фазирование по моему убеждению должно быть "нулевым" как бы... не знаю как сказать. нет никаких эвентов, квестов и т.п., которые бы меня заносили в другую фазу. и вот как то однажды, прокачивая травничество, случайно вылетел из элвинфореста в бёрнинг степс. и вот пересекая границу заметил странное притормаживание клиента (блин, Alienware m17x R4, SSD, 32gb, ну чего ж еще надо). отлетел обратно - снова притормозило. опять пролетаю - замечаю, как на горе горел костер, когда я находится на территории элвина. и как костер (ГО) дестроится, когда я перелетаю в степи и ловлю подтормаживание клиента. вах, тваюмать! подумал я, не уж то оно! я ведь вынашивал эту мысль уже не помню с когда, сделать кластер внутри мапы. стал еще приглядываться - обнаружил визуальный эффект спелла, которые кастуется при логине в новую мапу, это такой светлый конус вокруг персонажа как бы. ну и если присматриваться ОЧЕНЬ внимательно, видно, как "старый" ландшафт фейдом заменяется "новым" и чуть чуть "не там". в движении даже не поймешь. еще этот факт наверное можно наблюдать на нынешнем вневременном острове. туда можно просто прилететь на маунте и "влететь" в эту зону. если же твоему персу вход туда заказан, то на остров вы не попадете. я сейчас вспоминаю то же странное ощущение при "влетании" на остров, но тогда я как то не обратил на это внимание. скорее всего эта технология позволяет очень гибко фильтровать и ограничивать входы в зоны на открытых территориях. не всегда правильным и логичным делать вход в зону традиционными телепортами и порталами. если по задумке зона находится на материке или на рядом стоящем острове, то логично, что туда нужен "простой" вход. и в то же время управляемый вход. например, не выполнив цепочку квестов, вам зона недоступна. что то подобное есть в вечноцветущем доле, а именно ворота в них. они открыты после сдачи квеста. причем если лететь туда на феале песков персом, которому ворота открыты, а пассажиру нет, то первый спокойно пролетает в открытые ворота, а второй ... так же спокойно пролетает сквозь закрытые двери. испытано лично мной. и этот говнюк сбросил меня там, между дверьми, типа сиди там хорошо что я маг но тут фазирование на лицо. вроде бы все встает на свои места, и зачем это нужно, и как сделано (тот же набор опкодов, как и при логине скорее всего). одно в этой истории непонятно - бёрнинг степс то тут причем... снифера у меня сейчас нет актуального. да он мне сильно сейчас и не поможет (опкоды по прежнему меняются с каждым билдом?). если кто занимается этим, снифает - посмотрите плиз, чего там такое происходит в этих местах. в свое время плотно сидя на разборе снифов, именно тот же набор опкодов, во время world port как при логине (ну почти тот же) меня натолкнул на мысль о кластеризации игрового пространства и тогда то она и родилась. Последний раз редактировалось RomanRom2; 12.12.2013 в 03:16. |
12.12.2013, 11:32 | #2 | |||
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
не знаю, как насчет зон, но разные карты у близзов точно обрабатываются на разных серверах.
когда половина ру сервов лежали, при попытке портануться в шатры выдавало вот такое Цитата:
видели create часть SMSG_UPDATE_OBJECT пандор? это нечто
Цитата:
|
|||
12.12.2013, 13:08 | #3 | |||
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
Цитата:
Цитата:
Цитата:
я просто обратил внимание, что "вход" в такую зону выглядит точно так же как при логине или ворлд порте. при смене фазы он не такой. например, в пандарии я начал цепочку квестов операции заслон, там у меня другая фаза. и для легендарного плаща, где убить генерала - тоже другая фаза. если прилететь туда в группе с тем, у кого нет этих квестов, то мы будем в разных фазах, это во первых. и во вторых, здесь я не замечал таких визуальных эффектов и притормаживаний. ну, я присмотрюсь еще внимательнее. возможно близзы только отрабатывают эту технологию и выбрали "малонаселенные" зоны, когда почти всегда никого нет. в любом случае проснифать бы да все вопросы отпадут. |
|||
12.12.2013, 21:10 | #4 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Да, там реконнект происходит при пересечении realm only и cross server зон, это давно известно. Можно даже в netstat глянуть, ip меняются
А кто нибудь пытался провернуть это на 3.3.5 клиенте? То что при логине это прокатывает и так известно, а вот сделать редирект уже после входа в мир кто-то побовал? |
13.12.2013, 10:26 | #5 | |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Цитата:
|
|
12.12.2013, 21:28 | #6 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
а опкоды в 3.3.5 для этого есть?
если так, обязательно займусь, ибо мувемент у меня в программе. |
12.12.2013, 21:29 | #7 | |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
Код:
SMSG_CONNECT_TO = 0x50D, CMSG_CONNECT_TO_FAILED = 0x50E, SMSG_SUSPEND_COMMS = 0x50F, CMSG_SUSPEND_COMMS_ACK = 0x510, SMSG_RESUME_COMMS = 0x511, CMSG_AUTH_CONTINUED_SESSION = 0x512, CMSG_DROP_NEW_CONNECTION = 0x513, Последний раз редактировалось TOM_RUS; 12.12.2013 в 21:38. |
|
13.12.2013, 14:24 | #8 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
вах, даже так
это чего у них, реалмлист стало быть есть? целая сеть реалмов-пираток, объедененных в реалмлист? да, ну и как бы механика БГ тут не при делах, это ж обычный ворлд порт. Последний раз редактировалось RomanRom2; 13.12.2013 в 14:33. |
13.12.2013, 16:08 | #9 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Ну а чего там сложного. Слить все базы чаров в одну с разными хай-гуидами, и держать отдельный сервер для бг
|
13.12.2013, 18:15 | #10 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
да понятно что технически ничего сложного. вопрос в том, что это кто-то все организовал.
ну и опять же, чары гуидов... ой, гуиды чаров не при делах тоже. зачем они там? я имею ввиду база. при входе в кроссреалм гуиды генерятся новые. врят ли близзы делали на всех реалмах непересекающийся пул гуидов. я теоретизирую и не проверял по снифам, займусь кстати. но я бы сделал именно так. и именно так и сделаю, когда дойдет до БГ хотя давно уже понятно, что реальные гуиды легко влазят в 32 бита, а хай гуид используется не везде и не всегда. а когда используется, то видны все извращениями с ними. вполне возможно на кроссреалмах по хайгуиду определяется собственно реалм, т.е. у чаров с одного реалма одинаковый хайгуид. снифы надо покурить все таки... но одно другому не мешает, гуиды мне кажется генерятся новые. посмотрю, о результатах доложусь. Последний раз редактировалось RomanRom2; 13.12.2013 в 18:17. |
13.12.2013, 18:33 | #11 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
|
13.12.2013, 19:51 | #12 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
да, вы правы, гуиды не меняются. вот пруф:
сниф: 5595.WOWEMUTEAM.Warsong-5595-new-bg.0024417E44.PKT, 4236 kb [5595] смена карт по снифу: Код:
[General - Orgrimmar], map=1, zone=1637 NEW_WORLD: 529 684.013977 681.219971 -12.915900 0.805031 [General - Arathi Basin], map=529, zone=3358 NEW_WORLD: 1 2000.017456 -4795.296875 56.764965 0.000000 [General - Orgrimmar], map=1, zone=1637 Код:
--- NEW OBJECT [182/268]--------------------------------------------------------------- update type = UPDATE_TYPE_CREATE_PLAYER_ACTIVE, ofs=30DD GUID 00000000002F169E object type = (4) PLAYER, ofs=30DE create flags: 0x71, 0x00002000, 0x504ABB5D Pos: x=1964.503296, y=-4748.942383, z=54.399590, f=1.957998 (int) fallen_time=00000000 flag1 0x2000 (MOVEFLAG_FALLING): 0.000000, -0.377599, 0.925969, 0.000000 Speed: Walk=2.500000, Run=7.000000, RunBack=4.500000, Swim=4.722222, SwimBack=2.500000, TurnRate=3.141593 flag0 (0x10) = 00000001 BitMask blocks = 41 0 0_OBJECT_FIELD_GUID__1 002F169E (3085982) 2 2_OBJECT_FIELD_TYPE 00000019 (25) Код:
--- NEW OBJECT [182/240]--------------------------------------------------------------- update type = UPDATE_TYPE_CREATE_PLAYER_ACTIVE, ofs=30DD GUID 00000000002F169E object type = (4) PLAYER, ofs=30DE create flags: 0x71, 0x00002000, 0x504B9D53 Pos: x=684.013977, y=681.219971, z=-12.915900, f=0.805031 (int) fallen_time=00000000 flag1 0x2000 (MOVEFLAG_FALLING): 0.000000, 0.693089, 0.720852, 0.000000 Speed: Walk=2.500000, Run=7.000000, RunBack=4.500000, Swim=4.722222, SwimBack=2.500000, TurnRate=3.141593 flag0 (0x10) = 00000001 BitMask blocks = 41 0 0_OBJECT_FIELD_GUID__1 002F169E (3085982) 2 2_OBJECT_FIELD_TYPE 00000019 (25) |
16.12.2013, 23:04 | #13 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
в общем, у вневременного острова, как ни старался - эффект не воспроизводится.
|
16.12.2013, 23:13 | #14 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
У них зоны есть нескольких типов кросс серверности:
1) вообще не кросс серверные (даже если в одной группе/рейде), например Штормград и Оргриммар 2) кросс серверные только если в группе/рейде (Пандария) 3) кросс серверные даже без группы/рейда (низко уровневые зоны) В пандарии кстати при переходе из одной зоны в другую реконнект не происходит (кроме острова грома, который зачем-то вообще на отдельной мапе). Во всех остальных случаях при смене зоны клиент реконнектится. Последний раз редактировалось TOM_RUS; 16.12.2013 в 23:19. |
08.01.2014, 00:54 | #15 | |
Ученый
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
|
Цитата:
|
|
10.01.2014, 14:47 | #16 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
ну как перекачивать... а если и там и там есть объекты с одинаковым гуидом? сами чары. или их итемы. а что будет с энчантами? ну с ними то хрен с ними, ну будет показываться другое имя, а тот, кто заинчантил тебе итем. но тем не менее, дизайн какой то кривой в этом случае. я бы на ревью задеклайнил
|
10.01.2014, 18:12 | #17 | |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
|
|
11.01.2014, 01:03 | #18 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
ну да, остается только надеяться, что на разных реалмах свои хайгуиды. и что скорее всего сейчас так и есть, пишется же сейчас на персе его имя вида "имя реалма - имя перса". причем наблюдается даже у входа в сторм, там куча персов впв-шится, на разувии по крайней мере
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[Язык С] списки(мапы) с быстрым поиском и удалением | Evgeniy | Языки программирования | 10 | 19.06.2012 09:20 |