[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: Jery, Rey  
Форум » Knights and Merchants: Remake » Редактирование игры » Возвращаясь к перестроению юнитов (ищем алгоритм)
Возвращаясь к перестроению юнитов
KromДата: Понедельник, 26.09.2011, 12:49 | Сообщение # 16
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
mihail_msk, особой разницы между мерностью массивов на самом деле нет, ты прав. Разве что для оптимизации выборок из кэша, но мы такими вещами не занимаемся smile

Quote (mihail_msk)
А вычислять требуемое расположение отряда с учетом крупных препятствий типа мостов и гор должен уже другой алгоритм. Причем он в ремейке уже есть, как я понимаю.

Он ничем не отличается от алгоритма мелких препятствий. Но это к делу не относится пока )


Нашли баг в КаМ Ремейке? Отправьте отчет на contact@kamremake.com с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
mihail_mskДата: Понедельник, 26.09.2011, 17:39 | Сообщение # 17
Ополченец
Группа: Проверенные
Сообщений: 32
Награды: 0
Репутация: 2
Статус: Offline
Мне тут подсказали на работе еще один алгоритм: Допустим нужно построить отряд 2x4 . И мы имеет плоскость 4x8, на которой хаотично стоят сейчас солдаты. Построить нужно по центру их хаотичного положения.
Тогда независимо от будущего положения мы условно сдвигаем требуемую формацию в левый верхний угол этого квадрата, т.е сдвигаем формацию на две клетки вверх и две клетки влево. После этого нумеруем позиции там по шеренгам с самой дальней (самой верхней) к ближним. :
1234
5678
После этого для позиции 1 вычисляем самого ближнего к ней солдата из всего списка солдат. Назначаем его туда. После этого вычисляем самого ближнего для второй позиции. Назначаем туда.
После того, как всем назначили позиции - производим обратный сдвиг всей формации с уже назначенными солдатами - на две клетки вниз и две клетки вправо. И всё, туда уже можно идти каждому солдату pathfinding-ом.
Этот алгоритм имеет вычислений не (кол-во солдат)^3 как венгерский алгоритм, а (кол-во солдат)^2 .
Думаю, я его попробую сделать.


Сообщение отредактировал mihail_msk - Понедельник, 26.09.2011, 19:15
 
KromДата: Понедельник, 26.09.2011, 17:50 | Сообщение # 18
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
mihail_msk, это называется изобретением велосипедов.

Как алгоритм отработает если все стоят сверху слева и даже закрывают клетки 1 и 2:
*-***
*-*-**34
-----5678


Нашли баг в КаМ Ремейке? Отправьте отчет на contact@kamremake.com с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
mihail_mskДата: Понедельник, 26.09.2011, 19:21 | Сообщение # 19
Ополченец
Группа: Проверенные
Сообщений: 32
Награды: 0
Репутация: 2
Статус: Offline
Прошу прощения, я перепутал в тексте лево и право. smile
На самом деле формация формируется в верхнем левом (!), а не правом углу. Текст выше я подправил.
Если бы делать так, как я написал вначале - этого действительно могло вызвать "затор".

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


Сообщение отредактировал mihail_msk - Понедельник, 26.09.2011, 23:48
 
KromДата: Вторник, 27.09.2011, 09:30 | Сообщение # 20
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
mihail_msk, тем не менее, как алгоритм отработает если все стоят сверху слева и даже закрывают клетки 1 и 2:
*-***
*-*-**34
-----5678

Я так понимаю, что 1 и 2 будут считаться заполненными и на все остальные клетки юниты пойдут "сквозь" них.


Нашли баг в КаМ Ремейке? Отправьте отчет на contact@kamremake.com с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
mihail_mskДата: Вторник, 27.09.2011, 22:44 | Сообщение # 21
Ополченец
Группа: Проверенные
Сообщений: 32
Награды: 0
Репутация: 2
Статус: Offline
Нормально он отработает. Построение т.е.
1234
5678
условно сдвигается в левый верхний угол. А все юниты остаются там, где стояли. Левее и выше нового положения формации уже никого быть не может. И тогда * верхнего ряда станут самыми ближними к 1234, а * второго ряда - к 5678. Когда условно сдвинутую формацию вернем на место, то в реальности оба ряда * сделают на шаг вниз.

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


Сообщение отредактировал mihail_msk - Вторник, 27.09.2011, 22:45
 
KromДата: Среда, 28.09.2011, 09:04 | Сообщение # 22
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Другой вариант: все стоят на своих местах кроме 1 юнита. По угловому алгоритму он будет идти сквозь всех на свое место?

**** *
5***

и еще вариант:
**34
**78
**
**

Построения на ходу как такового не будет. Есть начальное положение отряда и когда игрок дает команду идти - каждому юниту говорится куда ему надо будет придти. Команда Halt по сути приказ идти на текущее место. Команды повернуться - приказ идти на то же место но с другой ориентацией. smile


Нашли баг в КаМ Ремейке? Отправьте отчет на contact@kamremake.com с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
mihail_mskДата: Среда, 28.09.2011, 13:02 | Сообщение # 23
Ополченец
Группа: Проверенные
Сообщений: 32
Награды: 0
Репутация: 2
Статус: Offline
Quote (Krom)
все стоят на своих местах кроме 1 юнита. По угловому алгоритму он будет идти сквозь всех на свое место?

Нет, по этому алгоритму они сдвинутся. "Своих мест" у них изначально нет, даже если они уже стоят на клетках, куда должен встать солдат.

Во втором случае солдаты, которые стоят на позициях 5 и 6 передвинутся на позиции 3 и 4 , т.к. подбор по этим позициям будет идти раньше. И то, что они уже стоят на "правильных клетках" никого не интересует. Фиксация их происходит только после подбора в порядке очередности.

Вот еще вариант:
12**
34**
56
78

В силу того, что 12 и 56 стоят в первый шеренгах, то они и будут выбраны ближайшими. Первую позицию в третьей шеренге замет 7. Вторую в третьей шеренге займут 3 или 8 т.к. у них равное расстояние до этой позиции. Но очевидно, что при заполнении нижней части солдаты идут немного громоздко. Поэтому можно сделать так: видно, что отряд перестраивается фалангой на восток относительно текущего положения, поэтому можно изменить порядок подбора с северо-восточного на восточно-северный т.е.
15**
26**
37
48
и тогда они будут строиться уже совсем красиво.

Предлагаю дальше теорию не обсуждать, а дождаться, когда я сделаю работающий демонстратор.


Сообщение отредактировал mihail_msk - Среда, 28.09.2011, 13:02
 
KromДата: Пятница, 14.10.2011, 11:17 | Сообщение # 24
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
mihail_msk, есть ли какие новости с алгоритмами?

Нашли баг в КаМ Ремейке? Отправьте отчет на contact@kamremake.com с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
mihail_mskДата: Понедельник, 14.11.2011, 23:48 | Сообщение # 25
Ополченец
Группа: Проверенные
Сообщений: 32
Награды: 0
Репутация: 2
Статус: Offline
Krom, привет ! К сожалению, наступила запарка на работе, сдача сразу трех проектов наложилась. В общем, пока комп только по работе. Берегу глаза, чтобы не вывалились совсем.
В начале декабря всё это закончится, тогда и сделаю алгоритм. Если нужно более срочно - могу по телефону или по skype подробно объяснить его идею. Тем более, что она очень простая ( как всё гениальное ).
 
KromДата: Вторник, 15.11.2011, 09:15 | Сообщение # 26
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
mihail_msk, спасибо что держишь в курсе smile Делу время как говорится.

Нашли баг в КаМ Ремейке? Отправьте отчет на contact@kamremake.com с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
mihail_mskДата: Понедельник, 30.04.2012, 01:14 | Сообщение # 27
Ополченец
Группа: Проверенные
Сообщений: 32
Награды: 0
Репутация: 2
Статус: Offline
Немного отвлекся массой разных дел. Но вот, вспомнил и решил всё-таки написать алгоритм перестроения. После переустановки винды дельфи еще не поставил, так что решил сейчас по-быстрому сделать это алгоритм на VBA под Excel.
В Excel нужно выбрать уровень безопасности макросов "средняя", иначе макрос не будет работать. Но я там выложил на одной из страниц весь примитивный код, так что макросы можно не запускать.
Лучше сразу вставить этот простейший алгоритм в KAm и погонять на реальных юнитах. Это будет и нагляднее и проще, мне кажется.
Прикрепления: kam_reorder.xls(36.5 Kb)


Сообщение отредактировал mihail_msk - Понедельник, 30.04.2012, 01:41
 
SerJeekДата: Понедельник, 30.04.2012, 01:28 | Сообщение # 28
Воин
Группа: Друзья
Сообщений: 123
Награды: 5
Репутация: 30
Статус: Offline
Перечитал всю ветку, но так и не понял, чем не нравится текущая система? smile

If you want to be ok,
Fuck the woman everyday
 
mihail_mskДата: Понедельник, 30.04.2012, 01:43 | Сообщение # 29
Ополченец
Группа: Проверенные
Сообщений: 32
Награды: 0
Репутация: 2
Статус: Offline
Я не знаю, меняли ли систему перестроения за 4 последние месяца. Но та система, что была 4 месяца назад, приводила к жутко долгому перестроению войск. Потому что каждый юнит пытался перейти на свою прежнюю позицию при перестроении.

Сообщение отредактировал mihail_msk - Понедельник, 30.04.2012, 02:26
 
KromДата: Понедельник, 30.04.2012, 11:42 | Сообщение # 30
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
mihail_msk, нет, ничего не меняли.

Quote (SerJeek)
чем не нравится текущая система?

Самый банальный случай, есть отряд из 9 человек который стоит вот так:

12345
6789

Игрок командует изменить построение на вот такое:
******
***

Как должны встать юниты в идеальном случае? Вот так:
123945
678

то есть 45 подвинулись и впустили 9, время перестроения - 1.5сек и отряд работает как часы

А как сейчас в игре:
123456
789

то есть 6 начинает ломиться через весь отряд на свое место и это занимает ... 6-7сек и в отряде полный хаос


Нашли баг в КаМ Ремейке? Отправьте отчет на contact@kamremake.com с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
Форум » Knights and Merchants: Remake » Редактирование игры » Возвращаясь к перестроению юнитов (ищем алгоритм)
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск: