- 博客(395)
- 资源 (15)
- 收藏
- 关注
原创 手游服务器之数据IO进化
这里数据IO是指游戏数据存盘和读取。如果IO处理不好,服务器在IO时会导致,游戏卡顿较长的时间,严重影响游戏体验。最近服务端刚好对IO这一块做了优化,把优化过程记录一下。一 原始版刚开始立项的时候,只是做了一个Demo,加上也刚开始做服务端,只是做了一个仅仅能够测试用的服务器。当时是在每个场景对象area中添加了一个users对象,通过uid来保存每个玩家的数据。当玩家
2015-08-19 20:16:58 3540 4
原创 pomelo服务器集群中集成http服务器
项目接近尾声,这个周在弄运维相关的一些东西。运维部门需要一个http服务器,来查询服务器及玩家的一些数据。在做的过程中考虑的是两个问题:1 这个http服务器挂在什么地方?为了不污染pemelo的代码,做了一个httpServer的组件,在gate服务器中加载。因为其他服务器可能有多个,这样会重复加载httpServer组件,导致端口重复监听。2 多个area服
2015-08-19 18:04:34 4750 1
原创 五 cocos2dx(3.X)中调用OpenGL
最近几个月一直在用pomelo写后端,现在项目接近尾声,终于有时间继续研究下OpenGL相关的东西了。OpenGL本身是跨平台的,但是每个平台的开发环境并不一样,把OpenGL的代码放在cocos里面运行就方便多了。下面就是一个最简单的示例,在cocos中调用OpenGL方法,将窗口设置成蓝色。首先新建一个cocos项目,删掉不需要的示例代码, 重写draw和onDraw方法
2015-08-03 12:05:35 1890
原创 python微框架Bottle(http)
环境:win7系统Python2.7一 背景和概述目前项目中需要添加一个激活码功能,打算单独弄一个http服务器来写。因为之前的游戏中已经有了一套完整的激活码生成工具和验证http服务器,所以直接拿过来使用了。都是用Python写的,http服务器用到了Python微框架Bottle。Bottle是一个非常精致的WSGI框架,它提供了 Python We
2015-07-06 20:51:25 3848 2
原创 JavaScript中字符串去掉特殊字符和转义字符
最近游戏的基本功能都已经开发完成了,再弄登录注册这一块时,用户名需要去掉字符串中的特殊字符和转义字符,代码如下:/*** * 去掉字符串中的特殊字符 */var excludeSpecial = function(s) { // 去掉转义字符 s = s.replace(/[\'\"\\\/\b\f\n\r\t]/g, ''); // 去掉特殊字符 s =
2015-07-04 16:17:35 44256 3
原创 pomelo添加定时任务
需求:在arena服务器下增加一个rank定时任务,每一分钟对对玩家进行一次排行。首先在game-server/app/servers/arena目录下增加cron目录,在game-server/app/servers/arena/cron目录下编写具体的执行的任务的代码rankCron.js,例如:var utils = require('../../../util/util
2015-06-26 21:16:40 3990 3
原创 pomelo生命周期回调和组件添加
一 生命周期回调生命周期回调能够让开发者在不同类型的服务器生命周期中进行具体操作。提供的生命周期回调函数包括:beforeStartup,afterStartup,beforeShutdown,afterStartAll。其具体的功能说明如下:beforeStartup(app, cb)before application start components call
2015-06-23 09:56:28 2875
原创 4 Swift函数
一 函数定义func funcName(arg1:type, arg2:type, ...)->type{// function bodyreturn xxx}说明:func 函数生命关键字,函数类型->type 生命返回值类型示例:func sayHello(personName: String) -> String { let gre
2015-06-22 15:33:59 989
原创 Debian下MySQL源码安装
注:需要root权限一 数据库安装1 安装依赖cmake、g++、libncurses5-dev直接使用apt-get install安装即可2 创建好用户和目录groupadd mysql # 添加用户组useradd -r -g mysql mysql # 添加用户mkdir -p /usr/local/mysql # 创建安装目录chown -
2015-05-23 23:17:51 3041
原创 debian7中文支持
1 安装localesapt-get install locales2 选择语言包dpkg-reconfigure locales在所有的语言包选择en_US.ISO-8859-1和zh_CN.GBK。其他en_US和zh_CN打头的也选上。然后选择zh_CN.GBK为默认的LOCALE,则系统为中文界面(这里也可以选en_US.ISO,使系统为英文界面)。3
2015-05-23 22:38:24 1355
原创 JavaScript使用小技巧
1 underfined、null、0、false、NaN、空字符串的逻辑结果均为false2 从数组中随机获取成员var items = [12, 548 , 'a' , 2 , 5478 , 'foo' , 8852, , 'Doe' , 2145 , 119];var randomItem = items[Math.floor(Math.random() * items
2015-05-22 21:15:30 890
原创 服务端开发笔记三:pemelo开发过程中遇到的问题
一 登录顶号问题:首先需要弄明白的是,一个客户端只有一个pomelo实例。当用户登录之后,不退出,重启客户端。服务器检测到玩家已经登录,会将之前的登录踢下线,客户端会触发disconnect事件,在disconnect中断开pomelo链接。这样导致当前的链接也被断掉了。解决方案:目前处理方式是在disconnect中不断开链接。但这样处理有个问题,当服务器链接
2015-05-22 19:35:28 2024
原创 Google Chrome开发者工具基本使用方法
最近在用pomelo开发游戏的服务端,发现每添加一条协议都要重新运行游戏特别麻烦,就自己动手谢了一个网页的客户端,来调试协议,主要用到的工具Google Chrome浏览器的开发者工具。一 打开方式F12Ctrl+Shift+b/i/j二 主要窗口1 Consolejs代码中使用console.debug/console.log输出的信息,会显示在这里。
2015-05-22 13:06:07 4885
原创 Linux下Pomelo环境配置
Pomelo文档:https://github.com/NetEase/pomelo/wikihttps://github.com/NetEase/pomelo/wiki/Home-in-Chinese Pomelo 安装文档:https://github.com/joyent/node/wiki/Installation
2015-05-19 21:32:25 3806
原创 Node.js异步管理工具Async
async.map(['file1','file2','file3'], fs.stat, function(err, results){ // results is now an array of stats for each file});Async 是一个为 Node.js 设计的(也可以直接在浏览器中使用)工具模块,它提供了直接而强大的 JavaScript 异步功能。
2015-05-12 12:36:47 1434
原创 在cocos2d-js中使用pomelo
一 下载安装nodejs下载地址:https://nodejs.org/#nodejs默认安装了npm工具pomelo是基于nodejs,会用到很多nodejs中的代码。另外还需要用到npm工具。二 安装git参考github官网:https://help.github.com/articles/set-up-git/npm工具会用到git三
2015-05-08 16:32:14 3407
原创 Javascript函数调用隐式对象arguments
Js在函数调用时会创建一个隐式的的对象arguments。arguments包含了函数调用时实际传递给函数的参数数组对象。App = {};App.fun0 = function(){ console.log(arguments)};App.fun1 = function(arg1){ console.log(arguments)};App.fun2 =
2015-05-07 12:09:31 1923
原创 服务端开发笔记二:基于pomelo的分布式手游架构
经过了一个周的时间,新项目的基本结构已经大体确定,拿来给大家分享。一 基础概念在说明手游服务器架构之前,一下几点须知。1 我们的服务器集群分为前端服务器和后端服务器。前端服务器:负责接收前端请求,实际上只有两个gate和connector;后端服务器:负责后端服务器相互调用,如auth,area;虽然在我们写路由的时间直接写的是area中handler下文件中的方法
2015-05-06 21:06:58 4675 2
原创 pomelo的push机制(channel)和源码解读
原文来自:http://write.blog.csdn.net/postedit/45499665尊重原创,转载请注明出处,谢谢!pomelo跟客户端的通讯分为四种: request, response, notify, push。前面三种都可是使用pomelo.request实现, 这里只看push是如何实现的。一 ChannelServiceChannelS
2015-05-05 14:42:43 11396 1
原创 nodejs的进程process
process是一个全局变量,可以直接调用。process的属性,如下:version:包含当前node实例的版本号;installPrefix:包含安装路径;platform:列举node运行的操作系统的环境,只会显示内核相关的信息,如:linux2, darwin,而不是“Redhat ES3” ,“Windows 7”,“OSX 10.7”等;pid:获取进程id;t
2015-04-30 16:40:00 4278
原创 nodejs的事件EventEmitter
直接上代码:// 得到EventEmitter对象var EventEmitter = require('events').EventEmitter;var eventEmitter = new EventEmitter();var EVENT_NAME = 'some_event'; // 事件名// ***************************************
2015-04-30 14:58:36 1689
原创 szrz工具安装
sz:将选定的文件发送到本地机器rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具,windows端需要支持ZModem的telnet/ssh客户端,例如:SecureCRT优点:比ftp命令方便,而且服务器不用打开FTP服务。安装命令:sudo apt-get i
2015-04-30 11:33:54 5272
原创 vim使用手册vimtutor学习笔记
lesson 1-----------------------------------------------------------1 光标移动: kh + l j# 方向键也可以使用2 不保存退出:q!q - quit3 删除字符:x4 插入模式:ii - insert5 正常模式:ES
2015-04-28 12:52:53 1451
原创 服务端开发笔记一:服务器架构探索
一 背景在网易的第一个项目《恶魔不要啊》到现在基本结束了,马上要开新项目了。下一个项目在开启之前打算先做一个测试项目,因为目下HTML5游戏特别火,下个项目需要支持HTML5。目前国内可以选择的有cocos2d-js和egret,这个测试项目同事有这两个引擎开发,对比一下两个引擎,看看选哪个比较合适。之前一直做前端,下个项目打算转后端了,下面是我们这个测试项目用的服务器架构。
2015-04-28 12:20:13 1663
原创 四 OpenGL中的变换及示例
一 视点变换相机位置(视点)的变换void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez, GLdouble centerx,GLdouble centery, GLdouble centerz , GLdouble upx,GLdouble upy,GLdouble upz)二 模型变换模型位置
2015-04-23 19:47:15 1418
原创 三 OpenGL常见平面图形绘制代码
// 代码模板#include void displayFunc(){ glClearColor(0.0f, 0.0f, 0.0f, 0.0f);// 在RGB模式下,使用glClearColor清空之后画布的颜色 glClear(GL_COLOR_BUFFER_BIT);// 清空画布 glColor3f(1.0f, 0.0f, 0.0f);// 设置画笔颜色
2015-04-23 18:17:45 5303
原创 JavaScript面向对象
方法一:构造函数法function Cat(){ this.name = "";}Cat.prototype.showName = function(){ console.log(this.name);}var cat = new Cat();cat.name = "Tom";cat.showName();// Tom它用构造函数模拟"类",在其内部用thi
2015-04-23 10:26:40 954
原创 二 OpenGL的VS环境配置
网上有不少教程都说要把下载下来的库放到系统中,像我这样有代码洁癖的人,是不容污染系统库的,所有就有了下面这篇博客。一 下载地址:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip随便解压到一个目录中,我这里的目录是:D:\libs\glut二 环境配置1 头文件包含项目》配置属性
2015-04-21 10:08:59 1025 1
原创 一 OpenGL数据类型和简单绘制
一 基本数据类型GLenum: 用于GL枚举的无符号整型。GLboolean: 用于单布尔值。OpenGL ES还定义了其自己的“真”和“假”值(GL_TRUE和GL_FALSE)以避免平台和语言的差别。GLbitfield: 用于将多个布尔值(最多32个)打包到单个使用位操作变量的四字节整型。GLbyte: 有符号单字节整型。GLshort: 有符号双字节整型。GLint
2015-04-20 13:08:39 1343
原创 Google protocol buffer使用笔记
一 下载Google下载地址:https://developers.google.com/protocol-buffers/docs/downloads?hl=zh-CNGithub下载地址:https://github.com/google/protobuf我这里下载版本:protobuf-2.6.1.tar.gz二 编译1 解压将上面的压缩包解压到文件夹 pro
2015-04-13 20:11:36 2143 3
原创 pomelo中的基本概念
一 连接流程client到gate服务器获取connector服务器的ip和port;二 通讯类型client和server通讯分三种:1 request - response客户端发送请求, 服务器异步响应。方法:pomelo.request(url, msg, callback);参数:url: 请求地址, 完整地址三个部分: 服务器类型、 服务端相应的
2015-04-13 17:31:52 9775 1
原创 cocos2d-js中使用websocket
下面是一个简单的封装://Network.jsvar WebSocket = WebSocket || window.WebSocket || window.MozWebSocket;var Network = (function(){ var instance = null; function getNetworkInstance (){ var networkInstan
2015-04-08 12:53:46 11489 7
原创 lua正则表达式
lua中的正则表达式,规则如图:常用示例,代码如下:-- 去掉首尾所有空格function trim(s) return (string.gsub(s, "^%s*(.-)%s*$", "%1"))endlocal s = " space "local txt = trim(s)print(string.len(s), string.len(txt))
2015-04-07 16:12:13 3432
原创 cocos2d-js常用方法一览表
精灵var sprite = new cc.Sprite(res.);sprite.setPosition(, );this.addChild(sprite);文本标签var label = new cc.LabelTTF("", "", 30);label.x = ;label.y = ;this.addChild(label);数字标签var atlas
2015-03-31 17:00:10 2771
原创 lua的垃圾回收机制
垃圾回收的目的是要释放掉不再被使用变量所占用的内存。Lua的垃圾收集机制使用了名为标志和清扫(Mark-and-Sweep)的方式。默认情况下,所有变量都标记为“可回收”,回收是从根节点_G出发,可达的对象标记为“不可回收”,然后回收没有被标记为“不可回收”的变量。一 回收机制基础的Mark-and-Sweep算法是最古老的解决循环引用情况垃圾收集算法之一。顾名思义,这
2015-03-31 10:53:55 6808 1
原创 C++11之线程
设计到网络请求的地方一般都需要用到线程,C++11标准中增加了thread,下面是最简单的一个线程使用示例。#include #include void thread_task(){ std::cout << "thread task" << std::endl;}int main(){ std::thread t(thread_task);
2015-03-30 15:32:07 1047
原创 nodejs的express模块安装测试
一 安装expressnpm install express -gdg(global) 全局d(dependencies) 依赖二 安装express-generator工具安装完成之后使用express命令,报错:express command not foundsudo npm install -g express-generator三 新建工程1 新建一个pa
2015-03-25 11:38:16 2514
原创 Android开发基础之Main线程向Worker线程发送消息
一 布局<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match
2015-03-24 01:32:33 1293
原创 Android开发基础之Worker线程向Main线程发送消息
由于Worker线程不能修改UI,所以当在Worker线程中接收到消息之后,需要通知主线程来更新UI。下面是一个下例子:一 布局<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
2015-03-24 01:13:22 1659 1
原创 nodejs socket长连接服务端和测试客户端
想用nodejs写个简单的游戏服务器,正在研究中...服务区代码server.jsvar net = require('net');var HOST = '127.0.0.1';var PORT = 8080;var chatServer = net.createServer();var clientList = [];chatServer.on('connecti
2015-03-20 20:43:26 3671
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人