开发笔记 (9) :近期工作小结
最近主要就是一些琐碎的事儿,基本上正事没啥进展。
那个模拟网络环境框架的 skynet 早在一周半前的周末就完成了。一直在等蜗牛的真框架架好。看起来那个昨天也弄好了,但是需要细节磨合需要两天,希望在年前能整合好客户端和服务器框架,过个好年。
我觉得理想情况下,这部分进度能快上几天。但我也觉得目前的进度可以接受。集成这些个不同人写的东西本来就是个麻烦事儿。怪物公司的客户端的网络部分也因为方案调整花了好几天事情修改。
我的想法是尽量隔绝客户端和服务器的具体设计方案。在知识点上不要紧密耦合。就是说只交代很少的一点通讯基本协议,然后由不同的人分别设计代码的架子,看最后再怎么合起来。这样可以保证各自的独立性。适应将来的分工和扩展。
毕竟,自己设计自己实现是最保险不太出问题的做法。尤其对于已经有多年开发经验的程序员来说更是如此。我给自己的定位就是尽量让每个人写的东西可以不出太多问题的粘在一起。
客户端那边基本可以操控一个 3d 角色在场景中走跑跳了,以 wow 为标杆的话,可以说操作手感几乎和 wow 无二。这算是完成了我们第一阶段的目标。我知道做到这点其实不算容易,小 V 同学花了不少精力。每天我都看到他是 22 点以后才离开办公室的。晚上都在调动画控制、镜头控制方面的程序。
前几天为策划设计的 DSL 经过这周的应用加了诸多需求,我的代码改了又改,发觉我终于成功的把函数式编程的理念部分灌输给了没写过程序的策划。并且他表示写的很爽,可以在我做的沙盒里测试战斗结果了。我觉得这也算是把战斗逻辑独立开的一次小成功吧。性能方面的问题等后期或许还要再考虑一下。当然,设计 DSL 的目的之一也是为了日后性能优化留下空间。毕竟如果是一个通用语言,恐怕我只能求助于类似 luajit 这样的东西了。
服务器逻辑方面,我希望年后把前面想的诸多部分顺利整合起来。还是自己先做原型,探一下水的深浅。大约就是采用一开始想采用的 agent 模式。把对单个 client 服务的代码集中写在 agent 服务中。由 agent 再和内部其它服务沟通。数据加载使用共享内存的方案,由 agent 向持久化模块发出信号,做加载或纯盘处理,通过共享内存得到结构化数据块。
逻辑处理流程中的共享状态问题,采用简单的生产消费模式。修改每个玩家数据的操作全部放在 agent 中,而其它服务,尤其是场景服务通过只读的方式消费这些(共享内存中的)数据。年后,(或者有空的话,在过年期间)花大约 10 个小时写出一个粗略的游戏场景服务器看看可能会碰到哪些当初没想到的问题。并把交给策划去写的战斗公式模块整合进来。当然,这部分的设计还需要理出一份详细的文档再开始干活。
今天去岩馆攀岩累了个半死,手都爬软了。就剩下脑子还算比较清醒。精神亢奋,正好花点时间码点字做个工作记录。
Comments
Posted by: NL | (5) January 19, 2012 02:22 PM
Posted by: daseny | (4) January 19, 2012 12:51 PM
Posted by: 00 | (3) January 19, 2012 07:57 AM
Posted by: dandan | (2) January 19, 2012 01:23 AM
Posted by: dandan | (1) January 19, 2012 01:18 AM