Медовый рогалик :: Кроны, корни, недра гор
Песни недр не для тех, кто ходил по траве. Алчные искатели наживы устилают своими костями анфилады подземных галерей, беспечно забредшие охотники сами становятся добычей, и лишь самые осторожные имеют шанс побывать в сердце гор и вернуться на поверхность. Среди них мало людей, люди слишком самоуверенны. В основном это всякая мелкая нечисть.
Речь идёт о новой игре Сергея Боброва (он же sb3d, он же Крысеечник), в которой вам придётся побывать в шкуре забавного коротышки, который преследует, прямо скажем, амбициозные цели:
Гоблин ничего не помнил. Вернее, почти ничего. Он гоблин, он был призван, чтобы служить. Но служить кому? И почему он, призванный, остался в материальном мире? Наверное, это большая удача, решил зелёный.
Прихоть судьбы. Флуктуация магии.
– Раз так, то этот шанс я не упущу, - прошептал он. – Я стану мудрым королём этих земель! – А может и не мудрым… – он хитро заулыбался.
Текстовый голос за кадром в начале игры
Игра представляет собой смесь RPG и Roguelike: пошаговое перемещение по автогенерируемому миру, в процессе которого главный герой приобретает опыт и развивает свои навыки. Это третий рогалик в линейке «игр мечты» автора. Если хотите войти в тему плавно, то сначала был хардкорный gnh20, потом «Вор в Ангбанде», а после него, на том же, но доработанном движке, собран «Медовый рогалик». Кстати, никакого мёда в игре нет, это просто обыгрывание названия жанра и продолжение кулинарной нотки в названии движка «Сухарь ванильный». Кажется, это название пришло под вдохновением от продуктовой упаковки. Но кого это интересует? Пора переходить к делу.
Ваши приключения в сказочном мире «Медового рогалика» начинаются в пустынном сквере, в котором царит вечная осень. Вам предстоит ещё не раз сюда вернуться. В основном, в результате грубых, и не очень, нарушений правил поведения в пещерах и подземельях.
Здесь нет перманентной смерти, но это не значит, что её временная заместительница не будет горчить и скрипеть на зубах. Умирать будет очень легко, а вот возвращаться к телу, разыскивать ценные вещи, растасканные монстрами по подземелью, и восстанавливать ополовиненный опыт уже труднее.
90% времени игра проходит под землёй, лишь изредка игрока балуют зеленью деревьев и невозмутимостью деревенских жителей. При этом поверхность, это не просто место, где лечатся, сохраняются и складывают хабар. Это вообще не одно место, а целая система локаций, в каждой из которых свои персонажи, истории и входы в подземный мир. Вот, например, кусок обзорной карты:
А вот кадр из сельской жизни деревни, которая на этот кусок не попала. Зелёные сердечки, это обозначение дружественных существ, красные – индикация процесса восстановления здоровья. Оранжевый бесёнок – единственное существо в округе, которое не требует денег за медицинскую помощь. Увы, тоже не безвозмездную, после каждого лечения вы будете забывать немного ценных знаний из накопленного опыта. Я чуть душу этому маленькому барыге не заложил.
Проект находится в стадии бета-версии, разработчиком заявлено около 5 часов геймплея. Я потратил уже около десяти и раскрыл лишь половину историй из «Книги легенд», не исследовал полностью всех пещер и не выполнил даже половины заданий, полученных от разных существ.
В первый раз я засел часа на три, в следующий на два, а потом решил достать до самого нижнего подземелья, и не заметил, как угрохал целый вечер. Короче, вполне себе захватывающая штука. Почему? Попробую сформулировать: потому что красиво, потому что страшно, и, наконец, потому что иногда под землёй можно набрести на разные таинственные и уютные места.
В процессе игры придётся сломать несколько шаблонов. Первый шаблон, это доступность лечения и возможность отдохнуть и восстановиться. Никто не лечит бесплатно, а деньги тратить ой как жалко, их совсем мало. Регенерация, это перк, который можно получить не раньше пятого уровня, а работает он только для крошечных ран, где-то на десятую часть полоски жизни.
Второй шаблон, это планомерная зачистка подземелий этаж за этажом – при таком подходе очень быстро кончаются деньги и склянки. Лечение в счет опыта требует его набирать, а дрова рубят – щепки летят, при выколачивании из монстров экспы ссадины неизбежны. Я очень быстро попал в этот порочный круг и опустился до самого дна, мой персонаж на восьмом уровне (это пара часов игры) оказался на полном нуле. Я стал чист как младенец, и для набора девятого уровня мне нужно было нафармить заново все восемь предыдущих. Я слегка приуныл.
На помощь пришли совет одного персонажа с поверхности и книжка "Выжить в пещерах для чайников", которую я уже и не помню где нашел, но всё время таскал в инвентаре. В один голос они советовали не нападать без разбору на встреченных существ, глядеть по сторонам и продумывать пути к отступлению. Я стал щемиться вдоль стен, обходить стрёмных тварей параллельными коридорами, обирать трупы дерущихся между собой подземных жителей, да и просто при случае улепётывать от опасности. Оказалось, что в двух доступных мне пещерах гораздо больше четырёх уровней. Я даже нашел соединяющий их на глубине проход, а потом подземный город, а потом... ну, там потом много чего было.
Вот, что рассказал мне Арад. «Весь безобразный. Как будто срослись в кучу руки, ноги, глаза и чёрт ещё знает что. Я схватил меч, и проткнул его, но существо не дрогнуло! Оно шло на меня, и я спасался бегством.» После его рассказа мне стало ясно: убить монстра не так просто.
Узнал я и кое-что кроме этого. В таверне «Кочеток» я разговорился с неким Бередесом. И под большим секретом Бередес объяснил мне, что добавление когтей этого монстра улучшает любой самогон. К моему сожалению, большего узнать не удалось. Бередес свалился под стол, а наутро уже не помнил о нашем разговоре.
Килимар Белый, «Книга легенд»
К интерфейсу придётся попривыкать, он не есть чудо эргономики и интуитивности, но жить можно. В какой-то момент я даже научился не молотить вражин кулаками, а достать из инвентаря меч и взять оружие в руки. Это позволило продвинуться ещё глубже, но не так сильно, как мне бы хотелось. Для дальнейшего прогресса пришлось научиться понимать индикацию боевых событий.
Дело в том, что боевая система в этом рогалике довольно навороченная. Не просто один ход – в зуб, другой – в глаз, нет. У каждого существа есть своя скорость передвижения, скорость нанесения урона, таймауты всякие мудрёные. При этом все события квантуются действиями главного героя. В один ход может получиться, что вы наносите урон, а враг не отвечает – замахивается потому что. А в следующий ход вы пытаетесь отскочить, но поздно, получаете прореху на штанах и запись ко врачу на 9-15. Третья ситуация, это когда вы оба пытаетесь друг друга ударить в этот ход. Потом ещё бывает, что враг замахнулся, но вы вовремя слиняли, и он промахнулся – самое время вернуться и благодарно его пнуть. Всего четыре индикатора, плюс зелёненькая вариация индикатора нападения, когда один враг лупит другого. Это весьма занимательный покер на лечебные пузырьки. Впрочем, лучше не забивать голову тактикой, а просто слинять.
Много искателей приключений, охваченные азартом боя, забывали про обратный путь на поверхность. Но серьёзная рана не зарастёт сама. В результате, искалеченные и страдающие от ядов, они умирали от холода подземных рек, когда пытались вернуться назад. Не повторяй их ошибок, и рассчитывай свои силы, чтобы успеть дойти до врачебной помощи.
Бередес Де-Се Кирад, «Выжить в пещерах для чайников»
Кроме боевой системы стоит отметить систему генерации мира. Она гибридная: ключевые фрагменты локаций созданы вручную, а их положение на уровне и окрестности генерируются автоматически. Подземелья, это не просто вместилище монстров и лута, а поверхность не просто бюро по выдаче заданий. Всё перемешано, в любой части «Медового рогалика» можно набрести и на хорошую драку, и на уникальные места с персонажами и историями. Предметы и существа с уровней никуда не исчезают, разве что могут перебежать по лестнице на соседний. Время от времени на уровнях появляются новые обитатели. Какие – зависит от настроек уровня в редакторе. В моей версии игры он доступен для пользователя, я даже в него пару раз заглянул. Понял не слишком много, ничего путного не накрутил, но зато могу пощеголять цифрами: на данный момент в игре имеется 59 уровней, 75 уникальных игровых локаций, 41 обычных и 38 уникальных существ, вот они:
Магия в игре имеется, но тупой гоблин, как назло, ни черта в ней не смыслит. Максимум, может долбануть кого-нибудь найденным волшебным мечом или плеснуть из бутылки заговоренной жижей. У других посетителей подземелий с этим дела обстоят получше - вас будут жечь огнём, морозить холодом, сбивать с толку, телепортировать с глаз долой, проклинать и так далее и тому подобное. Все эффекты отображаются в виде значков прямо поверх персонажей.
О чём ещё не рассказал? О визуальном стиле? Да он прекрасен, сами видите. О музыке? Её пока нет. Ну, разве что, о сюжете ещё могу. Сюжет нарезан тонкими ломтиками: случайными находками, байками, слухами и прочими маленькими приятными штучками. Есть квесты распространённого типа подай-принеси, а есть изощрённые сценарии без явного императива, требующие, например, вероломно нападать на дружественных существ, или делать неоднозначный выбор, или расставаться с наш-ш-шими прел-лестями – пронесёнными через всю игру волшебными штучками. Таких историй немного, но они есть, и придают существованию в игре трудноуловимый вкус настоящего приключения.
Проект активно развивается, тема на gamedev.ru насчитывает уже более 80 страниц. Кстати, в ней вы можете найти мой довольно подробный отчёт о первом запуске, в результате которого в игре поменялся алгоритм отрисовки теней. Я горд этим фактом. Впрочем, поменялось не всё из того, что хотелось бы поменять, проекту есть куда расти. На всякий случай попробую снабдить вас парой добрых советов, которых мне не хватало:
2. Обмен вещами с игровыми персонажами работает так: вы кладёте на землю то, что хотите передать и делаете шаг в сторону, персонаж подбегает, и дальше уже происходят соответствующие события. Довольно забавный механизм, но до него нужно сначала догадаться.
3. Если вас убили в подземелье, а именно там вас и будут убивать, то ваши вещи редко когда остаются валяться на камнях, в большинстве случаев их растаскивают местные монстры. Вам придётся убить их всех, чтобы отнять обратно ваши вещи. Если на уровне есть монстр, которого вы не можете убить - вещи скорее всего у него. Побегайте где-нибудь ещё, накопите ништяков, а потом взгрейте его.
4. На нижних уровнях твари настолько стрёмные, что без зелья полиморфа там делать практически нечего. Заклинание дизориентации, которым вас там угостят, на данный момент слишком могущественная и долгоиграющая штука.
5. Играйте на Numpad'е, на стрелках не получится диагональных перемещений.
6. Если навести мышкой на врага, то можно узнать, как его зовут, и чем он примечателен для автора игры.
7. И воду, и кислоту, и лаву - всё можно форсировать, иногда за ними даже можно найти что-нибудь кроме мучительной смерти.
8. Ваше могущество таится на дне бутылки. Вернее бутылок. Таскайте их с собой побольше и разных. Всякое бывает...
На этом разрешите откланяться, по вопросам получения последнего билда игры обращайтесь непосредственно к Крысеечнику в личку. Кстати, есть реальный шанс, что пораженный ослепительной белизной вашей репутации он выдаст вам бета-версию безвозмездно.
P.S. Напоследок, немного больших картинок для ознакомления:
- 02 октября 2013, 15:54
- 039
Все бомжики будут посасывать лапку, а не играть в медовый рогалик. А как теперь цЫфирки выглядят?
Самым обычным, классическим для шрифтов начертанием.
Хотя, четвёрка и семёрка по прежнему отходят от стандартов.
Главным образом подтянулясь единичка. Теперь чисто 111 нормально читается, так как тонкие палочки не липнут друг к другу, как раньше.
А ты все шрифты вручную рисуешь?
Да, конечно. Но разве нарисовать шрифт так трудно? Одноцветный, по точкам, за час можно с нуля нарисовать.
А может ты тогда и английских буковок дорисуешь? Чтобы не путать названиями "Ф1", "Эскейп" и т.д.
Английский язык полностью поддерживается в игре уже. Только с одной оговоркой: выводимая строка должна быть на одном языке. Либо русская. Либо английская. Попробуй сам: напиши какой-нибудь текст в игре на английском - и он отлично будет выводится. Но лишь, если вся строка на нём.
В общем, это ограничение движка. То, что в одной строчке трудно смешивать языки.
Какое-то дивное ограничение. Как же это так получилось? Может, можно отрисовать две строки на одном месте, двумя разными наборами символов, предварительно отделив символы исходной строки в две новых строки с русскими и английскими соответственно?
Это можно, разумеется. Но это костыли. Ну, да, да, можно их даж в автоматическом режиме запилить. Чтобы сами искали участки текста на другом языке, и вставляли отдельной строчкой.
Ну, вообще не заморачивался этим пока. Вроде и не надо было.
Погоди, в байт влезает две раскладки - английская и ещё одна, в данном случае русская. Ты же не полубайтами строки записываешь?
Дело в организации движка. Который Сухарь Ванильный. Ну, вот так он сделан. Что ж теперь :)
Не, а можно всё же детали узнать? Как это организовано?
Ну конечно. Всё организовано криво, в лучших традициях "велосипед из ничего своими руками"
В движке есть функция отрисовки строки текста. В неё мы передаём а) текстуру, куда рисуем, б) строку символов, которые рисуем и длину этой строки, в) координаты области, куда вписываем строку, г) флаги, типа центровки текста, д) текстуры символов, е) кодировку.
При этом (е) кодировка включает лишь один язык. И (д) текстуры символов загружаются разными наборами картинок.
Собственно, можно изменить эти два пункта. Но это пара часов времени. Что непозволительная роскошь для проекта на энтузиазме.
Неплохо.
Текстуру?.. Может, поверхность отрисовки?
А как так? А нельзя просто Юникод какой-нибудь выставить, например?
Так как делаю всё сам, то юникод надо не "вставлять", а реализовывать с нуля. Что весьма трудно. И потребует времени ещё больше, чем два часа из прошлого сообщения.
То есть, ты с нуля написал именно сопоставление символов и рендер? Проект, насколько я догадываюсь, на C/C++, так что мешает взять какой-нибудь открытый свободный код для этого?
Хотя... В самом деле, важнее делать игру, чем с текстами возиться.
Да, всё с нуля. А чужой код я стараюсь брать пореже и по минимуму. Ну, чтобы не зависеть, чтобы понимать всё до последнего символа в программе.
Я выше написал, что в принципе можно приделать костыль, позволяющий выводить строку по кускам, в зависимости от языка. Но нет смысла возиться, в самом деле. Потому что и нужно то это для пары слов, вроде "эскейп" и "энтер", чтобы писать их по-английски.