Menu

tyo Engine Revolution 开发日志2

换了份工作,最近的事情比较多。不过周末还是照例努力的完成自己的引擎。最近看了不少3D引擎,发现了tencent的AGE挺不错的,这款次世代引擎和配套编辑器对得起几年的开发时间,我觉得还是非常值得的。于是想想自己对于次世代的引擎的追求,OH NO,都是天方夜谭,不知道自己什么时候才能理解其中开发的一些技巧和弄懂很多开发的疑问。

最近在公司的工作就是优化渲染引擎,然后打造全新的粒子系统。然而,最近都是逆向和动态调试关于游戏BUG的问题,帮助大家一起分析和修改BUG。这样的工作会花费大量的时间,基本上都是和汇编打交道。好嘛,也算是对自己的一种锻炼吧。

说说自己的引擎。目前将要搞定的就是Input这个模块。这个模块主要负责的工作我定义为如下:

1.鼠标事件的响应
2.键盘事件的响应
3.各种输入设备的响应
4.维护整套输入的框架
5.维护几套表。
6.一些特殊的操作,比如触屏,滚轮等。
7.就是一些连续组合键的设计,这个功能估计会放到以后做,不过都会做到这个模块。

然后就是对渲染框架的调整:

嗯,针对渲染框架,将去掉直接绘制的模块,只提供Game Object的数据往渲染列表中添加,于如何渲染,不再暴露给外层。不过,我也可能提供2种方式。然后就是单独的后期处理,POST EFFECT相关的处理,因为直接采用DX11,估计整套流程会比DX9相对于简洁。

这个是目前版本Input模块的接口。


namespace tyoEngineRevolution
{
  namespace Input
  {
    class _tyoER_Input
    {
    public:

      virtual _tyoER_void _tyoER_call Initialize() = 0;
      virtual _tyoER_void _tyoER_call Free() = 0;

      virtual _tyoER_int _tyoER_call GetMousePosX() = 0;
      virtual _tyoER_int _tyoER_call GetMousePosY() = 0;
      virtual iPoint* _tyoER_call GetMousePosition() = 0;
      virtual _tyoER_void _tyoER_call SetMousePosition( iPoint _pos ) = 0;
      virtual _tyoER_void _tyoER_call SetMousePosition( _tyoER_int _iX , _tyoER_int _iY ) = 0;
      virtual _tyoER_int _tyoER_call GetMouseWheel() = 0;
      virtual _tyoER_ubool _tyoER_call IsMouseOver() = 0;
      virtual _tyoER_ubool _tyoER_call GetEvent( _tyoER_InputEvent* _pEvent ) = 0;
      virtual _tyoER_ubool _tyoER_call GetKeyState( _tyoER_int _iKey ) = 0;
      virtual _tyoER_ubool _tyoER_call KeyDown( _tyoER_int _iKey ) = 0;
      virtual _tyoER_ubool _tyoER_call KeyUp( _tyoER_int _iKey ) = 0;
      virtual _tyoER_ubool _tyoER_call KeyPress( _tyoER_int _iKey ) = 0;
      virtual _tyoER_xchar _tyoER_call GetKeyName( _tyoER_int _iKey ) = 0;
      virtual _tyoER_int _tyoER_call GetKey() = 0;
      virtual _tyoER_int _tyoER_call GetChar() = 0;
      
      virtual _tyoER_void _tyoER_call UpdateMouse() = 0;
      virtual _tyoER_void _tyoER_call BuildEvent() = 0;
      virtual _tyoER_void _tyoER_call ClearQueue() = 0;
      
      
    };
  }
}

Categories:   Garfield's Diary

Comments