K5EngineФорум

Введение в K5Engine (комментарии)

#0
20:07, 15 июля 2010

Введение в K5Engine (комментарии)

Это сообщение сгенерировано автоматически.

#1
20:07, 15 июля 2010

// проходил мимо и мне чуток не понятно..
"void Main();"  и  "App.Work();"
это одно и тоже ?

#2
22:40, 15 июля 2010

slatazan

Нет нет, не одно и тоже.
void Main() это метод, вызывающийся в цикле, который крутится в  App.Work()
Код App.Work() выглядит так:

void TBaseApplication::Work()
{
    while(LoopFlag){ Main(); }
}

void Main() - чисто виртуальная функция, она описывается в наследнике от абстрактного класса TBaseApplication.
При этом у базового класса TBaseApplication есть методы Start() и Stop() которые как раз и изменяют флаг LoopFlag.

Это всё сделано для того, что бы можно было использовать несколько "тел" игр в одном приложении, вот как пример:

int WINAPI WinMain(  HINSTANCE hInstance, HINSTANCE hPrevInstance,
          PSTR pCmdLine, int nShowCmd)
{
  try{
    TApplication1 App1;
    TApplication1 App2;
    TApplication1 App3;

    App1.Init();
    App2.Init();
    App3.Init();

    App1.Work();
    App2.Work();
    App3.Work();

    App1.Quit();
    App2.Quit();
    App3.Quit();
  }
  catch(TBaseException &Ex){
    Log(Ex);
  }

  return 0;
}

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

#3
2:36, 16 июля 2010

Monax-At, код:

    App1.Work();
    App2.Work();
    App3.Work();

похоже, подразумевает именно последовательное выполнение этих методов? Или есть какая-то возможность таким вот образом создать, к примеру, три окна и все их обрабатывать параллельно?

#4
2:51, 16 июля 2010

MoonStone
Нет, тут именно последовательная обработка. Просто пример как можно последовательно выполнить 3 разных "приложения" по завершению каждого.
Выведение нескольких окон в потоки, это отдельно надо делать.

#5
17:55, 16 июля 2010

Вообще двиг вызывает любопытство, но крайне мало организованной информации по нему. При современном загруженном рабочем графике выуживать подобную информацию только из заголовочных файлов хочется в последнюю очередь. Ждём более подробного описания функционала, возможностей движка, примеров. Поскольку движок, как я понял, исключительно графический, то крайне любопытно узнать именно про его скрытые механизмы работы с графикой: какая есть оптимизация вывода? Атласы? Как организована работа с ресурсами (есть ли фоновая их обработка)? Что с восстановлением устройств - каждый раз идёт подгрузка с диска или данные дублируются в памяти? Ну и великое множество других не заданных вопросов, на которые легче ответить несколькими примерами приложений. Ну или постараться написать как можно более развёрнутую документацию.
Удачи в разработке и поддержке своего детища!

#6
18:06, 16 июля 2010

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

#7
11:11, 19 июля 2010

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

K5EngineФорум

Тема в архиве.