7евен дей рогулайк.
Модераторы: Sanja, Максим Кич
7евен дей рогулайк.
Итак, мы с Троллем, пользуясь новогодними праздниками, решили поиграть в благородный жанр "напиши рогалик за 7 дней".
Мне захотелось написать некую пародию на jrpg вообще, и на 5 final fantasy в частности. Благо, оторванные от привычного контекста все эти белки, швыряющиеся орехами, и механики, оглушающие гаечными ключами, сами по себе уже смотрятся комично. Название - Aomadashi, что в переводе на язык гайдзинов означает "голубой маг" (not gay), суть такова: злой колдун сжигает деревню, но в живых остается маленький мальчик, который в это время как раз ходил за покупками в ближайший супермаркет. Мальчик плачет на пепелище и клянется отомстить (двухчасовой ролик на три компакта будет включен в финальную версию), спускается вслед за колдуном в локальный данжн, и там обнаруживает в себе способности голубого мага, то есть, может повторить некоторые заклы из тех, что скастованы на него.
Вот такие вот были фантазии, которые к середине недели полностью истощились, поскольку сама игра в процессе написания осточертела мне сверх всякой меры, и вторую половину недели я писал ее исключительно на морально-волевых качествах, и как доктор Моро пришивал нужные куски, нисколько не заботясь о внутреннем содержании. Формально игра закончена, ее можно пройти (все 5 левелов с 5 типами монстров и 5 предметами, ололо!), вроде бы все на месте, и даже сделано не очень криво (за исключением генерации лабиринтов).
Теперь, что я хотел спросить. Во-первых, графон. Признаться, глядя на заготовку Максима я испытывал некоторую зависть, и четко понимал, что времена адомоподобной графики уже давно прошли, и даже успешные проекты вроде doomrl не меняют этого факта. Хочу как в крузис. Максим, не скажешь, на чем ты писал noir?
Во-вторых, генератор уровней. До этого мне как-то подземелья не приходилось генерить - все больше города да отсеки космической станции. Я в первый день провел часа 4 над раздумьями о том, как сгенерить нормальный dungeon, рассматривал исходники Hero Blade, понимал как должен выглядеть нормальный код, стыдился своего убогого кода, но в результате ничего не понял.
Соответственно, один вопрос к BreakMt - я застопорился на процедуре MoveTo, которая должна пробивать коридор к комнате, огибая препятствия, но фактически коридор доходит до клетки с комнатой, а затем безо всяких проверок поворачивает на 90 градусов. А если там коридор, или хуже того, стена соседняя с коридором?
Ну и второй вопрос ко всем остальным - опишите, плз, алгоритм для построения нормального подземелья.
Как-то так.
upd. нашелся глюк с потреблением поушена, исправлено.
Мне захотелось написать некую пародию на jrpg вообще, и на 5 final fantasy в частности. Благо, оторванные от привычного контекста все эти белки, швыряющиеся орехами, и механики, оглушающие гаечными ключами, сами по себе уже смотрятся комично. Название - Aomadashi, что в переводе на язык гайдзинов означает "голубой маг" (not gay), суть такова: злой колдун сжигает деревню, но в живых остается маленький мальчик, который в это время как раз ходил за покупками в ближайший супермаркет. Мальчик плачет на пепелище и клянется отомстить (двухчасовой ролик на три компакта будет включен в финальную версию), спускается вслед за колдуном в локальный данжн, и там обнаруживает в себе способности голубого мага, то есть, может повторить некоторые заклы из тех, что скастованы на него.
Вот такие вот были фантазии, которые к середине недели полностью истощились, поскольку сама игра в процессе написания осточертела мне сверх всякой меры, и вторую половину недели я писал ее исключительно на морально-волевых качествах, и как доктор Моро пришивал нужные куски, нисколько не заботясь о внутреннем содержании. Формально игра закончена, ее можно пройти (все 5 левелов с 5 типами монстров и 5 предметами, ололо!), вроде бы все на месте, и даже сделано не очень криво (за исключением генерации лабиринтов).
Теперь, что я хотел спросить. Во-первых, графон. Признаться, глядя на заготовку Максима я испытывал некоторую зависть, и четко понимал, что времена адомоподобной графики уже давно прошли, и даже успешные проекты вроде doomrl не меняют этого факта. Хочу как в крузис. Максим, не скажешь, на чем ты писал noir?
Во-вторых, генератор уровней. До этого мне как-то подземелья не приходилось генерить - все больше города да отсеки космической станции. Я в первый день провел часа 4 над раздумьями о том, как сгенерить нормальный dungeon, рассматривал исходники Hero Blade, понимал как должен выглядеть нормальный код, стыдился своего убогого кода, но в результате ничего не понял.
Соответственно, один вопрос к BreakMt - я застопорился на процедуре MoveTo, которая должна пробивать коридор к комнате, огибая препятствия, но фактически коридор доходит до клетки с комнатой, а затем безо всяких проверок поворачивает на 90 градусов. А если там коридор, или хуже того, стена соседняя с коридором?
Ну и второй вопрос ко всем остальным - опишите, плз, алгоритм для построения нормального подземелья.
Как-то так.
upd. нашелся глюк с потреблением поушена, исправлено.
- Вложения
-
- aomadoushi.rar
- (76.5 КБ) 317 скачиваний
Последний раз редактировалось Эльф 10 янв 2010, 20:53, всего редактировалось 1 раз.
- Харука-тян
- Мастер
- Сообщения: 544
- Зарегистрирован: 29 ноя 2006, 00:23
- Контактная информация:
Re: 7евен дей рогулайк.
Мерцание пр перерисовке экрана несколько мешало комфортно пройти до конца, но я убедилась в играбельности^^Эльф писал(а):опишите, плз, алгоритм для построения нормального подземелья.
Пара слов о подземельях: классическая генерация предусматривает разбивку карты на прямоугольные зоны, в каждую из которых помещается комната. После этого комнаты соединяются вертикальными и горизонтальными корридорами. (QHack, Rogue)
Немного сложнее (как в Lanceran, например): Комнаты набрасываются в хаотичном порядке (не внахлёст), после чего произвольными парами соединяются L-образными корридорами. В случае пересечения корридоров - новая генерация лабиринта. Колличество комнат и их минимальные/максимальные размеры подбираются опытным путём.
После генерации такого лабиринта не помешает сделать рекурсивную FloodFill- проверку на возможность попасть в любую точку подземелья. А перед этим вычистить тупики. (Проверять последовательно все клетки на наличие трёх соседних стен, [соседние - только по вертикали и горизонтали], и в случае совпадения признака - заменять её стеной и рекурсивно проверять её "соседей").
Для пещер: Комнаты набрасываются непрямоугольные, можно внахлёст. Соединяются корридорами в форме дуг, змейки или прямой. Непрямоугольная строится как эллипс, с искажением вдоль длинной оси.
Да, я люблю рекурсии^^ Но, надеюсь, мои рассуждения хоть немного полезны.
Re: 7евен дей рогулайк.
Я именно так и сделал, только чуть более хитрыми коридорами соединял. В результате получается все то же двоичное дерево, но чуть менее банально выглядящее.Харука-тян писал(а): Пара слов о подземельях: классическая генерация предусматривает разбивку карты на прямоугольные зоны, в каждую из которых помещается комната. После этого комнаты соединяются вертикальными и горизонтальными корридорами.
Вот этот момент можно поподробней?Харука-тян писал(а): В случае пересечения корридоров - новая генерация лабиринта.
Я когда смотрел код BreakMT, там примерно так и было, но меня смущает такой момент, что при рисовании нового коридора он может, полбеды, пересечься со старым, и целая беда - если он пройдет совсем рядом, образуя таким образом коридор шириной две клетки.
Re: 7евен дей рогулайк.
Если приглядеться, то там все же есть проверки типа:Соответственно, один вопрос к BreakMt - я застопорился на процедуре MoveTo, которая должна пробивать коридор к комнате, огибая препятствия, но фактически коридор доходит до клетки с комнатой, а затем безо всяких проверок поворачивает на 90 градусов. А если там коридор, или хуже того, стена соседняя с коридором?
Код: Выделить всё
if Move[x,by-1] = True then
А что в этом страшного?Я когда смотрел код BreakMT, там примерно так и было, но меня смущает такой момент, что при рисовании нового коридора он может, полбеды, пересечься со старым, и целая беда - если он пройдет совсем рядом, образуя таким образом коридор шириной две клетки.
Кстати, можешь добавить простую вещь - при построении коридора делай рядом с ним две стены, тогда он будет так же изолирован как и комната...
Правда в таком случае нужно будет ввести проверку на то, что новый коридор сможет дойти до конечной точки

Последний раз редактировалось BreakMT 10 янв 2010, 20:57, всего редактировалось 1 раз.
Re: 7евен дей рогулайк.
но это если dy!=0. Я не очень разобрался что за dy, но в первый прогон процедуры оно очень даже равно )BreakMT писал(а): Если приглядеться, то там все же есть проверки типа:Код: Выделить всё
if Move[x,by-1] = True then
Я такое, кажется, в Мории видел, и в общем мне не понравилось, лол.BreakMT писал(а): А что в этом страшного?
Последний раз редактировалось Эльф 10 янв 2010, 21:02, всего редактировалось 1 раз.
Re: 7евен дей рогулайк.
Тогда должно быть dx <> 0) На сколько я помню - dx, dy это шаг построения коридора, т.е. в какую сторону он строится в данный моментно это если dy!=0. Я не очень разобрался что за dy, но в первый прогон процедуры оно очень даже равно )
Да и, кстати, вполне нормальные у тебя подземелья получаются!
Последний раз редактировалось BreakMT 10 янв 2010, 21:04, всего редактировалось 1 раз.
Re: 7евен дей рогулайк.
7DRL, конечно, не получился. Получилось демо. Но добротное. Как демо добротное, а не как законченная игра.
BattleTechRL.
Вы один из повстанцев, которым удалось захватить одного из боевых роботов клики, контролирующей власть на вашей планете. Вы высыживаетесь на их базу с целью разбомбить все заводы, производящие роботов. Заводов, как понятно, пока нет, есть только вражеские роботы.
Игра в дискретном realtime, как в представленном тут WQ. К сожалению из-за недостатка времени пришлось сделать пока полёт снарядов мгновенным, что несомненно плохо. Не ввёл энергетические щиты, разные действия разного оружия и их баллансирование, поднимания предметов и много ещё чего, что планировал успеть. Да, и отвлекали всё время. Два дня из семи писал по часу всего. В-общем, ладно. Раз нужно законченную игру получить, значить цель такова - убить всех роботов на уровне.
Можно тестить. Сразу говорю, что почти наверняка есть баг с отрисовкой робота не стене, но настолько реджко выпадающий, что мне не удалось его отследить.
И это, название темы не очень.
BattleTechRL.
Вы один из повстанцев, которым удалось захватить одного из боевых роботов клики, контролирующей власть на вашей планете. Вы высыживаетесь на их базу с целью разбомбить все заводы, производящие роботов. Заводов, как понятно, пока нет, есть только вражеские роботы.
Игра в дискретном realtime, как в представленном тут WQ. К сожалению из-за недостатка времени пришлось сделать пока полёт снарядов мгновенным, что несомненно плохо. Не ввёл энергетические щиты, разные действия разного оружия и их баллансирование, поднимания предметов и много ещё чего, что планировал успеть. Да, и отвлекали всё время. Два дня из семи писал по часу всего. В-общем, ладно. Раз нужно законченную игру получить, значить цель такова - убить всех роботов на уровне.
Можно тестить. Сразу говорю, что почти наверняка есть баг с отрисовкой робота не стене, но настолько реджко выпадающий, что мне не удалось его отследить.
И это, название темы не очень.
- Вложения
-
- BT000.rar
- BattleTechRL demo
- (20.3 КБ) 269 скачиваний
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?"
Re: 7евен дей рогулайк.
2Эльф:
По поводу графики - Noir выложен вместе с исходниками, написан (насколько я понял) на старом добром Delphi.
А вот насчет устарелости ascii-графики позволю себе не согласиться, особенно в контексте 7drl. Ascii-графика позволяет сосредоточиться на функциональных моментах, оставив красивости на потом. Мой предыдущий проект загнулся именно из-за ориентации на графику. В нынешнем варианте от графики отказался, что позволило за гораздо меньшее время получить работоспособную мини-игру. Хотя совсем отказываться не собираюсь, и в дальшейшем планирую перейти на тайлы.
Если ты все-таки нацелен на графику - имеет смысл посмотреть готовые библиотеки, тот же LibTCOD. Сам пытался в нем разобраться, к сожалению, безуспешно
Попробовал поиграть - после истощения маны очередной гоблин запинал до смерти. Насчет генератора лабиринта - у тебя комнаты соединяются в цепочку? Или из одной комнаты можно пройти в 3+ других?
2Тролль:
Больше всего мешает управление движением. Я бы предожил поменять назначение клавиш: стрелка вверх соответствует движению в направлении взгляда (вперед), стрелка вниз - назад, стрелки влево/вправо - поворот в соответствующем направлении.
upd: правка обращений, язык.
По поводу графики - Noir выложен вместе с исходниками, написан (насколько я понял) на старом добром Delphi.
А вот насчет устарелости ascii-графики позволю себе не согласиться, особенно в контексте 7drl. Ascii-графика позволяет сосредоточиться на функциональных моментах, оставив красивости на потом. Мой предыдущий проект загнулся именно из-за ориентации на графику. В нынешнем варианте от графики отказался, что позволило за гораздо меньшее время получить работоспособную мини-игру. Хотя совсем отказываться не собираюсь, и в дальшейшем планирую перейти на тайлы.
Если ты все-таки нацелен на графику - имеет смысл посмотреть готовые библиотеки, тот же LibTCOD. Сам пытался в нем разобраться, к сожалению, безуспешно

Попробовал поиграть - после истощения маны очередной гоблин запинал до смерти. Насчет генератора лабиринта - у тебя комнаты соединяются в цепочку? Или из одной комнаты можно пройти в 3+ других?
2Тролль:
Больше всего мешает управление движением. Я бы предожил поменять назначение клавиш: стрелка вверх соответствует движению в направлении взгляда (вперед), стрелка вниз - назад, стрелки влево/вправо - поворот в соответствующем направлении.
upd: правка обращений, язык.
Первая заповедь фотолюбителя: Проявил себя - закрепи!
Re: 7евен дей рогулайк.
Дело в том, что я в некотором смысле на распутье. Тайлы-то я точно не потяну, а вот каких-то красивых шрифтов, полноцветности и всего-такого хотелось бы. Кроме обычного паскаля я нихрена-то и не знаю, так что все равно что-то новое учить, вот и пытаюсь понять для себя, где возможностей больше.Dmiry писал(а):По поводу графики - Noir выложен вместе с исходниками, написан (насколько я понял) на старом добром Delphi.
А вот насчет устарелости ascii-графики позволю себе не согласиться, особенно в контексте 7drl. Ascii-графика позволяет сосредоточиться на функциональных моментах, оставив красивости на потом. Мой предыдущий проект загнулся именно из-за ориентации на графику. В нынешнем варианте от графики отказался, что позволило за гораздо меньшее время получить работоспособную мини-игру. Хотя совсем отказываться не собираюсь, и в дальшейшем планирую перейти на тайлы.
Я ее просто в начале рассчитывал сделать сложной и интересной. В FF аффекты забавные - frog, mini итд. Но чем дальше писал, тем больше она меня доставала. В принципе, навесить на нее 100 монстров, 100 итемов и 50 заклов, и было бы нормально и полноценно.Dmiry писал(а): Попробовал поиграть - после истощения маны очередной гоблин запинал до смерти. Насчет генератора лабиринта - у тебя комнаты соединяются в цепочку? Или из одной комнаты можно пройти в 3+ других?
Сто процентов есть комнаты с тремя выходами. Алгоритм я на каком-то буржуйском сайте вычитал - делишь комнату попалам, потом каждую из получившихся, рекурсивно, пока не дойдешь до размеров комнаты; а затем комнаты, которые были разделены на одном и том же шаге, соединяешь z-образными коридорами. Получается такое дурацкое двоичное дерево, но кстати если добавить в него колец - соединить пару комнат рендомными коридорами - то в целом может и неплохо получиться. Только я колец не делал, лол - не успел просто.
Re: 7евен дей рогулайк.
Знаю про несколько неудачное на первый взгляд управление. Сразу как ввёл его - думал переделать. Но потом привык. И не испытываю неудобства.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?"
Re: 7евен дей рогулайк.
Эээ... Я про язык в своем сообщении писал, это не относилось к тебе и к игре.Про язык и обороты - времени не хватило. Очень сложный русский язык, выходит.
Кстати, насколько я знаю, редкие рогалики используют подобную систему FOV - сектором. Я могу вспомнить только UnrealWorld. Не уверен насчет GearHead - там вроде тоже подобная система управления была.
Первая заповедь фотолюбителя: Проявил себя - закрепи!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость