AfterlifeRL

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

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

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

AfterlifeRL

Сообщение JustHarry » 29 ноя 2010, 11:25

Сам знаю, как просто все бросить по дороге к, но все же.

AfterlifeRL - рогалик на основе hand-made карты Afterlife, из игры Warcraft 3.
(оригинальный автор Alex-Knight)

Описание
The jeep of your Special Forces Team has broken down on the road into a nuclear wasted city. You send a message to the Base, now you only have to wait for the pickup...

Геймплей
С самого начала вам дается 2 пистолета, патроны, и несколько бинтов для перевязки. Ваша задача - продержаться n волн и дождаться вертолета спасательной группы. Есть также другие способы сбежать, но о них позже.

Предметы, которые вы можете собирать:
Скрытый текст: ПОКАЗАТЬ
Оружие. Дробовики\винтовки\пистолеты\пулеметы\ракетницы. У каждого свой дамаг в секунду, и скорость стрельбы.

Патроны к каждому виду оружия. К примеру Colt M4 заряжается 5.56 калибром, а AK-47 калибром 7.62.

Противопехотные мины.

Аптечки. Несколько видов.

Гранаты.

Баррикады.

Броня нес-ких видов.

Турели разных калибров.
Список оружия и брони(версия 1.0)

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]
Враги
Скрытый текст: ПОКАЗАТЬ
Зомби. С каждой волной растет их HP, и DPS. Обычное мясо, многочисленны. Скорость=вашей.

Собаки. Бегают быстрее вас в 2 раза. Кусаются слабо. Количество среднее.

Зараженные птицы. Летают в 4 раза вас. Кусаются слабо. Малочисленны.

Порождения ужаса. Скорость = вашей, могут выстрелить в вас кислотой, оглушив на несколько ходов. Жизней много.

Боссы. Скорость в 2 раза меньше вашей. Очень много жизней, огромный дамаг. Дропают после смерти артефактный предмет.
Собственно, по самой игре:
1) Никаких дробных систем времени. Медленные монстры и раненный игрок, будут пропускать один ход через раз. Скорострельное оружие будет стрелять n раз каждый ход.

2) Автоатака. Стрельба будет происходить автоматически в ближайшего и самого быстрого монстра. Можно будет менять фокус атаки прицеливанием, если например вам нужно убить кого нибудь не рядом с собой.

3) Респ монстров. Они будут респаться цепочками на границах карты. У каждой группы будет свой лидер, который будет вести ее по городу в рандомном направлении. Если группа увидит врага(игрока, турель, или баррикаду) она начнет на него агрится.

Боссы и быстрые монстры будут респаться поодиночке или небольшими группами.

4) Волны. Между каждой волной будет время поискать патроны, и исследовать город.

5) Инвентарь из 6 слотов как в оригинале. Можно будет носить только одно оружие, и только одну броню. Остальное - по желанию.

Уф, вроде все. Да, и я начал использовать ООП как главную концепцию разработки, надеюсь никаких сложностей с этим не возникнет.

P.S. Генератор города и домов работает исправно, правда генерирует иногда полупустые кварталы, но зато будет место для разбитых машин, фонтанов, и прочих декораций. Пока можно побегать по городу, обработки препятствий все равно пока нет. Хотел бы узнать ваше мнение о генерации города, нормально ли, или стоит доработать.

Ходить стрелками, прокручивать карту нумпадом.
r - создать новый город.
Вложения
Afterlife.rar
генератор города + фов
(33.07 КБ) 134 скачивания
Последний раз редактировалось JustHarry 01 дек 2010, 11:33, всего редактировалось 6 раз.

Аватара пользователя
Феникc
Сообщения: 679
Зарегистрирован: 27 ноя 2010, 15:01
Откуда: Челябинск

Re: AfterlifeRL

Сообщение Феникc » 29 ноя 2010, 12:08

Мне понравилось. По крайней мере дома выглядят нормально. Но все же пустых кварталов надо поменьше.

ЕДИТ
Только точки очень уж глаза режут.
Всё вышесказанное - ИМХО, если не указано обратное.

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

Re: AfterlifeRL

Сообщение JustHarry » 29 ноя 2010, 12:32

2Феникс На дизайн даже не смотри. Все будет меняться я думаю много раз.

Ладно, теперь по делу.

Написав Честно скопипастя код с википедии я реализовал круговой ФОВ, но судя по всему что-то пошло не так и:

Изображение

Вот такие чертовые слепые пятна появляются.
Как я делаю:

Нахожу каждую точку окружности, но вместо того чтобы ее рисовать, провожу к ней линию света. Что-то видимо не захватывает=(

Вот мой код(на википедии тот же самый).
Процедура ФОВ рисует круг, а ЛОС - линию света от точки А до Б.
Скрытый текст: ПОКАЗАТЬ
Procedure LOS(x1,y1,x2,y2:integer);
var count,dx,dy,i,sx,sy,check,e,x,y:integer;
begin
dx:=abs(x1-x2);
dy:=abs(y1-y2);
sx:=Sign(x2-x1);
sy:=Sign(y2-y1);
x:=x1;
y:=y1;
check:=0;
if dy>dx then begin
dx:=dx+dy;
dy:=dx-dy;
dx:=dx-dy;
check:=1;
end;
e:= 2*dy - dx;
for i:=0 to dx do begin
map[x,y].typ:=5;
if e>=0 then begin
if check=1 then x:=x+sx else y:=y+sy;
e:=e-2*dx;
end;
if check=1 then y:=y+sy else x:=x+sx;
e:=e+2*dy;
end;
end;

procedure FOV;
var x1,y1,R,x,y,error,delta : integer;
begin
R:=LightRadius;
x1:=Player.X;
y1:=Player.Y;
x := 0;
y := R;
delta := (2 - 2 * R);
error := 0;
while y >= 0 do
begin
LOS(x1,y1,X1 + x,Y1 + y);
LOS(x1,y1,X1 + x,Y1 - y);
LOS(x1,y1,X1 - x,Y1 + y);
LOS(x1,y1,X1 - x,Y1 - y);
error := 2 * (delta + y) - 1;
if ((delta < 0) and (error <= 0)) then
begin
inc(x);
delta := delta + (2 * x + 1);
continue;
end;
error := 2 * (delta - x) - 1;
if ((delta > 0) and (error > 0)) then
begin
dec(y);
delta := delta + (1 - 2 * y);
continue;
end;
inc(x);
delta := delta + (2 * (x - y));
dec(y);
end;
end;

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

Re: AfterlifeRL

Сообщение JustHarry » 29 ноя 2010, 13:44

ФОВ поправил, но, теперь слепые пятна в другом месте вылазят. Черт, придется основательно все править, бр-р-р-р.

Выложил в первом посте поправленную версию.

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

Re: AfterlifeRL

Сообщение kipar » 29 ноя 2010, 13:48

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

Могу запостить свою реализацию RPAS FOV на паскале - там все более запутано, но зато ее сам Xecutor рекомендует :) .

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

Re: AfterlifeRL

Сообщение JustHarry » 29 ноя 2010, 13:56

2Kipar: ну раз на Паскале, то буду только благодарен.

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

Re: AfterlifeRL

Сообщение kipar » 29 ноя 2010, 13:59

Гм, а чтобы исправить слепые пятна на стенах я у себя проверку делал - если рядом со стеной есть светлый пол, то стену считать освещенной. Правда потом дошли руки и просто нормальный алгоритм фов сделал.

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

Фов:
Скрытый текст: ПОКАЗАТЬ
ufov.zip
(2.5 КБ) 134 скачивания
Применять: InitRPAS - вызвать один раз с параметрами 100,100 например.
Для обновления видимости вызвать
RPAS(@GetTrans, @GetFov, @SetFov, ObsX, ObsY,
SightRadius, True);
GetTrans - функция, возвращающая true если клетка X Y прозрачна
GetFov - функция, возвращающая была ли освещена клетка X Y
SetFov - функция, устанавливающая освещенность клетки.

Ну или просто в тексте модуля заменить эти функции на нужные тебе проверки.

Да, если я все правильно понял, бинарник игры надо распостранять с файлом mrpas_license.txt, чтоб все по закону :)
Последний раз редактировалось kipar 29 ноя 2010, 14:18, всего редактировалось 1 раз.

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

Re: AfterlifeRL

Сообщение JustHarry » 29 ноя 2010, 14:03

но дома кажутся уж очень большими по сравнению с размерами дверей и игрока. И комнаты в них уж очень большие - Хотя пока врагов нет, определенно нельзя сказать.
Ну, как сказать. Во первых, можно засунуть в комнату большой стол, вокруг которого можно бегать и отстреливать зомби. Можно мусора всякого навалить вперемешку с патронами. Можно.. ух, короче, не торопитесь, может карту и уменьшу еще=). К тому же можно все дома делать маленькими, тогда их будет больше.


...А если я боссов сделаю многоклеточными, тогда вообще круть!
какой смысл в таких прятаться, если в них тоже полсотни зомбей набиться может.
В том то и смысл. А если комнаты запирать можно будет? Это тоже учту.

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

Re: AfterlifeRL

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

Зомби атакуют Старую Ригу: мало где ещё сохранились такие узкие улочки. И, да, периодически артефакты появляются (Windows 7, Mobility Radeon HD 4300) :
Вложения
afterlife.jpg
afterlife.jpg (21.16 КБ) 5070 просмотров
Dump the screen? [y/n]

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

Re: AfterlifeRL

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

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

Артефакты у меня не появлялись, поменяю символы потом, эти какие то странные.

Аватара пользователя
Феникc
Сообщения: 679
Зарегистрирован: 27 ноя 2010, 15:01
Откуда: Челябинск

Re: AfterlifeRL

Сообщение Феникc » 29 ноя 2010, 16:56

У меня никаких артефактов не было. В ФОВе ошибок не наблюдал. Жду монстров.
Всё вышесказанное - ИМХО, если не указано обратное.

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

Re: AfterlifeRL

Сообщение JustHarry » 29 ноя 2010, 17:01

Для стен я использовал символ #176-178(░ ▒ ▓), посмотрел на одном компе, небольшие полосы кое-где есть, это да, поэтому переделал все в обычные символы.

Монстры будут завтра, насчет оружия не обещаю.

Аватара пользователя
Феникc
Сообщения: 679
Зарегистрирован: 27 ноя 2010, 15:01
Откуда: Челябинск

Re: AfterlifeRL

Сообщение Феникc » 29 ноя 2010, 17:04

Жду с нетерпением. Монстры это конечно хорошо, но оружие тоже неплохо :)
Всё вышесказанное - ИМХО, если не указано обратное.

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

Re: AfterlifeRL

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

JustHarry писал(а):Насчет улиц не знаю. Я не думаю, что отбиваться от толпы зомби на огромной площади весело. Гораздо лучше растянуть их на несколько улиц и отстреливать по одному.
Ну, видно будет, когда появятся зомби, но вообще улочки в стиле «подходи по одному», имхо, способны сильно перекосить баланс в пользу игрока. Особенно, если нежить не станет активно искать пути обхода.
Dump the screen? [y/n]

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

Re: AfterlifeRL

Сообщение JustHarry » 29 ноя 2010, 17:16

Да я бы не сказал, что игра в стиле "подходи по одному". Зомби то будут респаунится в разных точках карты и будут окружать игрока. Так что единственный способ заставить их подходить по одному это забуриться в какую нибудь комнату, и сидеть там, вот только за патронами придется бегать. К тому же босса придется водить за собой долго, если валить его не очень убойным оружием.

Ответить

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

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