{{notification.text}}

MirGames

13.09.07 01:54
0
Всем хай!
Подскажите плиз люди как делать карты для игры так чтобы фпс не подскакивал сильно от большого количества обьектов,тоесть если создавать карту из квадратиков(земли) и ставить на них обьекты(Деревья камни и тд) то всё ето дело начинает тормозить =( Подскажите как можно зделать так чтобы не было сильных тормозов,исходников не надо и ссылки на дроновские игры тоже там другой жанр игры =(
#1
13.09.07 05:56
0
Надо сделать так чтобы те объекты, которые не попадают в кадр, не прорисовывались.
#2
13.09.07 12:19
0
для более подробного ответа нужно знать стиль игры..
#3
аксакал
13.09.07 12:47
0
Domik
Отсекай большее число объектов меньшим кол-вом проверок и всё будет чудесно.
#4
14.09.07 20:17
0
ТОгда вопрос такой как сделать чтобы они не рисовались? Игра вид сверху как диабло =)
#5
15.09.07 00:11
0
Style, точно так же как и "рисовались", только с точностью наоборот...

В Диабло вид не сверху, а изометрический (сверху и сбоку без перспективы). Вид сверху - это как в Crimsonland или в GTA 1-3.
#6
15.09.07 02:11
0
Domik
GTA 1-2, тройка трехмерная.
#7
15.09.07 13:27
0
Vga
В GTA2 3д + 2д, там вроде дома трехмерные, ну а остальное 2д..

По теме:
А вообще делаешь хеш мап, заносишь в каждый хеш ссылки на объекты которые в ней находятся и потом рисуешь объекты в хешах, которые видимы для камеры.
#8
15.09.07 23:09
0
Я в первые две не играл практически, но похоже на то...
А отсечение обычно реализуют с помощью деревьев (BSP, quadtree, octtree).
#9
if not b then b:=not b;
16.09.07 01:42
0
Frustum Culling наверно тут для тебя лучший выход.
Вот тут про это есть: http://XProger.mirgames.ru/?id=1&page=2&doc=camera

Хотя можно упростить ситуацию и сверять координаты объектов и координаты камеры. В случае если "объект невидим" просто не рисуй его.
Отредактировано: 16.09.07 01:42
#10
16.09.07 05:51
0
Цитата(Vga)
Domik
GTA 1-2, тройка трехмерная.

и
Цитата($'talker)

В GTA2 3д + 2д, там вроде дома трехмерные, ну а остальное 2д..

А какая разница 3д или 2д!? Главное, что вид сверху! ;)

Подробностей автор не привел, так что в его случае самый простой и удобный вариант - это проверять какие объекты попадают в кадр те и рисовать, а те которые не попадают не рисовать. Делов то...
#11
16.09.07 06:03
0
Domik
Quad-tree & Oct-tree - как раз оптимизации этой задачи (Frustum Culling). Впрочем, попутно они выполняют еще кучу задач, связанных с логикой. Позволяют выполнять как раз то, что описал XProger - отсекать максимум объектов минимумом проверок.
#12
19.09.07 20:22
0
Привет всем !
Вот процедуру я откопал которая должна помочь в моей проблемме,а как ей пользоваццо я не знаю может кто подскажет ???

Вот:
procedure TCamera.SetRender;
var
A, B, C, D, E, F : single;
cx, cy, cz : TVector;
begin
with Angle do
begin
A := cos(X);
B := sin(X);
C := sin(Y);
D := cos(Y);
E := cos(Z);
F := sin(Z);
end;
cx := Vector(C*E+B*D*F, A*F, B*C*F-E*D);
cy := Vector(B*D*E-C*F, A*E, D*F+B*C*E);
cz := Vector(A*D, -B, A*C);
// заполнение матрицы
m[0] := cx.X; m[4] := cx.Y; m[8] := cx.Z; m[12] := -V_Dot(cx, Pos);
m[1] := cy.X; m[5] := cy.Y; m[9] := cy.Z; m[13] := -V_Dot(cy, Pos);
m[2] := cz.X; m[6] := cz.Y; m[10] := cz.Z; m[14] := -V_Dot(cz, Pos);
m[3] := 0; m[7] := 0; m[11] := 0; m[15] := 1;
// установка матрицы проекции
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPerspective(FOV, Width/Height, 0.1, 100);
glMatrixMode(GL_MODELVIEW);
// установка матрицы вида
glLoadMatrixf(@m);
end;
усё! =)
#13
19.09.07 20:57
0
Style
Где откопал, там и смотри как юзать... Вот только это установка камеры (т.е. проекции), а не отсечение невидимой геометрии, которое тебе нужно (по крайней мере для той проблемы, что описана в #1)
#14
21.09.07 12:12
0
Вот Фео написал :
Frustum Culling наверно тут для тебя лучший выход.
Вот тут про это есть: http://XProger.mirgames.ru/?id=1&page=2&doc=camera
я там и высмотрел эту процедуру =)
А в игре дрона тама де человечек гоняет (Вид с боку) я не нашёл процедуры которая отсекает невидимые обьекты , что мне сейчас делать ?? =(
#15
21.09.07 17:02
0
Цитата(Style @ Сегодня, 10:12)
[snapback]66836[/snapback]
Вот тут про это есть: http://XProger.mirgames.ru/?id=1&page=2&doc=camera

Насколько я помню, там про это ни слова. Там только оптимизация установки проекции.
Кстати, у ДРОНа есть в комплекте двига пример на Frustum Culling - тот, где выводится куча обезьян.
#16
22.09.07 19:01
0
Да да видел но я исходники не смотрел =)
Спасиба Vga посмотрю попробую разобраться!
#17
28.09.07 20:46
0
Frustum Culling? Для вида сверху??? Не проще ли
Код

  От ячейки, в которую попадает левый верхний угол экрана, до ячейки, в которую попадает правый нижний угол экрана, делать
      Нарисовать текущую ячейку;

?

Или я что-то не так понял???
Отредактировано: 28.09.07 20:48
#18
29.09.07 13:42
0
Я таким образом и сделал =)
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}