BarMentaLisk
offline
Опыт:
397Активность: |
Рандомное расположение компа среди людей
Суть в следующем. Хотел сделать УМС в стиле 8 человек против одного компа из стандартной карты "зэ хантерз". Потом, узнав, что 9-12 плееры не полноценны, понял, что придется делать 7 человек против компа.
Окей, так тоже сойдет подумал я. Засунул компа в форс 2, а людей оставил в форс 1. Но при таком раскладе не получается сделать рандомное расположение компа, ведь рандом производится среди игроков одного форса, и комп стартует всегда на одном и том же месте. Тогда решил засунуть компа в первый форс вместе с игроками, а уже при старте заальясить людей и дать вижен им, а компу - 8-му плееру - ни вижена ни альяса. Ну локации, на которых будут работать триггеры, легко растусовываются при старте к соответствующим базам игроков. Проблема в другом. Оказывается, рандомизируется не расположение игроков, а их номера. То есть тот же комп, который по моим предположениям должен быть 8-ым плеером, при птичке "рэндомайз старт лоукэйшн" становится хоть первым, хоть вторым, хоть каким угодно, восьмым тоже иногда выпадает xD. Но мне-то надо чтобы он был четко восьмым. Иначе не получится прописать компу всякие привелегии. Вспомнил сразу УМС "фантом", где рандомно один из челов становится мегамощным, а все остальные воюют против него... может там автор искал нечто вроде того, что ищу я, но не нашел? В общем, теоретически можно было бы прописать всем игрокам тригеры, но действующие по включенному определенному свичу, а свич включать только для комповского игрока. Но мало того, что это получится семь пачек лишних тригеров, так еще и непонятно как определить в начале игры, кто комп из 8-ми игроков. Самый здоровый вариант - это оставить компа в другом форсе, но если у компа будет всегда одно и то же расположение, то мапа получится чрезмерно скучной. Какие у кого будут предложения по данной ситуации? BarMentaLisk добавил: Придумал даже такой алгоритм: Комп во втором форсе и появляется соответственно на одном и том же месте, но в начале игры, на основе рандомных свичей предполагается восемь вариантов обмена местами компа и одного из людей, точнее 7 вариантов обмена и один, когда комп остается на месте. Но тут начинаются глюки, если кто-то из обмениваемых оказывается зергом (на крип не хочет переноситься, да и личинки при переносе отвязываются от базы. Да и кроме всего незаметно обмен не сделаешь - все равно видно как моргнула появившаяся база, как появился разведанный туман и т.п. |
20.01.2010, 18:30 | #1
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Worm
Просто Червь
offline
Опыт:
3,221Активность: |
Да, есть такая заморочка со Старкрафтовским рандомом. Бороться, конечно, можно и рандомизируя игроков триггерно, но, как ты написал, проблем не оберёшся (личинки, вижн и всякая такая дребедень). Поэтому лучше приспособить стандартный рандом. Итак, ты засовываешь всех игроков и компа в один форс. Учти, кстати, что в таком случае (когда среди них есть комп) игроки в вестибюле не смогут менять свои позиции, однако не велика беда так как всёравно стартовые локации случайны.
Кстати, говорить, что случайны стартовые локации не совсем верно, потому что на самом деле рандомизируются не сами локации, а распределение игроков в вестибюле между игроками на карте. Каждый игрок с определённым номером всегда будет стартовать в одной и той же позиции (!!!), случайно лишь то, как позиции в вестибюле сопоставятся номерам игроков. То есть, если ты, например, сделаешь локацию L вокруг стартовой позиции игрока P1 и триггер T для всех игроков T(All players)={(Player 1 brings at least 1 building to L) => (Display text message for current player "Hello!")}, то каждый раз, когда в игре присутствуют все без исключения игроки они неизменно получат сообщение о приветствии (другими словами, не может оказаться так, что на место игрока P1 встанет игрок с другим номером, однако непонятно кто же из игроков в вестибюле станет этим первым игроком). Но это так, для общего развития, потому что оно нам не поможет. =)
Что же тогда? Идея в том, что бы найти такие вещи, которые действуют по-разному на компьютеров и людей, и поймать разницу в эффекте. Я знаю по крайней мере два (три) способа.
1.1. Пожалуй, самый приемлемый. Скрипты Insane дают компьютеру 4000 минералов, что легко определить.
1.2. Пожалуй, самый экстравагантный - привожу для полноты картины. Скрипт Junk Yard Dog заставляет юниты компьютера на локации бегать туда-обратно, что тоже можно "поймать".
Вот - а больше способов отличить компьютера от людей (по карйней мере не используя EUD) в голову не приходит.
Не за что.
Отредактировано Worm, 27.01.2010 в 23:02. |
27.01.2010, 22:53 | #2
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
OutCast1138
offline
Опыт:
375Активность: |
нажимаешь на кнопку дипломатии над миникартой, там будут ники и цвета всех игроков, у компа будет ник типа Jormungard Brood, Antiga, Velari Tribe
Venatir Tribe. короче если есть в нике компа слово brood - это зерг, tribe - протосс, если ни того ни другого, то это терран |
19.04.2010, 06:51 | #3
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Worm
Просто Червь
offline
Опыт:
3,221Активность: |
OutCast1138:
Ты не понял, нужно триггерно определить текущий игрок комп или человек. |
20.04.2010, 18:11 | #4
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|