Rayel v0.7

Форум для проектов, находящихся на стадии Альфа и Бета. В них ещё не реализована вся задуманная автором функциональность, а значит идёт активная разработка.

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

Аватара пользователя
Anfeir
Сообщения: 876
Зарегистрирован: 14 дек 2007, 09:29
Контактная информация:

Re: Rayel v0.7

Сообщение Anfeir » 26 окт 2021, 11:28

- немного отдохнул и привел мысли в порядок (отпуск, горы, hidden locations)
- добавил редактирование статической локации (в редакторе и использование в игре)
- добавил лестницы вверх/вниз.
Плавно перехожу к редактированию двух реальных областей

Аватара пользователя
Anfeir
Сообщения: 876
Зарегистрирован: 14 дек 2007, 09:29
Контактная информация:

Re: Rayel v0.7

Сообщение Anfeir » 06 ноя 2021, 10:08

Небольшой локальный "творческий кризис". Относительно статических квестов в рогалике. С одной стороны это клёво, с другой - условно, проходить сто раз Адом и каждый раз спасать cute dog - это кажется перебором в плане реиграбельности. (В теории, на практике не помню что это очень сильно напрягало.)
Особенно это критично на начальных этапах игры (или нет?)

Вот такие размышления:
- подобные квесты на начальных уровнях лучше делать необязательными
- выгода от них не сильно глобальная (а иначе бы они стали де факто обязательными)
- хоть суть квеста и статическая, но по факту рандома хватает: сами подземелья случайные, место встречи случайно.
- в Райеле своя специфика - там мир широк, можно бродить по разным местам, соответственно повышается выбор подобных квестов. Наверно, начальный город и окрестности будет соответствовать расе игрока.
- Permadeath и как следствие частое начало заново - для большого мира подходит меньше в чистом виде. Скажем так, можно ввести "режим обучения" и режим реальной игры для маньяков и опытных юзеров (но они априори не будут часто yasd в самом начале игры). Пока под вопросом, но вроде как чистый permadeath больше подходит для чистых рогаликов - где с первого шага окунаемся в рандомный данжн и ничего кроме него не видим.
- Подумал и решил, что случайного содержимого в игре хватит (подавляющее число локаций сгенерированы будут рандомно), так что реиграбельности должно хватить даже при том, что основа "карты мира" - статическая. Впрочем, она и в Адоме статическая если на то пошло.
- ???
- profit

Может, у кого какие мысли есть по этому поводу.

Аватара пользователя
karagy
Сообщения: 1271
Зарегистрирован: 10 янв 2007, 14:13

Re: Rayel v0.7

Сообщение karagy » 06 ноя 2021, 13:04

Думаю - статические квесты не мешают реиграбельности. Более того - это точки для челленжа у фанатов.

Будете-ли делать цепочки взаимосвязаных квестов? Если создание и верификацию такой цепочки можно автоматизировать - то да, вручную их делать только по настроению. Ну как произведение искусства.

Аватара пользователя
Anfeir
Сообщения: 876
Зарегистрирован: 14 дек 2007, 09:29
Контактная информация:

Re: Rayel v0.7

Сообщение Anfeir » 06 ноя 2021, 13:15

karagy писал(а):
06 ноя 2021, 13:04
Будете-ли делать цепочки взаимосвязаных квестов? Если создание и верификацию такой цепочки можно автоматизировать - то да, вручную их делать только по настроению. Ну как произведение искусства.
Взаимосвязанных - да. Не совсем понял вопрос - имеется в виду рандомно взаимосвязанных, когда неизвестно, что нужно выполнить, чтоб выдали определённый квест? Или как? Что тут ещё можно автоматизировать?

Полностью рандомные квесты я делал в R0.1, мне не очень понравилось в целом. Хотя элементы оттуда можно использовать. Ну например, квест статический, а целевое место, которое нужно найти - может быть в куче разных областей.

Аватара пользователя
karagy
Сообщения: 1271
Зарегистрирован: 10 янв 2007, 14:13

Re: Rayel v0.7

Сообщение karagy » 06 ноя 2021, 13:24

Anfeir писал(а):
06 ноя 2021, 13:15
Не совсем понял вопрос - имеется в виду рандомно взаимосвязанных, когда неизвестно, что нужно выполнить, чтоб выдали определённый квест?
Формально - поиск условий активации квеста - это как-бы тоже квест. Я боюсь развивать эту мысль дальше -)

Аватара пользователя
Linker
Сообщения: 637
Зарегистрирован: 12 мар 2019, 14:45
Откуда: из прошлого

Re: Rayel v0.7

Сообщение Linker » 06 ноя 2021, 19:46

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

Аватара пользователя
Anfeir
Сообщения: 876
Зарегистрирован: 14 дек 2007, 09:29
Контактная информация:

Re: Rayel v0.7

Сообщение Anfeir » 06 ноя 2021, 19:55

Linker писал(а):
06 ноя 2021, 19:46
Очень разнообразит игру фича- свитки с заданием, как в торче напр- находишь юзаешь и оказываешься в инстансе, типа боевой квест убей все)
надо ли оно в этой игре-думайте сами,решайте сами)
Не видел .)
юзаешь - попадаешь сразу в условия квеста?

Аватара пользователя
Linker
Сообщения: 637
Зарегистрирован: 12 мар 2019, 14:45
Откуда: из прошлого

Re: Rayel v0.7

Сообщение Linker » 06 ноя 2021, 20:06

Anfeir писал(а):
06 ноя 2021, 19:55
Linker писал(а):
06 ноя 2021, 19:46
Очень разнообразит игру фича- свитки с заданием, как в торче напр- находишь юзаешь и оказываешься в инстансе, типа боевой квест убей все)
надо ли оно в этой игре-думайте сами,решайте сами)
Не видел .)
юзаешь - попадаешь сразу в условия квеста?
torchlight игра.
при юзаньи октрывается портал и заходя в него ходишь все бьешь живое,в конце босс-цель квеста.с него сундук. ну чем то похоже на доску заданий в элоне плюс ток более продвинуто.
можно по своему сделать.да и сами свитки можно получать разными способами. как уж пожелать.

Аватара пользователя
karagy
Сообщения: 1271
Зарегистрирован: 10 янв 2007, 14:13

Re: Rayel v0.7

Сообщение karagy » 07 ноя 2021, 08:38

Свитко-квесты в инсталоках - это не атмосфера Райеля.

Аватара пользователя
Anfeir
Сообщения: 876
Зарегистрирован: 14 дек 2007, 09:29
Контактная информация:

Re: Rayel v0.7

Сообщение Anfeir » 07 ноя 2021, 18:15

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

Аватара пользователя
Anfeir
Сообщения: 876
Зарегистрирован: 14 дек 2007, 09:29
Контактная информация:

Re: Rayel v0.7

Сообщение Anfeir » 17 ноя 2021, 15:10

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

Много напильника, багфиксов, импрувов глубоко внутри. Связывание локаций в плавный мир - одна из самых "неблагодарных" частей движка: много кода под капотом для с виду малых целей. Ну, к этому морально был готов. Формально есть возможность лепить полный рандом всегда и везде. Потом часть статических под-локаций, возможно, перейдёт в разряд полностью генерируемых.

Теперь перейду к генерации на уровне одной локации (для текущей области). Сейчас там предельно примитивно - просто накидываются квадратики. Ну и "вдохнуть жизнь" в область - заселить монстрами (зверьки, гоблины, люди), засунуть актуальные квесты (по логике до этого далеко, но хочется побыстрее приступить).
Скрытый текст: ПОКАЗАТЬ
easyway1.PNG
easyway1.PNG (167.06 КБ) 2593 просмотра
easyway2.PNG
easyway2.PNG (206.13 КБ) 2593 просмотра
easyway3.PNG
easyway3.PNG (66.43 КБ) 2593 просмотра

Аватара пользователя
Anfeir
Сообщения: 876
Зарегистрирован: 14 дек 2007, 09:29
Контактная информация:

Re: Rayel v0.7

Сообщение Anfeir » 19 ноя 2021, 20:32

- сделал поддержку плавных границ тайлов (см. скриншот)
- перепилил алгоритм соединения точек локации. Очень этим доволен. Есть исходная задача: набор точек в локации, которые обязаны быть соединены переходами. Скажем, если есть локация, у которой есть соседи с севера, запада, востока и севера, и все они должны быть соединены. Тут куча разных вариантов реализации, самый простой - взять все исходные точки и соединить линейными коридорами, но тут страдала бы рандомность. В моём случае - сначала генерится карта, потом запускается алгоритм, который после двух литров пива точно описывать уже лень в данный момент:/ Могу сказать, что с предыдущей его версий были проблемы: он мог выпилить знакоместо рядом с дверью, так что дверь оказывалась висеть в пустоте, или протаранить насквозь комнату, у которой по замыслу единственный скрытый вход. Сейчас это всё решено. Наверняка есть стандартые алгоритмы обеспечения связанности комнат?
ss-1.PNG
ss-1.PNG (154.14 КБ) 2555 просмотров
- начал делать систему заселения областей монстрами.

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

Напомню (отчасти сам себе) структуру карты мира.
World (Мир) состоит из Областей (Area), (Область - ну например город)
Области состоят из Region (Регион, Локация) - привычный рогаликовый NxM прямоугольник из знакомест. (пример: область города состоит из регионов самого города и подземелий под ним типа канализаций)
Карта мира с расположением основных Областей нарисована статически буквально на бумаге. Логически можем менять масштаб карты и добавлять любое количество областей и детализацию.
Физическая протяженность в знакоместах НЕ отражает логическую протяженность. Например, дорога через весь континент займет ~200 перемещений по тайлам, а логически мы перепрыгнули через весь континент. Свернули где-то - и попали в Область физически скажем 200 знакомест, но по меркам дороги через весь континент это будет условно 1-2 знакоместа.
При этом все локации связаны плавно, слитно. Есть вертикальные переходы > <

Аватара пользователя
Anfeir
Сообщения: 876
Зарегистрирован: 14 дек 2007, 09:29
Контактная информация:

Re: Rayel v0.7

Сообщение Anfeir » 26 ноя 2021, 18:33

- Добавил механизм общего заселения локации монстрами и прочими объектами
- Порядочно работы "под капотом" - фиксы багов, лёгкие импрувы в движке генерации карт. В частности, дошли руки до механизма отлова ошибок генерации (а это неизбежно может случиться, хоть и редко) и её перезапуска. А также внутренние изменения в системе реакции объекта/монстра на любые действия.
- Наконец прикрутил "комнату" к закоместу. У ячейки карты (у меня называется Cell) есть указатель на Комнату, а у комнаты уже указатель на Локацию. Эта информация может быть использована в механизме заселения монстрами. Например, в свойствах локации можно написать, что вот в ловушке с монстрами заселяем по таким-то правилам - индивидуально для каждого типа локации.
- Перешёл к monster AI, сделал смерть монстра, уничтожение объекта (в таких простых вещах много троянских коней вроде висящих зависимостей), делаю простейшее поведение монстра в плане боя... Ну как делаю - логика переиспользуется из прошлых проектов, но в плане архитектурного оформления сейчас предъявляю повышенные требования, многое переписывается.

Столкнулся с одним прикольным багом, пока не пофиксил. Для графики я использую SDL, сижу за ноутом, но с подключённым монитором, ноут обычно закрыт. Дак вот, если ноут открыть, там другой виндовый масштаб, и это отстреливает и по основному монитору как-то. Графика отваливается. События все проходит, но на экране ничего не меняется. Ноут закрываешь - всё норм. Событий вроде window_resize и т.п. никаких не приходит. Ошибки SDL вроде бы тоже собираются, но там по нулям. Руки потом дойдут до "ядрёного дебага".

Общий результат на данный момент - стройность кода, расширяемость, да и ощущение от самой игры - очень радуют. А в плане конкретных фишек UI/UX я теперь полностью "толерантен" и готов выкатить любые настройки и любой внешний вид. Это вообще не принципиально.

Аватара пользователя
Anfeir
Сообщения: 876
Зарегистрирован: 14 дек 2007, 09:29
Контактная информация:

Re: Rayel v0.7

Сообщение Anfeir » 11 янв 2022, 10:59

Отвлекался, продолжаю...
- Элементарные элементы AI в процессе. Код написан, чтобы монстр догонял своего врага (обычно это игрок) и атаковал его с помощью доступных ему абилок.
- Далее - проверить этот код, и прикрутить реакцию монстра на нехорошее к себе отношение, а также у особо злых монстров (коих не меньше половины) - стремление уничтожить чужаков в поле зрения. Это всё, конечно, мелочи, но для более сложное AI оставляю места и зацепки.
- За полтора месяца в голове утряслось, итого: задумкой проекта доволен, планируемым игровым миром доволен, достигнутым результатом доволен, продолжаю по накатанной. В идеале должна получиться смесь rlg и rpg, с хорошей рандомностью но и с прекрасной статикой, навалом тематических квестов и областей. Изначальный план в полгода для демки не выполнен, в основном потому, что переключился с мини-рогалика на мажорный: очень многое сделанное сейчас - "инвестиции в будущее" (которые уже радуют). Ну и отсутствовал пару месяцев. Посмотрим, что смогу сделать за год...

Аватара пользователя
Anfeir
Сообщения: 876
Зарегистрирован: 14 дек 2007, 09:29
Контактная информация:

Re: Rayel v0.7

Сообщение Anfeir » 15 янв 2022, 09:32

- Сделал простейший АИ - реакция на атаку, режим боя с преследованием, реакция на врагов в поле зрения.
Hostile у монстров привязывается к Alignment чужаков. Алигнментов всего 4 (experimental!): Good, Neutral, Evil, Alien. Последние - вторгшиеся в этот мир извне разного рода пришельцы, роботы, а также люди. Впрочем люди бывают любого из 4х алайнментов. Соответственно, алиенам пофиг на местную зоофауну, и для них что good, что evil нередко без разницы.
- Поставил точку на текущей фазе разработки и набросал долгосрочный план. Чтоб поле непаханное бесконечным не казалось.
Скрытый текст: ПОКАЗАТЬ
Кратко заголовки в плане без деталей:
I. Basics
II. Primitive Engine <12.08-15.01>
III. Improve Engine <15.01->
IV. Real low level content
V. Mid content, '0.7 demo'
VI. High content '0.8 alpha'
VIII. Neina and exotic content '0.9 beta'
IX. Further content and balancing '0.99 rc'

По 8-му пункту уточнение: основная игра первое время идёт на одном континенте. Ближе к концу "раскачки" появляется возможность найти второй.

Ответить

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

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