Спасибо Ну и жарко ж было в е-цив - жаль, Петер не хочет делать е-цив2, да и ты кинулся в совсем другую сторону
Всплыл опять вопрос протекания битв
Сейчас битва идет несколько раундов, а каждый раунд - несколько тиков.
При этом результат битвы вычисляется в момент ее начала (проходят все раунды) и далее юниты просто стоят и изображают что они дерутся.
Вопрос в том, как обрабатывать ситуацию когда к двум дерущимся подключается третий?
Интересно, как это разруливалось в Ециве?
Вообще я придумал четыре решения
1. Мгновенные битвы.
Самое простое. Битва происходит за 0 тиков, просто победивший юнит перемещается в клетку побежденного, а побежденный исчезает.
Минус в том что такое решение не соответствует концепции тиков где все события происходят в течение некоторого времени. В принципе можно принять что 1 ход это довольно длительный промежуток вроде месяца, а битва происходит в течение нескольких часов т.е. практически мгновенно.
Еще один минус тут в том что битвы становятся совсем неподконтрольны игроку. Если сражение больших армий занимало бы несколько ходов, игрок мог бы подводить подкрепления, или принять решение отступать, и т.п., что было бы по-моему интереснее. В принципе это может эмулироваться действиями нескольких юнитов, а не одного, но тогда на размер юнита должно быть наложено ограничение, чтобы нельзя было всех воинов засунуть в одного юнита и мгновенно слить его, но группы юнитов перемещались и сражались бы в течение некоторого времени.
2. Ограниченные битвы.
Смысл в том чтобы не позволять никому вступать в битву пока она не закончилась, т.е. всегда сражается не более двух юнитов. Остальные могут ходить вокруг да около но нападать не могут. Это решение мне ненравится.
3. Отложенные битвы.
Как и разделение юнитов, битва происходит в aftermove, а во время фазы передвижений определяется только, какие юниты будут в ней участвовать. Например, А напал на Б, а В на А, а потом еще Г на Б - все эти юниты после осуществления нападения останавливаются до конца хода а потом в "междуходье" происходит сражение. Этот вариант мне тоже не нравится. Он плох во всех отношениях, какое ни возьми.
4. Динамические битвы.
Смысл в том, что битва считается не целиком а каждый раунд отдельно, как отдельная битва. Есть юниты А и Б. Если их битва началась на тике 10, и длится 5 тиков, то если на 13м подошел еще один юнит В и напал на один из сражающихся юнитов Б, он будет драться с воинами оставшимися от битвы А и Б на тике 10. потом на 15м тике начнется следующая битва А с Б, в Б будут воины с вычетом погибших в битве с В на 13м тике.
На самом деле это не новое решение а всего лишь дробление битвы на более мелкие отрезки.
Сохраняется следующая проблема: если в битве на 10-15 тиках Б будет полностью уничтожен, то что будет делать В, подошедший на 13м тике? В принципе он может показывать, что он сражается с Б, до окончания битвы А и Б, т.е. до 15го тика. а затем действовать по ситуации.
пока я выбираю между 1 и 4.
Ваши идеи?
EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III
в е-цив битва длилась 0 тиков и юниты/армии после битвы оставались на месте. еще нюанс, в битву армии вступали находившись на соседних клетках, кстати у тебя как ?
по поводу 1-4, я бы выбрал 1й вариант, просто потому, что так очевидней для игрока. при четвертом варианте есть вариант, что игроки перестанут понимать, кто там когда подошел и начнут выть о мифических багов в игре. имхо на первое место нужно ставить геймплей, а он по моему не пострадает от 0 тиков на битву.
у меня юнит если имеет приказ напасть на другого - подходит к нему (встает на соседнюю клетку) и начинает битву.
также если юнит шел и на пути оказался враг - тоже нападает, т.е. когда хочет войти в клетку в которой враг.
кто когда подошел вроде неплохо просматривается из рапорта. вобщем я пока сделаю (4) тем более что этот вариант уже реализован (только в виде "длинных" битв) а потом проведем тестирование и решим оставить его или переделать в (1).
так они вроде противоречат друг другу?
как определять в каком случае какой вариант использовать)
EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III
\\так они вроде противоречат друг другу?\\ как определять в каком случае какой вариант использовать)Почему?Разные ситуации -- разные алгоритмы.В зависимости от количества, условий, местности... мало ли от чего еще...
Битва - да, за 0 тиков, она мгновенно относительно длинного тура (призываю использовать слово "тур" вместо "хода": под ходом чаще всего подразумевают ход отряда, а тур - это когда поХОДили все желающие отряды).
(Кстати юнит - это единица управления, может быть и 1 воин, и отряд, и армия из отрядов как в э-цив вроде. Так что вполне подходящее и ПРИВЫЧНОЕ слово, я бы оставил.)
НО: в результате боя не обязательно 1 отряд должен погибнуть, надо как и местами в Циве и в Панцере1 - юнит может отступить. Нападающий в следующий тик может пытаться догнать недобитого, недобитый может пытаться спрятаться в своем укреплении, слиться со своей сильной армии, пытаться скрыться в лесу, бросить обозы и убежать/ускакать - это ж какой простор для стратегии!
Мне тоже категорически не нравится.2. Ограниченные битвы.
Смысл в том чтобы не позволять никому вступать в битву пока она не закончилась, т.е. всегда сражается не более двух юнитов. Остальные могут ходить вокруг да около но нападать не могут. Это решение мне ненравится.
Согласен - плохо.3. Отложенные битвы.
Как и разделение юнитов, битва происходит в aftermove, а во время фазы передвижений определяется только, какие юниты будут в ней участвовать. Например, А напал на Б, а В на А, а потом еще Г на Б - все эти юниты после осуществления нападения останавливаются до конца хода а потом в "междуходье" происходит сражение. Этот вариант мне тоже не нравится. Он плох во всех отношениях, какое ни возьми.
Отлично!!! Похожее я предлагал в 1м абзаце. Добавлю: еще больше интереса добавит4. Динамические битвы.
Смысл в том, что битва считается не целиком а каждый раунд отдельно, как отдельная битва. Есть юниты А и Б. Если их битва началась на тике 10, и длится 5 тиков, то если на 13м подошел еще один юнит В и напал на один из сражающихся юнитов Б, он будет драться с воинами оставшимися от битвы А и Б на тике 10. потом на 15м тике начнется следующая битва А с Б, в Б будут воины с вычетом погибших в битве с В на 13м тике.
На самом деле это не новое решение а всего лишь дробление битвы на более мелкие отрезки.
Сохраняется следующая проблема: если в битве на 10-15 тиках Б будет полностью уничтожен, то что будет делать В, подошедший на 13м тике? В принципе он может показывать, что он сражается с Б, до окончания битвы А и Б, т.е. до 15го тика. а затем действовать по ситуации.
1. различение направления удара (фланги, фронт, тылы) - если подошедший бьет с направления тыла - получает большое дополнительное преимущество, с направления фланга - небольшое, но получает.
2. "принцип подавления массой" Штурмана, т.е. численное превосходство дает большее чем пропорциональное преимущество: т.е. выгодно стараться разбить вражеский отряд до подхода подкрепления, иначе у врага резко повышаются шансы.
юнит будет нападать или отступать/убегать на оперативной карте, если же его поймали - то происходит бой. если он еще и в бою начинает убегать то это уже преумножение сущностей, выходит и в боевом и в оперативном режимах происходит дублирование. этого я б хотел избежать любой ценой. так что или весь юнит вырезается за 0 тиков, или за N подходов по M тиков, и между подходами юнит может думать, что делать - нападать, прекратить это дело или убегать вообще. Битвы за 0 тиков вообще говоря странно даже для длины хода в месяц, т.к. тиков сто то 1 день это 3 тика. А еще большую длинну хода брать было бы странно.. для варгейма.. такими промежутками большая стратегия оперирует разве что. В общем мне просто не нравится вариант 0 тиков, кажется противоестественным. Но если 4й вариант окажется реально плохим то придется использовать первый, если ничего не придумается конечно к тому времени нового.
тур - не согласен. туры - это в турцию когда летят на отдых)
ход устоявшееся понятие в пошаговых играх, не знаю чем он не угодил тебе. в английском языке он называется turn от чего происходит привычка называть ходы турами видимо, но turn означает переход хода, очередь следующего игрока, что в нашем случае просто неправильно, т.к. очереди никакой нет.
слово ход в играх означает движение фигур без явной привязки к последовательности действий. первый ход, второй ход и т.д.
термин отряд я ввел потому что люди путали воинов с юнитами. можно не отрядом назвать а подразделением, если отряд ненравится. и армия и рота - подразделения же.
про первый пункт у меня мысли были уже, но тут следующая проблема возникает.
если отряд А атакован отрядом Б с востока, получается у А фронт смотрит на восток. Теперь отряд В нападает с запада, в то время как идет (на самом деле уже рассчитан) [мини]бой А с Б. получается, он ударил с тыла. И ему даются некие бонусы. Но если отряд Б в свою очередь опять нападает на А, выходит теперь он бьет в тыл, т.к. А повернулся к В? И Б с В после этого момента постоянно будут бить в тыл А, оба.
EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III
Пока то что ты предлагаеш -- это идут обычные для геймдева попытки "придумать геймплей".
А я хотел бы предложить тебе подойти от реалистичности... не знаю правда как ты это воспримеш.
На самом деле, по истории войн, не было такого мельтешения как у тебя здесь описано.
Наоброт, с древних времен существовал "кодекс ведения воен" -- армии/отряды противника не занимались таким "детством" бегать друг за дружкой.
Если армии подходили близко друг к другу (близко в оперативном пространстве),
то никто никуда не бегал,
а начинали чинно выстраивать войска на каком-нибудь поле поблизости.
И, по хорошему, после того как все приготовились/построились, с утра как правило, все и начиналось.
Это кстати решило бы и эту проблему.
про первый пункт у меня мысли были уже, но тут следующая проблема возникает.
если отряд А атакован отрядом Б с востока, получается у А фронт смотрит на восток. Теперь отряд В нападает с запада, в то время как идет (на самом деле уже рассчитан) [мини]бой А с Б. получается, он ударил с тыла. И ему даются некие бонусы. Но если отряд Б в свою очередь опять нападает на А, выходит теперь он бьет в тыл, т.к. А повернулся к В? И Б с В после этого момента постоянно будут бить в тыл А, оба.
вот серьезно, как дети малые мельтешатЗимой 229/228 годов до н. э. Гамилькар осадил город Гелику. Первоначально осада проходила благоприятно для карфагенян, и их командующий решил отправить большую часть своей армии и слонов на зимовку в Акра Левке. Но затем вождь племени оретанов (ориссов), бывший, как казалось, союзником карфагенян, неожиданно пришёл на помощь Гелике, и войска Ганнибала были вынуждены отступить. Для спасения Ганнибала и Гасдрубала, находившихся в войске, Гамилькар отвлёк на себя оретанов и отправил сыновей с другой частью армии по другой дороге. Преследуемый оретанами, он утонул в реке, а его сыновья невредимыми добрались до Акра Левки.
конечно в истории войн такого не было, брешет Диодор..
вот еще пара случаев:
Сципион в Сардинии, чтобы выманить защитников некоего города, прекратил начатую атаку и с частью солдат отступил для вида. Тогда горожане необдуманно стали их преследовать. Сципион обрушился на город с теми силами, которые он укрыл поблизостив общем обычное дело.Карфагенский лагерь защищал с одной стороны берег моря, с другой – болото. Между морем и болотом карфагеняне выстроили стену. Римская атака на лагерь потерпела неудачу. Атакующие отступили под ливнем дротиков. Карфагеняне попытались преследовать. Римляне развернулись, разгромили врага и нанесли ему огромный урон.
Последний раз редактировалось Peter; 02.11.2012 в 16:51.
EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III
Это уже другого плана действия.
"Законе ведения воен" он как "кодекс пиратов"
не жесткое предписание, а предложение.
Потому, если хочется устраивать засады, подловить неприятеля неготовым и т.п.
Но... надо учитывать, что при этом теряются приимущества управляемости и отлажености тактики.
Получится подловить -- грудь в крестах, а не получится -- голова в кустах.
А скажем те же римляне -- не останавливались нигде лагерем, пока не делали ров с валом, а за ними еще и частокол.
Таких на арапа не возьмеш.
Дык... тут весь вопрос в том,
на каком уровне ты его собираешся моделировать.
Чего хочеш добится.
Если вот такого мельтешения... то ты ведь автор/создатель, кто тебе перепрет.
ну если уверен в своих силах то действительно проще разбить чем обхитрить.
однако большая часть крупных побед ганнибала например это всякие хитрости.
да и любого великого полководца наверно
а посредственные конечно воевали "как положено"
конечно тут есть риск... нарваться на еще более хитрого.
Последний раз редактировалось Peter; 02.11.2012 в 17:34.
EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III
Что-то я забыл - у тебя еще и оперативный режим? где-то это описано?
Ну если между подходами отряд может отступить или убежать, то и ладно, не надо 0 тиков.этого я б хотел избежать любой ценой. так что или весь юнит вырезается за 0 тиков, или за N подходов по M тиков, и между подходами юнит может думать, что делать - нападать, прекратить это дело или убегать вообще. Битвы за 0 тиков вообще говоря странно даже для длины хода в месяц, т.к. тиков сто то 1 день это 3 тика.
Ну значит ход и отряд (короче ж чем "подразделение"?).тур - не согласен. туры - это в турцию когда летят на отдых)
ход устоявшееся понятие в пошаговых играх, не знаю чем он не угодил тебе. в английском языке он называется turn от чего происходит привычка называть ходы турами видимо, но turn означает переход хода, очередь следующего игрока, что в нашем случае просто неправильно, т.к. очереди никакой нет.
слово ход в играх означает движение фигур без явной привязки к последовательности действий. первый ход, второй ход и т.д.
термин отряд я ввел потому что люди путали воинов с юнитами. можно не отрядом назвать а подразделением, если отряд ненравится. и армия и рота - подразделения же.
При первом "подходе" удар с тыла наносит большой вред, возможно захватывает обоз и/или штаб - без штаба резко падает защита юнита. На следующем подходе часть (какая?) войск разворачивается и принимает удар с тыла, но уже и на фронте соответственно отряд бьется слабее на эти ушедшие отряды.про первый пункт у меня мысли были уже, но тут следующая проблема возникает.
если отряд А атакован отрядом Б с востока, получается у А фронт смотрит на восток. Теперь отряд В нападает с запада, в то время как идет (на самом деле уже рассчитан) [мини]бой А с Б. получается, он ударил с тыла. И ему даются некие бонусы. Но если отряд Б в свою очередь опять нападает на А, выходит теперь он бьет в тыл, т.к. А повернулся к В? И Б с В после этого момента постоянно будут бить в тыл А, оба.
Как тебе?
По-разному было. Сначала - да, выстраивались, потом концепция менялась, но и раньше не всегда придерживались "правил", и потом, когда генералы поумнели, наверняка бывало, что кто-то тупо стоял на поле боя.
+1, но и частично согласен с Аку: на каком-то этапе бои были более статичны. Но можно и не учитывать такой нюанс, "не множить сучности"
оперативный это карта, тактического нет точнее это автобой.
стратегический еще, не знаю буду ли делать. по задумке это типа мета игры.
вот это и есть главный вопрос. какая часть будет отделяться для защиты с тыла.На следующем подходе часть (какая?)
опять же если с фронта нападает один воин а с тыла сто, может сразу стоило встать задом наперед)
сейчас тыла никакого нет, есть просто юнит на который нападают, то одни то другие, он вступает в битву со всеми по очереди на одинаковых условиях.
в принципе можно сделать чтобы у него падала мораль или типа того, если на него одновременно два противника нападают (то есть второй противник нападает в то время как он бьется с первым).
EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III
Да, наверное ты прав - не надо усложнять, ПКМ для начала: просто если успело подойти 2 противника - ты бьешься как бы с большей армией. Особенно это будет интересно, если у тебя будет реализован "принцип подавления массой" - т.е. численный перевес будет давать еще больший эффект.
Насчет алгоритма боя: вот в "ветке Майкла о ТЦ" интересная тема "Игровая механика", меня как-то пробило на кучу сумбура, вдруг интересно - почитай.
Небольшое дополнение.
Сам turn (именно так назывался ход в е-цив, там же все наименования были на латинице) длился 20 тиков, поэтому в одном и том же месте за один ход могло быть несколько боев, в зависимости от тика, на котором юнит вошел в клетку, позволяющую начать бой.
На каком тике сошлись вражеские юниты, на таком и начинался бой, и длился он 0 тиков.