Jump to content
Korean Random
Dragon armor

Мод "Эмулятор сервера World of Tanks".

Recommended Posts

Приветствую всех.

Т.к. дискуссии не получилось, сокращу первый пост. Сам же продолжу неспешно делать мод, в теме буду выкладывать прогресс разработки.

  • Что за мод?

Мод для возможности запуска клиента игры без подключению к серверу.

  • Что сделано на данный момент.

Запуск ангара со всей техникой, с генерацией которой не возникло ошибок (без шведских ПТ с осадным режимом).

  • Общая информация.

На данный момент использую версию 0.9.22.0.1, это последняя версия перед патчем 1.0, потому что, начиная с 1.0 были какие-то изменения в сетевом протоколе, а мне не хочется разбираться, что именно поменяли. Всё ещё очень сырое, работает до первой внештатной ситуации, абсолютные пути прописаны прямо в коде, запуск из отладчика и прочие радости debug версии. Реализовал загрузку ангара, добавил почти всю технику и экипаж к ней. Много каких-то непонятных для меня ошибок, т.к. не мододел и с питоном достаточно плохо знаком. Например, при создании техники шведских ПТ с осадным режимом, возникает ошибка создания на сервере. При выборе в ангаре некоторой техники, возникает ошибка уже в клиенте, что, в некоторых случаях, странно, потому что выбираю существующую в игре технику, например, ELC EVEN 90 или 268/4. В логе ошибка "list index out of range", а отладчик питона к клиенту не умею цеплять. Что забавно, Waffentrager E100 выбирается без проблем. А VK168.02 Mauerbrecher опять с той же ошибкой. Или ещё недочёт, на 10 уровне у техники не исследованы модули, этого, видимо, ещё не реализовал для команды CMD_SYNC_DATA, а может это ещё где-то содержится.
Много времени уходит на то, чтобы понять, что и где содержится и откуда это достать. С созданием техники провозился очень долго, мне, как сишнику, крайне не привычен питон, в котором любой объект содержит всё, что угодно, и понять, что именно, надо долго искать, где он создаётся, что в него записывается. А в итоге строка вида "for veh_item in vehicles.g_list.getList(i).values()", чтобы достать compactDescr. Ах да, ещё и распарсить надо, items.parseIntCompactDescr, хотя где-то лежат уже нужные нация и id техники.
На скринах стату показывать бесполезно, там 0 боёв и 100500 рейтинга, как и везде, чего мелочиться-то. Она не из CMD_SYNC_DOSSIERS берётся, видимо, а из CMD_SYNC_DATA. Сейчас только ангар. И прогресс моих ЛБЗ на момент записи трафика.

error_268.4.PNG

shot_027.jpg

shot_023.jpg

shot_024.jpg

shot_026.jpg

shot_020.jpg

shot_011.jpg

shot_017.jpg

shot_018.jpg

shot_020.jpg

shot_021.jpg

shot_010.jpg

Edited by Dragon armor
Дискуссии не получилось.
  • Upvote 4

Share this post


Link to post

Short link
Share on other sites
52 минуты назад, Dragon armor сказал:

Надо ли продолжать дальше, а если надо, то зачем?

Ну если это будет OpenSource, то для обмена опыта было бы неплохо

 

  • Upvote 3

Share this post


Link to post

Short link
Share on other sites
Только что, SkepticalFox сказал:

для обмена опыта было бы неплохо

 

Какого именно опыта? Из скриптов игры берётся только то, что нужно для сервера. Сейчас это весь items, в котором парсятся xml файлы.

Share this post


Link to post

Short link
Share on other sites

Так и непонятно.. А зачем, а зачем.. Карты запускаются и можно кататься хоть на одной карте? Или это только вход в ангар и всё?

  • Downvote 5

Share this post


Link to post

Short link
Share on other sites
Только что, Dragon armor сказал:

Какого именно опыта? Из скриптов игры берётся только то, что нужно для сервера. Сейчас это весь items, в котором парсятся xml файлы.

программерского) может на c++17 писать будешь круто, а может на Rust'е

чисто за эстетику)

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
9 минут назад, SkepticalFox сказал:

Ну если это будет OpenSource, то для обмена опыта было бы неплохо

 

Это скорее не законченный проект через который читеры в другие игры графику тырят, наврятли OpenSource..

Edited by DWG
  • Downvote 5

Share this post


Link to post

Short link
Share on other sites
1 минуту назад, SkepticalFox сказал:

программерского) может на c++17 писать будешь круто, а может на Rust'е

чисто за эстетику)

Не, у меня сишка.

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites
3 минуты назад, Dragon armor сказал:

Не, у меня сишка.

Для серверной физики?

Крайне неудачный выбор

Share this post


Link to post

Short link
Share on other sites
Только что, SkepticalFox сказал:

Для серверной физики?

Не самому же писать физику. Планировал Newton, но до этого далеко ещё. Нужно ещё с картами будет разбираться, там space.bin, в котором всё интересующее содержится, крайне запутанный.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
8 минут назад, Dragon armor сказал:

там space.bin, в котором всё интересующее содержится, крайне запутанный. 

Не пиши велосипед главное)

пиши - помогу с ним

для сервера главное колижны просчитать из space.bin/.cdata

Edited by SkepticalFox

Share this post


Link to post

Short link
Share on other sites
2 минуты назад, SkepticalFox сказал:

для сервера главное колижны просчитать из space.bin/.cdata

Понятно, что нужны будут только коллижн-модели. Когда пытался разобраться со структурой файла, там находил информацию о деревьях. Это тоже нужно будет. Позиции баз, точек респавна техники там же лежит. Структура файла, как помню, достаточно простая, разбито всё на блоки, но дальше не смог сделать, потому что назначение многих блоков не понятно, смещения из одного блока использовались в другом и так далее. Мне, на тот момент не было интересно, что там. Сейчас немного рано. Хотя можно попробовать сделать загрузку карты, а потом недостающий функционал добавлять.

9 минут назад, SkepticalFox сказал:

пиши - помогу с ним

Ты можешь всю (необходимую) информацию оттуда достать? Знаешь, как файл устроен?

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
1 час назад, Dragon armor сказал:

А нужен ли эмулятор сервера?

 долго, сложно, много чего реверсить среди пакетов от сервера. В чисто познавательных целях - хорошо, но ЦА не схавает, им это не нужно. 

33 минуты назад, SkepticalFox сказал:

для сервера главное колижны просчитать из space.bin/.cdata

а невидимые стенки можно просмотреть по спейсу?

Share this post


Link to post

Short link
Share on other sites
24 минуты назад, Dragon armor сказал:

Ты можешь всю (необходимую) информацию оттуда достать? Знаешь, как файл устроен?

https://bitbucket.org/SkepticalFox/wot-space.bin-utils/src/master/

Вроде как могу)

2 минуты назад, Pavel3333 сказал:

а невидимые стенки можно просмотреть по спейсу?

конечно нет, на сервере отдельная карта со всем этим

Share this post


Link to post

Short link
Share on other sites
4 минуты назад, Pavel3333 сказал:

долго, сложно, много чего реверсить среди пакетов от сервера.

Сетевой протокол мне полностью известен. Да, долго, но сейчас всё заключается в том, чтобы добавлять функции-обработчики для пакетов на питоне.

5 минут назад, Pavel3333 сказал:

В чисто познавательных целях - хорошо, но ЦА не схавает, им это не нужно. 

Вот это вот да. Больше, чем на покатать одному по карте, рассчитывать не стоит. Хотя, как замену оффсерверу речи, естественно, не идёт.

5 минут назад, SkepticalFox сказал:

Принято. Потом посмотрю.

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites
2 часа назад, Dragon armor сказал:

мне, как сишнику

ты джуниор в Си? :)

Share this post


Link to post

Short link
Share on other sites

@Pavel3333 Похоже, джуна перерос, но до миддла не дотягиваю. Но это трудно оценить, надо кого-то со стороны. У меня нет соответствующего образования, в какой-то области знания достаточно большие, в другой - нулевые. Нахватался там, здесь, применяю по необходимости.

Цитата

Начинающий разработчик (или не разработчик, в принципе эта триада применима к любой профессии в IT), сам справляется с маленькими задачками, но постоянно нуждается в помощи, код ревью, и сам сложные задачи никак не осилит. Ну то есть осилит, но вместо дня потратит на них месяц, а это никому не надо.

В помощи постоянно не нуждаюсь, задачи не настолько простые. Но сложные задачи за день не сделаю.

Share this post


Link to post

Short link
Share on other sites

@Dragon armor в принципе, если и писать парсеры на основе реверса полученных с сервера WG пакетов, то лучше юзать kaitai struct, как это делал наш товарищ @SkepticalFox. А структуры кидать в опен-сорс ррепозитории. Это даст опыта остальным, есть вероятность того, что Вам подсобят в этом нелегком деле.

Share this post


Link to post

Short link
Share on other sites
1 минуту назад, Pavel3333 сказал:

если и писать парсеры на основе реверса полученных с сервера WG пакетов, то лучше юзать kaitai struct

У меня уже всё распарсено. У некоторых пакетов неизвестно назначение некоторых полей, структура пакетов, которые ни разу не были получены, тоже не всегда известна. Но у клиента всего 14 сообщений, которые он может отправить на сервер и то, используется 3 штуки, пока в ангаре. Остальное через питон, а там все параметры открыты.

6 минут назад, Pavel3333 сказал:

А структуры кидать в опен-сорс ррепозитории. Это даст опыта остальным, есть вероятность того, что Вам подсобят в этом нелегком деле.

Скину всё как-нибудь, что есть. Когда что-то будет готово, что можно показать.

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...