Jump to content
Korean Random
Dragon armor

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

Recommended Posts

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

Я говорю про ботов для ПВЕ режима, а не для ПВП-онлайн.

 

Ну если это локальная песочница и бот владеет 100% объёмом информации в любой момент времени, то можно не сильно утруждаясь реализовать элементы простой логики. Как например, те же боты в CS1.5 были. Может в таком варианте что-то и выйдет. Вышел в песочницу, а там 15 штук таких утюгов карту патрулируют и агрятся на тебя, когда ты в зоне их стрельбы. Но это всё "дни минувшего будущего", так как самое главное, это механика игры. Она сначала должна быть воссоздана и спрограммирована, а потом еще реализована и отлажена. А это гЫгантская работа.

Share this post


Link to post

Short link
Share on other sites

@SkepticalFox качаешь варкрафт 3, и играешь в игру с со старенькой 3д графикой)) только вначале научись по видеороликам

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

 

Ну если это локальная песочница и бот владеет 100% объёмом информации в любой момент времени, то можно не сильно утруждаясь реализовать элементы простой логики. Как например, те же боты в CS1.5 были. Может в таком варианте что-то и выйдет. Вышел в песочницу, а там 15 штук таких утюгов карту патрулируют и агрятся на тебя, когда ты в зоне их стрельбы. Но это всё "дни минувшего будущего", так как самое главное, это механика игры. Она сначала должна быть воссоздана и спрограммирована, а потом еще реализована и отлажена. А это гЫгантская работа.

я не программист( конечно я всего этого не знаю(

Share this post


Link to post

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

качаешь варкрафт 3, и играешь в игру с со старенькой 3д графикой)) только вначале научись по видеороликам

 

Там двумерная система координат в позиционировании. То что модельки и карта 3Д - значения не имеет. Как в шахматах например, фигурки ЗД, а система позиционирования их в двух координатах.

 

ЗЫ: Шахматы с тремя координатами были у Шелдона в Теории большого взрыва)))

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

 

@Dragon armorпроверил танки, тут это пакет 0x24 в реплее, используется для обновления destroyedFragiles/fallenColumns/fallenTrees/damageStickers/других list/dict

 

Цитата

DEBUG:root:
DEBUG:root:nested property request for id=10344435 isSlice=True data=e00097bd70df
DEBUG:root:next path item: fallenTrees(3)
DEBUG:root:object: [] <class 'def_generator.nested_types.PyFixedList'>
DEBUG:root:Bits per array index: 0
DEBUG:root:List index: 0
DEBUG:root:Slice index: 0
DEBUG:root:new list object: [[0, 151, 189, 112, 223]]

.

...или вот

DEBUG:root:nested property request for id=10261187 isSlice=True data=ef0093bda506
DEBUG:root:next path item: fallenTrees(3)
DEBUG:root:object: [[0, 141, 189, 112, 163], [0, 145, 189, 113, 58], [0, 146, 189, 128, 30]] <class 'def_generator.nested_types.PyFixedList'>
DEBUG:root:Bits per array index: 2
DEBUG:root:List index: 3
DEBUG:root:Slice index: 3
DEBUG:root:new list object: [[0, 147, 189, 165, 6]]
DEBUG:root:
DEBUG:root:
DEBUG:root:nested property request for id=10912843 isSlice=True data=e3c00802ea66e2ed5d87
DEBUG:root:next path item: damageStickers(12)
DEBUG:root:object: [11992011582228136455L, 4675071338421158407L, 5466597707613143559L] <class 'def_generator.nested_types.PyFixedList'>
DEBUG:root:Bits per array index: 2
DEBUG:root:List index: 3
DEBUG:root:Slice index: 3
DEBUG:root:new list object: [9754213924599366152L]

 

Те же три пустых байта в пакете, тот же формат.

self.entity_id, = struct.unpack('I', stream.read(4))
self.is_slice = struct.unpack('b', stream.read(1))[0] == 1
self.payload_size, = struct.unpack('b', stream.read(1))

self.u = stream.read(3)  # unknown
self.payload = stream.read()

 

Так что если будут с ним проблемы - пиши, попробую помочь.

Edited by Monstrofil

Share this post


Link to post

Short link
Share on other sites

Очень долго разбирался с ландшафтом, рисовал схемы, чтобы понять, как индексы полигонов сделать И всё-равно до конца не разобрался. Почему между ними получилась дыра шириной в шаг?

Почти полтора миллиона полигонов на карту 1 км2. Интересно, физический движок не захлебнётся?

map1.png

map2.png

Share this post


Link to post

Short link
Share on other sites

Ещё вопрос. Чанки как индексируются? Слева сверху будет первый? 00000000o - центральный, это понятно. А справа от него 00010000o? Слева ffff0000o?

@RUS_TAHK Это про внутреннее устройство движка. Понятно, что если не разбирался с этим, то не сможешь ответить.

Share this post


Link to post

Short link
Share on other sites

@Dragon armor Однако я знаком с 16-ричной системой. ffff0000 имеет большее значение, чем 00010000. Если речь о 2D, тогда должны быть координаты x и y. Однако вы занимаетесь трёхмерной графикой. Ландшафт с рельефами хороши, если вам хочется сделать свою песчаную карту. Но вы пишете: 00000000o - а что такое o в конце? Я не уверен, но если справа 00010000, тогда слева должно быть -00010000 вероятно, что последние 0000 - координаты y. Я прав?

---

Если я не прав, тогда проигнорьте мои предположения. Я прост пробовал делать модели для старенького Warcraft III, но я совершенно ничего не добился в графических моделях( я 1 в этом по 10-бальной шкале(

@Dragon armor поможет ли вам это? Не знаю( поищите: https://www.youtube.com/results?search_query=blender+уроки быть может там вы найдёте для себя подсказки либо решения проблем(

Edited by RUS_TAHK
  • Downvote 1

Share this post


Link to post

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

Ещё вопрос. Чанки как индексируются? Слева сверху будет первый? 00000000o - центральный, это понятно. А справа от него 00010000o? Слева ffff0000o?

XXXXZZZZ[o|i].chunk, каждый 100х100 попугаев.

 

В питоне есть метод BigWorld.findChunkFromPoint(point, spaceID), можешь проверить, но емнип ты правильно написал.
spaceID можно из какой-нибудь entity вытянуть

Edited by Monstrofil

Share this post


Link to post

Short link
Share on other sites

@Monstrofil Как у них всё сложно сделано. Но, похоже, мне не надо делать 3D модель. Смотрел примеры к физическому движку, там есть демосцены с ландшафтом. Так там так же загружается (генерируется в примере) карта высот и передаются размеры сетки. И функция есть соответствующая. Сейчас попробую сделать по аналогии, вдруг получится, а то этот ландшафт уже утомил меня. А дальше нужно будет статику загружать, ещё одна проблема.

Share this post


Link to post

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

@Monstrofil Как у них всё сложно сделано. Но, похоже, мне не надо делать 3D модель. Смотрел примеры к физическому движку, там есть демосцены с ландшафтом. Так там так же загружается (генерируется в примере) карта высот и передаются размеры сетки. И функция есть соответствующая. Сейчас попробую сделать по аналогии, вдруг получится, а то этот ландшафт уже утомил меня. А дальше нужно будет статику загружать, ещё одна проблема.

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

И в итоге придется сначала писать препроцессор, который поубирает лишние полигоны. 

Share this post


Link to post

Short link
Share on other sites
3 hours ago, Dragon armor said:

Почему между ними получилась дыра шириной в шаг?

Потому что игра не выводит это, как вывожу я

у неё там шейдеры для этого

Share this post


Link to post

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

игра не выводит это, как вывожу я

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

Кажется, что-то пошло не так.

shot_068.jpg

shot_069.jpg

Edited by Dragon armor
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Решил посмотреть, как геометрия загружена в физический движок. Ошибка не в алгоритме, тут так же расстояние между чанками в один шаг. А некоторая техника полностью провалилась под ландшафт из-за того, что неправильно загрузилась геометрия. Чанки почему-то получились ориентированы неправильно, каждый повёрнут на 90 градусов.

map3.png

map4.png

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

@Pavel3333 Нет, не забавно, утомительно. Пытался поворачивать модель на 90 градусов по X, Y - всё так же. Решил ещё посмотреть, как загружается коллизионная модель. Так же повёрнута на 90 градусов, но уже по другой оси и неправильно загружена. Но последнее поправимо.

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

collision.png

Share this post


Link to post

Short link
Share on other sites

@SkepticalFox А физическому движку важна система координат? Там же только вектор гравитации задать надо правильно. Или это из-за алгоритма построения полигона? По часовой стрелке или против? Про Terra знаю, но то ли это язык такой, то ли стиль программирования, у меня не получается разобраться, что и где там.

Сейчас смотрю свой проект по другой игре, не законченный и давно заброшенный. Там система координат, судя по комментариям, мной оставленным, xzy, при загрузке модели поворачивал её на 90 градусов по X. Но там был ландшафт в виде одной 3D модели. У меня успешно загружались модели, работала физика. Там не было упрощенной модели коллизии, загружал 3D модель в физический движок. И всё работало нормально.

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

Правильно понимаю, что в этом фрагменте кода

self.PrimitiveGroups.append({
  'startIndex'  : startIndex,
  'nPrimitives' : nPrimitives,
  'startVertex' : startVertex,
  'nVertices'   : nVertices
})

Для создания модели нужно только nPrimitives как смещение от начала в списке индексов.

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

Поворачивать надо на -90 и модель получается упрощенная.

collision2.png

Share this post


Link to post

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

Для создания модели нужно только nPrimitives как смещение от начала в списке индексов.

это для наложения материалов по индексу группы, да

1 hour ago, Dragon armor said:

Если выводить один-к-одному в блендер, то так же на 90 градусов повёрнута

определенно xzy/xyz проблемы

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