AfterlifeRL

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

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

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

Re: AfterlifeRL

Сообщение Максим Кич » 29 ноя 2010, 19:16

JustHarry писал(а):Да я бы не сказал, что игра в стиле "подходи по одному". Зомби то будут респаунится в разных точках карты и будут окружать игрока. Так что единственный способ заставить их подходить по одному это забуриться в какую нибудь комнату, и сидеть там, вот только за патронами придется бегать. К тому же босса придется водить за собой долго, если валить его не очень убойным оружием.
Если не делать его многоклеточным :)
Dump the screen? [y/n]

Аватара пользователя
XVs
Сообщения: 719
Зарегистрирован: 18 янв 2010, 15:46
Контактная информация:

Re: AfterlifeRL

Сообщение XVs » 29 ноя 2010, 19:58

Согласен насчёт слишком больших домов и комнат. Вообще, карту следует уменьшить, площади и улицы тоже слишком огромные, даже учитывая специфику игры(орды зомби).

JustHarry
Сообщения: 655
Зарегистрирован: 30 июл 2010, 17:13

Re: AfterlifeRL

Сообщение JustHarry » 30 ноя 2010, 14:33

Согласен насчёт слишком больших домов и комнат.
Поживем - увидим.

Итак, что насчет монстров.
Структуру их я написал, теперь думаю насчет их респа.

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

Волна N.

Фаза 1.
Среднее число зомби.
Малое число собак и птиц.
Фаза 2.
Среднее число зомби.
Среднее число собак и птиц.
Несколько стреляющих монстров.
Фаза 3.
Большое число зомби.
Среднее число собак и птиц.
Малое число порождений хаоса.
Финальная фаза.
Огромное число зомби.
Большое число собак и птиц.
Среднее число порождений хаоса.
Босс.

Коэффициент "множественности" будет расти в зависимости от волны. В начале на вас будут нападать небольшие группы врагов, в конце вам придется только успевать менять обоймы и смотреть в оба.



Сегодня подумаю над формулой.

Аватара пользователя
Toth
Сообщения: 327
Зарегистрирован: 11 ноя 2009, 13:36
Откуда: Красноярск

Re: AfterlifeRL

Сообщение Toth » 30 ноя 2010, 16:10

Коэффициент "множественности" будет расти в зависимости от волны
Сделай в зависимости от уровня прокачки персонажа (если он есть). А потом сбалансируй. Спортивно! И добавь конечно ачивки-медальки (оригинальные). Получится эдакий кримсонленд. А если уж зомби-тема (сам фанат Z-всего), добавь такую фичу: "после крита зомби - игроку дается время до превращения (допустим 2 минуты). За это время нужно максимально реализовать весь свой комбат скилл + rage mode". И чтобы можно было играть за женщину-негритянку. Топ-100 (кто умер на какой волне, сколько продержался после заражения, сколько спас живых(теоретически)). Я буду играть в такую игру и советовать ее знакомым.

JustHarry
Сообщения: 655
Зарегистрирован: 30 июл 2010, 17:13

Re: AfterlifeRL

Сообщение JustHarry » 30 ноя 2010, 16:45

Сделай в зависимости от уровня прокачки персонажа(если он есть)
Да, персонаж будет качаться также. Постараюсь увязать все в одну кучу.
добавь конечно ачивки-медальки (оригинальные)
Позже будут
после крита зомби - игроку дается время до превращения (допустим 2 минуты). За это время нужно максимально реализовать весь свой комбат скилл + rage mode
Да, тоже хорошая идея. Можно успеть лекарство найти.
И чтобы можно было играть за женщину-негритянку.
Это типа вот такой: ☻ ?
Топ-100 (кто умер на какой волне, сколько продержался после заражения, сколько спас живых(теоретически))
Живых теоретически добавлю.
Я буду играть в такую игру и советовать ее знакомым.
"Рикомендую такую игру"

Аватара пользователя
Toth
Сообщения: 327
Зарегистрирован: 11 ноя 2009, 13:36
Откуда: Красноярск

Re: AfterlifeRL

Сообщение Toth » 30 ноя 2010, 16:55

Ну да же, на все. Смертность должна составлять 98%.

JustHarry
Сообщения: 655
Зарегистрирован: 30 июл 2010, 17:13

Re: AfterlifeRL

Сообщение JustHarry » 30 ноя 2010, 18:07

Изображение

Добавил справа экрана вот такое вот меню. Цвета может и поменяю кое где, а так пока мне нормально.

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

JustHarry
Сообщения: 655
Зарегистрирован: 30 июл 2010, 17:13

Re: AfterlifeRL

Сообщение JustHarry » 01 дек 2010, 11:10

Вопрос по ООП:
Вот я написал следующее:

type Item=Object
x,y:byte;{координаты на карте}
InBag:boolean;{у игрока или нет}
procedure Drop;
procedure Get;
procedure Use; virtual;
end;

потом хочу создать к примеру класс оружия(потомок)

пишем

type Weapon=object(Item)
name:string[20];
ammotype:byte;
procedure Fire;
procedure Use; Virtual;
end;

1) Когда пытаюсь вызвать процедуру Item.Use или Weapon.Use, вылетает с ошибкой 210, хотя эти процедуры я объявил.

АПДЕЙТ: вроде разобрался. У родителя метод Use сделал виртуальным, а у потомка сделал статичным.

2) Непонятно, как хранить к примеру массив вещей, если скажем, несколько предметов типа Weapon, а несколько предметов типа Ammo, если например напишем
var Inventory:array[1..MaxItems] of Item;
можно ли присваивать родительскому типу тип потомка?
типа
Inventory[k]:=w, если w - weapon.

Я в размышлениях.

Аватара пользователя
Jolly Roger
Сообщения: 2973
Зарегистрирован: 27 ноя 2009, 09:10
Откуда: Minsk, Belarus

Re: AfterlifeRL

Сообщение Jolly Roger » 01 дек 2010, 11:20

Помню, что похожий вопрос уже разбирался на форуме пару раз.

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

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

JustHarry
Сообщения: 655
Зарегистрирован: 30 июл 2010, 17:13

Re: AfterlifeRL

Сообщение JustHarry » 01 дек 2010, 11:24

Спасибо!

ERROR 210: Call to abstract method (Вызов абстрактного правила)

Имхо, во втором случае все равно массив объектов можно использовать, если они все однотипные.

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

Вот он.

Weapons
Скрытый текст: ПОКАЗАТЬ
Name:Micro Uzi
Weapon Type:Submachine gun
Magazine:20
Ammunition:9mm rounds

Name:Ithaca 37
Weapon Type:Shotgun
Magazine:4
Ammunition:12 gauge shells

Name:Steyr Scout Tactical
Weapon Type:Sniper rifle
Magazine:10
Ammunition:7.62 rounds

Name:26mm Flare pistol
Weapon Type:Pistol
Magazine:1
Ammunition:26mm flare shells

Name:IMI M-Galil
Weapon Type:Rifle
Magazine:20
Ammunition:7.62 rounds

Name:USP
Weapon Type:Pistol
Magazine:12
Ammunition:.45 ACP

Name:Smith & Wesson .500
Weapon Type:Pistol
Magazine:5
Ammunition:.500 Magnum

Name:Arctir Warfare rifle
Weapon Type:Sniper rifle
Magazine:5
Ammunition:.338 Lapua Magnum

Name:AK-47
Weapon Type:Rifle
Magazine:30
Ammunition:7.62 rounds

Name:Winchester .44
Weapon Type:Shotgun
Magazine:7
Ammunition:.44 Magnum

Name:Benelli Nova Tactical
Weapon Type:Shotgun
Magazine:6
Ammunition:12 gauge shells

Name:FN P90
Weapon Type:Rifle
Magazine:50
Ammunition:SS 190

Name:SIG SSG 552 commando
Weapon Type:Rifle
Magazine:30
Ammunition:5.56 rounds

Name:Desert Eagle .44
Weapon Type:Pistol
Magazine:7
Ammunition:.44 Magnum

Name:H&K MP-5
Weapon Type:Rifle
Magazine:30
Ammunition:40S&W rounds

Name:Coonan .357
Weapon Type:Pistol
Magazine:8
Ammunition:.357 Magnum

Name:FN Five-seven
Weapon Type:Pistol
Magazine:20
Ammunition:SS190

Name:H&K MP-7 PDW
Weapon Type:Submachine gun
Magazine:40
Ammunition:4.6mm rounds

Name:VZ.65 Scorpion
Weapon Type:Pistol
Magazine:30
Ammunition:9mm rounds

Name:Beretta 93R
Weapon Type:Pistol
Magazine:30
Ammunition:9mm rounds

Name:Mauser
Weapon Type:Rifle
Magazine:8
Ammunition:.45 ACP

Name:IMI Barak
Weapon Type:Pistol
Magazine:17
Ammunition:9mm rounds

Name:Valtro PM-5
Weapon Type:Shotgun
Magazine:7
Ammunition:12 gauge shells

Name:H&K UMP-45
Weapon Type:Rifle
Magazine:25
Ammunition:.45 ACP

Name:Beretta 9000S
Weapon Type:Pistol
Magazine:14
Ammunition:40 S&W

Name:FN Scar
Weapon Type:Rifle
Magazine:20
Ammunition:7.62 rounds

Name:Smith&Wesson .500
Weapon Type:Pistol
Magazine:5
Ammunition:.500 Magnum

Name:Browning Fusion Elite
Weapon Type:Shotgun
Magazine:5
Ammunition:12 gauge shells

Name:Colt Python .357
Weapon Type:Pistol
Magazine:6
Ammunition:.357 Magnum

Name:EX-41 Pump-Action Launcher
Weapon Type:Grenade launcher
Magazine:3
Ammunition:40mm grenade shells

Name:SAIGA-12
Weapon Type:Shotgun
Magazine:8
Ammunition:12 gauge shells

Name:FN Minime
Weapon Type:Rifle
Magazine:100
Ammunition:.17 cal

Name:Colt M4A1
Weapon Type:Rifle
Magazine:30
Ammunition:5.56 rounds

Name:Firestar 9mm
Weapon Type:Pistol
Magazine:7
Ammunition:9mm rounds

Name:English Bow
Weapon Type:Bow
Magazine:1
Ammunition:Hunting Arrows
Ammo
Скрытый текст: ПОКАЗАТЬ
.44 Magnum[32]
.17 cal[500]
9mm rounds[120]
12 gauge shotgun shells[35]
.357 Magnum[42]
5.56 rounds[120]
.357 SIG[78]
26mm flare shells[20]
4.6mm rounds[160]
.223 Ammo Belt[200]
Hunting Arrows[35]
.45 ACP[100]
SS 190[150]
.338 Lapua Magnum[100]
40mm grenade shells[6]
40S&W rounds[120]
.500 Magnum[30]
7.62 rounds[90]
20mm fragmentation ammo[5]
Свобода выбора налицо=)

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: AfterlifeRL

Сообщение kipar » 01 дек 2010, 11:51

JustHarry писал(а):можно ли присваивать родительскому типу тип потомка? типаInventory[k]:=w, если w - weapon.
Можно, а вот чтоб потом сделать наоборот, т.е. w := Inventory[k] придется делать приведение типов:
w := Weapon(Inventory[k]);

Я вместо массивов\двухсвязного списка использую TList, тоже свои плюсы и минусы есть. Еще можно динамические массивы юзать (A: array of Item; SetLength(A, 100))
Jolly Roger писал(а):Что касается непосредственно вещейкак мне помнится, было два варианта: они либо имеют общего предка типа ITEM, либо, не мудрствуя лукаво, любой предмет обладает всеми характеристиками доступными Всем предметам.
Не хочу разводить флемваров, но имхо первый вариант проще и изящнее. Макконнелл рекомендует.


Да, и кстати конструкция
type Item=Object
вообще-то deprecated. Лучше использовать динамически создаваемые
type Item=class

Но если в конструкторах\деструкторах не разбираешься, то и object сойдет.

JustHarry
Сообщения: 655
Зарегистрирован: 30 июл 2010, 17:13

Re: AfterlifeRL

Сообщение JustHarry » 01 дек 2010, 11:58

Можно, а вот чтоб потом сделать наоборот, т.е. w := Inventory[k] придется делать приведение типов:
А если захочу например метод Weapona использовать?
Это как писать
Weapon(a[k]).Use
?
Просто если просто пишу a[k].use он вызывает Item.Use а не Weapon.Use. Бида.

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: AfterlifeRL

Сообщение kipar » 01 дек 2010, 12:06

Если метод виртуальный, то должен вызываться Weapon.Use
Если вызывается Item.use - значит метод статический.
У тебя Weapon.Use объявлен с директивой override? Компилятор какие-нибудь варнинги выдает? И что за компилятор кстати?

JustHarry
Сообщения: 655
Зарегистрирован: 30 июл 2010, 17:13

Re: AfterlifeRL

Сообщение JustHarry » 01 дек 2010, 12:12

У тебя Weapon.Use объявлен с директивой override? Компилятор какие-нибудь варнинги выдает? И что за компилятор кстати?
Короче у итема метод Use виртуальный, а у Weapona нет. Когда вызываю Weapon.Use работает а когда a[k].Use вылетает. Компилятор Free Pascal 2.4.0.

А что такое override?

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: AfterlifeRL

Сообщение kipar » 01 дек 2010, 12:18

Если мы в родителе объявляем метод virtual, то во всех потомках надо объявлять его override; И наверняка компилятор тебе на это указывает (при компиляции сообщение что-то типа method Weapon.Use hides virtual inherited method).

Ответить

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

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