noir

Закрытые или заброшенные проекты, не состоявшие в Клубе, но имевшие ветку на форуме.

Модератор: Jolly Roger

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

noir

Сообщение Максим Кич » 13 авг 2007, 00:16

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

Итак, рабочее название noir (нуар). Именно со строчной буквы. Сюжет я пока-что умолчу.

Прорабатываемые черты:

1. Система скользящего тайминга вместо пошаговой.
2. Модульные персонажи (отдельный расчёт конечностей).
3. Генерация мира на основе псевдослучайных последовательностей, что позволяет серьёзно уменьшить размер файлов сохранения.
4. ASCII в тру-колоре, с элементами растровых тайлов. Поддержки непосредственно тайлового режима не будет.
5. Обширные текстовые описания локаций, монстров, оружия и пр. Каждая встреченная вами тварюга будет иметь свою специфическую особенность (если вам хватит времени и желания рассматривать каждую тварь).
6. Гибкая настройка интерфейса и раскладки клавиатуры. Если вы хотите, чтобы noir выглядел как АДОМ или Ангбанд, он будет настолько на него похожим, насколько это вообще возможно.

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

Язык разработки Object Pascal без привязки к конкретному компилятору. Используется Omega SDK (вариации для DirectX и OpenGL на выбор пользователя).

Теперь немного подробнее об особенностях проекта.

Система со скользящим таймингом — это система, в которой нет заранее определённой очерёдности ходов. Фактически, все действия происходят одновременно, но игра «ставится на паузу», когда персонаж заканчивает своё очередное действие. Выглядит это так: любое действие длится определённое число «тиков» — квантов времени. Один тик соответствует одной итерации. Персонаж (как игрок, так и монстр), определяет своё следующее действие, после чего он не имеет права вмешиваться в происходящие события, пока действие не будет выполнено, либо прервано внешним фактором. При определении действия задаётся его TTL. На каждый тик TTL уменьшается на единицу. Когда TTL достигает нуля, действие заносится в «список разрешения» (resolving list). В конце тика, список разрешения просматривается и персонажам передаётся информация о результате их действия. На каждый тик просматриваются все текущие действия, занесённые в список разрешения. Если существует хотя бы одно действие, происходящее в зоне видимости игрока, на этот тик происходит перерисовка кадра (плавно изменяющие цвет и анимированные объекты в зоне видимости перерисовываются вне зависимости от разрешения действий).

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

Модульность персонажей была тяжёлым решением. Печальный опыт IVAN мне более чем известен, поэтому решение было принято компромиссное: повреждения расчитываются по всему телу, но есть некоторая возможность отрубить (или прирастить!) ту или иную конечность. Шансы лишиться головы должны быть ничтожными, но, всё-таки, быть: в качестве лишнего напоминания о бренности человеческой жизни :) Отчасти решение о модульности связано с тем, что движок в будущем будет использоваться для другого проекта по вселенной Warhammer40k.

На данный момент игра находится в стадии разработки пользовательского интерфейса и теоретической проработки игрового мира. Более-менее цивильные демонстрационные версии следует ожидать не ранее зимы сего года, но в процессе разработки я планирую периодически выкладывать техно-демки тех или иных нюансов. Предыдущая программа демонстрировала любопытную избирательность к железу, на этот раз хотелось бы таких проблем избежать в зародыше.
Dump the screen? [y/n]

Аватара пользователя
Sanja
Администратор
Сообщения: 791
Зарегистрирован: 24 ноя 2006, 12:25
Откуда: Новосибирск
Контактная информация:

Сообщение Sanja » 13 авг 2007, 06:25

Ого. Желаю успехов.

1. Гуд. Правда не совсем понятно как это отразится на ближнем бое. Поясню. Предположим, что время, за которое стрела/файрболл долетает до персонажа равно времени за которое монстр размахивается и наносит удар (ну скажем секирой). Если при твоей системе времени можно будет видеть подлетающую к герою стрелу, то как увидеть подлетающий к голове героя топор? Вводить доп. информацию о текущем состоянии каждого монстра в момент хода персонажа?

2. Интересно как реализуешь. Вроде ничё так.

3. Эээ, чево? Как будет загрузка-то из сейва происходить?

4. Вот. То что надо.

5. Хватит желания. :)

6. Нормуль.
На данный момент игра находится в стадии разработки пользовательского интерфейса и теоретической проработки игрового мира. Более-менее цивильные демонстрационные версии следует ожидать не ранее зимы сего года, но в процессе разработки я планирую периодически выкладывать техно-демки тех или иных нюансов.
К тому времени разве что демки интерфейса :) Объём работы реально велик. Думаю уровня Incursion, не меньше.

Ещё раз успехов в начинаниях.

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 13 авг 2007, 07:52

Sanja писал(а):Ого. Желаю успехов.

1. Гуд. Правда не совсем понятно как это отразится на ближнем бое. Поясню. Предположим, что время, за которое стрела/файрболл долетает до персонажа равно времени за которое монстр размахивается и наносит удар (ну скажем секирой). Если при твоей системе времени можно будет видеть подлетающую к герою стрелу, то как увидеть подлетающий к голове героя топор? Вводить доп. информацию о текущем состоянии каждого монстра в момент хода персонажа?
А это будет не доп.информация, а в принципе информация, потому что действие персонажа известно, как только он заявил его к реализации.
Вообще, стрела летит достаточно медленно, так что, при должной сноровке стрелы можно будет отбивать мечом (что вполне соответствует действительности).
Sanja писал(а): 2. Интересно как реализуешь. Вроде ничё так.
Самому интересно :) Эту часть проекта, скорее всего, буду разрабатывать не я.
Sanja писал(а): 3. Эээ, чево? Как будет загрузка-то из сейва происходить?
В сейве храним начальное значение генератора для данного уровня, тип уровня, список изменений и сжатую информацию о клетках, которые персонаж увидел. Количество изменений по определению меньше, чем количество клеток, поэтому получаем серьёзное преимущество.
Sanja писал(а): 4. Вот. То что надо.
В прошлый раз я использовал векторные шрифты и не скажу, чтобы мне это сильно понравилось. Сейчас у меня есть собственноручно собранный шрифт, который, в принципе, меня устраивает. К релизу надо будет намалявать шрифтов на выбор, но для текущих нужд хватает и одного комплекта.
Sanja писал(а): К тому времени разве что демки интерфейса :) Объём работы реально велик. Думаю уровня Incursion, не меньше.
Ну, писать просто ещё один рогалик сейчас банально не имеет смысла — их достаточно много. Что до сроков, то у меня на данный момент есть много уже готового кода, который можно снять с предыдущих проектов, плюс, я работаю не один. Самая серьёзная проблема — это реализация на всём этом счастье многоязыкового интерфейса.
Sanja писал(а): Ещё раз успехов в начинаниях.
Спасибо.
Dump the screen? [y/n]

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 16 авг 2007, 22:21

Рабочие моменты: ввёл в шрифт элементы псевдографики. Кодировка не совпадает с ASCII-шной, но лично мне удобно. Остальным с ней работать не придётся. Разрабатываю элементы интерфейса: формы, надписи, кнопки и пр. Приблизительный срок — полторы недели.

Собрание DevTeam. Обсуждали структуру данных. Кое-что прояснилось с примитивами, из которых будут «собираться» монстры. Пока что балансируем между геморроем и маразмом, причём понятия эти не являются взаимоисключающими.

В режиме шутки: нам понадобытся MML (Monster Meta Language) и cus (Cascade Ugliness Sheet).

Без шуток решили не делать описания игровых объектов в текстовом режиме, а вместо этого писать встроенный редактор, заодно откатывая на нём интерфейс.
Dump the screen? [y/n]

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

Сообщение Maelstrom » 18 авг 2007, 03:37

Йет Анавер МегоРогалик? Ну что ж, удачи. Только помните, что из мегорогаликов пока трепыхается только Incursion :) остальные померли.
Айв кнгенгах Йог-Сотот

Аватара пользователя
Cfyz
Сообщения: 776
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Cfyz » 18 авг 2007, 06:11

Maelstrom скептик, фи.

Лично я очень хотел бы увидеть:
1) рогалик целиком =)
2) описанную систему тайминга в работе
3) то, как будут обыгрываться модульные (я правильно понял?) монстры в игре. Мало ведь конечности прописать, нужно еще характеристики сбалансировать и описания не забыть. Или они все будут ручной сборки?
Пытается раскуклиться

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 18 авг 2007, 08:34

Cfyz писал(а):Maelstrom скептик, фи.

Лично я очень хотел бы увидеть:
1) рогалик целиком =)
2) описанную систему тайминга в работе
3) то, как будут обыгрываться модульные (я правильно понял?) монстры в игре. Мало ведь конечности прописать, нужно еще характеристики сбалансировать и описания не забыть. Или они все будут ручной сборки?
Не поверишь, мне тоже очень хотелось бы всё это увидеть :) Монстры будут в основном «ручной» сборки, т.е. о том, что есть монстр «гоблин», и он — низенький зелёный гуманоид, игра сама по себе не знает. А вот уже чем каждый конкретный гоблин будет уникален — за это отвечает система модификаторов.

Кроме того, в принципе, ничто не мешает по такой же схеме генерировать монстров автоматически. Но этим очень просто можно убить атмосферу.
Dump the screen? [y/n]

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

Сообщение Maelstrom » 19 авг 2007, 13:35

Цфуз мечтатель-губозакатыватель, фу.
Монстры будут в основном «ручной» сборки, т.е. о том, что есть монстр «гоблин», и он — низенький зелёный гуманоид, игра сама по себе не знает. А вот уже чем каждый конкретный гоблин будет уникален — за это отвечает система модификаторов.
А вот насчёт этого поподробнее. Будет готовая база-тело "гоблин" с усреднёнными параметрами и куча шаблонов для него аля "салага", "гоблин-воин" и "старый хромой но опытный шаман", или что-то принципиально другое?
Айв кнгенгах Йог-Сотот

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 20 авг 2007, 07:39

Maelstrom писал(а):
Монстры будут в основном «ручной» сборки, т.е. о том, что есть монстр «гоблин», и он — низенький зелёный гуманоид, игра сама по себе не знает. А вот уже чем каждый конкретный гоблин будет уникален — за это отвечает система модификаторов.
А вот насчёт этого поподробнее. Будет готовая база-тело "гоблин" с усреднёнными параметрами и куча шаблонов для него аля "салага", "гоблин-воин" и "старый хромой но опытный шаман", или что-то принципиально другое?
Будет приблизительно следующее. Приблизительно, потому что сейчас прорабатывается структура данных и объектная модель. Сначала строится скелет. Для скелета есть некоторое количество заготовок: череп, позвоночник, грудная клетка, конечность, кисть и т.д. Далее, вручную «собираются» заготовки. Например, гуманоид. Прямоходящий, с костным скелетом, две руки, две ноги, голова. Заготовка определяет, какой буквой по умолчанию будет отображаться монстр (но нам ничто не мешает перекрыть это свойство).

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

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

Большая часть модификаторов применяется автоматически исходя из нескольких параметров. Например, для кисти есть модификатор «продольное повреждение». Если покров — кожа, то автоматически модификатор трактуется как «шрам», а если, например, рука металлическая — то как «царапина».

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

В игре изначально будет выдаваться только основная информация: название монстра и «память». Но можно будет детально рассмотреть, например, руку или лицо — на это будет тратиться игровое время, хотя и самое минимальное. Так что игроку стоит определиться, какая информация о монстре его интересует в первую очередь. С развитием, персонаж, вероятно, может получать больше информации за один раз.
Dump the screen? [y/n]

Аватара пользователя
unhappy
Сообщения: 314
Зарегистрирован: 10 июл 2007, 08:51

Сообщение unhappy » 21 авг 2007, 04:48

Максим Кич
Будет приблизительно следующее
О_О
мне тоже ОЧЕНЬ захотелось если не поиграть в это чудо то хотя бы посмотреть )
летит ужасный бармаглот и пылкает огнём.

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 22 авг 2007, 14:22

От скелета пришлось отказаться. Структура разрасталась немеряно, причём, без особых преимуществ. В итоге, структура получилась более вменяемой и, при этом, с достаточным пространством для манёвра.

Имеем части тела:
1. Туловища (крупы, корпуса).
2. Оперативные конечности (руки, щупальца, клешни, манипуляторы)
3. Опорные конечности (ноги, ласты, колёса, гусеницы, присоски)
4. Голова.
5. Хвосты.
6. Доп. конечности (крылья, вибриссы, нечто невообразимое)

Шесть различных частей тела прописываются отдельными классами-потомками от некоей абстрактрой тушки. Т.е. они находятся внутри игровой механики и изменить их нельзя без перекомпиляции.

Но их можно настроить. Изменить количество суставов на руках, количество пальцев, глаз, ушей... Указать, что уши должны быть заострёнными, а коже — зелёной (Fascinating!). В итоге получаем достаточное количество разнообразных вариантов.
Dump the screen? [y/n]

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

Сообщение Dmiry » 22 авг 2007, 17:29

Максим Кич писал(а):Имеем части тела:
1. Туловища (крупы, корпуса).
2. Оперативные конечности (руки, щупальца, клешни, манипуляторы)
3. Опорные конечности (ноги, ласты, колёса, гусеницы, присоски)
4. Голова.
5. Хвосты.
6. Доп. конечности (крылья, вибриссы, нечто невообразимое)
Сразу вопрос: а если существо использует опорные конечности (или другие) как оперативные? Примеры: удар копытами для лошади, щупальца осьминога (это вообще в какую категорию?), рога на голове быка...
Идея мне очень нравится, я бы скорее предложил использовать вариант про Франкенштейна (было здесь на форуме) - то есть любая конечность может использоваться с любой целью. Если человеку оторвало ногу - он ползет на руках. Другое дело, что самих действий не так много - атака, передвижение, использование как инструмента. Тогда например передвижение на нескольких конечностях может происходить со скоростью самой медленной. Отшибли человеку ногу - или прыгай на одной, или ползи на руках и отталкивайся оставшейся. Атака - быстрые со своей скоростью, медленные со своей (плюс еще штрафы за лишние конечности)...
Что-то такое получается у меня в голове.
Первая заповедь фотолюбителя: Проявил себя - закрепи!

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 23 авг 2007, 07:39

Сразу вопрос: а если существо использует опорные конечности (или другие) как оперативные? Примеры: удар копытами для лошади, щупальца осьминога (это вообще в какую категорию?), рога на голове быка...
Идея мне очень нравится, я бы скорее предложил использовать вариант про Франкенштейна (было здесь на форуме) - то есть любая конечность может использоваться с любой целью. Если человеку оторвало ногу - он ползет на руках. Другое дело, что самих действий не так много - атака, передвижение, использование как инструмента. Тогда например передвижение на нескольких конечностях может происходить со скоростью самой медленной. Отшибли человеку ногу - или прыгай на одной, или ползи на руках и отталкивайся оставшейся. Атака - быстрые со своей скоростью, медленные со своей (плюс еще штрафы за лишние конечности)...
Что-то такое получается у меня в голове.
Функциональные конечности — это такие, которые могут использовать инструмент, либо сами являются инструментом. На них тоже можно передвигаться, но скорость будет заведомо ниже, за исключением отдельных случаев. Щупальца, например, являются функциональными конечностями, но осьминогая тварь весьма оперативно будет на них перемещаться. Просто потому, что для каждой конечности прописано, сколько они прибавляют к скорости. И, потом, вполне могут существовать безногие зубастые обрубки, которые будут резво подбегать к персонажу на руках и со всей дури кусать за яйца.

Схема мне нравится отношением кода к функциональности.

Рога — это свойство головы. Так что здесь тоже всё нормально. И бить можно любой конечностью. Просто [censored] для этого слабо подходит, а хвост с гидроусилителями и шипастым металлическим шаром на конце — очень даже весьма.
Dump the screen? [y/n]

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 22 ноя 2007, 14:05

Давненько меня не было. А не было меня давненько потому что Родина сослала меня далеко и надолго... Нет, не в армию, просто уезжая в командировку я напрочь оставил на домашней машине все наработки по noir.

Возвращаюсь к жизни и проекту. Проект осиротел на одного человека, и сие есть весьма нелицеприятная проблема. Но мы продолжаем.

По мере сил работаю над интерфейсной частью, а конкретно -- над вводом. При всех плюшках, которые OMEGA даёт в работе над графикой (псевдо-аскишный движок летает и умеет подсвечивать трю-колором не только буквы целиком, но ещё и уголки у них), работа с клавиатурой рассчитана исключительно под аркады. Ковыряю API, грустно думая об очередном геморрое с кроссплатформенностью.

Соответственно, из-за задержки где-то на месяц смещаются сроки - в январе следующего года будет первая демонстрация.
Dump the screen? [y/n]

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

Сообщение Maelstrom » 22 ноя 2007, 16:27

работа с клавиатурой рассчитана исключительно под аркады.
В смысле?
Айв кнгенгах Йог-Сотот

Ответить

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

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