- 浏览: 20765 次
- 性别:
- 来自: 北京
-
最新评论
-
milk_36:
很巧,最近和楼主遭遇很类似.之前我也是做手游mmorpg.现在 ...
sns的服务器架构设计 -
134564:
论坛规则小测验
明珠首月
文章列表
游戏开始准备上线前的事了。
其实游戏一直到现在, 还没有让服务器和客户端连接上。 不过出炉时间已经定到了4月中旬, 开会算了一下上线前的工作, 还真是该好好整理一下, 竟然有这么多需要做的事。
先回顾一下吧:
首先, 第一个星期,我们做的事服务器引擎。 网络层和数据层,包括事件,线程池,等等。一些基础功能。
第二个星期, 我们搭建了引擎的TCP的连接功能。 开发了web服务器, 和world服务器。实现了web服务器的时间同步, world和web的通信。 web服务器设计了几个简单的协议。
第三个星期, 开始写build脚本, 开了两天的脱产培训, 一点事没干,期间碰到了一个严重的问 ...
sns的服务器架构设计
- 博客分类:
- 服务器
今天写写网络负载的事。
之前的项目是MMORPG,mina做网络层的TCP服务器。服务器设计目标应该是5K人以下,其实一般的上线服务器设定3k的就会显示爆满了。当时除了偶尔会突然出现CPU峰值之外,可能是服务器富gc吧,一般情况下 ...
java的shutdown钩子
- 博客分类:
- 默认类别
线程内加个钩子
Runtime.getRuntime().addShutdownHook(new Thread(new ShutdownHook()));
private class ShutdownHook implements Runnable {
@Override
public void run() {
//do same
}
}
需要说明的是, 在Eclipse里直接关java的进程调用不到钩子. 需要执行一个System.exit(1);
分析"一个很伤脑的笔试题"
- 博客分类:
- 默认类别
int a=2;
int b=a+3*a++;
System.out.print(b);
b=???
我的第一反应应该是 b=9; 因为a++,操作应该会把第一个a的值变成3;
也就是说 b= 3 + 3 * 2 = 9;
结果是错的. 显示的是8.
分析一下啊:
public static void main(java.lang.String[] args);
0 iconst_2 // 将i ...
需要的几个包. 只是编译时的lib,方在文件夹compile-lib中:
两个简单的例子:
1、测试DAO方法:
思路:创建一个测试数据(不会重复创建),在测试环境中跑DAO方法,然后断言结果。
MailDAOTestCase.java:
INIT_MAIL = “xxx”; 是初始库表测试数据的SQL。
在执行每一个Test时总会先执行@before方法,执行完毕后测试方法后再执行@After方法
该方法测试mailDAO查询收邮件总量
Assert断言其值总是大于0的。
2、 测试Handler方法
思路: 利用创建JMock模拟sessio ...
2011-6-8
轩辕上线在即, 项目会议频开, bug解决力度督促不够, 任务模块分配出现问题, 有的人分配到一些不熟悉的模块, 熟悉的模块又不愿意交给熟悉者, 商城如果给商店制作者, 估计两天就能做出高质量的版本, 现在可能需要很久. 功能是能做出来, 但是bug会费些时间去解决.
分给我相位的bug, 相位我还算熟悉.
9号
今天继续内部演示
演示功能几乎没变
12月
23号
昨天又演示了, 总的来说,效果还可以. 这周主要写的是拍卖系统. 感觉还是浮躁起来了. 而且,发现好好做是真的可以学到东西的. 得静一静了.
26号
把游戏删了.
11月
4号
这周一演示,效果还不够满意,原因是稳定性和几个细节功能,演示的结果是:坐骑界面重构,商店功能新增一个拖拽买卖。另外,下一步工作计划中分配了服务器方面的功能。
昨天亚权讲解了一下服务器的结构,以horse为例,总结下来知识的主要有:
1、 数据从哪读
实现了service接口的startup和shutdown方法。在startup方法中读取了数据(主要是模板类数据)
2、 实体类和模板类,与编辑器实体的关系
项目的模板类并不是直接继承编辑器中的实体类,而是属性与之一一对应但是完全自己写,并且添加自有的属性。
3、 协议
协议应该在实现某方法之前先明确好
4、 广播
待研 ...
19号
昨天周一,大家开始根据效果图画细节了, 下午请了2个小时假。
30号
这周家里来人,很多事凑一块了。 正好原定28号的演示推迟到下月1号。给我争取了一些时间。
在开发过程中有两处感觉有所体会:
第一、同样是项目负责人,亚权比我过去时候显得更从容。 没看到他晚上加班,一般到点就走了。事情按部就班,自己对代码结构性的东西把握好。其他的都交给别人,别人加班加点他不需要非跟着赶着做,而是让人自己把握。
第二、在项目紧张的阶段,他不是以完成功能为目标,尽量把预期中重要功能完成,反而在紧急的开发过程中更加注意文件命名、源码归类等事情。遇到本来交给组员的功能也只会做些辅助工作。
这样 ...
14号
随着脚本的逐渐熟悉,对经常用的组件已经比较熟练。 不许要对现写的代码一点点的跟踪着写程序了。
不太好的是,对于游戏中依赖的部分不好处理。
15号
到今天已经一个月了, 只写了商店的UI。
时间过的很快,还没感觉已经到想象中的程度。 写代码的过程中,坐标的计算,位置的调整花了太多的时间,希望能有个布局的工具来帮助设置ui位置。
进步的地方也有,在bug的调试方面已经能很容易确定bug了,基本代码可以写一段再看效果了。
定的目标没有实现,对客户端方面还是没有太大的收获。 其中一个问题是对c的隔阂。
8号
上午进入了一下状态,没有能够写一些具体的东西。
遇到了一些问题,似乎是在多次开关UI后出现的问题,也有直接点出来就出问题的情况
总之,觉得出问题后无法清除知道问题原因。
调试也不灵。
9号
昨天一直到下午才把问题解决, 碰到的问题主要还是细节上面的。 例如在画出grid并放入gridbox后显示不出效果。 反复,重复的实验,最后才发现是设置纵坐标出的问题,设大了。所以藏起来了。
总之现在的感觉是,在开发代码的过程中对脚本信任度不高,出问题就没有哪里能觉得靠得住,而不需要去检查的。 通常都是在写了一些很小的功能就快点运行出来,如果效果不对,马上修正。
理想情况下,应该是一个界面 ...
25号宣布负责商店的开发
下午申请权限,安装开发环境。
26号研究背包系统,起初有点轻视。 到晚上基本完善了首个界面。
27号开始做操作界面和与服务器联调的工作。
下午参加信任培训。
28号开会演示
发现会议关注点不同, 感觉他们更多关注的是界面效果。 可能是想先看到界面效果。
演示结果不好。
29,30号重构了商店的UI面板,参考GUI core附带的test例子。
GUI core的test例子都跑不起来,接口被改变的现象很普遍,参考注释稍作修改就能跑起来了。
在系统的分析了GUI体系结构后对它的应用更有概念。
游戏中与客户端关联紧密的部分有:
游戏时钟一致性,
同 ...
上周使用脚本开发了两个demo, 目标是使用现有脚本实现功能, 遇到问题也采用跳过的方式对待。 这个周使用脚本开发一个更复杂的应用。希望能更深入认识游戏开发的整体流程
计划利用现有资源,完成一个横版游戏demo。
主要功能有:
1、 控制, 上下左右
2、 npc,敌人。 行走,向玩家靠拢
3、 攻击,被攻击
4、 少血效果
5、 血条
6、 背景,摄像机移动
7、 游戏UI 开始游戏、对话、游戏结束。
ps : 动手做一个游戏出来是很有成就感的. 这个小游戏在之后的很长时间都会翻出来看看, 直到完全做服务器之后才不再继续维护.
实现了两个可以运行的小例子
第一个是可以往返跑的小人,另一个是一个类似gtalk聊天的界面。
第一个比较简单,理解了循环的使用,和一种动画的实现方式。
第二个使用了结构体、数组、随机数、固态堆存储等等,但是很不理解。
目前目标是使用现有资源出东西。 放下碰到的问题,待今后理解和学习。
下午讲解了关于 分配内存的相关内容。
每一个函数都固定的有200多个内存栈。
未经Realize方法分配的内存会被覆盖,而使用了realize的对象均需要free。在脚本数据域声明的可以放在destroy方法中free 。在函数内部的应该及时free。
如果,动态内存栈用尽,内存将会出现错误。
...