Что же продолжу, вчера наткнулся на свою старую доку в которой для себя описывал работу игрового движка который я пытался написать давным, давно(но он канул в лету, мир его праху). Разрабатывая в настоящее время опять движок подумал хоть он и не готов(и будет это ещё не скоро) главное в голове сформирована архитектура на основании которой можно написать вариант использования движка,
для того чтобы стало ясно как с ним работать.
И я практически от балды накидал малюсенький шаблон.
Она не призвана к тому чтобы объяснить всё.
я хочу чтобы вы поняли и рассудили подход к использованию движка, а не конкретный код.
Имена функций и переменных от балды.
Рекомендуется к хоть по беглому взглянуть на это и это.
#include <engine.h>
int map_init()
{
/*
Описание ресурса, движек сам ищет необходимый файл по имени
если путь не указан,так же передаём тип объекта что бы менеджер
ресурсов знал с чем имеет дело при формировании списка на обработку
конвееру.
*/
int map=load_object("map_street_01",model); ///загрузим модель.
int giga_texture=load_object("giga_texture_street_01",texture);///загрузим для неё текстуру.
/*
Физические параметры это тоже объект, это файл
с описанием физических характеристик объекта.
*/
int physix_map=load_object("physix_street_01",physix); ///загрузим физические параметры.
/*
Виртуальный объект это набор идентификаторов которые передаются
менеджеру ресурсов по идентификаторам, менеджер ресурсов знает кто чем является
формирует список и передаёт его конвееру который последовательно прогоняет даные
по подсистемам и производит все необходимые операции.
*/
return virtual_object(map,giga_texture,physix_map);///создадим новый объект модель+текстура+физика
};
/*описываем объект*/
int car_init()
{
int car=load_object("car_audi",model); ///загрузим модель.
int car_texture=("audi_texture_red",texture);///загрузим для неё текстуру.
int physix_car=("audi_physix",physix); ///загрузим физические параметры.
return virtual_object(car,car_texture,physix_car);///создадим новый объект модель+текстура+физика
};
int main()
{
init_all(); ///лень возиться, инициализируем что есть разом.
base_vfs("/data/data.pak");///указываем расположение нашей виртуальной фс.
base_dir("/data/conf"); ///указываем где брать конфиги.
init_config("game.conf");
int map_street_01=map_init_street();///формируем объект карта.
int car_audi_red=car_init(); ///формируем объект бибика.
while(set_key_q!=1)
{
flip_game();///Заводим исполнение конвеера.
/**
GAME CODE
**/
};
quit_all();
return 0;
/**
Список- это последовательность объектов над которыми должны произойти преобразования.
Конвеер это подсистема которая завязывает все остальные подсистемы в цепь обработки.
*/
};