7евен дей рогулайк.

Здесь находятся проекты, дошедшие до версии 1.0. В том числе готовые 7DRL.

Модераторы: Sanja, Максим Кич

Ответить
Аватара пользователя
Эльф
Сообщения: 115
Зарегистрирован: 12 июл 2007, 16:39

7евен дей рогулайк.

Сообщение Эльф » 10 янв 2010, 20:05

Итак, мы с Троллем, пользуясь новогодними праздниками, решили поиграть в благородный жанр "напиши рогалик за 7 дней".

Мне захотелось написать некую пародию на jrpg вообще, и на 5 final fantasy в частности. Благо, оторванные от привычного контекста все эти белки, швыряющиеся орехами, и механики, оглушающие гаечными ключами, сами по себе уже смотрятся комично. Название - Aomadashi, что в переводе на язык гайдзинов означает "голубой маг" (not gay), суть такова: злой колдун сжигает деревню, но в живых остается маленький мальчик, который в это время как раз ходил за покупками в ближайший супермаркет. Мальчик плачет на пепелище и клянется отомстить (двухчасовой ролик на три компакта будет включен в финальную версию), спускается вслед за колдуном в локальный данжн, и там обнаруживает в себе способности голубого мага, то есть, может повторить некоторые заклы из тех, что скастованы на него.

Вот такие вот были фантазии, которые к середине недели полностью истощились, поскольку сама игра в процессе написания осточертела мне сверх всякой меры, и вторую половину недели я писал ее исключительно на морально-волевых качествах, и как доктор Моро пришивал нужные куски, нисколько не заботясь о внутреннем содержании. Формально игра закончена, ее можно пройти (все 5 левелов с 5 типами монстров и 5 предметами, ололо!), вроде бы все на месте, и даже сделано не очень криво (за исключением генерации лабиринтов).

Теперь, что я хотел спросить. Во-первых, графон. Признаться, глядя на заготовку Максима я испытывал некоторую зависть, и четко понимал, что времена адомоподобной графики уже давно прошли, и даже успешные проекты вроде doomrl не меняют этого факта. Хочу как в крузис. Максим, не скажешь, на чем ты писал noir?

Во-вторых, генератор уровней. До этого мне как-то подземелья не приходилось генерить - все больше города да отсеки космической станции. Я в первый день провел часа 4 над раздумьями о том, как сгенерить нормальный dungeon, рассматривал исходники Hero Blade, понимал как должен выглядеть нормальный код, стыдился своего убогого кода, но в результате ничего не понял.

Соответственно, один вопрос к BreakMt - я застопорился на процедуре MoveTo, которая должна пробивать коридор к комнате, огибая препятствия, но фактически коридор доходит до клетки с комнатой, а затем безо всяких проверок поворачивает на 90 градусов. А если там коридор, или хуже того, стена соседняя с коридором?

Ну и второй вопрос ко всем остальным - опишите, плз, алгоритм для построения нормального подземелья.

Как-то так.

upd. нашелся глюк с потреблением поушена, исправлено.
Вложения
aomadoushi.rar
(76.5 КБ) 198 скачиваний
Последний раз редактировалось Эльф 10 янв 2010, 20:53, всего редактировалось 1 раз.

Аватара пользователя
Харука-тян
Мастер
Сообщения: 544
Зарегистрирован: 29 ноя 2006, 00:23
Контактная информация:

Re: 7евен дей рогулайк.

Сообщение Харука-тян » 10 янв 2010, 20:33

Эльф писал(а):опишите, плз, алгоритм для построения нормального подземелья.
Мерцание пр перерисовке экрана несколько мешало комфортно пройти до конца, но я убедилась в играбельности^^

Пара слов о подземельях: классическая генерация предусматривает разбивку карты на прямоугольные зоны, в каждую из которых помещается комната. После этого комнаты соединяются вертикальными и горизонтальными корридорами. (QHack, Rogue)
Немного сложнее (как в Lanceran, например): Комнаты набрасываются в хаотичном порядке (не внахлёст), после чего произвольными парами соединяются L-образными корридорами. В случае пересечения корридоров - новая генерация лабиринта. Колличество комнат и их минимальные/максимальные размеры подбираются опытным путём.
После генерации такого лабиринта не помешает сделать рекурсивную FloodFill- проверку на возможность попасть в любую точку подземелья. А перед этим вычистить тупики. (Проверять последовательно все клетки на наличие трёх соседних стен, [соседние - только по вертикали и горизонтали], и в случае совпадения признака - заменять её стеной и рекурсивно проверять её "соседей").
Для пещер: Комнаты набрасываются непрямоугольные, можно внахлёст. Соединяются корридорами в форме дуг, змейки или прямой. Непрямоугольная строится как эллипс, с искажением вдоль длинной оси.

Да, я люблю рекурсии^^ Но, надеюсь, мои рассуждения хоть немного полезны.
"Женщина верит, что дважды два будет пять, если хорошенько поплакать и устроить скандал" (© Дж. Элиот).
ИзображениеИзображение

Аватара пользователя
Эльф
Сообщения: 115
Зарегистрирован: 12 июл 2007, 16:39

Re: 7евен дей рогулайк.

Сообщение Эльф » 10 янв 2010, 20:48

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

Я когда смотрел код BreakMT, там примерно так и было, но меня смущает такой момент, что при рисовании нового коридора он может, полбеды, пересечься со старым, и целая беда - если он пройдет совсем рядом, образуя таким образом коридор шириной две клетки.

Аватара пользователя
BreakMT
WANDER Team
Сообщения: 892
Зарегистрирован: 27 ноя 2006, 12:16

Re: 7евен дей рогулайк.

Сообщение BreakMT » 10 янв 2010, 20:52

Соответственно, один вопрос к BreakMt - я застопорился на процедуре MoveTo, которая должна пробивать коридор к комнате, огибая препятствия, но фактически коридор доходит до клетки с комнатой, а затем безо всяких проверок поворачивает на 90 градусов. А если там коридор, или хуже того, стена соседняя с коридором?
Если приглядеться, то там все же есть проверки типа:

Код: Выделить всё

if Move[x,by-1] = True then
На коридоры эта функция никак не срабатывает (не видел необходимости), а вот на комнаты 100%. Потому как когда они строятся, представляют собой клетки пола, окруженные стеной. Как раз такие проверки Move (True, False) и не позволяют коридору протиснуться через стенку.
Я когда смотрел код BreakMT, там примерно так и было, но меня смущает такой момент, что при рисовании нового коридора он может, полбеды, пересечься со старым, и целая беда - если он пройдет совсем рядом, образуя таким образом коридор шириной две клетки.
А что в этом страшного?
Кстати, можешь добавить простую вещь - при построении коридора делай рядом с ним две стены, тогда он будет так же изолирован как и комната...
Правда в таком случае нужно будет ввести проверку на то, что новый коридор сможет дойти до конечной точки :|
Последний раз редактировалось BreakMT 10 янв 2010, 20:57, всего редактировалось 1 раз.

Код: Выделить всё

#########
#.......#
+...@.z.#             "Got ya, didn't I, you little sucker!!!"
#.......#
#########
>>Мои программы для Андроида<<

Аватара пользователя
Эльф
Сообщения: 115
Зарегистрирован: 12 июл 2007, 16:39

Re: 7евен дей рогулайк.

Сообщение Эльф » 10 янв 2010, 20:57

BreakMT писал(а): Если приглядеться, то там все же есть проверки типа:

Код: Выделить всё

if Move[x,by-1] = True then
но это если dy!=0. Я не очень разобрался что за dy, но в первый прогон процедуры оно очень даже равно )
BreakMT писал(а): А что в этом страшного?
Я такое, кажется, в Мории видел, и в общем мне не понравилось, лол.
Последний раз редактировалось Эльф 10 янв 2010, 21:02, всего редактировалось 1 раз.

Аватара пользователя
BreakMT
WANDER Team
Сообщения: 892
Зарегистрирован: 27 ноя 2006, 12:16

Re: 7евен дей рогулайк.

Сообщение BreakMT » 10 янв 2010, 21:00

но это если dy!=0. Я не очень разобрался что за dy, но в первый прогон процедуры оно очень даже равно )
Тогда должно быть dx <> 0) На сколько я помню - dx, dy это шаг построения коридора, т.е. в какую сторону он строится в данный момент

Да и, кстати, вполне нормальные у тебя подземелья получаются!
Последний раз редактировалось BreakMT 10 янв 2010, 21:04, всего редактировалось 1 раз.

Код: Выделить всё

#########
#.......#
+...@.z.#             "Got ya, didn't I, you little sucker!!!"
#.......#
#########
>>Мои программы для Андроида<<

Аватара пользователя
Troll
Сообщения: 59
Зарегистрирован: 08 июл 2007, 12:55
Откуда: Одесса

Re: 7евен дей рогулайк.

Сообщение Troll » 10 янв 2010, 21:01

7DRL, конечно, не получился. Получилось демо. Но добротное. Как демо добротное, а не как законченная игра.

BattleTechRL.
Вы один из повстанцев, которым удалось захватить одного из боевых роботов клики, контролирующей власть на вашей планете. Вы высыживаетесь на их базу с целью разбомбить все заводы, производящие роботов. Заводов, как понятно, пока нет, есть только вражеские роботы.
Игра в дискретном realtime, как в представленном тут WQ. К сожалению из-за недостатка времени пришлось сделать пока полёт снарядов мгновенным, что несомненно плохо. Не ввёл энергетические щиты, разные действия разного оружия и их баллансирование, поднимания предметов и много ещё чего, что планировал успеть. Да, и отвлекали всё время. Два дня из семи писал по часу всего. В-общем, ладно. Раз нужно законченную игру получить, значить цель такова - убить всех роботов на уровне.

Можно тестить. Сразу говорю, что почти наверняка есть баг с отрисовкой робота не стене, но настолько реджко выпадающий, что мне не удалось его отследить.

И это, название темы не очень.
Вложения
BT000.rar
BattleTechRL demo
(20.3 КБ) 160 скачиваний
You see the Troll. He wield giant club in right hand and huge rock in left hand. Troll looks satiaited and not agressive, he look at you with interest. It seems that Troll asks you: "What you do in trollish land?"

Dmiry
Сообщения: 168
Зарегистрирован: 14 июн 2007, 10:32

Re: 7евен дей рогулайк.

Сообщение Dmiry » 10 янв 2010, 21:08

2Эльф:
По поводу графики - Noir выложен вместе с исходниками, написан (насколько я понял) на старом добром Delphi.

А вот насчет устарелости ascii-графики позволю себе не согласиться, особенно в контексте 7drl. Ascii-графика позволяет сосредоточиться на функциональных моментах, оставив красивости на потом. Мой предыдущий проект загнулся именно из-за ориентации на графику. В нынешнем варианте от графики отказался, что позволило за гораздо меньшее время получить работоспособную мини-игру. Хотя совсем отказываться не собираюсь, и в дальшейшем планирую перейти на тайлы.

Если ты все-таки нацелен на графику - имеет смысл посмотреть готовые библиотеки, тот же LibTCOD. Сам пытался в нем разобраться, к сожалению, безуспешно :?

Попробовал поиграть - после истощения маны очередной гоблин запинал до смерти. Насчет генератора лабиринта - у тебя комнаты соединяются в цепочку? Или из одной комнаты можно пройти в 3+ других?

2Тролль:
Больше всего мешает управление движением. Я бы предожил поменять назначение клавиш: стрелка вверх соответствует движению в направлении взгляда (вперед), стрелка вниз - назад, стрелки влево/вправо - поворот в соответствующем направлении.

upd: правка обращений, язык.
Первая заповедь фотолюбителя: Проявил себя - закрепи!

Аватара пользователя
Эльф
Сообщения: 115
Зарегистрирован: 12 июл 2007, 16:39

Re: 7евен дей рогулайк.

Сообщение Эльф » 10 янв 2010, 21:29

Dmiry писал(а):По поводу графики - Noir выложен вместе с исходниками, написан (насколько я понял) на старом добром Delphi.

А вот насчет устарелости ascii-графики позволю себе не согласиться, особенно в контексте 7drl. Ascii-графика позволяет сосредоточиться на функциональных моментах, оставив красивости на потом. Мой предыдущий проект загнулся именно из-за ориентации на графику. В нынешнем варианте от графики отказался, что позволило за гораздо меньшее время получить работоспособную мини-игру. Хотя совсем отказываться не собираюсь, и в дальшейшем планирую перейти на тайлы.
Дело в том, что я в некотором смысле на распутье. Тайлы-то я точно не потяну, а вот каких-то красивых шрифтов, полноцветности и всего-такого хотелось бы. Кроме обычного паскаля я нихрена-то и не знаю, так что все равно что-то новое учить, вот и пытаюсь понять для себя, где возможностей больше.
Dmiry писал(а): Попробовал поиграть - после истощения маны очередной гоблин запинал до смерти. Насчет генератора лабиринта - у тебя комнаты соединяются в цепочку? Или из одной комнаты можно пройти в 3+ других?
Я ее просто в начале рассчитывал сделать сложной и интересной. В FF аффекты забавные - frog, mini итд. Но чем дальше писал, тем больше она меня доставала. В принципе, навесить на нее 100 монстров, 100 итемов и 50 заклов, и было бы нормально и полноценно.

Сто процентов есть комнаты с тремя выходами. Алгоритм я на каком-то буржуйском сайте вычитал - делишь комнату попалам, потом каждую из получившихся, рекурсивно, пока не дойдешь до размеров комнаты; а затем комнаты, которые были разделены на одном и том же шаге, соединяешь z-образными коридорами. Получается такое дурацкое двоичное дерево, но кстати если добавить в него колец - соединить пару комнат рендомными коридорами - то в целом может и неплохо получиться. Только я колец не делал, лол - не успел просто.

Аватара пользователя
Troll
Сообщения: 59
Зарегистрирован: 08 июл 2007, 12:55
Откуда: Одесса

Re: 7евен дей рогулайк.

Сообщение Troll » 10 янв 2010, 21:38

Dmiry писал(а): 2Тролль:
Больше всего мешает управление движением. Я бы предожил поменять назначение клавиш: стрелка вверх соответствует движению в направлении взгляда (вперед), стрелка вниз - назад, стрелки влево/вправо - поворот в соответствующем направлении.

upd: правка обращений, язык.
Знаю про несколько неудачное на первый взгляд управление. Сразу как ввёл его - думал переделать. Но потом привык. И не испытываю неудобства.
Про язык и обороты - времени не хватило. Очень сложный русский язык, выходит.

Но суть игры не в этом совсем, а в движке самом, в выборе действия и оценке ситуации. Жаль, что не успел сделать полёт снарядов не мгновенным и блок тоже не успел... Сам 6 роботов ложил максимум.
You see the Troll. He wield giant club in right hand and huge rock in left hand. Troll looks satiaited and not agressive, he look at you with interest. It seems that Troll asks you: "What you do in trollish land?"

Dmiry
Сообщения: 168
Зарегистрирован: 14 июн 2007, 10:32

Re: 7евен дей рогулайк.

Сообщение Dmiry » 11 янв 2010, 03:53

Про язык и обороты - времени не хватило. Очень сложный русский язык, выходит.
Эээ... Я про язык в своем сообщении писал, это не относилось к тебе и к игре.

Кстати, насколько я знаю, редкие рогалики используют подобную систему FOV - сектором. Я могу вспомнить только UnrealWorld. Не уверен насчет GearHead - там вроде тоже подобная система управления была.
Первая заповедь фотолюбителя: Проявил себя - закрепи!

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость