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

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模块。

最新文章

  1. NHibernate之映射文件配置说明
  2. Android Studio导入项目遇到的问题
  3. java获取注册ip
  4. js实现当前导航菜单高亮显示
  5. nyoj 14 会场安排问题(贪心专题)java
  6. sqlserver数据库维护脚本大全,值得收藏
  7. ios基础篇(二)——UIImageView的常见用法
  8. ajax异步加载小例子....(通俗易懂)
  9. 使用grunt运行hintjs任务
  10. 多级列表——ExpandableListView
  11. C:打印菱形(自己的方法)
  12. DWR3.0框架入门(1) —— 实现ajax
  13. ssh整合开发
  14. python_如何统计序列中元素
  15. C语言_简单的阶乘函数
  16. 进程哪一个cpu
  17. SQL语法基础之INSEART语句
  18. 【Luogu P2664】树上游戏
  19. JS进阶之---基本数据类型,引用类型,内存空间
  20. Linux网桥模式配置

热门文章

  1. HTML5 学习笔记(五)——WebSocket与消息推送
  2. 如何向github上传文件
  3. mysql整数字段 int bigint smallint tinyint
  4. Hybrid框架UI重构之路:二、事出有因
  5. 原生JS:Array对象详解
  6. web基础
  7. wydomain
  8. android HorizontalScrollView
  9. Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
  10. Swift获取屏幕快照