自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 收藏
  • 关注

原创 微信小游戏开发知识采坑汇总

最近开发了微信小游戏,其中踩了不少坑,遂记录。1.微信开放平台,微信公众平台的区别微信开放平台(https://open.weixin.qq.com/)微信登陆,微信支付在这操作微信公众平台(https://mp.weixin.qq.com)小程序,小游戏,公众号都在这操作2.微信公众平台个人开发者,企业开发者都需要实名认证。个人开发者类型一个账号只能创建一个小游戏,企业开发者类型的...

2018-10-01 01:31:07 1568

原创 微信小游戏websocket支持https/wss

原来的游戏服用的websocket,支持ws,现在做微信小游戏,需要用wss。不需要改游戏服上的任何东西,只需添加一个nginx代理服,配置nginx支持https/wss即可,客户端跟代理服用wss通讯,代理服跟游戏服还是ws通讯。1.安装nginx(1) gcc安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install ...

2018-09-27 14:22:58 5645

转载 Nginx简介及负载均衡配置

1.Nginx简介 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。2.Nginx应用场景 1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。 2、...

2018-07-30 14:16:10 654

原创 游戏服务器DDOS攻击防御概要

被攻击表现1.cpu爆满,卡顿 2.网络流入流出流量异常 3.服务器连接不上,网络异常排查步骤a.检测syn攻击 netstat -n -p -t LINUX系统中看到的,很多连接处于SYN_RECV状态(在WINDOWS系统中是SYN_RECEIVED状态),源IP地址都是随机的,表明这是一种带有IP欺骗的SYN攻击b.查看单个ip连接数 netstat -na|gre...

2018-07-18 15:15:27 1515

原创 C++游戏服务器中的http与网页前端的交互

command: server_id: command_cls: command_content: type: account: money: order_no: platform:

2018-07-10 11:54:30 797

原创 linux固定IP

按以下步骤 1.vi /etc/sysconfig/network-script/ifcfg-eth0 按以下内容修改或增加 DEVICE=eth0 BOOTPROTO=static(修改) HWADDR=00:0C:29:CA:58:06 IPV6INIT=yes(增加) NM_CONTROLLED=yes ONBOOT=yes(修改) TYPE=Ethernet UUI...

2018-07-10 11:46:40 493

转载 windows IIS7申请免费证书支持域名绑定https

最近几年,一个名为 Let’s Encrypt 的数位凭证认证机构(CA)推出免费SSL/TLS凭证服务,获得大家关注。这是什么呢?简单来说,以往想为你的网站加入 SSL 加密协议(HTTPS,也就是网址列上的绿色锁头图示),必须支付一笔费用来申请凭证,但有了 Let’s Encrypt 后将能免费申请凭证,且这一过程非常简单、自动化 证书一般分成三类: DV、OV 、和 EV ,...

2018-03-08 18:13:36 2977

原创 XLua在游戏项目中的应用

最近项目在开发游戏大厅,原来的游戏都是用unity C#开发,现在需要将这些游戏都移植到大厅。两种思路,一是游戏全部用lua重写,用tolua实现c#与lua的交互,以及热更新。思路二,在保持原有unity C#开发的游戏基础上,用XLua实现热更新。第一种方案有一套现成的比较成熟的框架,但重写成本前期相对较高;第二种方案是全新的尝试,但能够继续沿用原来的代码。考虑到开发周期因素,最后选择了XLu

2018-01-08 17:13:20 2857 9

原创 数据库sql查询优化

一些总结:1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null最好不要给数据库留NULL,尽可能的使用 NOT NULL填充

2017-12-06 17:47:05 367

原创 Linux定时清理游戏log及mysql定时任务删除游戏日志数据

游戏服务器运行过程中,每天都会产生大量log数据,包括数据库日志数据跟后台打印日志,需要定时清理一.linux定时清理log文件1.删除文件命令:find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;实例命令:find /opt/soft/log/ -mtime +3

2017-11-28 17:15:41 1524

原创 Linux下mysql数据库自动定时备份

对于网游来说,数据库中的数据尤其重要,实际运营中通常会有DBA或者运维人员对数据库中数据进行日常备份,防止服务器宕机或硬盘损坏导致的数据丢失问题。一.将数据库备份在本地1.创建备份目录cd /home/gamemkdir backupcd backup2.创建备份shell脚本vi bkDatabaseName.sh将一下内容复制粘贴#!

2017-11-24 10:32:47 1450

原创 阿里云linux服务器支持ipv6为苹果过审

苹果开始要求上架app支持ipv6,现在从服务器方面说下具体配置流程,服务器为阿里云的centos6.8,专有网络(网上的文章都是默认的经典网络,每种网络创建ipv6隧道方式不一样,这里被坑了两天,,)1.查看是否有开启ipv6,如果有inet6表示开启了,如果没有,看流程22.开启ipv6vim /etc/sysctl.confvim /etc/mod

2017-10-19 17:32:45 771

原创 Xcode打包unity发布的ipa包(个人,企业开发者账号)

只说企业开发者账号的,个人开发者账号的流程差不多,只是个别选项不一样一:肯定要有企业开发者账号,没有的先自行申请,如果你已经有一个有效的账号继续往下看二:在开发者账号中心创建Certificates 和 Profiles1.创建Certificates由于已经创建过该类证书,所以不能再次创建。点击continue后会要求上传证书请求文件,制作方法

2017-10-10 10:03:30 1240

原创 Linux设置CRT/mysql SSH登陆超时

Linux CentOS按以下操作即可:#vi /etc/ssh/sshd_config 将下面两行的注释放开,并修改ClientAliveInterval 60ClientAliveCountMax 86400注:ClientAliveInterval选项定义了每隔多少秒给SSH客户端发送一次信号;ClientAliveCountMax选项定义了超过多少秒

2017-08-14 20:09:59 428

原创 mysql时间格式转换查询

1.查找某天记录(opTime为整形的时间戳)Select onTime,FROM_UNIXTIME(opTime, '%Y%m%d') as myDay,FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()), '%Y%m%d') as nowDay from log_loginout where FROM_UNIXTIME(opTime, '%Y%m%d') = FROM_

2017-07-26 14:33:51 5817

原创 svn cleanup失败解决方案

经常遇到svn cleanup时失败的情况,提示 Previous operation has not finished; run 'cleanup' if it was interrupted,原因是上一个操作出现了异常导致。以下方法可以解决这个问题:1.下载sqllite,地址 http://www.sqlite.org/download.html,选择sqlite-tools-win32

2017-07-26 11:02:59 448

原创 c++游戏服务器http与web前端交互

html页面代码如下: command: server_id: command_cls: command_content: type: account: money: order_no: platform:

2017-07-19 15:09:45 2616

转载 unity中的web player与webGL

unity开发网页游戏,发布的时候可以选择web player跟webGL。unity5.4版本以后发布只能选择webGL,web player能用的最高版本是5.3.8。两者比较如下: Web Player    优点成熟:在开发过程中遇到问题,在论坛或其它地方可以找到答案 稳定:bug更少,经过Unity不同版本的迭代更新,web player技术稳定 轻量...

2017-07-10 16:52:57 20848 1

原创 c++中的内存字节对齐

最近游戏项目开发中遇到一个小问题,客户端unity开发用的C#,但需要调用C++中的函数进行消息加密,调用DLL中的接口时,C#中的结构体需要传入到C++中进行操作,但是由于C#中的消息头定义的比较苟且,没有提供一个跟C++中一一对应的结构体,导致加密后再解密出错,最后发现时内存字节对齐的问题,在C++消息头定义处加入#pragma pack(push, 1)#pragma pack(

2017-06-30 14:30:09 541

原创 linux云服务器与mysql的用户管理

项目开发中需要给团队不同成员分配不同账号及权限,这样有利于团队权限的管理与维护。以下是一些这方面的记录linux:1.创建用户设置密码[root@localhost ~]# useradd david[root@localhost ~]# passwd davidChanging password for user test.New password:

2017-06-27 11:40:23 810

原创 asp.net网站部署在云服务器windows server 2008上

搭建一个网站需要以下3个准备:1.域名解析2.(云)服务器3.数据库4.网站代码其中1可以可以去DNSPOD申请,同时需要进行备案,在上面就都可以完成。2用的是阿里云服务器windows server 2008 R2,去阿里云购买一个,一般400多一个月就好。3的数据库用的sql server2005,直接在云服务器上安装就行。4网站代码用的asp.net。好了,来看看发布一个

2017-06-24 12:28:17 9286 2

转载 游戏常见作弊方式及应对策略

在游戏开发过程中,游戏本身是十分脆弱的,在复杂的网络环境中,犹如一叶小舟,如果没有好的防守,可能说翻就翻了。对于游戏开发者来说,与破坏者的斗争是长期的,艰苦卓绝的,也是一个斗智斗勇的过程,力量对比往往是此消彼长。所谓是道高一尺,魔高一丈,对于游戏守护者来说,要往往要做到的是魔高一尺,道高一丈。我们不可能完全避免作弊,只是在尽量增加作弊的成本。游戏作敝的一般方式主要有以下几种常见的:

2017-06-21 10:56:58 1721

原创 mysql字符编码的设置--解决中文乱码问题

Linux:1.查看mysql server的字符编码格式如果是以上那样,说明是正确的。如果不是,按以下方法改:(centos6.5)1.找到mysql安装目录下的my.cnf2.然后拷贝my-small.cnf、my-medium.cnf、my-huge.cnf、my-innodb-heavy-4G.cnf 其中一个到 /etc/my.cn

2017-05-08 17:38:18 1791

转载 Protocol Buffer技术详解(C++实例)

一、生成目标语言代码。      下面的命令帮助我们将MyMessage.proto文件中定义的一组Protocol Buffer格式的消息编译成目标语言(C++)的代码。至于消息的内容,我们会在后面以分段的形式逐一列出,同时也会在附件中给出所有源代码。      protoc -I=./message --cpp_out=./src ./MyMessage.proto     

2016-10-14 17:41:12 789

转载 windows与linux线程同步对比

1.1        Windows线程同步1.1.1   关键代码区Critical Section所谓“关键代码区”,相信大家看名字也能理解个大概了。首先:它很关键,第二:它是代码区。之所以关键,当然目的就是每次只能一个线程能够进入;既然是代码区,那就是只能在一组拥有同样代码的线程中用。那什么情况下会用到关键代码区呢?当然是要保护多个线程都会用到的东西了,说到这里,想必你已经猜到了...

2016-10-10 16:02:47 2168

转载 TCP三次握手与四次挥手最简洁易懂的解释

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:建立连接的过程:TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:1. 客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表

2016-10-10 11:16:08 14190

转载 全球同服--coc类游戏服务器架构

首先,游戏服务器是IO密集型服务器,它的主要瓶颈在网络IO,而不是CPU,这点要记住了。所以经常服务器问题都会出现在网络IO,带宽,数据库磁盘读写上面,而非CPU上面。其实全球同服也就是大量在线嘛,比如C1000k,甚至更多。同服,只是你看起来同服,而不是他本身就在同一个服务器上,或者同一个进程上,这是完全不现实的。一个好的服务器进程,能同时承载10k的游戏玩家(还依赖于游戏逻辑复杂度)已

2016-10-08 16:06:24 5668

原创 lua全局环境变量_G小结

1.以一个模块(*.lua,后同)为单位,所有的全局变量都保存在table中,这个table放在_G中,这是一个全局空间(全局环境变量),可以简单的看作一个表。2._G中只保存全局变量,不保存局部变量。3.lua中真正存储全局变量的地方不是在_G里面,而是在setfenv(i,table)的table中,所有当前的全局变量都在这里面找,只不过在程序开始时lua会默认先设置一个变量_G=这个

2016-10-07 21:43:08 5480

转载 lua游戏服务器热更新

Lua热更新实现用途在生产环境上,总有可能出现不可预知的Bug,而通常修改好Bug仅仅又修改几句,停机维护的成本又太高,对于游戏来说,通常每个服就是单独的进程,也做不到像分布式环境下,关掉一部分机器,先升级一部分,再升级另一部分的无缝升级。这时候如果有热更就可以迅速的把Bug修复方案通过热更新进行修复,不会对用户任何的影响。例如:业务逻辑有Bug配置的数据有误需求发生变更

2016-10-07 19:00:17 6498 3

原创 lua闭包全面解析

在lua中,闭包(closure)是由一个函数和该函数会访问到的非局部变量(或者是upvalue)组成的,其中非局部变量(non-local variable)是指不是在局部作用范围内定义的一个变量,但同时又不是一个全局变量,主要应用在嵌套函数和匿名函数里,因此若一个闭包没有会访问的非局部变量,那么它就是通常说的函数。也就是说,在Lua中,函数是闭包一种特殊情况。简而言之,闭包就是一个函数加一个u

2016-10-07 16:30:07 3306

原创 lua中的weak table及内存回收collectgarbage

弱表(weak table)是一个很有意思的东西,像C++/Java等语言是没有的。弱表的定义是:Aweak table is a table whose elements are weak references,元素为弱引用的表就叫弱表。有弱引用那么也就有强引用,有引用那么也就有非引用。我们先要厘这些基本概念:变量、值、类型、对象。(1)变量与值:Lua是一个dynamically ty

2016-09-26 16:07:57 5082

原创 游戏服务器epoll网络模型简析

游戏服务器很多采用I/O线程+工作者线程池这种模型。我们知道,服务器并发模型通常可分为单线程和多线程模型,这里的线程通常是指“I/O线程”,即负责I/O操作,协调分配任务的“管理线程”,而实际的请求和任务通常交由所谓“工作者线程”处理。通常多线程模型下,每个线程既是I/O线程又是工作者线程。所以这里讨论的是,单I/O线程+多工作者线程的模型,这也是最常用的一种服务器并发模型。我所在的项目中的ser

2016-09-25 21:39:13 1717

转载 Xcode打包ipa的基本步骤

确保电脑联网,不然干什么都是扯淡!!1、关于Apple ID很简单,任何人只要跟苹果设备打交道,必须要有Apple ID。要想打包ipa,同样也必须要有Apple ID,没有的自己注册去。下面为在Xcode中添加Apple ID作为账号的步骤CA45BCA6-EB11-49FE-AB94-C8719E9B37E2.png591BFCB0-711D-43FD-B4

2016-08-16 11:48:52 1131

转载 cocos2d-x快乐的做让人快乐的游戏5:一个横版ARPG过关游戏

在第一篇《如何制作一个横版格斗过关游戏》基础上,增加角色运动、碰撞、敌人、AI和音乐音效,原文《How To Make A Side-Scrolling Beat ‘Em Up Game Like Scott Pilgrim with Cocos2D – Part 2》,在这里继续以Cocos2d-x进行实现。有关源码、资源等在文章下面给出了地址。步骤如下:1.使用上一篇的工程;2

2014-11-03 11:55:07 2850

转载 cocos2d-x快乐的做让人快乐的游戏4:像素碰撞

转自:http://blog.csdn.net/super2099/article/details/22745371This post found its way because I couldnt find the answer to one of the questions I asked on StackOverflow (http://stackoverflow.com/quest

2014-11-03 11:36:26 1664

原创 cocos2d-x快乐的做让人快乐的游戏3:cocos-2d 3.x中的物理世界

Cocos2d-x 3.0+ 中全新的封装的物理引擎给了开发者最大的便捷,你不用再繁琐与各种物理引擎的细节,完全的封装让开发者可以更快更好的将物理引擎的机制添加到自己的游戏中,简化的设计是从2.0到3.0+的一个质的飞跃。(如果用的2.x版本的cocos2d-x,看前一篇文章box2d)下面同样以一个小demo来展示一下物理引擎的运用,同时说一下我在运用物理引擎中遇到的一些小小

2014-08-08 12:05:20 2898

原创 cocos2d-x快乐的做让人快乐的游戏2:box2d基础

1.cocos2d 自带了两套物理引擎:Box2D 和Chipmunk。 两套引擎都是为2D游戏设计的,可以和cocos2d 完美整合。 Box2D 是用 C++写的,而 Chipmunk 用的是 C。 Box2D中的变量和方法名都是用全称命名的,Chipmunk中很多地方用的是只有一个字母的简写。有一些功能只有Box2D提供,Chipmunk是没有的。比如,Box2D有针对快速移动 

2014-07-05 12:44:29 1592

原创 cocos2d-x快乐的做让人快乐的游戏2:坐标系大集合

cocos2d中,涉及到4种坐标系:GL坐标系Cocos2D以OpenglES为图形库,所以它使用OpenglES坐标系。GL坐标系原点在屏幕左下角,x轴向右,y轴向上。屏幕坐标系苹果的Quarze2D使用的是不同的坐标系统,原点在屏幕左上角,x轴向右,y轴向下。ios的屏幕触摸事件CCTouch传入的位置信息使用的是该坐标系。因此在cocos2d中对触摸事件做出响应前

2014-03-23 16:16:33 1619

原创 cocos2d-x快乐的做让人快乐的游戏1:基础知识

在Cocos2d-x中开发游戏的主要逻辑和结构是:先创建场景,在场景上添加一层或多层,然后可以在指定层上添加精灵、菜单、文字等,可以为精灵、文字执行某个动作(或者移动),检测玩家触屏事件,开启任务调度执行碰撞检测和更新数据,通过导演类管理和切换场景等等。(1)导演(CCDirector)在cocos2d-x引擎中,导演类CCDirector是个单例,这里主要用来管理和显示场景的,还

2014-02-17 11:45:00 1783

原创 独一无二的GUID

GUID(Global unique identifier)是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随机数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-

2014-01-21 16:55:49 3336

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除