XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > StarCraft (только чтение)> StarCraft I
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

 
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
OutCast1138

offline
Опыт: 375
Активность:
Это чтото типа фантома на хантерсах?? Или полностью переработано всё будет?
Старый 22.05.2011, 06:40
Worm
Просто Червь
offline
Опыт: 3,221
Активность:
Да, идея вроде фантома (идея не нова), но только у игроков есть лишь один маринер, которым они и играют. А червяк ещё в гидралиска превращатся может. Причём сделано так, что в форме гидралиска его цвет не виден остальным. И там ещё кое-какие вещи есть для того, что бы скучно небыло.
Старый 22.05.2011, 09:54
OutCast1138

offline
Опыт: 375
Активность:
Интересно))
А на какой стадии находиться карта?
Старый 22.05.2011, 14:43
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
OutCast1138

offline
Опыт: 375
Активность:
Очень даже интересно))
Кстати вылет происходит я думаю из-за строчки в тригах первого игрока:

Enable doodad state for WoRM's Tail for Player 1 at '| DRONE'.

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

Карта очень даже неплоха) На чем пишешь? И почему нет коментов к тригам? Я бы без коментов запутался бы в этих строках...
Старый 23.05.2011, 19:43
The

offline
Опыт: 8,197
Активность:
The Worm
Worm, ты использовал в названии карты свой и мой ник. Я стал твоим соавтором? о_О
Старый 23.05.2011, 19:46
Worm
Просто Червь
offline
Опыт: 3,221
Активность:
Цитата:
Кстати вылет происходит я думаю из-за строчки в тригах первого игрока:

Enable doodad state for WoRM's Tail for Player 1 at '| DRONE'.

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

Да, возможно. Я тоже сначала на это грешил. Меня смущают две вещи: во-первых, вылетает не всегда (а со спрайтами обычно всегда и у всех), и, во-вторых, на тестовой карте с подобным брудлингом не вылетает. Вот и попробуй разберись...

Есть вариант заменить брудлинга на скруджа, но 1) мне пока лень, а 2) брудлинг мне нравится больше. Изначально ещё был испробован вариант с перехватчиком (Interceptor), но 1) с ним, опять же, гемора больше и мне снова лень =) и 2) с перехватчиком мне тоже не очень нравится, т.к. у воздушных юнитов плохое ускорение и гидра от них слишком далеко отрывается.

Цитата:
Карта очень даже неплоха) На чем пишешь? И почему нет коментов к тригам? Я бы без коментов запутался бы в этих строках...

В основном треде на SEN в конце приведён список инструментов, которыми пользуюсь:
Цитата:
The following tools are being used during the production:
SCMDraft 2, StarForge: Ultimate, MacroTriggers, Notepad++, TinyMap 2, DatEdit, PColor, MapStats.


К нему, разве что, можно ещё добавить систему контроля версий Tortoise SVN.

Из этих инструментов для написания триггеров в основном используется MacroTriggers. Триггеры пишутся на специальном языке в текстовом файле (и все комменты находятся там), а этот тул компилирует их из одного текстового вида в другой, который потом вставляется копипастом в SCMD Text Trigger Editor. Выглядит это так.

Цитата:
Worm, ты использовал в названии карты свой и мой ник. Я стал твоим соавтором? о_О

Хаха! =) Нет.
Старый 23.05.2011, 20:18
OutCast1138

offline
Опыт: 375
Активность:
А я всё только SCMDraft 2, и больше ничего. Надо будет попробовать этот высший пилотаж=). И кстати ещё вопрос, ты использовал интересную штуку, чтобы не трогать вэйты и время игры. Триггеры которые включают в себя начисление смертей таких юнитов как Start Location, Cantina, Cave. Хотелось бы узнать сколько их начисляется за 1 секунду (игровую и не игровую)?? Конечно при включенных гипертригах через вэйты. Действительно очень интересно, первый раз такое вижу. Ещё конечно интересно как убрать лимит supply/psi/control без постройки каких либо зданий, как это сделано в UMS Poker Defense, но думаю что у тебя врятли хватит времени на это. Когда тобой движет идея, то лучше не отвлекаться, а то муза отвернётся. Со мной было такое)
Старый 23.05.2011, 21:38
Worm
Просто Червь
offline
Опыт: 3,221
Активность:
Попробую прояснить неясности по поводу временной подсистемы СК. Игра делится на фреймы - моменты времени, в которые происходит пронесение дамага, перевычисление новых координат юнитов, исполнение триггеров и т.п. Между двумя соседними исполнениями фреймов игровой мир замирает - происходит только отрисовка анимации юнитов, накопление поступающей от игрока и по сети информации и подобная ерундистика (море волнуется раз, море волнуется два... ага-ага...). То есть, игровое время зависит от частоты выполнения тех самых фреймов. Время ожидания (FrameRate) между фреймами на скоростях Fastest, Faster, Fast, Normal, Slow, Slower, Slowest равно 42, 48, 56, 67, 83, 111 и 167 миллисикунд соответственно. Игровая секунда зависит от скорости игры и должна бы длится ровно 15 фреймов (на скорости Normal время ожидания 15 фреймов равнется аккурат 1005 миллисикундам), если бы не баг фитча в коде СК, благодаря которой только первая секунда длится 15 фреймов, а все последующие равны 16 фреймам. Везде в триггерах, где стоит ссылка на "секунды" (например, Countdown Timer или условие на Elapsed Time) надо понимать игровое время. На скоростях Fast, Faster и Fastest ускорение по сравнению с физическим временем (точнее - системным, но я их далее не различаю) происходит в 1.12, 1.30 и 1.49 раз, а на Normal, Slow, Slower и Slowest - замедление в 1.07, 1.33, 1.78 и 2.67 раз соответственно (здесь и далее значения округлены до сотых).
Теперь, для того, что бы узнать количество фреймов помещающихся в физическую секунду надо воспользоваться нехитрой формулой: 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, а величине
t = FrameRate * max{2, x/FrameRate},
где X / Y понимается как целая часть от деления X на Y, а max{X,Y} равно максимальному из X и Y. То есть, при x >= 2*FrameRate
t = FrameRate*(x/FrameRate).
Эта величина зависит от скорости игры и погрешность между специфицированным временем ожидания x и действительным временем ожидания t при x >= FrameRate всегда не превосходит FrameRate.
Таким образом, имея набор действий Wait(0) для одного из игроков постоянно вынуждает СК устанавливать счётчик trigTimer в единицу и исполнять триггеры каждые два фрейма. На самом деле, для работы гипер триггеров даже не важно какую величину y, 0<=y<=84, использовать в качестве аргумента Wait. Более того, если взять величину y из интервала 84<y<=96, то на Fastest триггеры будут выполнятся каждые три фрейма, а на всех других скоростях каждый второй фрейм, и все счётчики отсчитывающие время на скоростях медленнее Fastest будут ускорены в 1.5 раза по отношению к игровому времени. Вот так!
Ещё конечно интересно как убрать лимит supply/psi/control без постройки каких либо зданий, как это сделано в UMS Poker Defense
Я в Poker Defence не играл и не уверен, что ты имеешь в виду, но если ты про отображение лимита, то он просто не показывается (хотя, думаю, присутствует) пока у игрока нет ни одной единицы дающей этот самый лимит. Кроме того, герои совсем-совсем не кушают ни крохи. Если же ты про реальный предел на лимит, то, кажется, без постройки зданий для "расширенных" игроков тут не обойтись.

Отредактировано Worm, 24.05.2011 в 14:59.
Старый 24.05.2011, 13:51
OutCast1138

offline
Опыт: 375
Активность:
Спасибо, очень дельно. Теперь я уже знаю как можно сделать свой собственный отсчет времени, без всяких вейтов))



Цитата:
Если же ты про реальный предел на лимит, то, кажется, без постройки зданий для "расширенных" игроков тут не обойтись.

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


Но в целом очень дельный пост, спасибо. Поставил в заметки)
Старый 24.05.2011, 20:03
Worm
Просто Червь
offline
Опыт: 3,221
Активность:
Вот тут ты попал в точку, есть там на карте целая куча командников для всяких игроков, чей номер за первой или даже за второй сотней. Но вот как это работает я так и не разобрался, в своей карте ставил, но ничего не происходит... Видимо надо как-то по-особенному подбирать номера игроков чтоли?
Конкретно сказать не могу, потому что никогда сам не пользовался. Но там важны следующие вещи: количество таких юнитов, тип юнита, номер игрока и Unit ID. Unit ID можно посмотреть и выставить в самой последней версии SCMDraft 2. Если не выйдет, задай вопрос на SEN в разделе Mapmaking Assistance - тамошние гуру тебе подскажут без труда.
Старый 24.05.2011, 21:17
OutCast1138

offline
Опыт: 375
Активность:
Спасибо, попробую.

upd: нашел что искал))

ссылка на всякий случай, если ещё ктото будет искать

Отредактировано OutCast1138, 25.05.2011 в 00:18.
Старый 24.05.2011, 21:31
Worm
Просто Червь
offline
Опыт: 3,221
Активность:
О! Вот видишь, кто ищет тот всегда найдёт! =)
Кстати, вчера обновил версию карты (ALPHA8). Решил проблему с крэшем. Да, это оказался брудлинг, но СК падает только в мультиплейерной игре, только не battle.net, только когда игра на карте - первая игра после запуска СК, и только на Windows. Переделал брудлинга в скруджа. Потом ещё пара маленьких фиксов и попытка поиграться с балансом. Качать из основного трэда на SEN (ссылка в первом посте).
EDIT: Стряпал ALPHA9 с небольшыми изменениями баланса.

Отредактировано Worm, 25.05.2011 в 11:27.
Старый 25.05.2011, 09:20

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 20:55.