Ведьма против зомби, 7DRL

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

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

Аватара пользователя
kipar
Сообщения: 2082
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Ведьма против зомби, 7DRL

Сообщение kipar » 02 янв 2011, 12:05

Новогодние праздники - самое время для 7DRL. Хотя за компом все время сидеть может и не удастся, но по крайней мере не надо ходить на работу. Так что стартую свою попытку создания 7DRL.
Сюжет планируется такой: ведьма читает древнюю книгу , где описываются магические ритуалы атаки, лечения, вызова демонов, телепорта. Это будет заодно и туториалом к игре. А последний, самый запутанный, ритуал ВНЕЗАПНО открывает портал в мир мертвых, из которого начинают непрерывным потоком валить зомби (призраки?). Ну и она должна продержаться против них, используя изученные ритуалы.
Основая фича игры - идея "ритуальной" магии, (частично позаимствованная из книг Перумова). Суть такова:
Есть размещенные источники магии (кипящие котлы, сушеные черепа, горящие пучки травы), соответствующие одной из стихий и обладающие определенным запасом магической силы.
Их соединяем нарисованными линиями (чем рисуем не совсем понятно. Видимо клюкой). Когда линия соединяет два источника, она начинает светиться, проводить между двумя источниками энергию, ну и приводит к некоему магическому эффекту.

Например если соединить источник круговой линией сам с собой, это создаст барьер, останавливающий зомби пока в источнике есть энергия.
Если соединить через один находящиеся в углах выпуклого пятиугольника источники (получится пентаграмма), то будет вызван демон, действующий до тех пор, пока во всех пяти источниках есть энергия. (Если источники еще и соединены круговой линией, то демон атакует только в пределах этого круга, иначе он просто атакует ближайщую цель включая саму ведьму).
Собственно с этой системой магии и будет связано большинство проблем (я пока не уверен даже, будет ли она играбельна).

Начал я проект сегодня ночью и сейчас у меня уже есть: базовая система времени (полуреалтайм, так сказать), двигающиеся монстры и игрок, прямоугольные препятствия, загрузка из текстового файла, полоска ХП и убивание игрока монстрами.

Управление:
L - загрузить файл уровня test.game
S - сделать один шаг
Пробел - двигаться до достижения цели
Левая кнопка мыши - установить цель движения
Правая кнопка мыши - добавить монстра.

ПЛАН:
На сегодня(день 1): сделать еще объектную модель источников магии и линий между ними, рисование линий игроком.

День 2: распознавание шаблонов (круг из одного источника\пентаграмма\Н линий между двумя источниками\что еще успею)
День 3: эффекты шаблонов (убывание силы источников, вызов демонов, лечение, атака, барьер, телепорт, что еще успею)
День 4: АИ (точнее обход препятствий монстрами), сбалансировать параметры чтобы сделать тестовый уровень с кучей фиксированных источников играбельным до момента исчерпания источников.
День 5: Размещение источников(инвентарь с переносными источниками), различие между различными стихиями, возможно перевести графику на OpenGL
День 6: Туториал с семью(?) фиксированными уровнями и текстом к ним ("соедините эти два источника с теми и наблюдайте, как вызванное пламя сжигает крысу"), генерация случайных уровней
День 7: резерв.

---------
Updated 9.01.11:
Проект завершен!
Архив с исполняемым файлом:
Witch7DRL.zip
(872.37 КБ) 149 скачиваний
Исходники (на FreePascal):
witch_src.zip
(28.02 КБ) 115 скачиваний
---
Updated 20.03.11
Багфикс релиз, добавлено управление мышью и переключение английского и русского языка в ини-файле.
witch102a.zip
(933.77 КБ) 242 скачивания
Последний раз редактировалось kipar 20 мар 2011, 12:21, всего редактировалось 4 раза.

JustHarry
Сообщения: 655
Зарегистрирован: 30 июл 2010, 17:13

Re: Ведьма против зомби, 7DRL

Сообщение JustHarry » 02 янв 2011, 12:41

Если соединить через один находящиеся в углах выпуклого пятиугольника источники (получится пентаграмма), то будет вызван демон, действующий до тех пор, пока во всех пяти источниках есть энергия. (Если источники еще и соединены круговой линией, то демон атакует только в пределах этого круга, иначе он просто атакует ближайщую цель включая саму ведьму).
Собственно с этой системой магии и будет связано большинство проблем (я пока не уверен даже, будет ли она играбельна).
Идея сложна в исполнении, но достаточно оригинальна, удачи!

К тому же, рогалик с такой системой магии приобретает здоровую долю адреналина "Успею ли я добежать до этого источника и дорисовать тетраэдр с магией "kill'em all" или придется пересечь вот этот камень и сделать магию "Magic dart?" Во вторых, широкое поле для прикручивания всяких комбо и множителей очков. Самое главное - разнообразить выбор фигур для рисования(окружность, квадрат, эллипс, спираль, циклоида, лента Мебиуса, и т.д). А если сделать это в 3D...

Да, и про жертвоприношения не забывай, если в центре фигуры вдруг окажется зомби, то магия может резко изменить свои свойства, и придется с этим считаться, если не хочется вместо лечения вызвать орду волколаков на свою голову.

Аватара пользователя
kipar
Сообщения: 2082
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Ведьма против зомби, 7DRL

Сообщение kipar » 02 янв 2011, 22:33

Нда, жертвоприношения и множители очков видимо подождут до полноценной версии.
Вообще эта игра (по крайней мере 7дрл версия) скорее всего будет "топологическая", т.е. имеют значение порядок соединения узлов, а не форма линий (квадрат эквивалентен окружности). Так распознавать паттерны проще, да и свобода в рисовании появляется.
А по хорошему конечно стоит еще и отклонение от прямолинейности учитывать.

В общем на день 1 план выполнен: игрок рисует линии между источниками магии.
lines.JPG
lines.JPG (27.78 КБ) 5144 просмотра
Исходники и ехе:
witch_day1.zip
(644.39 КБ) 113 скачиваний
Управление:
L - загрузить файл уровня test.game
S - сделать один шаг
D - переключить режим рисовать\не рисовать (линия может начинаться только от источника, поэтому для начала рисования нужно встать на источник)
Пробел - двигаться до достижения цели
Левая кнопка мыши - установить цель движения
Правая кнопка мыши - добавить источник.

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Re: Ведьма против зомби, 7DRL

Сообщение Maelstrom » 02 янв 2011, 22:37

Без буковок как-то неуютно выглядит
Айв кнгенгах Йог-Сотот

Аватара пользователя
kipar
Сообщения: 2082
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Ведьма против зомби, 7DRL

Сообщение kipar » 02 янв 2011, 22:47

А с буковками но без клеток боюсь получится Triangle Wizard))) Хотя попробую.

Аватара пользователя
kipar
Сообщения: 2082
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Ведьма против зомби, 7DRL

Сообщение kipar » 03 янв 2011, 22:50

Дааа.... Для распознавания последовательностей пришлось наплодить порядочное количество спагетти. Я все же надеялся с ними быстрее разобраться.

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

Пока программа с помощью рекурсивного поиска по графу распознает
- фиксированные последовательности элементов (земля-огонь-вода-воздух),
- последовательности из заданного множества (например любые из земля\вода\воздух, причем два соседних элемента не должны совпадать)
- гексаграмму(будет вызывать голема) (неидеально - одна линия в ней все-таки не проверяется)
- для пентаграммы пожалуй завтра сделаю небольшой рефакторинг, чтобы для получения первого узла цепи не использовать ужасный
Result := TLine(FinalLines.Data[0]).OtherNode(TSource(FinalNodes.Data[0])).X;
Ну и задача на завтра - сделать эффекты заклинаний. С ними тоже конечно будут сложности, но там таких хитроумных алгоритмов вроде нет. Просто проверки на пересечение линий и на нахождение точек внутри многоугольника.

Код лень выкладывать, так что ограничусь скриншотом.
Скрытый текст: ПОКАЗАТЬ
untitled.PNG
untitled.PNG (26.6 КБ) 5103 просмотра

JustHarry
Сообщения: 655
Зарегистрирован: 30 июл 2010, 17:13

Re: Ведьма против зомби, 7DRL

Сообщение JustHarry » 04 янв 2011, 10:36

По возможности разнообразь игру небольшими спецэффектами. К примеру, нарисованный замкнутый н-угольник уменьшится до точки, и разбросает во все стороны что-то типа фейрверка, так будет красивее, чем очередное "TURN 09: You summon Mega-Beast!!!". Я джва года хочу такую игру.

Да, и как ты планируешь реализовать тайминг? То есть, нажимаем левой кнопкой мыши, и ведьма идет до указанной точки, доходит сразу или в несколько ходов? То есть пока она идет монстры двигаются как бы в реальном времени? Здесь легко превратить рогалик в аркаду.

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

Re: Ведьма против зомби, 7DRL

Сообщение Харука-тян » 04 янв 2011, 10:38

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

Аватара пользователя
kipar
Сообщения: 2082
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Ведьма против зомби, 7DRL

Сообщение kipar » 04 янв 2011, 12:44

Харука-тян писал(а):У меня оно просто безумно мерцает. (первая дема)
JustHarry писал(а):нарисованный замкнутый н-угольник уменьшится до точки, и разбросает во все стороны что-то типа фейрверка
Видимо все же придется переходить на OpenGL.
GDI годится только для технической демонстрации.
JustHarry писал(а):Да, и как ты планируешь реализовать тайминг?
Реализация тайминга в деме:
нажимаем кнопку - устанавливаем цель. Дальше можно нажимать S и ведьма вместе с монстрами будут двигаться по шагам, либо нажать пробел - и тогда эти шаги происходят каждые 100мс, до достижения цели (получается реалтайм).

Аватара пользователя
Феникc
Сообщения: 679
Зарегистрирован: 27 ноя 2010, 15:01
Откуда: Челябинск

Re: Ведьма против зомби, 7DRL

Сообщение Феникc » 04 янв 2011, 16:21

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

Аватара пользователя
kipar
Сообщения: 2082
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Ведьма против зомби, 7DRL

Сообщение kipar » 04 янв 2011, 17:54

Второе да, фича. Чтобы не надо было точно к источнику идти. А первое баг, но как исправить пока не знаю.
Отладка все-таки жутко неудобная в Lazarus :(

Так, уже есть заклинания барьера, подпитки, вызова голема\демона. Для программы-минимум осталось еще сделать лечение, огненное поле, телепорт.

Аватара пользователя
Феникc
Сообщения: 679
Зарегистрирован: 27 ноя 2010, 15:01
Откуда: Челябинск

Re: Ведьма против зомби, 7DRL

Сообщение Феникc » 04 янв 2011, 19:13

Так, размышления вслух.
Скрытый текст: ПОКАЗАТЬ
как я понимаю проверка включен draw mode (я правильно расшифровал?) делается при задании пункта назначения? если да то наверное нужно проверять при нажатии кнопки хода (любой).
Всё вышесказанное - ИМХО, если не указано обратное.

Аватара пользователя
kipar
Сообщения: 2082
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Ведьма против зомби, 7DRL

Сообщение kipar » 04 янв 2011, 21:58

В общем я так и делал, проверка была при обработке игрока. Просто оказывается, игрок сначал делал шаг, а потом уже проверял. Из-за этого он успевал выйти за пределы досягаемости пункта. Уже пофиксил.

Так, сделал пентаграмму, пофиксил множество глюков, сделал лечение и атаку. Правда лечение еще не тестил. Да и монстры доходят до игрока раньше, чем он успевает начать что-то рисовать.

Пока управление:
левой - задать цель
правой - создать огненный источник
средней - создать источник случайного цвета

Шаблоны:
- замкнутая последовательность огненных источников - поле(между узлами, не между линиями!) в котором зомби раняются.
- замкнутая последовательность неогненных источников (никакие два не должны идти подряд) - поле(между узлами, не между линиями!) в котором игрок лечится.
- два соединенных двумя линиями источника одного цвета - подпитка, источники восполняют энергию друг у друга
- один источник, соединенный линией сам с собой - барьер, зомби не могут пройти через линию.
- пентаграмма, причем никакая линия не соединяет источники одного цвета - вызов демона, атакующего ближайшую цель
- гексаграмма (образующие шестиконечную звезду два треугольника), обведенная шестиугольником - вызов голема, атакующего ближайшего зомби
Все кроме гексаграммы продемонстрировано на рисунке:
Скрытый текст: ПОКАЗАТЬ
untitled.PNG
untitled.PNG (17.96 КБ) 5056 просмотров
Гексаграмма (ее довольно сложно собрать, т.к. хотя бы один источник в каждом треугольнике должен быть огненным, при этом при обходе по кругу никакие два не должны идти последовательно, при этом центры треугольников должны быть не слишком далеко (точнее центр одного должен быть внутри другого) (ах да, последняя линия должна быть стороной шестиугольника, а не диагональю))
Скрытый текст: ПОКАЗАТЬ
untitled2.PNG
untitled2.PNG (11.29 КБ) 5056 просмотров
Графика полнейший отстой, она такая для целей тестирования. Буду переводить на OpenGL с красивыми градиентами и искрами.

Исходники и ехе:
witch_day3.zip
(659.88 КБ) 118 скачиваний

Аватара пользователя
kipar
Сообщения: 2082
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Ведьма против зомби, 7DRL

Сообщение kipar » 05 янв 2011, 11:37

Сделал спаун монстров по краям, слегка замедлил их, со случайной расстановкой источников получилось даже играбельно. Главное - быстро сделать барьер по кругу, провести к нему пару каналов для питания, а потом из оставшихся источников сообразить вызов демона(в идеале - голема), ну и атакующие\лечащие поля для борьбы с проскочившими зомби.
Скрытый текст: ПОКАЗАТЬ
untitled3.PNG
На рисунке я совершил ошибку, пройдя рядом с демоном когда он доедал последнего зомби со своей стороны.
untitled3.PNG (23.58 КБ) 5025 просмотров
witch02.zip
(721.17 КБ) 106 скачиваний
G - сгенерировать пустой уровень с 21 источником. Остальное управление - как раньше, но расставлять источники кнопкой мыши - неспортивно, это отладочная фича.


В общем сегодня попробую сделать OpenGL и карту с прокруткой, чтоб на уровне можно было сделать больше трех-четырех ритуалов.

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

Re: Ведьма против зомби, 7DRL

Сообщение Харука-тян » 05 янв 2011, 13:13

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

Ответить

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

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