?

Log in

No account? Create an account
21 апр, 2009 @ 11:10 Как в аркадных играх делается уровень с ползущим экраном?
Я сделал так -
есть большая хеш таблица, где хранятся пары: ключ - время вдесятых секунды, значение - список предметов которые в эту секунду должны появиться. Код, отвечающий за создание объектов всевремя смотрит в эту таблицу, что надо создать  в текущее время. И если есть что-то, то список к созданию сначала копируется а потом удаляется из таблицы(так как список смотрится обычно чаще чем раз в 0,1 сек.), и это даже работает. Но скорее всего есть решения куда по красивее. Подскажите плиз(-:
kotik
alex_the_coder:
[User Picture Icon]
From:glebedev
Date:Апрель, 21, 2009 09:32 (UTC)
(Ссылка)
Зачем хеш?

Вообще не понятно о чём речь. Можно пару скринов на аналоги?
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:alex_the_coder
Date:Апрель, 21, 2009 10:29 (UTC)
(Ссылка)
Да хеш сам по себе не важен. Просто мне надо хранить пары, 'ключ-значение', чтобы каждой секунде соответствовало некое количество обьектов, которые надо в эту секунды сделать. Например: на 36 секунде появляется МонстрА в (х,у). На 37ой МонстрБ, на 42 Ландшафт. При этом экран как-бы уползает назад, и некотрые обьекты за пределами исчезают, ну и соответственно должны появлятся новые.
Ведь эта задача так стара, что наверняка для нее есть хорошие проверенные решения.
Вот скрин к примеру:
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:surger
Date:Апрель, 21, 2009 10:35 (UTC)
(Ссылка)
в такого рода игрушке еще проще - скорость движения экрана статична. то бишь привязывай на мертво к координате Y (игрек) :)
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:glebedev
Date:Апрель, 21, 2009 10:42 (UTC)
(Ссылка)
вроде как они линейно появляются. Я бы сделал список линейный, в которым элементы ближе к началу соответствуют ранним отсчётам времени. Что-то вроде

{Time: 0.1, Type="Ship1" Coord="..."} - {Time: 0.1, Type="Ship2" Coord="..."} - {Time: 1.1, Type="Ship1" Coord="..."} - ...

тогда выбираем элементы пока текущее время больше чем Time у первого элемента в списке.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:alex_the_coder
Date:Апрель, 21, 2009 12:14 (UTC)
(Ссылка)
спасибо))
У меня довольно похоже^^ Просто время как ключь а Список кого сгенерить - это значение.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:surger
Date:Апрель, 21, 2009 13:04 (UTC)
(Ссылка)
у тебя тут "пак" - четыре самолетика - то есть пак с типом "все монстры сразу" а может быть так что бы они друг за другом летели и выписывали различные "кренделя"
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:surger
Date:Апрель, 21, 2009 10:34 (UTC)
(Ссылка)
делается очень просто:
имеются координаты персонажа.
и сама карта - "уровень".
на карте расставлены монстры
когда ГГ подходит на определенное расстояние до (от) монстров, те появляются. Точки "респевна" могут быть разного типа - одноразовые, двухразовые и пр.
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:alex_the_coder
Date:Апрель, 21, 2009 12:12 (UTC)
(Ссылка)
спасибо)))
Впринципе я сделал довольно похоже^^ Просто так как скорость постоянна, то вполне можно считать что 5 секунд, это +20 по координате Y.
Хотя с координатами выглядит логичней.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:surger
Date:Апрель, 21, 2009 12:14 (UTC)
(Ссылка)
Да и проще выставлять "паки", и в том числе и уровень регулировать.
Можно точки рождения делать типа "тормозов" - пока всех не завалишь дальше не пройдешь. + на разных уровнях сложности - разное количество монстриков выдает.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:alex_the_coder
Date:Апрель, 21, 2009 12:59 (UTC)
(Ссылка)
хм...а с тормозами хорошо подойдет для босса
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:surger
Date:Апрель, 21, 2009 13:00 (UTC)
(Ссылка)
или "мини боссы" на "проходных"
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:surger
Date:Апрель, 21, 2009 13:02 (UTC)
(Ссылка)
у меня на нокиа 3310 была игрушка - в космосе/под водой и т.д. летел кораблик и расстреливал все подряд - было пару минибоссов - типа крутой типовой(обычный) монстрик.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:alex_the_coder
Date:Апрель, 21, 2009 13:12 (UTC)
(Ссылка)
space impact
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:surger
Date:Апрель, 21, 2009 13:14 (UTC)
(Ссылка)
во-во

там был такой подводник и был еще в городе какая то летающая тарелька
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:surger
Date:Апрель, 21, 2009 13:07 (UTC)
(Ссылка)
+ если по времени - то тяжело мини боссов отыгрывать - не знаешь насколько долго игрок провозиться с уничтожением препятствия.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:alex_the_coder
Date:Апрель, 21, 2009 13:12 (UTC)
(Ссылка)
во время босса время останавливается)))
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:surger
Date:Апрель, 21, 2009 13:13 (UTC)
(Ссылка)
Хмм
а тотальное время прохождения учитывать как собираешься?
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:surger
Date:Апрель, 21, 2009 13:14 (UTC)
(Ссылка)
координаты - они надежней.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:surger
Date:Апрель, 21, 2009 12:15 (UTC)
(Ссылка)
http://nudnik.ru/entry/3647
Тут интересное решение для "пака".
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:alex_the_coder
Date:Апрель, 21, 2009 13:00 (UTC)
(Ссылка)
из статьи можно позаимоствовать много хороших идей^^ thnx
но что такое "пак" все равно не понял)))
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:surger
Date:Апрель, 21, 2009 13:01 (UTC)
(Ссылка)
"пак" - pack - группа монстров - типа в аркаде следующие друг за другом монстры и стреляющие по очереди, скажем если сложность легкая - пак из трех монстров, если тяжелая - 10.

Например: xenon 2 посмотри (древняя игрушка)
(Ответить) (Уровень выше) (Ветвь дискуссии)