Strange Wood

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

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

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

Сообщение Dmiry » 15 июн 2007, 12:00

14/06/07
Загрузка работает. Есть глюк - при первоначальной отрисовке герой оказывается на краю карты. Или вероятно может оказаться вообще за пределами карты. Можно попробовать вызывать ValidateScroll при загрузке.

Надо выделить шаги при инициализации игры в отдельный метод. А также выделить все действия, выполняемые при отрисовке игровой ситуации, в отдельный метод. Все более напрашивается использование отдельного класса TGame.

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

Попробовал погонять загрузку и сохранение на подземелье. Получилось. Обратил внимание на небольшую багофичу - при выполнении ValidateScroll карта центрируется на герое, хотя более правильным кажется смещение карты только в одном направлении - там где слишком близко к краю. Иначе получаются не слишком приятные скачки. Это оставлю на потом.

Загрузка предметов получается, но пока большая часть атрибутов просто игнорируется. Сделал правило - если атрибут не распознан, он игнорируется. Надо еще добавить вывод сообщения об этом в лог.

Сделал вывод сообщений в лог. При этом, если имя атрибута не распознано, значение игнорируется. Если правильное имя атрибута, но неправильное значение - выводится сообщение.

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

Пока для начала попробую оставить только атрибуты типа повреждения.

Что еще сделать в первую очередь для предметов - это:
а) размещение на карте;
б) инвентарь героя (хотя бы в самом примитивном виде);
в) подбирание и бросание предметов
Первая заповедь фотолюбителя: Проявил себя - закрепи!

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

Сообщение Dmiry » 15 июн 2007, 12:01

15/06/07
Начал делать предметы. Поскольку предполагается, что предметы могут образовывать кучки, включил в описание предмета поле Qty - количество. По умолчанию каждый предмет идет в одном экземпляре, за исключением случаев производства сразу нескольких предметов.

Начал делать инвентарь героя. Может, это не самый лучший вариант? Сначала сделать предметы на карте, а затем уже у героя? Если сначала у героя - то нужно сделать инвентарь, его просмотр, подбирание и бросание предметов.

Включил ID предмета в его объявление. Используется при поиске, есть ли в инвентаре уже такой предмет. Если есть - просто увеличивается его количество. Если нет - добавляется с количеством, которое было в кучке.
Первая заповедь фотолюбителя: Проявил себя - закрепи!

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

Сообщение Sanja » 15 июн 2007, 12:12

А что комментировать то тогда? :) Хоть бы помечал как-то интересующие вопросы.

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

Сообщение Maelstrom » 15 июн 2007, 12:22

Как быть с составными предметами? Например, копье состоит из деревянного копьевища и железного наконечника.
3мя параметрами:
Primary_Material
Secodary_Material
Объёмное отношение первого материала ко второму.
применение: в качестве веревки, палки, еды, дров, режущего оружия, ... Вот с этим пока больше всего непонятностей.
А что тут сложного?
Айв кнгенгах Йог-Сотот

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

Сообщение Dmiry » 15 июн 2007, 13:48

Maelstrom писал(а): 3мя параметрами:
Primary_Material
Secodary_Material
Объёмное отношение первого материала ко второму.
Хм... При сгорании копья от него по идее остается железный наконечник. При сгорании топора - собственно железная часть (не знаю, как правильно называется).
Соотношение материалов тут не поможет. Только если взять за правило, что при сгорании предмета от него остается слиток металла соответствующего веса. Или какого другого материала, который можно использовать только как сырье, а не готовую деталь.
Первая заповедь фотолюбителя: Проявил себя - закрепи!

Bobiczdoh
Сообщения: 64
Зарегистрирован: 10 апр 2007, 13:12
Откуда: Антигуа и Барбуда

Сообщение Bobiczdoh » 15 июн 2007, 14:35

Dmiry писал(а): При сгорании топора - собственно железная часть (не знаю, как правильно называется).
Лезвием оно и называется)
Вообще у меня была такая идея (и незаконченная пока реализация):
Каждый итем, обладая своими свойствами, является одновременно инвентарём, содержащим другие итемы.
Т.е., например:
главный объект - винтовка.
в неё входят: обойма, содержащая в себе 20 итемов - патронов, оптика, штык и т.п.

Переходя к поставленному вопросу:
Допустим, есть объект копьё, содержащий в себе объекты древко и наконечник.
Тогда, при сгорании объекта копьё происходит проход по списку встроенных предметов, и, если некое свойство (огнеупорность) меньше обозначенного минимума, то данный предмет уничтожается. Далее - обратный проход - проверяем, а осталось ли хоть что нибудь, если нет - чистим битые ссылки.
ИМХО к рогаликам, заточенным на стрелковом оружие и т.п. вещах, такой метод очень удобно применять.
Последний раз редактировалось Bobiczdoh 15 июн 2007, 14:38, всего редактировалось 1 раз.

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

Сообщение Sanja » 15 июн 2007, 14:37

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

Bobiczdoh
Сообщения: 64
Зарегистрирован: 10 апр 2007, 13:12
Откуда: Антигуа и Барбуда

Сообщение Bobiczdoh » 15 июн 2007, 14:40

Sanja писал(а):Мда, и зачем такая детализация на таком раннем этапе?
Просто человек решил закодить побыстрее то, что его сейчас больше всего влечёт. Если начать кодить со всякой необходимой тягомотины, то, в конце концов, дальше делать игру будет уже неохота(.

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

Сообщение Максим Кич » 15 июн 2007, 14:44

Dmiry писал(а):
Maelstrom писал(а): 3мя параметрами:
Primary_Material
Secodary_Material
Объёмное отношение первого материала ко второму.
Хм... При сгорании копья от него по идее остается железный наконечник. При сгорании топора - собственно железная часть (не знаю, как правильно называется).
Соотношение материалов тут не поможет. Только если взять за правило, что при сгорании предмета от него остается слиток металла соответствующего веса. Или какого другого материала, который можно использовать только как сырье, а не готовую деталь.
Вообще — это ты придумал хороший способ усложнить себе жизнь. Из наконечника, палки и верёвки, я так понимаю, можно будет собрать копьё? А если подвергнуть копьё воздействию кислотой, то что от него останется?
Dump the screen? [y/n]

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

Сообщение Dmiry » 15 июн 2007, 16:29

Рано.
А я и не говорил, что все здесь написанное сразу идет в реализацию. Это не столько план действий, сколько мысли по поводу. Собственно, для того и пишется мой дневник, чтобы можно было писать все что думается, и реализовывать только то, что созреет.
Тогда, при сгорании объекта копьё происходит проход по списку встроенных предметов, и, если некое свойство (огнеупорность) меньше обозначенного минимума, то данный предмет уничтожается.
Спасибо за идею, но я наверное пока воздержусь от такого. Сначала что-нибудь простое сделаем :-)
А если подвергнуть копьё воздействию кислотой, то что от него останется?
Теоретически ничего не останется. Но я не планировал делать кислотные атаки. В дневнике есть упоминание, что эта игра более всего похожа на URW.
Первая заповедь фотолюбителя: Проявил себя - закрепи!

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

Сообщение Dmiry » 18 июн 2007, 13:40

15/06/07
Подумал насчет предметов. Лучше сделаю следующим образом: ячейка инвентаря или клетка карты содержат 2 поля: ИД предмета и количество. ИД соответствует номеру предмета в массиве эталонных предметов. Описание эталонных предметов загружается из файла в упомянутый массив.

Изменил структуру списка эталонных предметов с TList на Array.

Несколько изменил структуру предмета. Теперь сам предмет не содержит количество. Вместо этого используется новый тип TItemStack. Этот тип содержит два поля: ItemID и Qty.

18.06.07
Сейчас займусь размещением предметов на карте. Изначально в любой ячейке карты может быть любое количество предметов. В каждую ячейку входит ИД предмета на карте. Это ссылка на элемент массива Items класса Map.

Будем считать несуществующий предмет - предмет с ИД=0. Или ссылку на предмет под номером 0.

Слегка изменил описание предмета в файле ITEM.TXT. Теперь название предмета идет как атрибут, а в заголовке предмета указывается его ИД. Сейчас надо написать алгоритм разбрасывания предметов по карте. Это будет проверка, что предметы правильно загружаются и рисуются. Кстати, в предмете у меня сейчас нет никакого упоминания про визуальное представление на карте. Надо добавить.

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

Bobiczdoh
Сообщения: 64
Зарегистрирован: 10 апр 2007, 13:12
Откуда: Антигуа и Барбуда

Сообщение Bobiczdoh » 18 июн 2007, 14:00

Dmiry писал(а):15/06/07
Подумал насчет предметов. Лучше сделаю следующим образом: ячейка инвентаря или клетка карты содержат 2 поля: ИД предмета и количество. ИД соответствует номеру предмета в массиве эталонных предметов. Описание эталонных предметов загружается из файла в упомянутый массив.
Т.е. ты отказался вообще от модификации предметов по ходу игры (освящение, расковывание и т.п.)?

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

Сообщение Dmiry » 19 июн 2007, 03:29

Bobiczdoh писал(а): Т.е. ты отказался вообще от модификации предметов по ходу игры (освящение, расковывание и т.п.)?
Модификация в голове пока остается. Первоначально реализую простую систему, дальше буду дополнять и переделывать.

Пришла в голову такая мысль: при изменении материала меняется вес предмета. То есть надо хранить для материала его плотность, а для предмета - его объем. Тогда при изменении материала любым способом меняется вес предмета.
Первая заповедь фотолюбителя: Проявил себя - закрепи!

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

Сообщение Sanja » 19 июн 2007, 06:09

ИД соответствует номеру предмета в массиве эталонных предметов.
В этом случае в игре будут существовать только эталонные вещи. Т.е. никакого износа, никаких наложенных эффектов, никаких улучшений. Память экономишь что ли?
Например, отдельно глифы для ячеек карты, отдельно для предметов, отдельно для монстров.
В RPGMaker раздельные (персонажи, анимации, картинки, поверхость и объекты, монстры и т.п.). В большинстве рогаликов единый файл. Просто количество используемых тайлов в первом больше на один-два порядка по сравнению со вторыми.

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

Сообщение Dmiry » 19 июн 2007, 09:38

Sanja писал(а):В RPGMaker раздельные (персонажи, анимации, картинки, поверхость и объекты, монстры и т.п.). В большинстве рогаликов единый файл. Просто количество используемых тайлов в первом больше на один-два порядка по сравнению со вторыми.
У меня сейчас каждый глиф хранится в отдельном файле. Но структура программы написана таким образом, что я могу менять систему загрузки изображений без переделки большей части программы.

Вопрос скорее в том, чтобы разделить каким-то образом те глифы, которые изображают клетки карты, монстров и героя, предметы. Не хочу валить в одну кучу достаточно разнородные картинки. Пока напрашивается сделать несколько подкаталогов в каталоге Images: Tiles, Monsters, Items и т.д. М.б. как вариант сделать один файл для тайлов карты, другой для предметов, третий для монстров.

:?: Вопрос к другим разработчикам: я хочу обозначить объект в игре (тайлы, предметы, ...) числовым идентификатором. Этот идентификатор как лучше сделать? Константой, или загружать из файла? Если загружать - как определить, если я хочу нарисовать дерево - какой у него ИД?
Первая заповедь фотолюбителя: Проявил себя - закрепи!

Ответить

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

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