SkepticalFox Posted August 21, 2018 Share Posted August 21, 2018 2 minutes ago, RUS_TAHK said: он не 2д игра) и как в варкрафт играть по вертикали? 1 @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted August 21, 2018 Share Posted August 21, 2018 Только что, RUS_TAHK сказал: Я говорю про ботов для ПВЕ режима, а не для ПВП-онлайн. Ну если это локальная песочница и бот владеет 100% объёмом информации в любой момент времени, то можно не сильно утруждаясь реализовать элементы простой логики. Как например, те же боты в CS1.5 были. Может в таком варианте что-то и выйдет. Вышел в песочницу, а там 15 штук таких утюгов карту патрулируют и агрятся на тебя, когда ты в зоне их стрельбы. Но это всё "дни минувшего будущего", так как самое главное, это механика игры. Она сначала должна быть воссоздана и спрограммирована, а потом еще реализована и отлажена. А это гЫгантская работа. @ Quote Link to comment Short link Share on other sites More sharing options...
RUS_TAHK Posted August 21, 2018 Share Posted August 21, 2018 @SkepticalFox качаешь варкрафт 3, и играешь в игру с со старенькой 3д графикой)) только вначале научись по видеороликам Только что, StranikS_Scan сказал: Ну если это локальная песочница и бот владеет 100% объёмом информации в любой момент времени, то можно не сильно утруждаясь реализовать элементы простой логики. Как например, те же боты в CS1.5 были. Может в таком варианте что-то и выйдет. Вышел в песочницу, а там 15 штук таких утюгов карту патрулируют и агрятся на тебя, когда ты в зоне их стрельбы. Но это всё "дни минувшего будущего", так как самое главное, это механика игры. Она сначала должна быть воссоздана и спрограммирована, а потом еще реализована и отлажена. А это гЫгантская работа. я не программист( конечно я всего этого не знаю( @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted August 21, 2018 Share Posted August 21, 2018 (edited) Только что, RUS_TAHK сказал: качаешь варкрафт 3, и играешь в игру с со старенькой 3д графикой)) только вначале научись по видеороликам Там двумерная система координат в позиционировании. То что модельки и карта 3Д - значения не имеет. Как в шахматах например, фигурки ЗД, а система позиционирования их в двух координатах. ЗЫ: Шахматы с тремя координатами были у Шелдона в Теории большого взрыва))) Edited August 21, 2018 by StranikS_Scan @ Quote Link to comment Short link Share on other sites More sharing options...
Monstrofil Posted August 22, 2018 Share Posted August 22, 2018 (edited) @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 August 22, 2018 by Monstrofil @ Quote Link to comment Short link Share on other sites More sharing options...
Dragon armor Posted August 24, 2018 Author Share Posted August 24, 2018 Очень долго разбирался с ландшафтом, рисовал схемы, чтобы понять, как индексы полигонов сделать И всё-равно до конца не разобрался. Почему между ними получилась дыра шириной в шаг? Почти полтора миллиона полигонов на карту 1 км2. Интересно, физический движок не захлебнётся? @ Quote Link to comment Short link Share on other sites More sharing options...
RUS_TAHK Posted August 24, 2018 Share Posted August 24, 2018 Я посмотрел скриншоты, но не знаю, что ответить @ Quote Link to comment Short link Share on other sites More sharing options...
Dragon armor Posted August 24, 2018 Author Share Posted August 24, 2018 Ещё вопрос. Чанки как индексируются? Слева сверху будет первый? 00000000o - центральный, это понятно. А справа от него 00010000o? Слева ffff0000o? @RUS_TAHK Это про внутреннее устройство движка. Понятно, что если не разбирался с этим, то не сможешь ответить. @ Quote Link to comment Short link Share on other sites More sharing options...
RUS_TAHK Posted August 24, 2018 Share Posted August 24, 2018 (edited) @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 August 24, 2018 by RUS_TAHK 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Monstrofil Posted August 24, 2018 Share Posted August 24, 2018 (edited) 1 час назад, Dragon armor сказал: Ещё вопрос. Чанки как индексируются? Слева сверху будет первый? 00000000o - центральный, это понятно. А справа от него 00010000o? Слева ffff0000o? XXXXZZZZ[o|i].chunk, каждый 100х100 попугаев. В питоне есть метод BigWorld.findChunkFromPoint(point, spaceID), можешь проверить, но емнип ты правильно написал. spaceID можно из какой-нибудь entity вытянуть Edited August 24, 2018 by Monstrofil @ Quote Link to comment Short link Share on other sites More sharing options...
Dragon armor Posted August 24, 2018 Author Share Posted August 24, 2018 @Monstrofil Как у них всё сложно сделано. Но, похоже, мне не надо делать 3D модель. Смотрел примеры к физическому движку, там есть демосцены с ландшафтом. Так там так же загружается (генерируется в примере) карта высот и передаются размеры сетки. И функция есть соответствующая. Сейчас попробую сделать по аналогии, вдруг получится, а то этот ландшафт уже утомил меня. А дальше нужно будет статику загружать, ещё одна проблема. @ Quote Link to comment Short link Share on other sites More sharing options...
Monstrofil Posted August 24, 2018 Share Posted August 24, 2018 31 минуту назад, Dragon armor сказал: @Monstrofil Как у них всё сложно сделано. Но, похоже, мне не надо делать 3D модель. Смотрел примеры к физическому движку, там есть демосцены с ландшафтом. Так там так же загружается (генерируется в примере) карта высот и передаются размеры сетки. И функция есть соответствующая. Сейчас попробую сделать по аналогии, вдруг получится, а то этот ландшафт уже утомил меня. А дальше нужно будет статику загружать, ещё одна проблема. Что-то мне подсказывает что все же физ. движок если не захлебнется от такого количества моделей, то как минимум начнет подтормаживать. И в итоге придется сначала писать препроцессор, который поубирает лишние полигоны. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted August 24, 2018 Share Posted August 24, 2018 3 hours ago, Dragon armor said: Почему между ними получилась дыра шириной в шаг? Потому что игра не выводит это, как вывожу я у неё там шейдеры для этого @ Quote Link to comment Short link Share on other sites More sharing options...
Dragon armor Posted August 24, 2018 Author Share Posted August 24, 2018 (edited) 2 часа назад, SkepticalFox сказал: игра не выводит это, как вывожу я Ты тут ни при чём, если ты о том, что это заимствовано у тебя. Мне не понятно, почему так получилось, должно же заканчиваться там, где начинается следующий чанк. Ошибка, наверное, в алгоритме. Кажется, что-то пошло не так. Edited August 24, 2018 by Dragon armor 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Dragon armor Posted August 25, 2018 Author Share Posted August 25, 2018 Решил посмотреть, как геометрия загружена в физический движок. Ошибка не в алгоритме, тут так же расстояние между чанками в один шаг. А некоторая техника полностью провалилась под ландшафт из-за того, что неправильно загрузилась геометрия. Чанки почему-то получились ориентированы неправильно, каждый повёрнут на 90 градусов. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 25, 2018 Share Posted August 25, 2018 Забавно. @ Quote Link to comment Short link Share on other sites More sharing options...
Dragon armor Posted August 25, 2018 Author Share Posted August 25, 2018 @Pavel3333 Нет, не забавно, утомительно. Пытался поворачивать модель на 90 градусов по X, Y - всё так же. Решил ещё посмотреть, как загружается коллизионная модель. Так же повёрнута на 90 градусов, но уже по другой оси и неправильно загружена. Но последнее поправимо. Слева - как загрузил физический движок, справа - как должно быть. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted August 25, 2018 Share Posted August 25, 2018 (edited) @Dragon armor твой движок на другую систему координат рассчитан, наверное https://github.com/mikeoverbay/Terra/blob/master/Terra/Modules/modTerrain.vb тут еще посмотри Edited August 25, 2018 by SkepticalFox @ Quote Link to comment Short link Share on other sites More sharing options...
Dragon armor Posted August 25, 2018 Author Share Posted August 25, 2018 @SkepticalFox А физическому движку важна система координат? Там же только вектор гравитации задать надо правильно. Или это из-за алгоритма построения полигона? По часовой стрелке или против? Про Terra знаю, но то ли это язык такой, то ли стиль программирования, у меня не получается разобраться, что и где там. Сейчас смотрю свой проект по другой игре, не законченный и давно заброшенный. Там система координат, судя по комментариям, мной оставленным, xzy, при загрузке модели поворачивал её на 90 градусов по X. Но там был ландшафт в виде одной 3D модели. У меня успешно загружались модели, работала физика. Там не было упрощенной модели коллизии, загружал 3D модель в физический движок. И всё работало нормально. Только не помню одного момента - модель преобразовывалась в выпуклую или оставалась такой же, как загружал. Из-за этой проблемы создавал составную коллизию и присоединял остальные части к основной. Но вот про основную модель не помню. Правильно понимаю, что в этом фрагменте кода self.PrimitiveGroups.append({ 'startIndex' : startIndex, 'nPrimitives' : nPrimitives, 'startVertex' : startVertex, 'nVertices' : nVertices }) Для создания модели нужно только nPrimitives как смещение от начала в списке индексов. Коллизию шасси загрузить получилось. Если выводить один-к-одному в блендер, то так же на 90 градусов повёрнута. Наверное, надо повернуть, а потом проверить, как в клиенте будет. Но это попозже. Поворачивать надо на -90 и модель получается упрощенная. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted August 25, 2018 Share Posted August 25, 2018 1 hour ago, Dragon armor said: Для создания модели нужно только nPrimitives как смещение от начала в списке индексов. это для наложения материалов по индексу группы, да 1 hour ago, Dragon armor said: Если выводить один-к-одному в блендер, то так же на 90 градусов повёрнута определенно xzy/xyz проблемы @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
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.