Strange Wood

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

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

Аватара пользователя
Kogotoro
Сообщения: 75
Зарегистрирован: 01 мар 2007, 10:49

Сообщение Kogotoro » 17 сен 2007, 10:12

darhark писал(а):А арбалет - это просто итем, натянуть его наполовину нельзя.
смотря какой механизм натяжения...

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

Сообщение Dmiry » 05 окт 2007, 16:25

26/09/07
Разделение события тайм-менеджера на два вызывает вопросы. В частности, стоит ли выносить в отдельный класс TimeAction, если все равно имеет место связка TimeEntity-TimeAction. То есть не морочится, оставить один класс TimeEntity, который и будет включать необходимые для выполнения действия. Другой вопрос - при этом получится, что действия, реализуемые функциями Rate и Cost, будут своими для каждого события в списке. То есть отдельные классы? Сколько тогда получится классов? Можно ли их как-то унифицировать?

Интересно, а при этой системе как изменится механизм переназначения клавиш?

28/09/07
Решил слегка переделать класс ячейки карты TMapCell. Добавляю флаги наличия предмета в ячейке. Соответственно меняется операция размещения предмета на карте, подбирания и бросания. Зато упрощается проверка на наличие предмета в клетке карты. Флаг HasItem будет устанавливаться при любом количестве предметов в клетке карты.

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

Сделал. Осталось отладить.

Сейчас опять возвращаюсь к отладке рисования карты. Попробую отследить цепочку вызовов рисования. Есть подозрение, что вызов Flip надо делать в определенном месте. Или рисование черной клетки делается неправильно. Отловил один глюк - при загрузке спрайт черной клетки не загружался. Исправил. Косяки при скролле карты все равно остались.

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

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

Сообщение Dmiry » 11 ноя 2007, 05:24

31.10.07
Сделал трассировку вызовов при рисовании клетки карты. Вроде все нормально. Проверил прокрутку, исправил одну ошибку при проверке на скролл в методе ValidateScroll. Все равно при скролле остается ошибочная отрисовка. Вроде бы при скролле надо целиком всю карту перерисовывать. Есть мысль для каждой клетки карты хранить два глифа - нормальный и затененный, и в зависимости от состояния клетки выводить соответствующий глиф. Другой вариант - разобраться с SDL и невидимые известные клетки выводить в черно-белом виде.

07.11.07
Посмотрел недавно Slaves to Amok: Dwarf Fortress. Очень похоже на то, что я хочу увидеть в своем проекте. Вообще сама по себе игра выглядит как Сеттлеры в текстовом режиме. Что понравилось - большое количество построек, большое число возможных изделий. Что не понравилось - все возможное производство скучено в одно меню на много экранов.

Сейчас пришел к выводу, что надо делать вывод текста на экран. Решил текст выводить тайлами, заранее нарисованными в отдельное изображение. Берем картинку 16х16 символов, рисуем каждую букву 8х8 пикселов, и пишем процедуру вывода текста как последовательности картинок.

Кроме того, на примере DF появились идеи, как реализовать дерево производства. В частности, будет применяться выжигание древесного угля из древесины. Собственно, насколько я помню историю, металл на Руси использовался относительно редко, и только в тех случаях, когда без него было не обойтись. И отношение к кузнецам также было своеобразное.

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

v0l0sat1y
Сообщения: 59
Зарегистрирован: 11 мар 2007, 13:21
Откуда: Беларусь, Минск
Контактная информация:

Сообщение v0l0sat1y » 11 ноя 2007, 21:59

Вроде бы при скролле надо целиком всю карту перерисовывать.
Не обязательно. Фактически при сколле всегда меняются 2 строки/столбца + те клетки, где изменился los/походили монстры и т.д. Так что большую часть экрана можно сохранить, а потом поверху перерисовать изменившиеся клетки.

Кстати, можно взглянуть на какую-нить тестовую версию?
В частности, будет применяться выжигание древесного угля из древесины.
Смеялсо. Честно говоря, уже давно улыбают предложения типа "давайте вместо голода введем разделение на недостаток белков, жиров, углеводов, кальция, железа, всех возможных витаминов...", "у оружия вместо одного урона неплохо сделать 100 характеристик, а то нереалистично получается", "прозрачность деревьев должна меняться от тумана на 3%".

DF - это конечно хорошо, респект Тоади Вану за проделанную работу.
Но блин, если бы у разработчиков Dwarf Fortress было побольше серого вещества в голове, полмира забило бы на Думы, Квейки, Варкрафты и с пеной у рта рубилось бы в DF. А так он просто широко известен в узком кругу.
О чем стоит думать(ну это мое мнение, конечно):
1) Интерфейс
У DF я бы его оценил где-то на -100 по 10-бальной шкале.
2) Графика
Уже жду фраз типа:
"Чел, что с тобой? Какая графика, это же рогалик?"
Просто от нее не должно откровенно блевать. Опять же, DF получает низачот. Из хороших примеров: Warlock of the Firetop Mountain (ASCII режим, отличная подборка шрифта и цветов). Я сам когда писал свой первый рогалик, особо не загонялся. Но Courier New на Canvas'e в Delphi смотрелся однозначно лучше, чем консоль. Можешь посмотреть, если интересно: http://mazecrawl.com
3) Все фичи должны быть обоснованны, не перегружать игру излишними деталями и (!!) заметны. Если прозрачность стены нулевая - это видно, если в районе 50% - тоже вполне нормально, но если 95.5% - то вряд ли кто-то отличит от ста. Даже в мною любимом Adom'e возможность помыть ужи, которая используется раз в игре - скорее понты. А объем кода и сложность все время растут. Опять же, DF получает минус.

P.S. Уже жду критических каментафф и личных оскорблений.
So far, so good... So what?

MazeCrawl roguelike
http://mazecrawl.com

Аватара пользователя
Aerton
Сообщения: 503
Зарегистрирован: 11 авг 2007, 02:58
Откуда: Новосибирск
Контактная информация:

Сообщение Aerton » 12 ноя 2007, 03:19

Dmiry писал(а)::?: Кто-нибудь может поделиться кодом, как средствами SDL превратить изображение в черно-белое или затемнить его?
http://plg.lrn.ru/doc/sdl-gfx/gfx4.html
v0l0sat1y писал(а):P.S. Уже жду критических каментафф и личных оскорблений.
Да нет, в общем-то правильно, хотя наверное лучше всё же его обсуждать в собственной теме, а не красть топик у автора.

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

Сообщение Dmiry » 12 ноя 2007, 04:08

Aerton писал(а):
Dmiry писал(а)::?: Кто-нибудь может поделиться кодом, как средствами SDL превратить изображение в черно-белое или затемнить его?
http://plg.lrn.ru/doc/sdl-gfx/gfx4.html
Спасибо! Я так понял, что средствами SDL преобразование изображения целиком сделать нельзя, только попиксельно? Тогда мне будет проще уже имеющиеся тайлы обработать в граф.редакторе и загружать готовые серые/затемненные.
v0l0sat1y писал(а):... уже давно улыбают предложения типа ...
Это всего лишь идеи. Я завел эту тему, чтобы иметь обратную связь при разработке рогалика, и высказываю здесь любые идеи, которые мне показались интересными.

За ссылку на Warlock's Mountain спасибо. Mazecrawl видел.

По поводу посмотреть на мою работу - там еще нечего смотреть, только перемещение, и все. Ссылка в этой теме есть (но лучше на нее не смотреть, ибо пункты 1,2,3 там присутствуют).
Первая заповедь фотолюбителя: Проявил себя - закрепи!

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

Сообщение Maelstrom » 12 ноя 2007, 14:06

У DF я бы его оценил где-то на -100 по 10-бальной шкале.
Марш играть в Space Empires 5 и Master of orion 3 :)
Но Courier New на Canvas'e в Delphi смотрелся однозначно лучше, чем консоль.
Садись, два. Fixedsys рулил, рулит и будет рулить.
Айв кнгенгах Йог-Сотот

v0l0sat1y
Сообщения: 59
Зарегистрирован: 11 мар 2007, 13:21
Откуда: Беларусь, Минск
Контактная информация:

Сообщение v0l0sat1y » 12 ноя 2007, 16:31

Садись, два. Fixedsys рулил, рулит и будет рулить.
На вкус и цвет. Кстати - Courier New не рулит абсолютно. Я особо не выбирал. Но цвета хоть приятней консольных.
So far, so good... So what?

MazeCrawl roguelike
http://mazecrawl.com

v0l0sat1y
Сообщения: 59
Зарегистрирован: 11 мар 2007, 13:21
Откуда: Беларусь, Минск
Контактная информация:

Сообщение v0l0sat1y » 12 ноя 2007, 16:35

Я завел эту тему, чтобы иметь обратную связь при разработке рогалика, и высказываю здесь любые идеи, которые мне показались интересными.
Я тут, собственно, и осуществляю обратную связь :)
Просто не всегда чем больше деталей - тем лучше.
So far, so good... So what?

MazeCrawl roguelike
http://mazecrawl.com

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

Сообщение Dmiry » 16 ноя 2007, 17:04

12.11.07
Переделал на вывод невидимых тайлов оттенками серого. Использовал те же самые тайлы, перевел в граф.редакторе в оттенки серого и загружаю как второе изображение. При необходимости вывести клетку карты серым цветом просто беру картинку со второго изображения. Сразу исправились глюки со скроллом. Теперь работает правильно. Только предметы слегка мерцают при выводе.

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

13.11.07
Начал делать вывод текста на экран. Пока получается аналогия с паскалевскими стандартными процедурами. Пишу процедуры: OutChar, OutText, OutTextXY, DefineWindow, SetWindow, GetWindow.

14.11.07
Под вывод текста добавил несколько новых параметров в INI-файл. Это (пока) параметры ширины и высоты символа.

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

Сейчас на экран выводится только код нажатой клавиши.
Первая заповедь фотолюбителя: Проявил себя - закрепи!

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

Сообщение Dmiry » 16 ноя 2007, 17:05

15.11.07
Попробовал сгенерировать тайлсет для шрифта Fixedsys. Все вроде хорошо, но ряд маленьких русских букв получился без хвостиков снизу. Это касается букв Р, У, Ц, Щ. Также большие буквы Ц и Щ. Как вариант решения - сдвинуть эти буквы вверх на 1 пиксел. Пока подумаю.

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

Сначала разобраться с глюком - класс Game не выводит текст сообщения на экран, хотя Painter.OutText отрабатывает корректно. При повторном запуске все работает нормально. Не понимаю.

Еще одна задача - корректная обработка перехода на новую строку и прокрутка текста вверх при достижении нижнего края окна. Для прокрутки можно использовать два возможных способа. Первый - просто копировать содержимое прямоугольного окна, содержащего текст на высоту 1 символа вверх. Второй - прочитать пример на SDL про прокрутку фонового изображения и использовать этот метод. Сначала попробую первым способом.

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

Для решения этой задачи надо выделить: 1) требуемые экраны; 2) рабочие области для каждого экрана.

Экраны и области:
1) основной: карта, сообщения, миникарта(?), статус героя, календарь(?)
2) инвентарь: список элементов инвентаря, описание текущего действия, описание выбранного предмета
3) главное меню: единственная область
4) просмотр истории сообщений: единственная область
5) экран производства: многоуровневое меню(?) в виде - выбор общего вида изделия, выбор конкретного вида изделия, выбор материала(?)

Основная задача по части экранов сейчас - определиться с набором областей для главного экрана + (возможно) сформировать главное меню.

Переделал шрифт на 8х16. Опять не пишет на экране. Есть подозрение, что некорректно определяются координаты вывода. Плюс проверка на выход за пределы окна. Отловил. SDL не хочет рисовать картинки, если файл со шрифтом содержит более 8bpp. Сконвертил картинку, заработало. Надо включить при начальной загрузке преобразование всех грузимых картинок в формат 8bpp.

Сделал прокрутку текста в текстовом окне. Пока не вполне корректно - при прокрутке старый текст просвечивает сквозь наложенный. Прокрутку сделал просто копированием части изображения окна сообщений.
Первая заповедь фотолюбителя: Проявил себя - закрепи!

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

Сообщение Dmiry » 21 ноя 2007, 08:40

Очередная тестовая версия. С выводом текста косяки остались.
Первая заповедь фотолюбителя: Проявил себя - закрепи!

Аватара пользователя
unhappy
Сообщения: 312
Зарегистрирован: 10 июл 2007, 08:51
Откуда: Сыктывкар
Контактная информация:

Сообщение unhappy » 21 ноя 2007, 12:49

ругается, что не может найти SDL.dll :-\
летит ужасный бармаглот и пылкает огнём.

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

Сообщение Dmiry » 21 ноя 2007, 16:02

Упс... Я забыл его/ее в архив включить.
Первая заповедь фотолюбителя: Проявил себя - закрепи!

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

Сообщение Sanja » 22 ноя 2007, 02:08

Прокрутка текста, как ты и говорил не корректна. Причём это очень и очень мягко сказано :)

Не отрисовывается карта при старте.

Перемещение товарища по экрану. Желательно, что он при нажатии и удержании клавиши бежал, а не делал один ход.
Dmiry писал(а):SDL не хочет рисовать картинки, если файл со шрифтом содержит более 8bpp. Сконвертил картинку, заработало. Надо включить при начальной загрузке преобразование всех грузимых картинок в формат 8bpp.
Да ладно :shock: Быть такого не может.

Ну и ... всё. Больше оценить-то и нечего. :)

Ответить

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

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