Войти
WarZesФорум

Пишу движок - 2 (комментарии)

Страницы: 1 2 Следующая »
#0
14:17, 26 окт. 2012

Пишу движок - 2 (комментарии)

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

#1
14:17, 26 окт. 2012

Интересно. В целом напоминает структуру моего движка (может скоро я о нем расскажу).
Насчет только одного активного модуля: как быть, если надо плавно сменить один экран друим?

Кстати сваливать все файлы в папку Engine - не очень хорошая идея.

#2
14:20, 26 окт. 2012

Оу, можно еще покритиковать по поводу кода?
EngineRenderRes и EngineInputMgr это такие себе Singleton'ы?

#3
14:41, 26 окт. 2012

имхо интерфейс стал хуже. он интуитивнее стал менее понятным (тем то, что было в первом движке)

#4
14:47, 26 окт. 2012

Sergio
> Насчет только одного активного модуля: как быть, если надо плавно сменить один
> экран друим?
Плавно, это путем рисования новых данных поверх старых с определенным эффектом? Или просто в любой момент сменить?

Sergio
> Кстати сваливать все файлы в папку Engine - не очень хорошая идея.
Для каждого модуля своя папка, а вот внутри да - весь код модуля в одной, мне так более удобней:)

Sergio
> EngineRenderRes и EngineInputMgr это такие себе Singleton'ы?
Это вообще макросы :) А так да, синглтоны.

Вообщем вот так Engine выглядит (из него и дергаются методы)

  struct EngineDesc
  {
    DescWindow wnd;
    DescRender render;
  };

#define EngineRenderDevice Engine::Get()->GetRenderDevice()
#define EngineRenderRes Engine::Get()->GetRenderRes()
#define EngineInputMgr Engine::Get()->GetInputMgr()


  class Engine
  {
  public:
    Engine();
    ~Engine();

    bool Init(const EngineDesc &desc);
    bool BeginFrame();
    void EndFrame();
    void Close();

    static Engine* Get(){return m_engine;}

    InputMgr* GetInputMgr(){return m_input;}
    RenderDevice* GetRenderDevice(){return m_render;}

    RenderResource* GetRenderRes() {return m_render->GetRenderRes();}

    EngineDesc& GetDesc() {return m_desc;}

    bool IsActive(){return m_active;}

  private:
    static Engine *m_engine;

    EngineDesc m_desc;
    Window *m_wnd;
    RenderDevice *m_render;
    InputMgr *m_input;
    Log *m_log;
    bool m_init;    // если было инициализировано
    bool m_active;
  };

Возможно, такое решение пока кривое, но с другой стороны так или иначе и InputMgr (данный менеджер не является системой ввода, он собирает события от активного окна и рассылает их дальше оповещая InputListener которых может быть много, об этих событиях, а те уже что-то делают) и RenderDevice (я тут пробовал два раза инициализировать ID3D11Device получил веселый креш:) ) должны быть в единственном роде.

HolyDel
> имхо интерфейс стал хуже. он интуитивнее стал менее понятным (тем то, что было
> в первом движке)
ну... не знаю, мне так более понятно. У меня же цель убрать как можно больше кода у пользователя оставив только то что нужно

#5
14:55, 26 окт. 2012

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

#6
14:56, 26 окт. 2012

war_zes
В любой момент сменить плавно. Например наезжанием одной сцены поверх другой.

"Более удобнее" потом может обернуться кучей проблем. Говорю по собственному опыту.

Про макросы и синглтоны - ок. Я думал это у тебя просто raw-pointer в открытом доступе лежит.

Названия методов порою просто ужасные :)
Например
.Go()

Куда идти-то? :)

#7
15:09, 26 окт. 2012

PlayerDark
> Мне кажется, что архитектура от идеальной весьма далека, так как водянистая,
> как арбуз.
У каждого свой идеал:) И я не говорю что это идеальная - например очень близкая связь с WinAPI и DX, то есть нет дополнительной абстракции и многие команды дергаются напрямую. Это конечно может быть криво, но у меня в планах нет мультиплатформы (все равно не знаю как там в unix и mac программировать)

Sergio
> В любой момент сменить плавно. Например наезжанием одной сцены поверх другой.
Да, пока такое делать нельзя. Но я об этом думал и для этого в будущем будет добавлена возможность создания подмодулей, то есть модулей внутри модуля (это еще пригодится для создания всяких инвентарей в самой игре)... Плюс некоторые эффекты можно достичь еще проще - рендером в текстуру того что было в модуле перед его сменой, и затем уже использование этой текстуры для разных эффектов

Sergio
> Например
> .Go()
хе-хе, ладно переименую в Run()

#8
17:55, 26 окт. 2012

Нда, интересно, кроме меня кто-нибудь получает удовольствие от многочасового построчного дебага? Сейчас  в течение нескольких часов искал ошибку в логике кода, обошел каждую строчку кода, а когда нашел - это прям экстаз... Вот за что я люблю возьню с кодом:)

#9
19:07, 26 окт. 2012

war_zes
> Нда, интересно, кроме меня кто-нибудь получает удовольствие от многочасового
> построчного дебага?
Я получаю.
А еще от профилирования :)

#10
21:06, 26 окт. 2012

war_zes
Окей, 20 тысяч строк кода. А что он умеет?

+ Самореклама
#11
21:07, 26 окт. 2012

Редактор ЧЕГО?

#12
21:09, 26 окт. 2012

Сцен :) + там можно несколько нод с одинаковыми мешами запечь в один нод с мешем

#13
21:19, 26 окт. 2012

А что мешает это сделать в 3ds max, а потом заимпортить, например, через FBX?

#14
21:20, 26 окт. 2012

Нежеланием покупать 3ds max

Страницы: 1 2 Следующая »
WarZesФорум

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