Blame!-roguelike

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

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

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

Re: Blame!-roguelike

Сообщение Харука-тян » 08 фев 2010, 20:19

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

dunno
Сообщения: 26
Зарегистрирован: 29 дек 2009, 20:57

Re: Blame!-roguelike

Сообщение dunno » 08 фев 2010, 21:30

Харука-тян писал(а):У меня в Висте всё голубее голубого, как на скрине у Aerton.
хм, что за напасть такая...

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

Re: Blame!-roguelike

Сообщение Aerton » 08 фев 2010, 22:15

А у меня теперь просто чёрный экран и 100% cpu.

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

Re: Blame!-roguelike

Сообщение Максим Кич » 08 фев 2010, 23:05

По поводу всех возможных «кривизн» с графикой: прежде, чем использовать команды OpenGL неплохо бы проверить, а поддерживает ли система текущую версию. Я вот на выходных выяснил, что под XP на мой ноутбук с HD 4330 Radeon Mobility драйверов, которые поддерживали бы OpenGL выше 1.1 нет. Вообще. Совсем. В принципе.
Dump the screen? [y/n]

dunno
Сообщения: 26
Зарегистрирован: 29 дек 2009, 20:57

Re: Blame!-roguelike

Сообщение dunno » 10 фев 2010, 14:47

Максим Кич писал(а):По поводу всех возможных «кривизн» с графикой: прежде, чем использовать команды OpenGL неплохо бы проверить, а поддерживает ли система текущую версию. Я вот на выходных выяснил, что под XP на мой ноутбук с HD 4330 Radeon Mobility драйверов, которые поддерживали бы OpenGL выше 1.1 нет. Вообще. Совсем. В принципе.
У меня в коде не используются команды выше версии 1.1. Я более-менее в этом уверен, потому что в моей графической либе каждый метод имеет префикс, и везде этот префикс - GL11.
Aerton писал(а):А у меня теперь просто чёрный экран и 100% cpu.
Этот глюк с зависанием вначале довольно редко возникал, и я ленился его отлавливать :oops: . Но сейчас все же присмотрелся, и оказалось, что это баг в алгоритме построения лабиринта. Вроде бы поправил: запускаю создание уровня 5000 раз в цикле, отрабатывает нормально.
Харука-тян писал(а):У меня в Висте всё голубее голубого, как на скрине у Aerton.
Вот это конечно сложнее всего поправить, потому что ни на одном из четырех компов, которые в моем распоряжении, не воспроизводится. Впрочем, ни на одном из них Виста не стоит: на одном Мандрива, на других XP...
Вопрос: а у тебя ровно как у Aerton, то есть черный общий фон и голубой фон у каждого символа, или весь вообще фон синий?
Если второе то мб это потому что я при инициализации openGL не вызываю glClearColor - метод, который выставляет цвет очистки экрана при перерисовке кадра. По идее, этот цвет и так черный по умолчанию, но может внезапно под Вистой он не черный, а голубой?)

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

Re: Blame!-roguelike

Сообщение Харука-тян » 10 фев 2010, 16:22

Вот так:
.png
Голубизна
.png (23.35 КБ) 4759 просмотров
"Женщина верит, что дважды два будет пять, если хорошенько поплакать и устроить скандал" (© Дж. Элиот).
ИзображениеИзображение

Аватара пользователя
Xecutor
Мастер
Сообщения: 725
Зарегистрирован: 25 мар 2008, 08:32

Re: Blame!-roguelike

Сообщение Xecutor » 10 фев 2010, 17:34

У меня работает нормально. Стабильные 60 fps.
Но съедает одно ядро проца полностью.
Концепт прикольный.

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Blame!-roguelike

Сообщение Newman » 27 фев 2010, 17:49

Скажите, пожалуйста, а какой ZIP всё же скачивать с сайта? С самой последней датой - BlameR!.zip или ...?

UPD: Скачал самый последний архив, запускаю, белое окно, загрузка процессора около 100%... :( WinXP SP3, Java самая новая, а вот видеокарта довольно старая...

dunno
Сообщения: 26
Зарегистрирован: 29 дек 2009, 20:57

Re: Blame!-roguelike

Сообщение dunno » 28 фев 2010, 00:06

Newman писал(а):UPD: Скачал самый последний архив, запускаю, белое окно, загрузка процессора около 100%... :( WinXP SP3, Java самая новая, а вот видеокарта довольно старая...
Сори, там был баг с генерацией уровня (выше в треде написано). Я его пофиксил давно, но не выкладывал, хотел выложить, когда изменений подкопится, в качестве новой версии. Собственно, повод как раз подходящий, так что вот:
http://blame-roguelike.googlecode.com/f ... r-v002.zip - ничего зависать не должно (надеюсь...)

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

Итак, гаемплай:
Один большой уровень - запутанный лабиринт, состоящий из коридоров и комнат. Пустот нет, все пространство занято лабиринтом.
Изображение
Главгеры начинают в одном из четырех углов уровня. Искомая точка находится на противоположной стороне, но неизвестно, какой именно (то есть, если начинаем в углу прямоугольника, нас интересуют две противоположные его стороны, не примыкающие к данному углу). Кроме того, на уровне сложно определить, достигнута ли граница карты (может быть это просто стена, переход за которую пока что не найден), что еще более усложняет поиск.

Традиционное рогаликовое средство, подстегивающее exploring (ну типа аналог голода): вирусное заражение. Оба главгера заражены вирусным заболеванием, которое постепенно берет контроль над их телом (детали этого заражения оставим для предыстории и завязки, которые я пока не придумал =)). У каждого из главгеров есть параметр - уровень заражения в процентах. Уровень заражения постепенно растет, причем он увеличивается быстрее, если персонаж двигается, чем если он стоит на месте (например, если один из главгеров исследует область, а второй где-то восстанавливается в сторонке, зараза будет распространятся в первом случае быстрее. В два раза).
При 100-процентном заражении все клетки тела поражены вирусом, генетическая информация полностью разрушена и не поддается восстановлению: то есть, даже если зараженного персонажа убить, на Rebuild Station восстановить его не получится. Fail, в общем. На Rebuild Station'ах можно снижать уровень заражения, но окончательного излечения они не предоставляют. Окончательно вылечиться можно, приняв вакцину, которая хранится на специальной станции, и найти ее - цель игры.

На уровне расположены Factories - компьютерные станции, узлы. Разных типов:
* Rebuild Station. Восстановить убитого игрока из его генетической информации. Восстановить хп. Снизить уровень зражения. Надо будет продумать ограничения ресурса станции, чтобы нельзя было вечно тусить в одном районе, постоянно восстанавливаясь. Например: то, что охотники с близлежащих станций будут двигаться к отвоеванной станции, пытаясь захватить ее обратно
(- We must go. Hunters will be here soon.)
Еще: уровень заражения снижается с помощью промежуточной вакцины, которая хранится на Rebuild Station'ах, ее запас ограничен.
* Power Station. Восстановить количество энергии, восстановить снабжение энергией в регионе: некотором районе вокруг станции. Влияет на возможность открыть дверь. Типа дверь может быть обесточенной, и чтобы ее открыть нужно искать такую станцию поблизости. Ткже дверь может быть просто заблокированной.
Станция может быть нормальной и corrupted - захваченной киборгами. Тогда, чтобы получить к ней доступ, ее нужно взламывать (аналогично как киборгов, см. ниже). Если киборгами захвачена Rebuild Station - она производит киборгов, различных типов. Киборги атакуют главгеров.

Виды врагов:
* стреляющие (двигаются медленнее) (SafeGuards)
* атакующие ближней атакой (двигаются быстрее) (Silicon Creatures)
* охотники (Hunters). Используют алгоритм поиска пути для перемещения по уровню и поиска целей
(остальные виды киборгов в основном кучкуются около станций, их производящих и рандомно разбросаны по уровню).
Впоследствии придумаю еще каких-нибудь.

Параметры персонажа:
* Количество хп
* Количество энергии. Медленно восстанавливается. Максимальное количество зависит от вставленных в пушку импов. Тратится: при выстреле, на щит. Может быть восполнено на Power Station'ах
* Щит. Появляется при вставке соответствующего импа. Принимает на себя часть дамага.
* Уровень заражения в процентах

Окно статистики:
* Имя персонажа
* Количество хп
* Щит
* Количество энергии
* Уровень заражения

Варианты импов (модификаторов, вставляемых в сокеты в пушку):
* damage, различного уровня (три уровня)
* kickback моба (отбросить его назад. Помогает против быстрых мобов)
* paralyze - парализовать врага на какое-то время
* второй левел оружия (у Килли): плюс дамаг, пробивание стен
* щит
* "аккумулятор" - запасает энергию.
* mind hack (mind connector) - получить доступ к интерфейсу киборга, взломать его
Взлом выглядит следующим образом: загружается небольшой лабиринт в форме вытянутого прямоугольника (такой типа коридор). Главгер загружается в одном конце этого коридора. Ему нужно дойти до другого конца до определенной точки и встать на нее. Тогда взлом считается успешным - будет получен доступ к управлению киборгом. Враги - защитные программы киборга, будут возникать по дороге и мешать ему (точнее, пытаться убить. Но смерть в этом виртуальном пространстве не будет означать смерть реальную, а только дисконнект). Для усложнения наверное надо будет сделать ограничение по времени. Такой, в общем аналог переходов на другие левелы в рогаликах (которых в данном случае не будет). По мере освоения мною новых алгоритмов генерации данженов (я просто пока что всего одним располагаю =)) "взломы" будут становится более разнообразными, разниться по типу и размерам загружаемого уровня в зависимости от типа моба, его силы итд.
Взломанным мобом можно управлять: атаковать им его товарищей (до момента первой атаки они не считают его враждебным. Если взломать одиночку вдали от других киборгов, то им можно "сходить на разведку" - походить по району, посмотреть, где какие станции находятся и где какие киборги бродят), вытащить все импы из его пушки, приказать отключиться.

Киборги, вооруженные майнд-коннекторами, аналогично могут атаковать главгеров. Также загружается небольшой лабиринт, и в нем нужно уничтожить киборга. Если киборг убивает главгера в этом коридоре, он захватывает власть над телом. После этого у оставшегося главгера еще остается шанс спасти товарища: нужно уничтожить своего напарника (он будет пытаться уничтожить вас) и восстановить его тело на ближайшей Rebuild Station.

Эффекты от расположения модификаторов:
* если два одинаковых модификатора расположены рядом, эффект от каждого: базовое количество плюс 20%
например, если два импа на +10 дамага расположены рядом, суммарный дамаг: (10+2)+(10+2)=14
* если три и больше: эффект от каждого: базовое значение плюс 30% (продумаю еще, имеет ли смысл дальнейшее увеличение бонуса, типа если четыре, то плюс 40% итд).

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

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

dunno
Сообщения: 26
Зарегистрирован: 29 дек 2009, 20:57

Re: Blame!-roguelike

Сообщение dunno » 28 фев 2010, 00:20

Изменения в новой версии. (Заранее сорри за длиннющие посты. Просто все-так редко пишу=(( )

Добавил файл настроек options.txt. По мере усложнения, этот файл будет разрастаться, пока же там в качестве опций: fps, размеры окна (ширина и высота), возможность выставить fullscreen (играть в полноэкранном режиме. Возмжные значения параметра - yes/no) и несколько игровых параметров: размеры игрового уровня (100*100, меньше 10 лучше не ставить), количество загружаемых на карту мобов и генеращихся станций.

Еще чуть вытянул символы вверх, и немного прижал их друг к другу по горизонтали. Выглядит все теперь так:
Изображение
Также, как уже писал, несколько изменил алгоритм построения лабиринта: он наконец перестал зависать, и теперь генерит довольно запутанные штуки, благодаря уменьшенному ограничению на максимальный размер комнаты. Поставил в настройках игры генерацию уровня 100*100 клеток.

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

Переписал вывод графики через дисплейные списки и несколько оптимизировал алгоритм в целом (убрал лишние вызовы маштабирования glScale). По идее, должно работать несколько быстрее.

Также наконец более-менее разобрался с анимацией несчастной (хотя и не совсем доволен результатом все-таки). Анимация сейчас проигрывается непосредственно в момент совершения действия (вызова метода doAction у объекта класса ADecision). Раньше анимации в момент совершения действия просто добавлялись в общий контейнер и потом все вместе проигрывались один за другим. Как мне такая идея пришла в голову, и почему раньше не приходило нынешнее решение, ума не приложу, честно =)
В итоге, после некоторых раздумий решил все-таки лишить главгеров анимации движения. Остается анимация стрельбы и отдачи и анимация движения у противника.

Баг с голубым фоном тайлов, к сожалению, не поправил. Я обязательно поправлю его сразу же, как только хоть где-нибудь воспроизведу.

Что касается геймплея.
Реализовано взаимодействие главгеров между собой: можно задавать одному из персонажей двигаться за своим товарищем (клавиша F5) и автоматически атаковать врагов в области видимости (клавиша F6. Остальные клавиши можно посмотреть в справке, которую можно вызвать из игры, нажав F1).

Противники пока что одного вида (Silicon Creatures): двигаются чуть быстрее главгеров, атакуют ближней атакой.

Сделаны следующие виды импов:
* Три вида атакующих, с различным дамагом. На самом деле, сейчас при выстреле в противника урон рассчитывается по ужасно простой формуле: random*damage,
где damage - суммарный дамаг пушки, и random, соответственно - случайное число от 0 до 1. Так что средний урон в два раза меньше этого суммарного...
* Extender - имп-расширитель, добавляющий в пушку новые сокеты
* Energy - имп-"батарейка", +10 к количеству энергии. Энергия тратится на выстрелы (щиты пока что не сделаны). Если энергии недостаточно, стрелять оружие откажется. Количество энергии на один выстрел пропорционально суммарному урону - поэтому следует продумывать баланс, и не делать пушку чересчур дамагающей при малом количестве энергетических импов. Количество энергии медленно восстанавливается до максимального значения.
* MindHack - прототип импа-взломщика. Ну сейчас это так, фича на будущее. При выстреле в противника пока что просто загружается вот такое вот окошко,
Скрытый текст: ПОКАЗАТЬ
Изображение
из которого можно только выйти, нажав 1. Генерации уровней и собственно "взлом" - пока не реализованы. Так что имеет смысл с пушки его сразу свинтить, чтобы не отвлекал.
* Kick - имп-отбрасыватель. Цель при выстреле отбрасывает назад на одну клетку.

Из мобов после смерти падают только дамажные импы, энергетические и extender. Kick лежит в инвентаре у Cibo. Имеет смысл сразу установить его в оружие (вместо MindHack'а): можно тогда, например, использовать Cibo в качестве сапорта, установив ей автоматическое движение за Killy и атаку врагов. Она будет их отбрасывать, а Killy расстреливать - достаточно эффективная тактика против быстрых противников.

Станции.
Реализованы Rebuild Stations. Выглядит это вот так:
Скрытый текст: ПОКАЗАТЬ
Изображение
на станцию можно зайти: нужно встать на букву А и нажать enter. Появится вот такое окно:
Скрытый текст: ПОКАЗАТЬ
Изображение
"лекарство" (mixture) можно тратить либо на восстановление хп, либо на понижение уровня заражения. Лекарства на каждой станции имеется конечное количество, и оно не восполняется. Поэтому, чтобы выжить, нужно перемещаться от станции к станции.

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

В общем, такие дела. Ссылка на скачивание новой версии указана в посте выше и на всякий случай вот она еще раз:
http://blame-roguelike.googlecode.com/f ... r-v002.zip
Что думаете о таком варианте геймплея. Достаточно ли он отвечает жанру киберпанка или все-таки нет?)
Последний раз редактировалось dunno 28 фев 2010, 15:46, всего редактировалось 1 раз.

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Blame!-roguelike

Сообщение Newman » 28 фев 2010, 07:18

Звучит всё достаточно интересно, сейчас скачаю, посмотрю...

UPD: Да! Теперь запускается, но вот у всех символов голубой фон... :(

dunno
Сообщения: 26
Зарегистрирован: 29 дек 2009, 20:57

Re: Blame!-roguelike

Сообщение dunno » 28 фев 2010, 13:33

Newman писал(а):UPD: Да! Теперь запускается, но вот у всех символов голубой фон... :(
*приставил пистолет к виску, нажал на курок...* =)

млин, может я дальтоник, почему у меня нигде нет голубого фона....

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Blame!-roguelike

Сообщение Newman » 28 фев 2010, 15:06

Честно говоря, не знаю, в чём может быть дело, с LWJGL дела никогда не имел.
Да, ещё строки с текстовыми сообщениями внизу экрана... они слишком узкие по высоте, часть символов просто отрезается по вертикали....

dunno
Сообщения: 26
Зарегистрирован: 29 дек 2009, 20:57

Re: Blame!-roguelike

Сообщение dunno » 28 фев 2010, 15:29

Newman писал(а): Да, ещё строки с текстовыми сообщениями внизу экрана... они слишком узкие по высоте, часть символов просто отрезается по вертикали....
это как? можешь запостить скрин?

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Blame!-roguelike

Сообщение Newman » 28 фев 2010, 15:43

Скриншот тут:
Скрытый текст: ПОКАЗАТЬ
scrshot.png
Скриншот
scrshot.png (28.78 КБ) 4649 просмотров
Может, дело в полноэкранном режиме?

Ответить

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

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