« 今天终于爬先锋了 | 返回首页 | 一个链接 lua 引起的 bug , 事不过三 »

开发笔记 (9) :近期工作小结

最近主要就是一些琐碎的事儿,基本上正事没啥进展。

那个模拟网络环境框架的 skynet 早在一周半前的周末就完成了。一直在等蜗牛的真框架架好。看起来那个昨天也弄好了,但是需要细节磨合需要两天,希望在年前能整合好客户端和服务器框架,过个好年。

我觉得理想情况下,这部分进度能快上几天。但我也觉得目前的进度可以接受。集成这些个不同人写的东西本来就是个麻烦事儿。怪物公司的客户端的网络部分也因为方案调整花了好几天事情修改。

我的想法是尽量隔绝客户端和服务器的具体设计方案。在知识点上不要紧密耦合。就是说只交代很少的一点通讯基本协议,然后由不同的人分别设计代码的架子,看最后再怎么合起来。这样可以保证各自的独立性。适应将来的分工和扩展。

毕竟,自己设计自己实现是最保险不太出问题的做法。尤其对于已经有多年开发经验的程序员来说更是如此。我给自己的定位就是尽量让每个人写的东西可以不出太多问题的粘在一起。

客户端那边基本可以操控一个 3d 角色在场景中走跑跳了,以 wow 为标杆的话,可以说操作手感几乎和 wow 无二。这算是完成了我们第一阶段的目标。我知道做到这点其实不算容易,小 V 同学花了不少精力。每天我都看到他是 22 点以后才离开办公室的。晚上都在调动画控制、镜头控制方面的程序。

前几天为策划设计的 DSL 经过这周的应用加了诸多需求,我的代码改了又改,发觉我终于成功的把函数式编程的理念部分灌输给了没写过程序的策划。并且他表示写的很爽,可以在我做的沙盒里测试战斗结果了。我觉得这也算是把战斗逻辑独立开的一次小成功吧。性能方面的问题等后期或许还要再考虑一下。当然,设计 DSL 的目的之一也是为了日后性能优化留下空间。毕竟如果是一个通用语言,恐怕我只能求助于类似 luajit 这样的东西了。

服务器逻辑方面,我希望年后把前面想的诸多部分顺利整合起来。还是自己先做原型,探一下水的深浅。大约就是采用一开始想采用的 agent 模式。把对单个 client 服务的代码集中写在 agent 服务中。由 agent 再和内部其它服务沟通。数据加载使用共享内存的方案,由 agent 向持久化模块发出信号,做加载或纯盘处理,通过共享内存得到结构化数据块。

逻辑处理流程中的共享状态问题,采用简单的生产消费模式。修改每个玩家数据的操作全部放在 agent 中,而其它服务,尤其是场景服务通过只读的方式消费这些(共享内存中的)数据。年后,(或者有空的话,在过年期间)花大约 10 个小时写出一个粗略的游戏场景服务器看看可能会碰到哪些当初没想到的问题。并把交给策划去写的战斗公式模块整合进来。当然,这部分的设计还需要理出一份详细的文档再开始干活。


今天去岩馆攀岩累了个半死,手都爬软了。就剩下脑子还算比较清醒。精神亢奋,正好花点时间码点字做个工作记录。

Comments

像WoW有啥意思?希望故事性也能如WoW一样就好了,可惜这点太难了。。。

InfoQ上一篇文章提到一个开源项目从Erlang迁移到C\C++,做决定的创始人这么说:
Erlang是很好的语言。非常可靠,非常容易建造出可靠、健壮的系统。但是它的生态圈太小,与其他流行的语言相比,围绕工具、性能方面的投入显得不足。我倒是希望Erlang能成为主流。 Erlang一点都不比Java差,但它的怪异语法令人敬而远之,不但阻碍了流行,也进一步阻碍了商业上的投入。我现在还是热爱Erlang的,很多关键的组件还会用Erlang来写,只不过在性能要求特别突出的部分会用得越来越少。

提供给你们的游戏作为参考,中文版链接如下:
http://www.infoq.com/cn/news/2012/01/Katz-CouchDB-Couchbase-Server

有精力的话,可以录制一些攀岩的视频~~ 放到可以看的地方~~ 哈哈~~

现在这个阶段对策划人力的需求应该很小吧,所以我觉得自己还是蛮有机会的。加油

听起来非常棒的工作感觉,也不知你们现在有多少策划了?我没有等到dingdang的回音,本命年真是开年不利呀。

Post a comment

非这个主题相关的留言请到:留言本