?

Log in

No account? Create an account
15 ноя, 2006 @ 00:17 Без названия
Пишу простую спрайтовую игру.С монстрами.
I. Есть 2 варианта организации их движения.
1.Задать приращение(dx, dy), потом поспать, потом приращение, потом поспать итд. Монстры отличаются приращением, спят все вместе.
2. Приращение у монстров одинаковое, но у каждого есть промежуток после хода. Соответственно идет проверка таймера каждую единицу времени. Если время паузы конкретного монстра прошло, то он делает шаг. У каждого монстра своя пауза, приращение одинаково.
Вопрос. Какой метод оптимальнее?
II. Вопрос на ощущения. С Вашей точки зрения стоит разделять игрока и монстра? То есть даже не на уровне кода, а на уровне понимания. Игрок - это монстр с дополнительными фичами, не имеющий никаких других преимуществ, или это обособленный персонаж?
+ бонус. Посоветуйте, пожалуйста, сайты с красивыми игровыми алгоритмами.
door
vannadis:
[User Picture Icon]
From:voinov_sergey
Date:Ноябрь, 14, 2006 21:49 (UTC)
(Ссылка)
Посмотрите на эту тему исходники Quake 1. Там есть достаточно простой язык Quake C, на кот. как раз реализуется весь игровой сценарий.
Обычно в явном виде функция "поспать" не реализуется, т.е. выполняется смещение объектов на каждом кадре анимации, а скорость движения объектов и определяет как раз эти смещения, ибо скорость есть производная по времени от координат. На величину смещения также влияет время рендеринга последнего кадра, чтобы на машинах с различным быстродействием анимация визуально выглядела одинаково, т.е. чтобы объекты по экрану перемещались с визуально одинаковой скоростью. Понятно, что если объект неподвижен, то его скорость равна нулю и смещение также равно нулю.
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:elmm
Date:Ноябрь, 14, 2006 22:03 (UTC)
(Ссылка)
Посмотреть сколько времени прошло после последней обработки умножить на скорость и на столько сместить, если осталось время - отрисовать всё это дело. То есть если игра тормозит - должен падать fps а не замедлятся движение монстров.
Игрок и монстры могут быть похожи - у них обычно есть сходная функицональность - колижн, отрисовка, движение. На сколько их совмещать зависит от ситуации.
(Ответить) (Ветвь дискуссии)
From:jet_bird
Date:Ноябрь, 15, 2006 07:32 (UTC)
(Ссылка)
class Monster: public SceneObject{
public:
//...
void update(double deltaT);
//...
};

ну и в цикле вызываешь для всех ентот метод.

сначала лучше всех проапдейтить, а уж потом всех нарисовать.
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:borimir
Date:Ноябрь, 15, 2006 07:42 (UTC)
(Ссылка)
http://borimir.livejournal.com/129584.html

Посмотрите эту тему. Я думаю, будет интересно. Дело в том, что тоже занимаюсь разработкой игр.
(Ответить) (Ветвь дискуссии)