Render.ru

GameCreate - Возвращается

#1
Вот тут поиграл в игру и тоже решил неболишую ЗД игру сделати. Интересует кто может знает основние подходи. 1) Надо исполизивати DirecteDIM или Direct3DRM (Что луче) 2) Главная Проблема что в DirectХ eстm то что в Мая нет или его по другому визивати надо.
Я исполизую обёктный пожод:
ГЛАВНЫЙ ПОДХОД: На Вершине пирамиды обёкт 2DPLANE она отвечает за объекти с которыми персонаж может сталкнутися и которые должны его не пропустить в дебри полигонов этого обёкта. в 2DPLANE входят подобёкты 3DOBJECT которые создаютися в процессе загрузки уровня для статических обёктов и впроцессе игры для динамических Каждый ЗДОБЪЕКТ имеет свой UV координати в нутри 2DPLANE. 3DOBJECT (габаритный контейнер) имеет ещё под обёкти 3DSUBOBJECT которые Являютися тоже Габаритами Но уже деталей обёкта.

ДВИЖОК: В каждой точке 2DPLANE в виртуалиной сетки анимации персонажа (ей) имеется некий перпендикулярный плоскости вектор который добавляется к вектору скорости движения персонажа в резулитате чего персоназ может двигатися по наклонным плоакостям и забиратися по лесницам. У каждого вектора эсти зарезервированное значение котороё не исполизуется при дизайне обёктов. Одно из них это значение позволяющее подниматися по леснице (В идеале оно должно было бити бесконечно болихим) например >=100. Когда решатели анимации на него натолкноться он должен поставити 0 перед вектором движения персонажа в резулитате чего персоназ будет двигатися перпендикулярно вверх (Или вниз но ето я не буду описывать).Ещё в каздой точке 2DPLANE эсти два ограничивающих вектора которые исполизуютися решателем чтобы не “попасти в полигони” Ну в общем понятно как это работает. Далише оказывается что для каждой вершины сетки анимации не выгодно хранити эти вектора. По этой причине они хранятися в подобёктах (3DSUBOBJECT). Естественно все три в 2DPLANE являютися нулевими векторами. Если в данной точке UV в 2DPLANE находится 3DOBJECT это узнаётися с помощию функции 2PLANE:: GetNearest3DObject (float U, float V, float Radius) эта функция предусмотренна для снижения нагрузки на процессор. Она восврашает идентификатор ближешего 3DOBJECT который имеет отличные векторов от текущих векторов а также число “тактов” анимации необходимоё для достижения этого обёкта. Через данное число тактов эта функция визивается сного и если обёкт заступоил на габарит 3DOBJECT то исполизуется функция 3DOBJECT:: GetAnimationVectors (Float U, flaot V); которая возвращает значения этих векторов для данной точки (3DOBJECT передаёт задание 3DSUBOBJECT а он и содержит информацию о этих векторах). И ещё когда персоназ заступает на территорию 3DOBJECT на не исполизует функцию 2PLANE:: GetNearest3DObject (float U, float V, float Radius) а исполизует аналогичную :: GetNearest3DsubObject (float U, float V, float Radius). Если человек одёт по дороге то эти вектора у него естественно 0. Если поднимается по наклонной плоскости то ограничевающие вектора мин и мах этой плоскости а основной вектор tg (угол наклона плоскости) (могу ошибится надо ещё раз просчитати) Вот так это я сделал я всё сам придумал так что не надо искати эти функции в DirectX например . А как другие делают не Знаю да и вообще про Написание игр мало знаю. Если попробовати анализировати исходники какойнибуду игры то там чорт ногу сломит. И Ещё про Анимацию Врагов интересно узнати штонибуди (Исполизовати там пути или ещё как-нибуди) Про применение LOD хотелоси бы узнати и про типи дозагрузки статических обёктов что там луче (например загрузка сразу всегу подуровня и при переходе в другой подуровени выводити “Гружу..." или в процессе прохода игрока по уровню автоматически загружати удаленние на определонный радиус обёкти).

Ссилки тоже писать можно
 
Сверху