- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 如何设计游戏中的道具功能(三)
对于道具的交换,我原则上是鼓励使用另一个容器去实现。所有要交易的道具可以放在交易盒子中进行交换。#ifndef _ITEMDEALBOX_H#define _ITEMDEALBOX_H#include "Bag.h"//交易盒子//add by freeeyes#define MAX_DEALBOX_COUNT
2014-11-04 09:22:15
2352
原创 如何设计游戏中的道具功能(二)
下面来看看具体的实现代码吧。#ifndef _OBJECT_H#define _OBJECT_H//所有物品的基类//add by freeeyes#include "ObjectDefine.h"//此宏用于memcopy边界检查#define CHECK_SCOPE(a,b) if(a
2014-11-04 09:20:14
3346
原创 如何设计游戏中道具功能(一)
acejoy重新换机房花了一些时间,这一段时间无法登陆。现在终于搞好了。把春节前抽空写的一点东西补上来。以前写过一些游戏的道具设计,沉淀了几年,一直没有时间回头整理,春节前几日,好多人都回家了,工作也不这么紧张了。于是抽时间写了一个道具功能。放在这里,供大家有兴趣玩赏。这里是抛砖引玉,代码未必是最优的,但是提供大家一个思路。本以为几日就能完成,毕竟还是小看它了,因为综合了自己以前的
2014-11-04 09:19:04
11895
原创 类似ngnix的多进程监听用例
多进程监听适合于短连接,且连接间无交集的应用。前两天简单写了一个,在这里保存一下。#include #include #include #include #include #include #include #include #include #include #include #i
2014-11-04 09:17:01
762
原创 如何设计属于自己的游戏服务器(二)
很多游戏都在花费大篇幅讲解网络模型,其实,这些对于你而言,完全不必关心,现有的模型一大把。就比如PSS,你用它就可以忽略网络IO模型,直接负责处理到达的数据和如何回应就行了。那么,我们来说说游戏服务器的一些细节。以端游为例,现在的端游可以说各种花哨,各种副本,公会战,任务,锻造,跑商等等等等。。系统繁多。但是请静下心来,拨开那些层层迷雾。其实游戏服务器没什么神秘的,就几个专业的算法
2014-11-04 09:14:20
1190
原创 如何设计属于自己的游戏服务器(一)
最近一直在做开源服务器的优化以及新功能的添加,不止一次有人在群里问我,你的这个PSS做游戏服务器怎么样?确实,我也考虑过这个问题。无论自己的水平如何,好歹也在网络游戏服务器开发上走过8个年头了,从当年台湾第一的游戏橘子,到后来的自主创新的硅谷,到后来的搜狐,后来从搜狐出来又进入创业公司。一步步的走来,很想写的什么。最痛彻心扉的失败的游戏经历过,最激情的成功的游戏,海量玩家涌入的通宵也疯
2014-11-04 09:13:53
3922
原创 如何做一个日志跟踪的程序维护脚本
最近由于业务需要,需要写一个自动监控程序的脚本。这里的自动监控有点特殊,因为是别的程序,我的判定依据是这个程序的日志输出如果终止了,就会重启进程。那么如何判断日志输出终止呢,直接比较日志最新日期和当前时间是否一致(服务的日志写的比较紧密,基本1秒钟几百条)即可。于是花了10分钟写了一个简单的,配合crontab运行。代码如下,在这里记录一下。strYear=
2014-11-04 09:12:08
534
原创 如何用ACE来实现一个windows Service
好久没来写技术文章,归结原因依旧是很忙。有时间就多写一些吧。最近有朋友在我的开源服务器上做了一个windows服务版本,挺有趣,于是我想把这个功能和我的服务器做一个整合,一开始并不顺利,原因是自己对windows服务的流程不熟悉。走了一些弯路,在这里记录下来,供大家参考。其实windows下的服务和Linux下的服务大相径庭,linux下的步骤大概在7步,实际上一个function即可
2014-11-04 09:10:27
903
原创 Linux后台进程挂起通用做法
最近看了一些Twitter的一些开源项目,吸收到了很多好的想法。其实老外似乎不是很喜欢C++,C的底层比较多。不过我觉得倒是无所谓,所谓的C坑少,大多数是因为以对象的方法设计了过程式代码。毕竟,这个世界,并不是只有对象存在的方式,合理的搭配,才是能发挥最强的开发方式,还是那句话,代码不重要,重要的是想法。比如,抠出一个很通用的进程后台挂起方法,一个函数搞定,一般情况下不需要改动这里的代码,
2014-11-04 09:09:30
1354
原创 带有自动检测进程的Linux程序
最近经常写一些需要自我维护且能自动启动的程序。当然,最简单的方法是用一个shell去搞定,但是这个shell太粗俗了,如果我一个程序启动有7个进程,其中一个挂了,我就不得不重启7个所有的进程,这显然是不能让我满意的。于是开发了一个小接口,通用代码,实现对当前程序所有进程的监控,时刻监控当前程序下的所有进程,如果有挂了的,立刻重启当前进程,其他进程不动,最大程度减少损失。于是,于是,这个
2014-11-04 09:08:35
681
原创 多级缓冲体系的构建(基于PSS)
由于业务需要,最近开始实现多级缓冲的数据体系。因为是多台服务器的集群,所以,一开始考虑的是使用memcached。但是实际上,测试结果不是很尽如人意。这本身并不是memcached的问题,而是业务场景的问题。我的业务是:每时每刻都有成千上万的GPS定位数据到达服务器,用于分析,比如,比较是否进出各种区域(圆形,矩形和多边形),是否超速,是否按照路线行驶,疲劳驾驶时间,累计驾驶时间,休息
2014-11-04 09:07:47
1027
原创 工作需要,Linux下自动FTP备份并上传备份服务器的脚本
#!/bin/sh. ${HOME}/.bash_profile#备份src目录DATE=`date +%Y%m%d`FileName=/m2myw/src_bak${DATE}.gzFtpFileName=src_bak${DATE}.gztar zcvf ${FileName} /m2myw/srccd /
2014-11-04 09:06:57
711
原创 懒人用宏替换大量case语句的方法
比较懒,又不想代码失去基本的优雅,于是写了这么一个玩意儿。#define MESSAGE_FUNCTION_BEGIN(x) switch(x) { #define MESSAGE_FUNCTION(x,y) case x: { y(x); break; }#define MESSAGE_FUNCTION_END }void Do_1(int
2014-11-04 09:05:55
1278
原创 关于大量短链的内核参数优化
客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端 口号,所以新的连接没办法绑定端口,即“Cannot assign requested address”。是客户端的问题不是服务器端的问题。通过netstat,的确看到很多TIME_WAIT状态的连接。从网上找了解决办法:执行命令修改如下2个内核参数 sysctl -w ne
2014-11-04 09:04:47
539
原创 中间件thirft的Linux部署与运用
前一段时间一直在想一个问题,一般的web服务器是如何和当前我的C++服务器进行通讯的。当然方法有很多,比如我现在正值使用的gsoap,对于远程web主机来说,我只要提供一个内网的IP,它们就可以像调用webServer那样直接调用。但是也遇到过几起因为gsoap组件出现的诡异问题,最奇怪的是,机房服务器有几次存储挂掉居然是因为goap崩溃了?虽然系统管理员给我的日志以及解释很站不住脚。
2014-11-04 09:02:32
700
原创 关于MRu算法的实现研究
这两个月家里事情比较多,公司里负责写战斗和任务模块,身体也不是很好,导致自己在这里的时间所余无几,ICE的文章和我的开源服务器现在都处于暂停的状态。不过我并不想荒废这里,我会继续写下去。最近在群里看有朋友讨论了mru算法,再看ICE里面,有一种类似mru的组件,很有兴趣的看了一下,发现ICE里面的代码貌似只提供了一个框架算法框架,扔东西和加载东西完全凭借自己的算法去实现。想到自己也要用到这样的类,
2011-06-30 09:55:00
2272
原创 内存池设计研究与应用
今天在群里看见有人在讨论内存池的问题,呵呵,想到自己也写过一些内存池,在这里抛砖引玉。其实内存池的作用大家也知道,一般是解决大量的new和delete频繁操作引起的内存碎片,效率是一方面,另外长时间后的安全性也是一个问题。曾经看过《C++应用程序性能优化》里面的内存池结构,也看过ACE自己的自增式内存池结构,感觉每个都有自己的优点。但是大体思路都是一致的,那就是一次new出一大
2011-06-30 09:54:00
1259
原创 Reactor和Proactor模式下带有自动重连机制的客户端实现
最近终于有点时间,趁着重写服务器重连部分,重新写了一个支持链路重连机制的客户端模块。先说Reactor的,Reactor自动重连比较简单,因为是同步的。为了实现以上功能,首先要添加一个管理类(CClientReConnectManager),管理所有已经连接和还没有连接的对象。然后添加一个单元类(CReactorClientInfo),这个单元类负责管理指定链接对象的信息。CClientReCon
2011-06-30 09:53:00
1128
原创 多级缓冲的服务器数据服务机制实现(二)
昨天,写了一篇关于多级缓冲服务的文章。那么今天,我们就来点实际的代码,完成以上的所有功能吧。按照昨天的思路,我需要两个程序,一个是和客户端通讯的程序,这个程序我们姑且认为它就是游戏服务器,那么,与之对应的,还有一个专门负责和后来存储介质通讯的服务进程。既然要做这道菜,先看看我们需要点什么佐料。(1)一个共享内存的类,这个类提供给我们与共享内存交互的功能,对外的接口需要,获得一个
2011-06-30 09:51:00
1347
原创 多级缓冲的服务器数据服务机制实现(一)
很早就想写一篇这样的文章,可是第一工作较忙,第二,想用自己的开源服务器作为蓝本实现。由于自己前一段时间较忙,再加上自己也懒了一下,决定在这里补上,提供给大家参考。作为我将写出的"网络游戏服务器核心服务开发"的一部分(等我慢慢原创出来),希望通过这些文章,你可以大概了解以及学会如何开发一个高效的游戏服务器体系,并成组合在胸,其实游戏服务器做到极致就是简洁高效,减少复杂,这也是我开发的信条之一,如果你
2011-06-30 09:50:00
1453
原创 MongoDB研究和实践
最近NoSQL炒的如火如荼,最近在为公司搞一个类似邮件的信息系统。BOSS需要大量用户用手机通过这个信息系统进行交流,并且还必须能实时查询。因为我的系统采用了ICE方式部署,可以有效的分解逻辑部分,于是在寻找一种能够配合分布式存储模式的数据存储模式。我的需求是,一种基于KV结构的信息系统,key永远是用户ID,而Value我需要是一个数据结构,并支持我对这个结构的修改和增删。最后经过多方比较,我决
2011-06-30 09:48:00
947
原创 Lua与C++的逻辑舞步
以前写过一篇Lua的基础文章,属于基础的技术普及贴,具体请参阅精华区。以下的文章,希望你能稍微了解一些Lua的基础知识,再来阅读更有益处。在网上,很多人都在说Lua适合做游戏,但是怎么做?说的却知之甚少,更多的是长篇累牍的基础贴。脚本与C++的结合,如何能达到较高的效率?什么样的数据适合Lua去表现?什么样的数据适合C++去处理?怎么利用两者的关系?在这里我给出一种解决方法。很多人说,你可以把C+
2011-06-30 09:46:00
1857
3
代码行数统计器,可以统计一个工程下的代码行数。
2009-07-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人