zoukankan      html  css  js  c++  java
  • MMORPG大型游戏设计与开发(客户端架构 part9 of vegine)

    时间在人们的生活中是多么重要的东西,如果打乱了时间,不知道这个时间会成什么样子。在客户端中,自然也有时间模块,因为不同的时间可能会处理不同的事情,特别是在追求高度自由化的同时,时间也成为了一个很重要的核心。没有时间,游戏世界将失去平衡,没有时间的游戏,会让人觉得乏味而单调。好了,我不用再强调时间多重要,想必大家已经明白了。比如游戏中的时辰变化,天气变化,这个是有时间的吗,答案是肯定的。在此次设计中,时间的接口中又提供了哪些方法呢?

    CODE

      模块time 文件system.h

    /**
     * PAP Engine ( -- )
     * $Id system.h
     * @link -- for the canonical source repository
     * @copyright Copyright (c) 2013-2014 viticm( viticm@126.com )
     * @license
     * @user viticm<viticm@126.com/viticm.ti@gmail.com>
     * @date 2014-3-19 09:35:51
     * @uses vengine time system module
     */
    #ifndef VENGINE_TIME_SYSTEM_H_
    #define VENGINE_TIME_SYSTEM_H_
    
    #include <time.h>
    #include "vengine/config.h"
    #include "vengine/kernel/node.h"
    
    namespace vengine_time {
    
    class VENGINE_API System : public vengine_kernel::Node {
    
    VENGINE_KERNEL_DECLARE_DYNAMIC(vengine_time_System);
    
     public:
       virtual void init(void*);
       virtual void tick();
    
     public:
       //取得最近20ms以来每祯平均花费的时间
       float get_looptime() const;
       //取得上一帧花费时间
       float get_lastframe_time() const;
       //根据looptime_取得运行时间
       float get_runtime() const;
       uint32_t get_nowtime() const;
       //获取帧率(FPS)
       float getFPS() const;
       //算时间差,考虑时间阙(49.71天)
       uint32_t get_difftime(uint32_t starttime, uint32_t endtime);
       //获得帧数
       uint32_t get_tickcount() const;
       //设置服务器时间
       void set_servertime(time_t _time);
       time_t get_servertime();
       
     protected:
       float looptime_;
       float lastframe_time_;
       float runtime_;
       uint32_t nowtime_;
       float FPS_;
       time_t servertime_;
       time_t localtime_;
       uint32_t tickcount_;
        
    };
    
    }; //namespace vengine_time
    
    #endif //VENGINE_TIME_SYSTEM_H_

    解释

      什么是帧率?

      帧率在客户端中至关重要,因为它影响着客户端的运行速度,即客户端的性能。

      每秒的帧数(fps)或者说帧率表示图形处理器处理场时每秒钟能够更新的次数。高的帧率可以得到更流畅、更逼真的动画。一般来说30fps就是可以接受的,但是将性能提升至60fps则可以明显提升交互感和逼真感,但是一般来说超过75fps一般就不容易察觉到有明显的流畅度提升了。如果帧率超过屏幕刷新率只会浪费图形处理的能力,因为监视器不能以这么快的速度更新,这样超过刷新率的帧率就浪费掉了。

    SIMPLE

     笑傲江湖OL中的各种活动

    总结

      时间模块里提供的方法,大家不难看出有tick(每帧处理),获取程序运行时间,当前客户端时间,以及服务器时间,这些各种时间都会影响到客户端的一些特殊的逻辑处理,我就不在这一一叙述了。下一节讲的是UI模块。

  • 相关阅读:
    古人诗词之王安石
    关于周期函数的命题
    Strum—Lioville问题
    计算反常积分
    【面积原理】计算级数和
    【洛谷P6046】纯粹容器
    【洛谷P3631】方格染色
    【牛客挑战赛48 E】速度即转发
    【CF103D】Time to Raid Cowavans
    【洛谷P4280】逆序对
  • 原文地址:https://www.cnblogs.com/lianyue/p/3909600.html
Copyright © 2011-2022 走看看