Jump to content
Korean Random
Dragon armor

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

Recommended Posts

On 10/15/2020 at 4:39 PM, Dragon armor said:

cPickle is used everywhere in the game client where python objects need to be passed. cPickle is not used for file transfers. This is a good way to avoid creating your own object serialization libraries.

I have nothing from physics at the moment. I can't even imagine how the final solution should look like. I still haven't made an arena (cellapp) to test physics. You can use demosSandbox. I think you looked at the examples in the engine. This is enough to get you started.

Unfortunately, physics in a game about tanks that move is the most important thing.

Maybe. I think they had their own server physics engine. Perhaps they still have their own physics engine.

I know English very bad. I am using google translate. I think I also have some bugs.

well what would YOU like to see accomplished in the way of physics, in order for this project to move forward faster than it is currently. name it and i'll spend hours on it until it's done.

Share this post


Link to post

Short link
Share on other sites

@blueferret  How are you going to do? Do you know about raycast vehicle? Or will you do on physical objects? I know how to make a very simple implementation. Perhaps that will be enough for me. But how are you going to do?  What will drive the tank? Force pushing him from behind? The force applied to the wheels? How will you calculate your force? How do you make the difference in power? For example, a 700 and 1400 horsepower engine. Gear ratio, differential, turn in place, suspension.

Share this post


Link to post

Short link
Share on other sites



shot_079.thumb.jpg.4b7aa4d081a7e047e6774d8eb4c0d954.jpg

Как и предполагал, подобное можно сделать, когда залогинишься на baseapp, но дальше сервер держит в подвешенном состоянии. Т.к. в BigWorld кластер и loginapp - это отдельный сервер, то он не знает о нагрузке на baseapp. Хоть и ресурсы выделены (например, трафик уже шифруется). А baseapp, в свою очередь, может быть перегружен.

Теперь пытаюсь разобраться с энтити Account. У меня сделано очень плохо на данный момент, хочу задействовать базу данных, чтобы изменения сохранялись. Но это достаточно сложно хотя бы потому, что не понятно, что именно сохранять и в каком виде. Должны быть таблицы техники, экипажа, товаров (там всё остальное?). Их надо как-то заполнить начальными значениями. А ассоциации экипаж - техника? Как это реализовать?

У меня есть такой код для создания техники:

items.vehicles.g_cache.vehicle(nationID, itemTypeName)

nationID = nations.INDICES['germany']
itemTypeName = 190

Создаст вафлю е100. Возвращается VehicleType. Вот там всё, что можно устанавливать на танк?

А это уже из ClientGoodies.py

    def synchronize(self, isFullSync, diff):
        if isFullSync:
            self.__cache.clear()
        goodiesFull = diff.get(('goodies', '_r'), {})
        if goodiesFull:
            self.__cache = dict(goodiesFull)
        for item in ('goodies',):
            itemDiff = diff.get(item, None)
            if itemDiff is not None:
                synchronizeDicts(itemDiff, self.__cache.setdefault(item, {}))

        return

Вот тут что происходит? for item in ('goodies',): зачем так делать?

Приставка '_r' встречается в некоторых местах. По видимому, это полное обновление, replace может быть? А без неё только то, чего нет для экономии трафика.

 

@Putin192 Дратути. В ангаре счётчик очереди понаблюдать хочется?

Share this post


Link to post

Short link
Share on other sites

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

Трафик был сдамплен где-то в новогоднее наступление 2017-2018, поэтому снежинка. Такая ностальгия. Ещё 5к боёв, чуть-чуть техники, слотов в притык.



shot_080.thumb.jpg.ec0f7ee56546c65b63d37b8d425cbc25.jpgshot_081.thumb.jpg.9dfb416015c1f1c77ed6c5c2c2c46762.jpg

Без правильного оборудования, камуфляжа, нормального экипажа, даже без расходников. И со снарядами по умолчанию. Игрушечные фугасики на таком калибре.



shot_084.thumb.jpg.007a89b303d6e82df88dbda597116c1e.jpg

И единственный нормальный экипаж за ЛБЗ. Даже отметку удалось взять.



shot_086.thumb.jpg.50c2f040da463f80111522ddb7bf3593.jpg

А магазин-то, какой магазин! Максимум функционала, ничего лишнего, сверхбыстрая загрузка, быстрый отклик.



shot_082.thumb.jpg.600fe564743db60f5de8cb4c40a0a7f2.jpg

 

В создании техники уже разобрался. В создании экипажа тоже, при чём со всеми перками сразу (как на прес-аккаунте), хотя это пока что не протестировано, т.к. не на чем. Не знаю, как лучше в БД это сохранять. В оригинале есть индекс у техники, экипажа. Он, во-первых, уникален, во-вторых, увеличивается с каждой новой техникой или нанятым танкистом и связан с ним до конца его дней. Пока что попробую делать без привязки к индексу. Можно попробовать всё загонять в БД через cPickle. Не уверен, что прямо таки критично будет. Хоть и внешне достаточно плохое решение.

Share this post


Link to post

Short link
Share on other sites

Индексы у техники и экипажа отдельные. Очень похоже, что как в БД добавляется. Но такой объём хранить? Как у картохи сделано, узнать бы. Тут всё приходится придумывать. В BigWorld ничего этого уже нет.

Только что, Plotnik5252ru сказал:

Ну а если не через БД то какие варианты ещё есть?

Никаких. Как состояние хранить? Каждый раз перестраивать? Оно, конечно, не сильно и нужно. Можно вообще без неё обойтись. Кстати, идея. На первое время сойдёт.

Впринципе, можно генерировать новое состояние каждый раз.

Share this post


Link to post

Short link
Share on other sites

Ну а если сравнивать твой сервер сейчас и то что ты только на коленке написал есть ли результат? 

Share this post


Link to post

Short link
Share on other sites

 

@Plotnik5252ru Там внутренние отличия будут.

Разница достаточно большая по сетевому протоколу. А сеть - очень важный элемент в подобном.

Edited by Dragon armor

Share this post


Link to post

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

Индексы у техники и экипажа отдельные. Очень похоже, что как в БД добавляется. Но такой объём хранить? Как у картохи сделано, узнать бы. Тут всё приходится придумывать. В BigWorld ничего этого уже нет.

Никаких. Как состояние хранить? Каждый раз перестраивать? Оно, конечно, не сильно и нужно. Можно вообще без неё обойтись. Кстати, идея. На первое время сойдёт.

Впринципе, можно генерировать новое состояние каждый раз.

А разве генерировать удобно будет?

Share this post


Link to post

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

А разве генерировать удобно будет?

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

Но с БД надо будет думать что-то.

Edited by Dragon armor

Share this post


Link to post

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

Но с БД надо будет думать что-то.

Барышников говорил, что для хранения они применяют MySQL. Логично предположить, что его придётся использовать.

Кстати, мне архитектура "ячеек" арены так до сих пор и непонятна. Когда эрзац-бой в твоём эмуляторе сервера запускается, карта впихнута в одну ячейку, как и все энтити (WT E 100)?

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

А магазин-то, какой магазин!

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

Share this post


Link to post

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

Барышников говорил, что для хранения они применяют MySQL. Логично предположить, что его придётся использовать.

MySQL применяется из-за огромной нагрузки на БД. Если нагрузка небольшая, sqlite справится. И для него вьюверов на любой вкус.

8 минут назад, DrWeb7_1 сказал:

Кстати, мне архитектура "ячеек" арены так до сих пор и непонятна.

Разбивка пространства же. Ничего сложного в теории. Движок предполагалось использовать для карт неогранниченного размера. А на одном cpu или в одном процессе такое не просчитать и не обработать. Вот для танков этот подход очень не оптимален из-за размера карт 1х1 км, когда у энтити по 500 м с каждой стороны зона интереса расположена. Хотя Барышников тоже объяснял это тем, что вполне возможно увеличение размера карт и эта технология понадобится. Линия фронта, хотя бы. Но какие проблемы с производительностью клиента там были.

10 минут назад, DrWeb7_1 сказал:

эрзац

Аж гуглить пришлось.

10 минут назад, DrWeb7_1 сказал:

Когда эрзац-бой в твоём эмуляторе сервера запускается, карта впихнута в одну ячейку, как и все энтити (WT E 100)?

Да. У меня архитектура BigWorld даже близко не повторяется. Только необходимый минимум для клиента. Одна карта - один процесс.

8 минут назад, Plotnik5252ru сказал:

возможно ли изменять характеристики танков

Да, возможно. Любые изменения со стороны сервера.

Share this post


Link to post

Short link
Share on other sites
22.10.2020 в 14:44, Dragon armor сказал:

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

Трафик был сдамплен где-то в новогоднее наступление 2017-2018, поэтому снежинка. Такая ностальгия. Ещё 5к боёв, чуть-чуть техники, слотов в притык.

 

  Скрыть содержимое

 

 


shot_080.thumb.jpg.ec0f7ee56546c65b63d37b8d425cbc25.jpgshot_081.thumb.jpg.9dfb416015c1f1c77ed6c5c2c2c46762.jpg
 

 

 

Без правильного оборудования, камуфляжа, нормального экипажа, даже без расходников. И со снарядами по умолчанию. Игрушечные фугасики на таком калибре.

 

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

 

 


shot_084.thumb.jpg.007a89b303d6e82df88dbda597116c1e.jpg
 

 

 

И единственный нормальный экипаж за ЛБЗ. Даже отметку удалось взять.

 

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

 

 


shot_086.thumb.jpg.50c2f040da463f80111522ddb7bf3593.jpg
 

 

 

А магазин-то, какой магазин! Максимум функционала, ничего лишнего, сверхбыстрая загрузка, быстрый отклик.

 

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

 

 


shot_082.thumb.jpg.600fe564743db60f5de8cb4c40a0a7f2.jpg
 

 

 

 

В создании техники уже разобрался. В создании экипажа тоже, при чём со всеми перками сразу (как на прес-аккаунте), хотя это пока что не протестировано, т.к. не на чем. Не знаю, как лучше в БД это сохранять. В оригинале есть индекс у техники, экипажа. Он, во-первых, уникален, во-вторых, увеличивается с каждой новой техникой или нанятым танкистом и связан с ним до конца его дней. Пока что попробую делать без привязки к индексу. Можно попробовать всё загонять в БД через cPickle. Не уверен, что прямо таки критично будет. Хоть и внешне достаточно плохое решение.

Если ты разобрался как добавлять танки и накрутить бои и медали, то можешь ли ты менять ник в игре?

Share this post


Link to post

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

можешь ли ты менять ник в игре

Да. Возможны любые изменения со стороны сервера.

Share this post


Link to post

Short link
Share on other sites
On 10/17/2020 at 4:40 AM, Dragon armor said:

@blueferret  How are you going to do? Do you know about raycast vehicle? Or will you do on physical objects? I know how to make a very simple implementation. Perhaps that will be enough for me. But how are you going to do?  What will drive the tank? Force pushing him from behind? The force applied to the wheels? How will you calculate your force? How do you make the difference in power? For example, a 700 and 1400 horsepower engine. Gear ratio, differential, turn in place, suspension.

Not entirely sure on all this yet but probably apply force from behind the tank slightly on top of it, dynamically depending on the weight of the tank.

Share this post


Link to post

Short link
Share on other sites
26.10.2020 в 17:58, Dragon armor сказал:

Да. Возможны любые изменения со стороны сервера.

А кто тогда определяет дерево исследования? И клиент, и сервер? Внутри клиента игры оно представлено XML-файлом, насколько я помню. На сервере – понятия не имею.

Share this post


Link to post

Short link
Share on other sites
1 hour ago, DrWeb7_1 said:

Who then defines the research tree? Both client and server? Inside the game client, it is represented by an XML file, as far as I remember. On the server - I have no idea.

The client represents it locally yes. But when any action is made via the tech tree (ie selling a module or mounting one etc) then the client sends the server a packet or two (or more) basically saying that the user wants to do X Y or Z with A B or C module, and if that module/tank doesn't exist in the server's version, or, they don't have the tank for example, then they get sent an error obviously. The client dictates what you see visually in the tech tree to save bandwidth and cut down on loading times among other things. The server however will dictate if any of those given items are available, etc. or if the user in question is allowed to purchase the tank (ie trying to purchase the WT E 100 on the live server won't work the server will reject it).

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.
Note: Your post will require moderator approval before it will be visible.

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...