Jump to content
Korean Random

Plotnik5252ru

User
  • Content Count

    54
  • Joined

  • Last visited

Posts posted by Plotnik5252ru


  1. 3 минуты назад, Dragon armor сказал:

    @DrWeb7_1 Если ты про сетевое сообщение клиенту, то создаётся энтити Avatar (через createBasePlayer), а у неё есть свойство name. Вот в нём и идёт никнейм игрока. Техника создаётся позже, через Avatar.updateArena, флаг updateType == VEHICLE_LIST. Также, через updateArena создаётся всё остальное. И после этого, клиенту отправляется сообщение createCellPlayer. И это тоже Avatar, но свойства другие передаются. Надо будет вспомнить, как так делятся свойства между baseapp и cellapp.

    Смотрю вы много работы проделали. 


  2. 02.09.2020 в 23:27, Dragon armor сказал:

    Делаю для версии 0.9.22. Это последняя версия перед 1.0.

    Если ты потроллить так хочешь, то очень не удачно.

    Никак. Да это и не нужно. Нужен готовый алгоритм, апи какое-то, которому закинул массив байт, а ответом будет либо ОК, либо какое-то сообщение, например, ждать следующего пакета.

    С наскока ничего не выйдет. Разобраться надо сначала. Вот ты файл открыл. А функцию, которая начинает обработку сообщения нашёл? С неё и надо начинать.

    Не, серьёзно. Если хочешь помочь - ОК. Но если можешь. А если мне надо всё объяснять перед этим, то в таком случае такая помощь не уместна.

    PacketReceiver::processFilteredPacket - отсюда начинается разбор пришедшего и дешифрованного массива байт. В начале всё просто и понятно. Что-то можно пропустить, например, сбор статистики. А вот ниже уже не так всё однозначно. Сразу попадается флаг, а флаги - одно из неоднозначностей. Packet::FLAG_CREATE_CHANNEL как бы и не приходит ни от сервера, ни от клиента. Это вроде бы, для внутреннего использования между серверами внутри кластера.

    Вот если таким образом опишешь сетевой протокол, даже на тот момент (2012 год) существующий, уже будет норм. Подтвеждение доставки, обработка пакета с номером больше, чем ожидается, запрос не пришедшего пакета и так далее. Если нет - ну, жди, когда мне будет не лень. Мне вот, наконец-то, удалось найти нормальную библиотеку для работы с таймерами. Эта штука называется "Wheel Timer" оказывается. На первый взгляд подходит. И производительность норм, сделал тест на 10к таймеров, не захлёбывается, мне с лихвой такого количества хватит. Теперь дальше сетевым протоколом заняться.

    Понимаю просто я очень хотел помочь в развитии сервера. Там посмотреть своими глазами как он вообще работает

    Жаль я не понимаю как этот сервер работает и как его запускать


  3. 01.09.2020 в 19:20, Dragon armor сказал:

     

    Пссс, пссс, слышите меня? Только шопотом отвечайте.

    В общем, качаете бигворлд 2 (например, тут). Открываете файл bw2\src\lib\network\packet_receiver.cpp. Переписываете его, чтобы от бигворлда не осталось ничего. В качестве входных данных будет дешифрованный пакет. Выход должен быть какой-то массив отдельных пакетов. Если надо в качестве примера входных данных, отсыплю сколько надо. Нужно:

    1. Парсер пакетов.

    2. Сборка пакетов, если размер пакета больше mtu, или ожидание, если вдруг приходят не по порядку.

    3. Таймауты. Повторная отправка или повторный запрос в случае отсутствия пакета либо отсутствия подтверждения доставки.

    4. Сборка пакетов из отдельных сообщений.

    Это то, что сейчас вспомнил.

    Можно на сишке, можно на c++17 или 19, или что там новомодное, плевать, соберу в dll отдельную, как с физикой.

    Всё, теперь можно не шопотом.

     

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

    Кстати, физику может кто-то запилить, если есть желание. Да и xmpp сервер сделать и плагин для него написать для картошкиного протокола. Есть для желающих, чем заняться.

     

    Уж очень хреновый клиент этих версий. Ради графики запускать его? Всё-равно поведение танков зависить будет от сервера.

    Отлично, я уже нахожусь внутри packet_receiver.cpp, что дальше?

    И ещё  куда закидывать "свою" игру?

    01.09.2020 в 19:20, Dragon armor сказал:

     

    Пссс, пссс, слышите меня? Только шопотом отвечайте.

    В общем, качаете бигворлд 2 (например, тут). Открываете файл bw2\src\lib\network\packet_receiver.cpp. Переписываете его, чтобы от бигворлда не осталось ничего. В качестве входных данных будет дешифрованный пакет. Выход должен быть какой-то массив отдельных пакетов. Если надо в качестве примера входных данных, отсыплю сколько надо. Нужно:

    1. Парсер пакетов.

    2. Сборка пакетов, если размер пакета больше mtu, или ожидание, если вдруг приходят не по порядку.

    3. Таймауты. Повторная отправка или повторный запрос в случае отсутствия пакета либо отсутствия подтверждения доставки.

    4. Сборка пакетов из отдельных сообщений.

    Это то, что сейчас вспомнил.

    Можно на сишке, можно на c++17 или 19, или что там новомодное, плевать, соберу в dll отдельную, как с физикой.

    Всё, теперь можно не шопотом.

     

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

    Кстати, физику может кто-то запилить, если есть желание. Да и xmpp сервер сделать и плагин для него написать для картошкиного протокола. Есть для желающих, чем заняться.

     

    Уж очень хреновый клиент этих версий. Ради графики запускать его? Всё-равно поведение танков зависить будет от сервера.

    Вопрос, а как в BW закинуть WoT? ._.


  4. 23 часа назад, Dragon armor сказал:

     

    Пссс, пссс, слышите меня? Только шопотом отвечайте.

    В общем, качаете бигворлд 2 (например, тут). Открываете файл bw2\src\lib\network\packet_receiver.cpp. Переписываете его, чтобы от бигворлда не осталось ничего. В качестве входных данных будет дешифрованный пакет. Выход должен быть какой-то массив отдельных пакетов. Если надо в качестве примера входных данных, отсыплю сколько надо. Нужно:

    1. Парсер пакетов.

    2. Сборка пакетов, если размер пакета больше mtu, или ожидание, если вдруг приходят не по порядку.

    3. Таймауты. Повторная отправка или повторный запрос в случае отсутствия пакета либо отсутствия подтверждения доставки.

    4. Сборка пакетов из отдельных сообщений.

    Это то, что сейчас вспомнил.

    Можно на сишке, можно на c++17 или 19, или что там новомодное, плевать, соберу в dll отдельную, как с физикой.

    Всё, теперь можно не шопотом.

     

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

    Кстати, физику может кто-то запилить, если есть желание. Да и xmpp сервер сделать и плагин для него написать для картошкиного протокола. Есть для желающих, чем заняться.

     

    Уж очень хреновый клиент этих версий. Ради графики запускать его? Всё-равно поведение танков зависить будет от сервера.

    Насчёт действий это сложно так как не [мат] в сишке и вообще в программировании полный 0. А ещё незнаю чем тебе не нравятся старые танки. Мне нравятся все обновления до 0.9.20

    И до рубикона

    • Downvote 2

  5. 1 минуту назад, Kustarnik сказал:

    Не, просто хотелось бы сыграть с кем нибудь на патче 8.4 или же на том же 0.7.0. 

    +++ давно уже мечтаю зайти на старые версии или блять сделать фанатские сервера без доната со всеми танками. Для всех или многих версий как с nfs world.


  6. 1 минуту назад, Dragon armor сказал:

    Ты просто посмотри, что надо сделать. Загляни в исходники бигворлда 2.01, файл bw2\src\lib\network\packet_receiver.cpp. Сетевая часть, которую надо хоть частично повторить. Как только вижу эту простыню кода, в которой надо разобраться, меня охватывает уныние и отчаяние.

    Ааааа вот что за хрень ну тут и мне бы не по себе было. Мда уж это тяжелая работка


  7. 4 минуты назад, Dragon armor сказал:

    Если адаптировать под старые версии. Игра-то полностью серверная. Изменяются, добавляются или удаляются энтити, функции, их параметры. Даже базовые методы могут измениться. Поэтому, нужно будет смотреть отличия и, при необходимости, адаптировать к нужной версии. Но нужно ли это? Зачем? Чем эта версия не устроит? Из-за пары-тройки выведеных в прошлых версиях танков? Или из-за выведенных карт?

    Да будет. Надеюсь. Только когда - не знаю. Ибо мне опять лень.

    А с ленью делать?


  8. 2 минуты назад, Dragon armor сказал:

    https://ru.wikipedia.org/wiki/Эмулятор_сервера

    Тут небольшая путаница в терминологии. Одно слово, но в другом значении. Так-то именно это и делаю.

    А почему бы тебе как нибудь попробовать поискать добровольцев для помощи в эмуляторе?


  9. 30 минут назад, Dragon armor сказал:

    @Plotnik5252ru Возможность запустить бой. То есть, полноценная эмуляция сервера. Сейчас, кроме ангара, в бой тоже можно зайти, но только зайти, а больше ничего нельзя сделать.

    Так это же эмулятор. По-моему с ним много гемора у меня есть идея хоть я не шарю как но можно из эмулятора сделать просто сервер? Обычный сервер?


  10. 9 часов назад, Dragon armor сказал:

    Да. Сейчас пытаюсь с сетевой частью что-то сделать, чтобы можно было запускать без промежуточного звена (сейчас клиент игры - прокси для клиента - эмулятор). Попытаюсь сделать, чтобы более-менее нормально работало. Всякие прослойки в виде libevent хороши для TCP, но для UDP не годятся, являясь лишним звеном, которое можно заменить банальным вызовом recvfrom. А вот дальше как, уже не знаю. Наверное, надо делать по принципу "лишь бы работало". Нужен уже нормальный сервер авторизации, который хочу совместить с эмулятором (сейчас его роль выполняет прокси-клиент). Сразу же всплывает проблема сохранения состояния между loginapp и baseapp в терминах бигворлда, сейчас-то всё напрямую прописано, а тут надо базу данных делать. Тут же всплывает проблема синхронизации, потому что один поток должен принимать трафик, а другие потоки уже обрабатывать его. Ну и так далее.

     

     

    Именно так. Запустить ангар и покрутить вафлю? Просто внешне-то почти и нет ничего, всё скрыто внутри, а это мало кому интересно, что да как там работает, главное - конечный результат, картинка или что-то иное, которого на данный момент нет.

    А что ты вообще хочешь чтобы было в эмуляторе тип какие функции чтобы мог поддерживать кроме ангара и реплеев?


  11. 23.08.2020 в 22:00, Dragon armor сказал:

    Но зачем передавать эту информацию? Что синхронизировать? Странно как-то. Синхронизируются координаты, но ни как не полигоны физической модели.

    Даже больше. На клиенте и сервере разные физические модели. Хотя внешне похожи, чтобы рассинхрона не было.

    Незнаю конечно как ты этот эмуль вообще сделал? Но много ли работы осталось в эмуляторе? 

    23.08.2020 в 22:00, Dragon armor сказал:

    Но зачем передавать эту информацию? Что синхронизировать? Странно как-то. Синхронизируются координаты, но ни как не полигоны физической модели.

    Даже больше. На клиенте и сервере разные физические модели. Хотя внешне похожи, чтобы рассинхрона не было.

    И почему бы тебе не выложить уже этот мод хоть он и сырой? 

    • Downvote 1

  12. 12.08.2020 в 21:37, Dragon armor сказал:

    Случайно пропустил отправку пакета, поэтому не было чата. Не заметил просто в дампе трафика его. Пока не работает, но вкладка появилась.

     

      Показать содержимое

    shot_077.thumb.jpg.63f5089f7a5de9563ab244ea956d3361.jpg

     

    В общем, сообщения пока не появляются. Но чат загружается.

     

      Показать содержимое

    shot_078.thumb.jpg.df5d3a68c1d1a039810f924833811c4a.jpg

     

    уже 10 дней прошло интересно есть ли успехи? 


  13. 2 часа назад, Dragon armor сказал:

    Вопрос, на самом деле, не тупой.

    Да, так можно. И на данный момент достаточно будет указать ip адрес или домен в настройках, которые передаёт эмулятор клиенту. Смотри xmpp_connections в скриптах эмулятора. Там в двух местах надо поправить. У меня на локальной машине, потому что так удобнее для отладки. Но ничего не мешает сделать удалённый сервер. Единственное, нужно будет сделать какой-то интерфейс по взаимодействию эмулятора и xmpp. С сообщением requestToken разобрался, что отправлять на его запрос - знаю. По сути, на это сообщение сервер отправляет логин (который является id клиента, пробовал другой, отличный от того, что присваивается клиенту, так клиент его не принимает) и пароль для подключения. Так что для тестовых целей можно прописать прямо в файле. Мне помнится, у тебя он есть (AccountAuthTokenProvider.py который). Напиши там что-то такое:

    
    	def requestToken(self, requestID, tokenType):
    		print 'requestToken {}, {}'.format(requestID, tokenType)
    		if tokenType == TOKEN_TYPE.XMPPCS:
    			self.client.onTokenReceived(requestID, tokenType, cPickle.dumps({'token': 12345, 'databaseID': 1}, 2))

    И импорт добавь:

    
    import cPickle
    from constants import TOKEN_TYPE

    И можешь экспериментировать. Тебе в ЛС могу скинуть, что у меня есть по дампу трафика xmpp (кстати, огромная удача, что у меня есть дамп в одном единственном файле, просто случайно захватился, а иначе гадай, что там надо было бы клиенту).

     

    
    				'xmpp_alt_connections': [],
    				'xmpp_bosh_connections': [],
    				'xmpp_connections': [('127.0.0.1', 5222)],
    				'xmpp_enabled': True,
    				'xmpp_host': '127.0.0.1',
    				'xmpp_muc_enabled': False,
    				'xmpp_muc_services': [],
    				'xmpp_port': 5222,
    				'xmpp_resource': 'wot'

    xmpp_host - это после @ будет идти. Логин вида [email protected].

    xmpp_resource - это после слеша будет вида [email protected]/wot или всё, что больше нравится. Адресов можно указать много больше одного. Но клиент, понятное дело, только к одному будет подключен.

    In fact, all my knowledge of c(++) was obtained without education. My education is not even close to programming. You don't need a lot of knowledge, just the basics.

     

    Вижу работа ещё кипит.

    2 часа назад, Dragon armor сказал:

    Вопрос, на самом деле, не тупой.

    Да, так можно. И на данный момент достаточно будет указать ip адрес или домен в настройках, которые передаёт эмулятор клиенту. Смотри xmpp_connections в скриптах эмулятора. Там в двух местах надо поправить. У меня на локальной машине, потому что так удобнее для отладки. Но ничего не мешает сделать удалённый сервер. Единственное, нужно будет сделать какой-то интерфейс по взаимодействию эмулятора и xmpp. С сообщением requestToken разобрался, что отправлять на его запрос - знаю. По сути, на это сообщение сервер отправляет логин (который является id клиента, пробовал другой, отличный от того, что присваивается клиенту, так клиент его не принимает) и пароль для подключения. Так что для тестовых целей можно прописать прямо в файле. Мне помнится, у тебя он есть (AccountAuthTokenProvider.py который). Напиши там что-то такое:

    
    	def requestToken(self, requestID, tokenType):
    		print 'requestToken {}, {}'.format(requestID, tokenType)
    		if tokenType == TOKEN_TYPE.XMPPCS:
    			self.client.onTokenReceived(requestID, tokenType, cPickle.dumps({'token': 12345, 'databaseID': 1}, 2))

    И импорт добавь:

    
    import cPickle
    from constants import TOKEN_TYPE

    И можешь экспериментировать. Тебе в ЛС могу скинуть, что у меня есть по дампу трафика xmpp (кстати, огромная удача, что у меня есть дамп в одном единственном файле, просто случайно захватился, а иначе гадай, что там надо было бы клиенту).

     

    
    				'xmpp_alt_connections': [],
    				'xmpp_bosh_connections': [],
    				'xmpp_connections': [('127.0.0.1', 5222)],
    				'xmpp_enabled': True,
    				'xmpp_host': '127.0.0.1',
    				'xmpp_muc_enabled': False,
    				'xmpp_muc_services': [],
    				'xmpp_port': 5222,
    				'xmpp_resource': 'wot'

    xmpp_host - это после @ будет идти. Логин вида [email protected].

    xmpp_resource - это после слеша будет вида [email protected]/wot или всё, что больше нравится. Адресов можно указать много больше одного. Но клиент, понятное дело, только к одному будет подключен.

    In fact, all my knowledge of c(++) was obtained without education. My education is not even close to programming. You don't need a lot of knowledge, just the basics.

     

    Интересно а для новичков в которые не шарят как да что будет гайд как сделать и что качать чтобы сервак заработал?

    https://m.vk.com/topic-104837919_38808801 прочекайте там вроде про движок может что полезное есть


  14. 4 минуты назад, Dragon armor сказал:

    @DrWeb7_1 У меня на виртуальной машине тоже не запускается. Ну тогда надо искать причину.

    @Plotnik5252ru Да ни на сколько. Это же просто ради интереса всё. Ну кто будет рубиться в старые танки? Как и в вот-классик, попробовал и ушёл на основной сервер.

    Ну смотри думаю будут играть так как смотри. Почему вг  делают вот классик временным- им не выгодно что все будут играть в него и бабло им в карман не уйдёт 


  15. 11 минут назад, Dragon armor сказал:

    Дык сервер-то давно работает. Скрины ещё на первых старницах есть.

    @DrWeb7_1 Попробуй тогда посмотреть, что клиент присылает.

    Файл в папку server_py\interfaces\.

    В файле Account.py добавляешь такое.

    В строке 579

    class Account(LittleWorld.Entity, ClientCommandsPort, Chat, AccountAuthTokenProvider):

     

    В строке 593 после

    Chat.__init__(self)

    добавь
     AccountAuthTokenProvider.__init__(self)

     

    AccountAuthTokenProvider.py 188 B · 1 скачивание

    А физику делать пробовали? 

×
×
  • Create New...