记些杂乱的东西

面向指令-例如input指令
加入多线程或多进程技术--使用池技术
指令可排队缓冲
可调试可中断
数据全局化,行为和数据剥离。
去掉房间的概念
地图逻辑和坐标从逻辑服务器拆分出去。
界面的标准化
交互数据精简

服务器的产数化配置化

 

防御性编程的例子
任何指令都有必要条件和非必要条件,各个条件在任何时间段内的测试点满足。

当对对象执行任何指令时如果对象销毁在程序层面是软件组织方式的错误。
在一个多线程游戏服务上对象的销毁是一个正常状态,这时对象的概念已经不是程序
组织层面的问题而是游戏架构层面的问题。

 

当系统开发人员越多系统本身日趋复杂时,因为没有任何人可以完全掌控所有系统流程,各个功能间的耦合错误将不可避免。

通常只有两种方式来解决,增加人手和使用项目经理分解需求部门的任务压力。项目的压力落到开发人员身上带来的效率提升

远远小于人为错误带来的新的工作量。使用项目经理就好比一个阀门,保证开发的质量和进度。缺点是耦合错误并没有彻底消失

并且会伴随系统复杂度的增加成爆发趋势的增加。当大于某个临界值时任何新加的功能带来的工作量可能远远小于因为新加功能产生

耦合错误解决的工作时间。解决耦合错误的工作时间会可能无限的增加直到系统开发停止。

第二是进行更完善的系统规划和设计,好的设计会大大减少功能间的耦合错误。也会带来一个问题就是设计的工作需要极高的智慧和

经验对复杂系统的掌控和反复的探索。好的设计的代价远远大于简单的使用项目经理的代价,甚至是远期的规划和容易不被察觉的工作。

极容易被管理层或普通的开发人员忽略认为其没有价值。

 

数据库的结构

 

map的特性是多线程读安全多线程写是不安全的,set和query的使用还是最方便。即便是多数据的联合查询也要比sql语句来的更清晰。实际上sql的基本结构还是map结构。游戏数据是以程序架构意义上的对象为单位组织和操作每个对象的操作是天然排队,一个对象不能同时进行多个动作所以数据是按对象进行互斥操作,表结构是把多个逻辑意义关联的数据放在一个表内和按对象查询零散的数据并不一致。进一步把对象的数据翻译成表结构哪是存盘动作去做的事情了。在内存当中按作用的对象天然排队操作对象的数据互斥锁最为接近现实情况。表已经是一种进过整理和逻辑分类的数据,不能一张表内只有一个对象的数据,而是按数据类型形成多个表,数据的表结构没有天然意义的对象概念。

你可能感兴趣的:(记些杂乱的东西)