Worm
Просто Червь
offline
Опыт:
3,221Активность: |
The Worm
Представляю UMS карту по мотивам The Thing, чьё название давно стало нарицательным. Основная идея игры проста. Один из игроков случайным образом выбранный в начале игры становится Тем Самым Червём (The Worm). Личность Червя неизвеста никому, кроме него самого. Цели Червяка и остальных игроков противоволожены и заключаются в уничтожении друг друга.
Карта находится в процессе разработки, комментарии и предложения приветствуются. Получить более полную информацию по карте (скриншоты, описание и т.д.), а также скачать последнию версию (в разделе Downloads головного поста) можно здесь. - Wormer productions - Отредактировано Worm, 01.06.2011 в 20:14. |
19.05.2011, 13:41 | #1
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
OutCast1138
offline
Опыт:
375Активность: |
Это чтото типа фантома на хантерсах?? Или полностью переработано всё будет?
|
22.05.2011, 06:40 | #2
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Worm
Просто Червь
offline
Опыт:
3,221Активность: |
Да, идея вроде фантома (идея не нова), но только у игроков есть лишь один маринер, которым они и играют. А червяк ещё в гидралиска превращатся может. Причём сделано так, что в форме гидралиска его цвет не виден остальным. И там ещё кое-какие вещи есть для того, что бы скучно небыло.
|
22.05.2011, 09:54 | #3
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
OutCast1138
offline
Опыт:
375Активность: |
Интересно))
А на какой стадии находиться карта? |
22.05.2011, 14:43 | #4
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Worm
Просто Червь
offline
Опыт:
3,221Активность: |
Стадия такая: основные подсистемы готовы и вполне играбельно. Есть пара вещей, которые изначально планировал сделать, но пока не реализовал. Теперь же мне кажется что они могут оказаться лишними и ненужными. Есть некоторые шероховатости, вплане того, что некоторые вещи делал на скорую руку, а не так как *надо* было бы делать. Опять же, серьёзных багов быть не должно, а скорее по мелочам: возможно, где-то время показа текста не оптимально и т.п. Кроме того, есть один назойливый баг: карта в редких случаях рушит СК при старте. Предположительно это происходит только тогда, когда игра на этой карте - первая игра после запуска СК.
Раз кто-то заинтересовался картой, приведу краткое описание механики игры. Про Червяка и цели игры уже не повторяюсь (см. головной пост). У каждого игрока есть 3 ресурса: очки (custom score), минералы и газ. Ресурсы со временем истощаются и надо их пополнять. Пополнение происходит в специальных точках на карте, которые динамично спаунятся в рандомном порядке (подробнее не углубляюсь). Если заканчивается один из ресурсов, то юнит игрока (маринер) получает некоторые штрафные эффекты, как-то: без минералов - падает скорость передвижения, без газа - серьёзное ограничение на атаку, без очков - получаешь ноль здоровья. Кроме того, Червяк не может находится в форме гидралиска, если ему не хватает одного из ресурсов. И наоборот, если собрал много ресурсов (одновременно всех больше 100), то получаешь бонус: постоянное лечение маринера (раз в N секунд пока условие на ресурсы остаётся выполнено). Далее, на карте есть 14 мест под горящие терранские постройки. Когда они разрушаются, на их месте появляется колония (creep colony) изначально имеющая небольшое кол-во здоровья. Колонии постепенно спаунят лингов, враждебных всем игрокам кроме Червяка, когда тот находится в форме гидралиска. Червяк видит всё, что видят линги, бегающие по карте в поисках добычи. Когда колония уничтожается, на её месте опять спаунится горящее терранское здание (со случайным кол-вом жизней) и всё повторяется сначала. Игроки могут чинить горящие здания, но время починки до 100% достаточно велико. Червяк (и только он) может апгрейдить колонии до санкенов (за минералы и газ), с которыми он дополнительно получает общее поле зрения. Санкены к тому же спаунят более матёрых лингов. На карте есть 6 зданий сгруппированых по 2 в 3х углах карты. Если активировать все 6 зданий, то начнётся обрытный отсчёт времени (если не ошибаюсь, 13 игровых минут), по окончании которого личность Червяка оглашается всем игрокам. В этом месте, изначально, вместо "просто таймера" планировалось коллективное решение некоторой головоломки для установления личности Червячины. Дополнительно, все игроки видят небольшую область вокруг каждого из источников ресурсов и центр карты, в котором находится "главное здание" (Psi Disrupter). Если главное здание уничтожатся, то Червяк получает победу. Для полноты картины осталось сказать, что все игроки союзны (allied) друг другу, а так же с компьютером, поэтому вся атака проводится вручную через явное указание цели (как в снайперах). Все попытки изменить статус альянса, дать общее зрение другому игроку или как-то иначе сломать карту безжалостно караются. =) Отредактировано Worm, 22.05.2011 в 15:43. |
22.05.2011, 15:33 | #5
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
OutCast1138
offline
Опыт:
375Активность: |
Очень даже интересно))
Кстати вылет происходит я думаю из-за строчки в тригах первого игрока: Enable doodad state for WoRM's Tail for Player 1 at '| DRONE'. Учитывая к тому же, что брудлинг там это не юнит, а спрайт. Как-то раз я на такое натыкался, правда дело было с оверами. Типа не все юниты переносят команды дудэдов, марины и файеры к примеру переносят. Карта очень даже неплоха) На чем пишешь? И почему нет коментов к тригам? Я бы без коментов запутался бы в этих строках... |
23.05.2011, 19:43 | #6
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
The
offline
Опыт:
8,197Активность: |
Worm, ты использовал в названии карты свой и мой ник. Я стал твоим соавтором? о_О |
23.05.2011, 19:46 | #7
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Worm
Просто Червь
offline
Опыт:
3,221Активность: |
Цитата:
Да, возможно. Я тоже сначала на это грешил. Меня смущают две вещи: во-первых, вылетает не всегда (а со спрайтами обычно всегда и у всех), и, во-вторых, на тестовой карте с подобным брудлингом не вылетает. Вот и попробуй разберись... Есть вариант заменить брудлинга на скруджа, но 1) мне пока лень, а 2) брудлинг мне нравится больше. Изначально ещё был испробован вариант с перехватчиком (Interceptor), но 1) с ним, опять же, гемора больше и мне снова лень =) и 2) с перехватчиком мне тоже не очень нравится, т.к. у воздушных юнитов плохое ускорение и гидра от них слишком далеко отрывается. Цитата:
В основном треде на SEN в конце приведён список инструментов, которыми пользуюсь: Цитата:
К нему, разве что, можно ещё добавить систему контроля версий Tortoise SVN. Из этих инструментов для написания триггеров в основном используется MacroTriggers. Триггеры пишутся на специальном языке в текстовом файле (и все комменты находятся там), а этот тул компилирует их из одного текстового вида в другой, который потом вставляется копипастом в SCMD Text Trigger Editor. Выглядит это так. Цитата:
Хаха! =) Нет. |
||||
23.05.2011, 20:18 | #8
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
OutCast1138
offline
Опыт:
375Активность: |
А я всё только SCMDraft 2, и больше ничего. Надо будет попробовать этот высший пилотаж=). И кстати ещё вопрос, ты использовал интересную штуку, чтобы не трогать вэйты и время игры. Триггеры которые включают в себя начисление смертей таких юнитов как Start Location, Cantina, Cave. Хотелось бы узнать сколько их начисляется за 1 секунду (игровую и не игровую)?? Конечно при включенных гипертригах через вэйты. Действительно очень интересно, первый раз такое вижу. Ещё конечно интересно как убрать лимит supply/psi/control без постройки каких либо зданий, как это сделано в UMS Poker Defense, но думаю что у тебя врятли хватит времени на это. Когда тобой движет идея, то лучше не отвлекаться, а то муза отвернётся. Со мной было такое)
|
23.05.2011, 21:38 | #9
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Worm
Просто Червь
offline
Опыт:
3,221Активность: |
Попробую прояснить неясности по поводу временной подсистемы СК. Игра делится на фреймы - моменты времени, в которые происходит пронесение дамага, перевычисление новых координат юнитов, исполнение триггеров и т.п. Между двумя соседними исполнениями фреймов игровой мир замирает - происходит только отрисовка анимации юнитов, накопление поступающей от игрока и по сети информации и подобная ерундистика (море волнуется раз, море волнуется два... ага-ага...). То есть, игровое время зависит от частоты выполнения тех самых фреймов. Время ожидания (FrameRate) между фреймами на скоростях Fastest, Faster, Fast, Normal, Slow, Slower, Slowest равно 42, 48, 56, 67, 83, 111 и 167 миллисикунд соответственно. Игровая секунда зависит от скорости игры и должна бы длится ровно 15 фреймов (на скорости Normal время ожидания 15 фреймов равнется аккурат 1005 миллисикундам), если бы не
Теперь, для того, что бы узнать количество фреймов помещающихся в физическую секунду надо воспользоваться нехитрой формулой: 1000/FrameRate. На соответствующих скоростях (в прежднем порядке) получаем величины 23.81, 20.83, 17.86, 14.93, 12.05, 9.01, 5.99. Триггеры при использовании стандартных гипер триггеров (Wait(0)) всегда запускаются раз в два фрейма и, если мы каждый раунд выполнения триггеров будем прибавлять единицу к значению одного из счётчика смеретй, последний будет отсчитывать игровое время в парах фреймов прошедших с момента запуска счётчика. Итого получаем, что на скорости Fastest (Faster, Fast, Normal, Slow, Slower, Slowest) в физическую секунду укладывается 11.91 (10.42, 8.93, 7.46, 6.02, 4.51, 2.99 соотвтетственно) пар фреймов или, по-другому, циклов выполнения триггеров. Эти величины не целые, но приблизительно можно считать, что на Fastest одна физическая секунда равна 12 циклам выполнения триггеров.
Конечно, если хочется как можно точнее соответствовать реальному времени, то можно вводить поправки. Например для Fastest, от основного счётчика, который считает от 1 до 12, можно вычитать единицу каждые 132 (=12*11) триггерных такта, отсчитывающихся другим счётчиком. И потом ещё поправки к поправкам - вычитать единицу из поправочного счётчика каждые 264 (=132*2) такта. После этого, отклонение основного счётчика от 1000 миллисекунд будет всегда не более, чем удвоенная длительность ожидания между фреймами, равная 84 миллисекундам (т.е. лучшее, что в принципе можно достичь с доступной частотой выполнения триггеров). Почему это хозяйство работает оставляю без объяснений.
Что касается игрового времени, то отсчитвать его намного проще, так как игровая секунда равна 16 фреймам, надо просто взвести счётчик на отсчёт от 1 до 8.
При создании карт советую забыть про физическое время (и про действия Wait, которые его отсчитывают), потому что все события в игре происходят именно по игровому времени. Сделав ставку на физическое время карта будет заточена лишь под определённую скорость игры, а привязав все события к игровому времени она будет идентично работать на любой скорости.
Кстати, недавно стало известно как в точности работает Wait и почему он ускоряет выполнение триггеров. Без использования каких-либо премудростей триггеры выполняются каждый 31-ый фрейм после их первого выполнения на втором фрейме. Для этого используется внутренняя переменная trigTimer, считающая от 30 до 0. У каждого игрока p есть своя переменная waitTimer(p) для таймера Wait, значение которой каждый фрейм уменьшается на величину FrameRate. Среди событий, устанавливающих значение trigTimer в единицу, находится следующее: таймер некоторого игрока p активен и значение waitTimer(p) не превосходит величины FrameRate. То есть, активный таймер некоторого игрока достигает критической границы, проходит один фрейм, и только после этого выполняются триггеры (отсюда предел частоты выполнения триггров - раз в два фрейма).
Поэтому реальное время ожидания t одиночного действия Wait(x) выходит равным отнюдь не x, а величине
где X / Y понимается как целая часть от деления X на Y, а max{X,Y} равно максимальному из X и Y. То есть, при x >= 2*FrameRate
Эта величина зависит от скорости игры и погрешность между специфицированным временем ожидания x и действительным временем ожидания t при x >= FrameRate всегда не превосходит FrameRate.
Таким образом, имея набор действий Wait(0) для одного из игроков постоянно вынуждает СК устанавливать счётчик trigTimer в единицу и исполнять триггеры каждые два фрейма. На самом деле, для работы гипер триггеров даже не важно какую величину y, 0<=y<=84, использовать в качестве аргумента Wait. Более того, если взять величину y из интервала 84<y<=96, то на Fastest триггеры будут выполнятся каждые три фрейма, а на всех других скоростях каждый второй фрейм, и все счётчики отсчитывающие время на скоростях медленнее Fastest будут ускорены в 1.5 раза по отношению к игровому времени. Вот так!
Я в Poker Defence не играл и не уверен, что ты имеешь в виду, но если ты про отображение лимита, то он просто не показывается (хотя, думаю, присутствует) пока у игрока нет ни одной единицы дающей этот самый лимит. Кроме того, герои совсем-совсем не кушают ни крохи. Если же ты про реальный предел на лимит, то, кажется, без постройки зданий для "расширенных" игроков тут не обойтись. Отредактировано Worm, 24.05.2011 в 14:59. |
24.05.2011, 13:51 | #10
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
OutCast1138
offline
Опыт:
375Активность: |
Спасибо, очень дельно. Теперь я уже знаю как можно сделать свой собственный отсчет времени, без всяких вейтов))
Цитата:
Вот тут ты попал в точку, есть там на карте целая куча командников для всяких игроков, чей номер за первой или даже за второй сотней. Но вот как это работает я так и не разобрался, в своей карте ставил, но ничего не происходит... Видимо надо как-то по-особенному подбирать номера игроков чтоли? Но в целом очень дельный пост, спасибо. Поставил в заметки) |
|
24.05.2011, 20:03 | #11
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Worm
Просто Червь
offline
Опыт:
3,221Активность: |
Конкретно сказать не могу, потому что никогда сам не пользовался. Но там важны следующие вещи: количество таких юнитов, тип юнита, номер игрока и Unit ID. Unit ID можно посмотреть и выставить в самой последней версии SCMDraft 2. Если не выйдет, задай вопрос на SEN в разделе Mapmaking Assistance - тамошние гуру тебе подскажут без труда. |
24.05.2011, 21:17 | #12
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
OutCast1138
offline
Опыт:
375Активность: |
Отредактировано OutCast1138, 25.05.2011 в 00:18. |
24.05.2011, 21:31 | #13
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Worm
Просто Червь
offline
Опыт:
3,221Активность: |
О! Вот видишь, кто ищет тот всегда найдёт! =)
Кстати, вчера обновил версию карты (ALPHA8). Решил проблему с крэшем. Да, это оказался брудлинг, но СК падает только в мультиплейерной игре, только не battle.net, только когда игра на карте - первая игра после запуска СК, и только на Windows. Переделал брудлинга в скруджа. Потом ещё пара маленьких фиксов и попытка поиграться с балансом. Качать из основного трэда на SEN (ссылка в первом посте).
EDIT: Стряпал ALPHA9 с небольшыми изменениями баланса. Отредактировано Worm, 25.05.2011 в 11:27. |
25.05.2011, 09:20 | #14
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|