Многие игры в нынешнее время поддерживают мультиплеер, почему? Потому что сейчас люди уже перестали довольствоватся Ai’ем, который играет в частности ‘линейно’, его нельзя обмануть, пошутить над его действиями или разозлить… =) С ним играть можно только на уровне обучения игры, а далее – сеть, живые игроки… ;). Если это маленькое вступление заставило вас захотеть добавить в свою игру мультиплеер то эта статья для вас. Итак, сразу к делу. Сделаем самую легкую программу, с одной кнопкой. =) Кидаем ее на форму, не забыв кинуть DXPlay. В этой программе давайте сделаем что бы форма подключения DXPlay выводилась при запуске. Идем в настройки DXPlay и устанавливаем любой Guid путем нажатия кнопки New, этот параметр (imho) “устанавливает” уникальности вашему мультиплееру. Далее так: TForm1
try
DXPlay1.Open; //Пытаемся открыть форму подключения
except
on E: Exception do
begin
Application.ShowMainForm := False;
Application.HandleException(E);
Application.Terminate; //Если не подключаемся или ошибка выходим их программы
end;
end;
Read more »
Filed in Графика by admin | Январь 27, 2008 | No Comments
Как реализован движок.
Есть прямая (AB) у этой прямой имеем координаты X1,Y1,X2,Y2
Дальше что нам нужно ?
Ну исходя из того что у нас есть не только прямые но и Герой или другие создания Нам нужно знать стоит наше создание на прямой или нет … А что такое наш герой да и другие объекты ??? Да ничего больше как обычная точка с двумя координатами Xobj,Yobj Так вот продолжаем, что бы проверить стоим мы на прямой или нет, мы смотрим (вычисляем) Растояние от точки (XObj,Yobj) до прямой (AB) (подобные формулы можно найти в любом справочнике по математике) Конечная формула у меня получилась такой
A:=-Y2+Y1;
B:=X2-X1;
C:=-X2*Y1+Y2*X1;
D := Round((A*Xpos+B*Ypos+C)/(Sqrt(Sqr(A)+Sqr(B))));
Read more »
Filed in Графика by admin | Январь 27, 2008 | No Comments
Кручу-верчу, обмануть хочу, или как использовать продвинутые методы вывода спрайтов. В классе TSprite есть три метода: DoDraw, DoCollision и DoMove Чтобы заставить спрайт созданный таким образом:
TPlayer = class(TImageSprite)
end;
выводится через продвинутые методы (DrawRotate, DrawAplha, DrawSub, DrawWave, StretchDraw), нужно “заглушить” стандартный вывод при создании объекта. Вот так:
type
THero = class(TImageSprite)
Angle:integer;
protected
procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
procedure DoMove(MoveCount: Integer); override;
procedure DoDraw; override; // вот здесь
end;
Read more »
Filed in Графика by admin | Январь 27, 2008 | No Comments
Перед тем как приступить я хотел бы сделать пару оговорок. Во-первых для использования DirectX в Delphi необходим файл с заголовками, где объявлены имена функций DirectX API либо какой-нибудь компонент, позволяющий обращаться к интерфейсу DirectX через свои методы. В момент написания сего опуса я использую компонент DelphiX (автор - Hiroyuki Hori), распространяемый бесплатно - http://www.yks.ne.jp/~hori/DelphiX-e.html. (если у вас есть что-нибудь получше и Вы поделитесь со мной - я буду очень признателен.)
И еще один адрес, по которому можно скачать компонент DelphiX : http://www.torry.ru/vcl/packs/hhdelphix.zip
По возможности я буду писать и названия методов DelphiX и названия соответствующих интерфейсов Directx API – чтоб вам легче было ориентироваться в DirectX SDK. Во-вторых при всем своем гипертрофированном самомнении я не могу назвать себя экспертом в области DirectX – так что не судите чересчур строго. Я надеюсь сие творение хоть как то сможет помочь делающим первые шаги в DirectX – если Вы круче меня – буду признателен за помощь и указание на ошибки (коих увы наверняка сделал немало (честное слово не нарочно
) Оговорка без номера – я пишу эти строки в те времена когда последней версией DirectX является DirectX 6.
Read more »
Filed in Графика by admin | Январь 27, 2008 | No Comments
Палестинский филиал WESTWOOD впервые в мире реализовал первый уровень игры “RED ALERT 2″ (взятие Пентагона) в полном 3D и максимальным уровнем реализма… Сообщается о незначительных (около 50 000) жертвах среди бета-тестеров…
Для этого урока возьмем программу из предыдущего (так будет во всех уроках - в каждом следующем мы просто улучшаем программу предыдущего), единственные изменения - я возьму спрайты покрасивее:
Это фон(он нарисован в Fireworks):
так, приступим к работе
Цель этого занятия - научится проигрывать звук, передвигать картинки и проверять их столкновения. Для проверки столкновений понадобится третий спрайт, я нарисую стенку.
Теперь я уже не буду объяснять, как вывести стенку на экран. Я выведу её с координатами “400,400.0″
Все, можно пристурать к анимированию. В описание класса Ttarelka, перед “Public” надо поставить такую строку:
procedure DoMove(MoveCount: Integer); override;
Read more »
Filed in Графика by admin | Январь 27, 2008 | No Comments