WebGame开发总结

WebGame开发总结项目基本情况:  服务器端采用c++和c#混合开发,网络层采用c++开发,业务逻辑用c#开发。客户端采用silverlight。数据库采用mysql。GM工具用Asp.net,GM工具盒服务器通讯用wcf,基本把微软的东西都用遍了。  服务器端在开始的时候,使用了某位同事之前开发的一款服务器端引擎,改引擎曾经开源但现在基本不再更新。引擎地址:http://mmorpg.codeplex.com/  这款引擎在使用上只满足了部分需求,再加上原作者又跳槽,引擎基本是我在维护和改进,不过基本上都往里面

大家好,又见面了,我是你们的朋友全栈君。

不知不觉我们的项目开发有2年了,这两年来走了很多弯路,也收获了很多,今天在这里做一个总结。

项目基本情况:

  服务器端采用c++和c#混合开发,网络层采用c++开发,业务逻辑用c#开发。客户端采用silverlight。数据库采用mysql。GM工具用Asp.net,GM工具盒服务器通讯用wcf,基本把微软的东西都用遍了。

  服务器端在开始的时候,使用了某位同事之前开发的一款服务器端引擎,改引擎曾经开源但现在基本不再更新。引擎地址:http://mmorpg.codeplex.com/

  这款引擎在使用上只满足了部分需求,再加上原作者又跳槽,引擎基本是我在维护和改进,不过基本上都往里面加东西,改动地方不多(主要是修改小bug)。引擎的网络层采用C++开发,原先的代码有些问题,后来公司同事用c++重写了个网络层,效率上还不错,测试下来每秒能发送30w+个数据包。如果有同学想用上面说的引擎,需要自己对网络层进行改造。引擎除了网络层外,其它的部分都还ok,可以放心使用。

  客户端用silverlight是整个项目的一个大败笔,因为,微软现在已经放弃它了。虽然sl在配合我们的服务器开发很方便,但玩家和运营商的接受度还是比较低,所以,你懂的。

 研发总结:

  1.账户和玩家id,要在所有服务器里全局唯一。这点,之前在看一些其他网友的总结里有说过,但是当时真的没认为有多重要,直接用数据库的自增也可以。等游戏真正上线后才发现,这对游戏后面的运营,合服都产生了重大影响。最直接的影响,就是每次合服都需要重置玩家的id。合服需要修改的和账号id关联地方就数不清了,所以,在这里还是要和各位强调,账户的唯一id对游戏运营非常重要。

  2.游戏逻辑的脚本化或者动态更新能力。如果游戏做不到脚本化,那么,至少要利用.net的特性,实现dll的动态加载和更新。运营时不停服更新是很重要的功能,因为每次意外停服都有可能会造成5%的玩家流失。而在运营中碰上的bug,基本上是代码的逻辑错误或者数据配置错误,有动态更新功能,就能不停服更新服务器,修正这个bug。真正的因为底层崩溃的bug导致游戏崩溃的,基本没发生过(底层代码还是很稳定的^_^)。

  3.游戏死锁状态下脱离死锁的功能。虽然我们只是在偶然几次特殊情况下碰上,但是如果当时有脱离死锁功能(把当前任务强制结束,继续执行后面的任务),我们就不用重启服务器了。

  4.给策划的数据配置文件,要二维表结构,不要多维表结构。虽然xml可以表示多维表和树形关系,反序列化后可以给程序直接使用。但是,结构层次一多,策划在通过excel转xml时就容易发生问题,同时也不利于策划配置数据。所以,在定义配置文件时二维表比多维表要好。

  5.数据记录不可或缺。日志不仅仅指错误日志,还包含游戏里业务逻辑产生的数据。游戏逻辑需要记录的数据由策划定。作为程序我们也记录一些数据,特别需要关注的是每个任务执行的耗时,这个对今后的性能优化很有帮助。(注意,性能优化不仅仅只是用性能测试工具来看看那个函数耗时那么简单。因为只有真正上线后,玩家玩游戏时才能找到真正热点任务。)

  6.一定要挡住策划设计的带复杂玩法的系统。数据结构越复杂,规则越多,业务逻辑就容易混乱,混乱了,bug就产生了。所以,简化玩法对程序和玩家也有好处。

  7.敏捷开发。敏捷开发里的规则就算不能全用,下面的几点最好还是要有:单元测试,每日构建,以周为单位的迭代开发,故事(任务)墙。

运营总结:

  1.服务器的环境依赖尽可能少。在一台空白的windows2003上,我们配置服务器之前,需要上传200M左右的软件并进行安装,导致重新配置一台新服务器的时间不少于3小时,时间浪费严重。

  2.游戏的配置项要尽可能的少。这个配置是指数据库,ip,端口等,每个服务器都会不一样的配置。因为配置项分散在多个文件,导致文件安装到位后,还需要仔细的修改和检查这些文件,也浪费了不必要的时间。

  3.合适自己的服务器更新方法。一开始我们用远程登录到服务器,然后执行更新批处理的方法进行更新。但当服务器变多(>8台)时,这个流程就会变慢,也容易出错。最后用ssh执行脚本的方法对服务器进行批量更新。

  4.服务器的监控工具。监控的目的是防患于未然,例如,硬盘不足,cpu和内存异常变高,这个都是出故障的前兆。我们的游戏运行时会产生大量的日志,常常会因为配置关系,没有及时处理这些日志数据从而导致日志被撑满硬盘,游戏被迫停服。大家不要以为现在硬盘很便宜,2T的硬盘还不到600块,但是运营商给的硬盘通常是73G或者140G。

 

最后

  用.net技术开发游戏服务器的项目还是很少,虽然偶尔有几个公司用,但是和c++以及java还是没法比。中间原因很多,就不能细说。这里公布几个群,欢迎大家入群交流:

  C#游戏服务器交流  136485198  –群里面有有一个c#的网络引擎的高手

  C#游戏开发     223604735

  C#游戏服务器交流  279489850  –群主用c#实现了一个《热血传奇》的服务器

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133737.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • JSP的Servlet与Tomcat

    JSP的Servlet与TomcatJSP的Servlet与Tomcat

  • 加密Excel解密

    加密Excel解密excel文件进行加密,能够保护excel文件的内容,但是有时候我们自己设置的密码,时间久了可能会忘记,或者在网上下载的excel文件或者同事之间转发的excel文件也有加密,这对于我们来说都不是很方便了。想要解密excel文件的加密,需要用到奥凯丰EXCEL解密大师excel加密有两种,它们的解密方法也是不一样的。激活成功教程打开密码,激活成功教程它的方法目前只有通过软件找到正确密码才能进行解密,所以点击进入【找回密码】,选择一种找回方法进行激活成功教程(如果对自己设置的密码还有一些印象,可以使用组合破击..

  • flash人物原地走路,Flash制作小人走路简单动画图文教程「建议收藏」

    flash人物原地走路,Flash制作小人走路简单动画图文教程「建议收藏」很多用户都想掌握Flash中的各种制作动画的技巧,今天极限下载小编就为大家分享如何利用Flash制作小人移动的动画,是对形状补间的一次简单运用,值得一说的是形状补间做的小人比起动画补间来说要轻松简明不少,而且动作多变,不过易出现问题,用flash制作小人走路的简单动画,一起来看看吧!工具/原料flashCS3FLASH基础方法/步骤1、首先利用椭圆工具和刷子工具在舞台上画一个小人,形状自己定,反正…

  • IO与文件「建议收藏」

    IO与文件「建议收藏」IO与文件FileFile类的一个对象,代表一个文件或一个文件目录(俗称文件夹)package com.atguigu.java;import java.io.File;import java.io.IOException;public class FileTest { public static void main(String[] args) throws IOException { File file1 = new File(“hello.txt”);//相对路

  • rk3399调试ov2659(camera模块@dvp接口)–源码分析

    rk3399调试ov2659(camera模块@dvp接口)–源码分析  之前整理的“rockchipsensorcore框架”和rkisp下的v4l2框架有点像,只不过v4l2框架有点大(而且不支持摄像头热插拔)。其实接触越多Linux子系统越发觉得这些子系统处理思想大同小异。   这种"核…

  • 运维人员常用到的11款服务器监控工具「建议收藏」

    运维人员常用到的11款服务器监控工具「建议收藏」目录1、zabbix2、Nagios3、PerformanceCo-Pilot4、Anturis5、SeaLion6、Icinga7、Munin8、Monit9、SimpleServerMonitor10、SysUsage11、Pingdom1、zabbixzabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。abbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号