Несыть :: Level Up 2011
Основные изменения по сравнению с предыдущей версией:
- Реализована практически вся инфраструктура - меню, настройки, ланчер и т.д.
- Введена система диалогов и придуманы игровые персонажи, с помощью которых проводится обучение, инструктаж и развлечение игрока в подходящих для этого моментах.
- Все звуковые эффекты созданы с нуля. Начиная с записи исходных семплов (голос + подручные предметы) и заканчивая их обработкой и синтезированием. Совсем немного свободно распространяемых звуков взяли с freesoungs.org.
- Написаны несколько новых музыкальных треков и переработан единственный имевшийся старый трек.
- Реализован механизм многоязычности. Интерфейс и диалоги персонажей переведены на английский язык.
- Изменён игровой процесс - введён механизм кусания, введены новые виды существ, модифицированы стары, упрощён интерфейс и т.д. Чуть ниже опишу некоторые детали.
- Переработан старый набор уровней под новые условия, сбалансирована кривая роста сложности, придуманы соответствующие сюжетные диалоги.
- Отлажено большое количество ошибок и недоделок, типа развалов от переключения игры по Alt-Tab, проблем с позиционированием курсора на фулскрине и прочего.
Конкретно игровых изменений не так много:
Тлей теперь не так просто поймать, они пытаются убежать от приближающихся червей и избегают предательских углов карты. Иногда блеют, иногда натыкаются на товарок.
Добавлен новый вид живого корма – красные жуки. Практически ничем не отличаются от тлей, кроме того, что не убегают, если червь не может проглотить их целиком. Жук состоит из двух частей - головы и брюшка, которые можно употреблять в качестве отдельных блюд.
Кроме красных, есть ещё зелёные жуки. У них есть рога, которыми они пытаются отпугивать нападающих червей. Правда, если жук видит, что его могут проглотить целиком, то тоже бежит наутёк. Также состоит из двух частей, разве что рогатую башку проглотить гораздо сложнее, чем зелёный зад.
Реализована анимация челюстей у червей. Механизм кусания сделан автоматическим - при приближении к еде червь сам разевает рот и ждёт нужной дистанции для начала укуса. Если еда оказывается достаточно близко, то червь начинает методично сводить челюсти, и если при этом еда попадает в зону поражения (проглатывания), то на этом её песенка оказывается спетой. Короче говоря, теперь процесс кусания просчитывается не как пересечение с хитбоксом головы, а самым что ни на есть честным образом состоит из разевания рта и пересечения с маленькой, вынесенной вперёд, зоной рта.
Вместо вишенок теперь ягодки, которые умеют плавненько вырастать на пустом месте и лопаться со смешным звуком. Сначала с этим звуком лопались тли, но потом я счел эффект слишком мультяшным и на раздирание тлей мы записали влажные хлюпы, а хлопки оставили ягодкам.
Ягоды вкусны и питательны, а также являются просто незаменимыми учебными целями на первом уровне. Дело в том, что научившиеся шкериться от червей тли стали настолько шустрыми, что испытуемые во время разработки новички, просто не могли их догнать.
В релизе имеется всего девять уровней, т.к. Intel Level Up 2011 конкурс демок, а не полноформатных игр. Не удивляйтесь чувству лёгкого голода и разочарования после победы на последнем уровне. Больше не буду томить описаниями, прошу к столу!
Спасибо всем гаминовцам, участвовавшим в выпуске релиза! [@Азат], [@beavisxxi], [@d.trq], [@Melkopuz], [@Pevzi], [@raziel], [@sarf] и [@verdana_hd] выловили по моей просьбе вагон багов, помогли сбалансировать сложность и внесли много важных и интересных предложений, некоторые из которых я уже реализовал, а некоторые положил в копилку идей.
Кстати! Игре требуются новые идеи по развитию. Имеющейся механики хватает максимум на пару десятков уровней, а хочется продолжительного экстаза и, в итоге, мирового господства. Буду рад любым предложениям по расширению и обогащению игрового процесса!
- Ландшафтное окружение: препятствия различной формы, различные виды ландшафта (лаборатория, террариум, природа и т.д.), параллакс декоративных уровней карты.
- Различные виды существ с уникальным поведением.
- Ещё один вид червей (агрессивнее красных).
- Добавление червю функции прыжка за счет распрямления изгибов передней части. Инертный, сложный в освоении, но эффективный приём, необходимый на сложных уровнях игры и работающий в мультиплеере как рэйлган в Quake.
- Добавление червю функции откладывания яиц при достижении определённой длины.
- Несколько десятков уровней для одиночной игры, некоторые из которых используют косвенное управление, заставляют играть не за червя и т.д.
- Систему начисления очков, достижений (achievements) и ведения статистики.
- Локализация интерфейса на испанский язык.
- Многопользовательский режим (хотсит с разделением экрана).
- Сетевой многопользовательский режим (если хотсит получится достаточно удачным в плане геймплея).
Добавлено 26.03.2012:
По просьбе [@Kot211] добавлена версия с доступным рабочим редактором карт и исправлением пары мелких ошибок (в восьмом уровне русской версии больше не выскакивает английский диалог и при фэйдах нельзя перемещаться и выбирать пункты меню, обратно добавлена D3DX9_43.dll для обладателей несвежих директов).
Редактор для внутреннего пользования, интерфейс на английский не переведён, графическим интерфейсом не оборудован.
F1 - режим выбора объектов (тычок на объект - выделение, DELETE - удаление)
F2 - режим вставки объектов: 1, 2, 3, ... 0, - (включая минус) : выбор объекта. Нажать кнопку мышки, тянуть не отпуская для регуляции размера и направления, потом отпустить.
СТРЕЛКИ - перемещение по карте
PGUP, PGDN - масштаб карты
ПРОБЕЛ, ВВОД - диалог сохранения карты
При запуске редактора открывается на редактирование девятый уровень (Maps/level_9.xml). Рекомендую сохранять в него же - там самые простые правила победы. Очистить весь уровень целиком проще в текстовом редакторе - удаляете содержимое тэга <objects> и получаете пустыню. Если будете менять размер карты в текстовом редакторе, то имейте в виду, что он должен быть кратен 128.
- 23 марта 2012, 00:44
- 028
О, последние комментарии совсем свежие! Значит можно здесь высказаться, а не ждать свежего поста.
Я тут новый, в Несыть на ранних стадиях не играл (хотя маску на лице червя смутно припоминаю откуда-то), но на текущей стадии всё очень играбельно.
Я бы ни в коем случае не менял способ управления, а если уж встанет вопрос об адаптации на тач (а игра туда просится), то волнообразные движения без проблем должны туда перенестись. Давеча на Хабре была статья, посвящённая альтерантивному способу выделения текста в айпаде, используя всю поверхность клавиатуры, как область для манипуляции курсором в тексте (http://habrahabr.ru/post/143270/). Подобный принцип можно использовать и в этой случае; слайд в любом месте экрана влево — нажатие левой стрелки, правее вправо, вверх и вниз — ускорение и тормоз соответственно. Можно, конечно, и две кнопки сделать в нижних углах, и играть большими пальцами, но всё равно без плейтестов ничего выбрать нельзя заранее.
А вообще хватит о планшетах, здесь этого срасть как не любят, как я понял (у самого тоже нету) :)
На четыре прохождения я поймал полтора бага:
1. внезапное прерывания блеяния сожранной тли;
2. после того, как мне отгрызли двадцатисегментный хвост у самой шеи, я долго не мог отрастить себе ни капельки; и вдруг внезапно он кааак начнёт выдвигаться! и выдвигался сегментов 30.
Плюс у меня есть архигорячее пожелание. Часто я неправильно даю оценку собственного размера в толпе тлей. Каких-то я могу съесть, каких-то нет, они все разнокалиберные. Индикация челюстями хороша, но в таких моментах бесполезна, так как не ясно, на кого из толпы случилась эрекция. И когда тебя бортает от некой крупной особи, хотелось бы видеть некий ощутимый фидбэк, кроме собственного внезапного отворота — например, лёгкое отталкивание той самой крупности или её отличимое вздрагивание. Это и делается просто, и логично, и помогает понять, кого не стоит пытаться жрать в ближайшее время.
Визуально я не могу не признать некоторого родства своих ничевоков с вспомогательными персонажами Несыти :) Тоже ноги и эмоциональные глаза, тоже безрукие, тоже болтливые. Я даже, часом, призадумался, не в сравнении ли с Жекой и Шпилькой кувэкувэкувэ счёл, что лиалоги для моей игры столь же незначительны, как здесь? :) Мне, само собой, так не кажется ни в одном из случаев; но здесь я пристрастен. Всё легко, юморно, не мешает нисколько. Во время поздних прохождений я прощёлкивал некоторые реплики, не желая того, но это некритично; сначал читалось и не пропускалось ничего.
Пока чистое 2д ещё спорит с лёгкой трёхмерщинкой. Кормушки выпуклые смотрятся хорошо, но ступеньки рельефа смотрятся плохо. Я бы предложил отрисовать светотень вручную (как на дереве ты уже пробовал), с 4-8 градациями.
Бикубик в качестве шрифта смотрится прекрасно, подзаголовки уровней читаются отлично. Я бы чуть развёрнутее давал цель миссии; в пылу поедания как-то забывается о том, что надо сделать. Например, в уровне, где нужно оставить в живых 3 чёрных червя, было бы здорово знать, сколько чёрных я могу ещё слопать.
В качестве одного из бонусов, которые можно было бы дать игроку — подсветка того, что можно съесть. Особенно полезно это было бы не столько для толпы, сколько для индикации того места, где можно перекусить червя-врага. В качестве гадости можно подкинуть Уроборос-пилюлю — возможность сожрать самого себя :)
Плюс на начальных уровнях, когда игроки совершенно не понимают, как управлять червём, верхний индикатор скорее мешает, чем помогает, вводит в заблуждение. Может быть стоит как раз-таки учить менять направление движения при определённом уровне поворота? непосредственно рядом с червём, в середине экрана — "а теперь налево, а теперь направо, а теперь мелкими частыми, чтобы сохранить вектор".
На сейчас пока всё, я ещё раз перечитаю комментарии, может что ещё всплывёт.
Респект за фпс и оптимизацию! Мне такого в своём корыте и навыками не видать :) Удачи во всём.
Ого! Вот это фидбэк! :) Невероятно приятно! Такую исчерпывающую обратную связь можно получить только от коллеги по цеху, спасибо!
Про портирование пока речи не идёт, управление менять если буду, то путём косметических изменений в сторону более лёгкого вхождения в процесс для новичков.
Это выглядит как бага? :( Для тлей есть два набора сэмплов - обычое блеянье, когда тли пугаются приближающегося червя, и оборванное, которое воспроизводится только в момент пожирания. Мне эффект оборванности показался комичным, я сознательно его ввёл. Есть такое, обязательно ликвидирую в следующем релизе. Эта ошибка настолько вопиюща, что я никак не соберусь её отладить, всё какими-то менее очевидными штуками норовлю заняться.Отличная идея! Логичная штука, спасибо. Просто заставлю тлей блеять и разевать рот, а жуки будут попискивать. Ага, векторные минималистичные монохромные мультяшки и там и там. :)
Фотореалистичные фоны уберу совсем, я их использовал в силу необходимости - просто пока нет нормальных вариантов. Собственно следующее, что я поменяю в проекте, это ландшафт (теперь он будет тайловый и рисованный). Это было необходимо где-то, кроме уровня с выведением трёх черных червей? Просто хотелось некоторый юмор образовать в недосказанности и нарочитой лаконичности формулировок. Записал в список фишек для реализации! Супер! :D Отличная шутка над ретро-первоисточников игровой механики! Спасибо за идею, она замечательна!
Есть такое, я увлёкся формальностью индикации пожертвовав, в итоге, изначальной целью её введения. Я уберу этот индикатор целиком - он не помогает ни новичкам, ни ветеранам. Вместо него добавлю внизу индикатор набора веса в виде линейки с градациями - чтобы было понятно когда будет прирост звеньев. Там же будет индикация того, что хвост отожран и нужно набрать столько-то веса для продолжения роста размера головы.
Не за что! Особо не оптимизировал, думаю из неё ещё много чего выжать можно. Тайловая карта объектов перекочевала из прошлого проекта (RTS), а вот за дельта-тайминг спасибо [@Housegarden]'у и [@d.trq]'у, которые очень вовремя указали мне на его (дельта-тайминга) необходимость, после просмотра ранней альфы с фиксированным FPS = 14 :).
Ещё раз спасибо за столь внушительный коммент! Настолько воодушевляет, что попробую сегодня выложить маленький релиз с фиксом баги с ростом хвоста и кое-каким сюрпризом в управлении.
О таком я даже не подумал, каюсь. Может стоить усилить этот эффект? Я точно сейчас не помню, как это звучало, но блеяние, прерываемое хрустом челюстей, звучало бы отлично :) Или даже остатки блеяния сквозь чавканье :)
Нужно именно визуальное отличие! Среди обилия звуков ещё один пройдёт незамеченным, тем более что сам червь в этот момент уже обиженно ворчит. Тактильное, я бы даже сказал :)
Нигде более. Лаконичность безусловно нужна, она работает. Подумал ещё немного; тут в целом проблема в том, что это единственный, кажется уровень, где нужно не сожрать кого-то, а оставить в живых :) И получается обидно — написано сожрать пять, я их ем, но проигрываю! Возможно это будет не единственный уровень на сохранение объектов; в таком случае можно ввести цветную кодировку для этой строки — красным текстом выделены предметы для убывания, зелёным для возрастания. "Набери 20 сегментов длины" — зелёное, "съешь 20 ягод" — красное.
Тайловые фоны, новые индикаторы — это очень хорошо (хотя гравий мне чем-то импонировал), набор массы будет очень полезно предвидеть, воодушевит. Вроде есть ещё и звук под прорастание нового сегмента, но я не смог его выделить из массы других.
Про дельта-тайминг понял, но очень уж теоретически :) Вроде как фактическое перемещение червя завязано не на фактическое обновление экрана, а на реальное время, поэтому при возможном торможении будут просто пропускать некоторые кадры, а не замедляться локальное время игры, так? Я тот ещё программист, к сожалению :)
У тли для блеянья отдельный спрайт с открытым ртом и выпученными глазами. В ресурсах можно понаблюдать.
Можно ещё сделать, чтобы овца, которую толкнули быстренько поворачивалась лицом к тому, кто её толкнул, типа "кто это сделал?". :)
Ага, обычно счетчик считает то, что должно закончится, а тут счетчик просто индикатор количества червей на карте. Изощрённые задание приводят к когнитивному диссонансу. Буду думать. Цвета вводить не хочется - весь интерфейс трёхцветный (белый, черный, красный). Это единственный не фотореалистичный, а рисованный фон. Его я оставлю. Как минимум в качестве фона для меню. Всё просто - есть скорость объекта, и есть известная доля от секунды, которая прошла со времени расчета прошлой итерации движка. Соответственно перемещение объекта это скорость умноженная на dt (та самая доля). Это позволяет при разном количестве итераций игрового движка в секунду сохранять одинаковой фактическую скорость перемещения объектов. Т.е. если вдруг пошли тормоза, то просто движения будут более квантованными, а при наличии свободного времени можно просчитывать игровые итерации чаще и иметь профит в виде плавности. Очень клёвая штука, если интересны детали, обращайся, могу и кодом на С++ поделиться. :)Про тлей надо смотреть. Спрайты-то видел, но будет ли связываться такая реакция с бортованием, не могу сказать заранее. А вот поворот будет заметен!
Про дельта-тайминг всё ясно, именно так и понял. Код, увы не нужен :) Я же на всеми любимом Гейммекере пишу :) Я думал когда-то о такой системе, но адаптировать под свой движок попытался лишь в уме — слишком уж многое завязано на покадровый просчёт.
С++, эх. Но кто-то же должен в моей семье быть не программистом, а дизайнером :)