LINUX.ORG.RU

Game_engine. Черновой вариант применения. Сишники, геймдевелы прошу в студию.

 , , ,


1

2

Что же продолжу, вчера наткнулся на свою старую доку в которой для себя описывал работу игрового движка который я пытался написать давным, давно(но он канул в лету, мир его праху). Разрабатывая в настоящее время опять движок подумал хоть он и не готов(и будет это ещё не скоро) главное в голове сформирована архитектура на основании которой можно написать вариант использования движка,
для того чтобы стало ясно как с ним работать. И я практически от балды накидал малюсенький шаблон. Она не призвана к тому чтобы объяснить всё. я хочу чтобы вы поняли и рассудили подход к использованию движка, а не конкретный код.

Имена функций и переменных от балды.

Рекомендуется к хоть по беглому взглянуть на это и это.

#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;

/**
Список- это последовательность объектов над которыми должны произойти преобразования.

Конвеер это подсистема которая завязывает все остальные подсистемы в цепь обработки.
*/



};

★★★★★

Последнее исправление: Dron (всего исправлений: 1)
Ответ на: комментарий от Dron

«car_audi»

Кто-нибудь, затрелите уже того парня, который на техническом ресурсе ввел эти ужасные уголки.

trex6 ★★★★★
()
Ответ на: комментарий от trex6

Всё больше думаю об этом. На ум приходят гонки.

Автомобиль прекрасный составной объект, корпус, колеса и прочее.

Богатый по моему размах в физике, повреджения, кинематика автомобиля отваливающиеся двери и бампер с колёсами.

Большие карты, большие требования к быстрой отрисовки кадра.

Настоящий стресс тест для менеджера ресурсов и конвеера.

3d звук.

Dron ★★★★★
() автор топика
Ответ на: комментарий от Dron

Смотри сам, но я начинал с крестиков-ноликов, потом карточная игра, теперь пилю свою txgames.

Собственно и тебе советую. Крестики-нолики можно написать за 2 часа, поймешь все те грабли, которые ты себе уже подставил в движке. После этого уже можно браться за гонки, но лучше все же 2д и без навороченной физики, а вот потом...

trex6 ★★★★★
()
Последнее исправление: trex6 (всего исправлений: 1)
Ответ на: комментарий от pacify

А где обработка нажатий клавиш?

Есть, у каждой клавиши код ловим событие нажатия и делаем то что нам нужно. Просто я это опустил так как по моему это не то что нужно обсуждать.

Dron ★★★★★
() автор топика
Ответ на: комментарий от Dron

Я немного заразился идеей «всё есть файл» и на самом деле прыгаю от этого немного исказив «всё есть объект» в том плане что его можно просто взять и задать свойства.

Это называется ООП головного мозга. ООП хорошо, но есть еще много парадигм в программировании.

AIv ★★★★★
()
Ответ на: комментарий от AIv

Я сам сторонник процедурного подхода, но в данном случае я не придумал ничего лучшего как подойти таким образом каким подошел я, я позицианирую то что я делаю в первую очередь не как игровой движек, а как средство визуализации, просто гораздо проще говорить что это игровой движок.

В любом случае имеем дело с объектами моделями в первую очередь которым задаются правила поведения.

Сама сцена(любая) как я говорил это в моём понимании последовательность событий на которые должны происходить ответные реакции анимация/звук/эфекты/физика/создание/разрушение

В конечном итоге я предлагаю разрабам брать модель и досконально описывать её с помощью api и конфигов, делать несколько моделей и строить из них сцену. Ну, а события придумывать и обрабатывать это их проблемы.

Так что по моему именно тут слова всё есть объект имеют место. Так как мы не работаем с сырыми данными, а с готовыми которыми нужно только управлять, но ведь это лишь api, внутри мир процедурный царит.

Dron ★★★★★
() автор топика

А сколько игр ты уже написал?

schizoid ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.