Пишу сервер LA2 C4 под Linux итог в общую шару

а я и не боюсь, наоборот, критика - двигатель прогресса :-)
О форматах l2j(далее *л2д) и __conv.dat(далее *дат):
обозначение:
простой - блок в котором все ячейки на одном уровне и полностью проходимы(в формате __conv.dat такой блок имеет 2 значения высоты в отличии от l2j, как правило такие блоки используются в перепадах высот для устранения дыр в геоданных).
расширенный - это однослойный блок, каждая из ячеек имеет свои высоту и направление.
многослойный - похож на расширенный, в дополнение содержит "многоуровневые" ячейки.
группа высот - двухбайтовое значение, включающее в себя разрешенные направления и собственно высоту закодированное следующим образом(h - высота, z - направление) hex - hz hh, bin - hhhh hhhh hhhh zzzz.

1. в *л2д данные начинаются с первого байта, в *дат с 18-го
2. в *л2д блоки обозначаются цифрами (значение в 1 байт): 00 - простой, 01 - расширенный, 02 - многослойный; в *дат описывается количество ячеек в блоке(2 байта):
00 00 - простой, 40 00 - расширенный, остальные случаи - многослойный(если значение больше 0 и меньше 40 - файл битый).
3. Шифрование простого блока: *л2д - 00 XX XX (00 - это тип блока, XX XX - группа высот(в данном случае направления нет)); *дат - 00 00 ХХ ХХ ХХ ХХ (00 00 - кол-во ячеек, потом 2 группы высот).
4. Шифрование расширенного блока: *л2д - 01 за ним идут 64 группы по 2 байта; *дат - 40 00 (кол-во ячеек) за ним 64 группы высот.
5. Шифрование многослойного блока: *л2д - 02 (1 байт) следующий байт указывает на количество слоев в ячейке, затем идут слои ячейки(группы высот), потом опять количество слоев и так для каждой из 64 ячеек; *дат - 41 00 (2 байта) затем как и в *л2д разница лишь в том что количество слоев *дат файле кодируется 2-мя байтами.
6. В *л2д номер карты зависит от названия, в *дат - это первые 2 байта. затем 4 байта - флаги, после - 3 группы по 4 байта(количество отдельных ячеек(нулевой слой считается как отдельная ячейка), количество простых блоков, количество простых и расширенных блоков вместе)
Если еще чем могу помочь - skype: felexxx67

совсем забыл про мелочь - все блоки в карте и ячейки в файлах расположены друг за другом по вертикали(по оси Y). Первая ячейка(верхняя левая, следующая - под ней, и т.д.)
 
Последнее редактирование модератором:
выкладывай, и не парься, обоснованная критика это всегда хорошо, а не обоснованную можно и не слушать)
 
Чур сильно не пинать, все вразброс, сейчас систематизирую и обновленный джит выложу, а пока так =)


посмотрел я геодвиг на l2j линдвио, может я что не так понял, а разве в java ельзя перемещаться по массиву в обратном направлении от адреса? к примеру вот так c[-3][-6]

Кодировки:
на linux еще не тестил, но если я правильно make написал, должно работать просто из папки набрать make
 
Последнее редактирование модератором:
... ну где же продолжение? ))
 
Уф, долго я отсутствовал, после 4-го сентября будет продолжение, пересмотрю что есть и буду двигаться дальше =)
ПС: прошу простить за столь долгое отсутствие, в командировке ноут навернулся, да и не до этого пока что, сына в первый класс отдаю =)
 
Уф, долго я отсутствовал, после 4-го сентября будет продолжение, пересмотрю что есть и буду двигаться дальше :-)
ПС: прошу простить за столь долгое отсутствие, в командировке ноут навернулся, да и не до этого пока что, сына в первый класс отдаю :-)
Сын - это святое!!!!
 
Сын уже в 9-м учится, скоро закончит а я всё еще не добрался до проекта, да и потерялся уже он где-то =D
Очуметь как давно это было oO
Теперь дочь маленькая растёт, в отпуске по уходу сижу, ппц
 
Сын уже в 9-м учится, скоро закончит а я всё еще не добрался до проекта, да и потерялся уже он где-то =D
Очуметь как давно это было oO
Теперь дочь маленькая растёт, в отпуске по уходу сижу, ппц
Надеюсь теперь ты будешь планировать писать сервер на Rust, вместо плюсов ;)
 
Говоря про птс, намного лучше взять java или kotlin и делать сервер используя данные сервера.
Планы конечно грандиозные, но сколько их было, никто так не реализовал задуманное до конца.
Это заканчивалось почти всегда одинаково.

Реверснутый птс был с1, поднятый выше.
Но это не делалось с 0 изобретая велосипед, цель была восстановить исходники и исправить на основе этого все косяки и баги, в дальнейшем порт на линукс.
Альтернативный вариант за счет экстендеров, это можно сказать как патч для сервера.
Запускать в докере нет смысла для прода и это не имеет смысла, только ради эксперимента.
 
Говоря про птс, намного лучше взять java или kotlin и делать сервер используя данные сервера.
Планы конечно грандиозные, но сколько их было, никто так не реализовал задуманное до конца.
Это заканчивалось почти всегда одинаково.

Реверснутый птс был с1, поднятый выше.
Но это не делалось с 0 изобретая велосипед, цель была восстановить исходники и исправить на основе этого все косяки и баги, в дальнейшем порт на линукс.
Альтернативный вариант за счет экстендеров, это можно сказать как патч для сервера.
Запускать в докере нет смысла для прода и это не имеет смысла, только ради эксперимента.
К сожалению не владею исходниками =)
А по поводу прода - абсолютно согласен, может к концу сего проекта и начну хоть немного разбираться в реверсинге, но пока, как я уже и говорил, я в нём - балерун...
 
felex67, забейте на La2 она уже написана и переписана другими на Java/С#/JS/TS, лучше бы такие как вы занялись реверсом новых MMORGP: ToL (TL), World of Jade Denasty или других игр. Как раз прокачаете скилл реверса. Как мне кажется это интересней, особенно если объединиться в community, как это было с l2j, всё же в соло такие проекты тяжело тянуть, а вокруг l2j собрались люди и вот мы имеем кучу сборок на Java. А заниматься переписыванием игры 20 летней давности это такое себе удовольствие, если только хочется потратить время в пустую

Кстати есть прикольный доклад про переписывание C/C++ на Java на , почти без изменения архитектуры. Наверное даже такое будет интереснее, чем писать на плюсах

По поводу исходников, тут на форуме есть древние исходники C1 PTS от MasterToma, можете их поковырять, если так сильно хочется
 
Ну во первых у томы, что в шаре, они далеко не полные, недоразобранные , особенно л2 сервер. Да и человек может взять 162 протокол и накатить пдб, посмотреть, в Ида, взять чей нибудь шарный экст(ваганта например) тоже посмотреть как человек делал. И в принципе на основе 162 пилить себе сервер, только честно скажу, времени у него уйдет епать колотить как много. По мне проще экстить сервер, чем реверсить его к себе в исходник, так когда то и решил делать с классиком 166
 
felex67, забейте на La2 она уже написана и переписана другими на Java/С#/JS/TS, лучше бы такие как вы занялись реверсом новых MMORGP: ToL (TL), World of Jade Denasty или других игр. Как раз прокачаете скилл реверса. Как мне кажется это интересней, особенно если объединиться в community, как это было с l2j, всё же в соло такие проекты тяжело тянуть, а вокруг l2j собрались люди и вот мы имеем кучу сборок на Java. А заниматься переписыванием игры 20 летней давности это такое себе удовольствие, если только хочется потратить время в пустую

Кстати есть прикольный доклад про переписывание C/C++ на Java на , почти без изменения архитектуры. Наверное даже такое будет интереснее, чем писать на плюсах

По поводу исходников, тут на форуме есть древние исходники C1 PTS от MasterToma, можете их поковырять, если так сильно хочется
Я неизлечимо болен С4. Да, помню что они где-то были, потом как-нибудь гляну, спасибо за совет.
А вот что касается Java - если только за деньги, для себя дичь делать не стану, мне лучше по краю лезвия ходить, чем лишние ресурсы тратить =D
 
Я неизлечимо болен С4. Да, помню что они где-то были, потом как-нибудь гляну, спасибо за совет.
А вот что касается Java - если только за деньги, для себя дичь делать не стану, мне лучше по краю лезвия ходить, чем лишние ресурсы тратить =D
Круто. В любом случае ты молодец тем что бросил себе вызов.
 
И как идет работа? Ссылка на гитхаб умерла.
 
и на какой стадии проект сейчас?
 
Назад
Сверху Снизу