自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

The Coding World

其实生命就是一个过程,到最后一天你啥也带不走,精彩的是你留下什么。

  • 博客(40)
  • 资源 (5)
  • 问答 (4)
  • 收藏
  • 关注

原创 游戏开发中性能优化

以下优化手段说明来自:2018腾讯移动游戏技术评审标准与实践案例6.1 背景介绍 MMORPG游戏通常玩法和系统的数量都非常多,因此代码量也是非常大的。当 出现性能问题需要优化时,如何从百万行级别代码的工程里,发现那些性能浪费 最严重的代码,进行优化后,如何检验性能优化的效果,需要从工具、原因定位 方法、优化策略几个方面入手来解决问题。6.2 性能优化基础工具要在茫茫码海中发现...

2019-10-31 23:58:52 1323

原创 基于epoll实现高性能服务器模型

2019-10-31 23:22:46 227

原创 go语言学习系列

根据go程序设计语言,记录自己学习go语言的记录。

2019-10-31 22:56:15 105

转载 游戏运营活动分类

一、活动目的首先,设计一个活动肯定是有一定目的的。不是某个部门老大拍脑袋要啥就能做啥的。游戏活动设计的好坏和游戏收入的好坏直接挂钩,不要为了出一个活动而出活动,那样没有任何意义,浪费时间也浪费精力。这里要明确几个名词:● AU:周期活跃用户(一般不用)● DNU:每日新登用户数量。● DAU:日活跃用户量。● APA:活跃付费用户量。● ARPU:每用户平均收入,可...

2019-10-31 22:44:21 7174

原创 游戏中任务系统设计

1、任务分类 游戏中任务可以分为主线任务、支线任务、日常任务、周任务、节日活动任务,其中周任务和节日任务可以根据设定的日期进行开启关闭,属于重复性任务。2、游戏条件 各类任务开启条件:1、玩家等级 2、玩家攻击力3、前置任务等等 完成条件:玩家进行任务进度是否达成 任务关闭:1、玩家领取奖励后关闭任务。2、时间过期3...

2019-10-31 21:43:29 8792

原创 游戏中邮件系统设计

一般游戏中有两种邮件,系统发给某个人的私人邮件、一个是发给全服玩家的公共邮件(比如活动邮件、补偿邮件)。1、系统发给某个人的私人邮件,很简单,玩家在线就推给玩家并加入玩家邮件列表,如果玩家不在线,就发到玩家邮箱中。2、系统是发给全服玩家的邮件,这种邮件需要单独处理,先在内存中保存,同时插入全服邮件箱中。 (1)如果玩家在线,则推给玩家,同时插入玩家邮件列表 (2...

2019-10-30 21:15:13 12965

转载 为什么要使用索引?-Innodb与Myisam引擎的区别与应用场景

区别:(1)事务处理:MyISAM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理);(2)锁机制不同:MyISAM是表级锁,而InnoDB是行级锁;(3)select ,update ,insert ,delete 操作:MyISAM:如果执行大量的SELECT,MyISAM是更好的选择InnoDB:如果你的数据执行大量的INSERT或UPDATE,...

2019-10-30 16:01:43 299

原创 cpp实现线程池-半同步半异步

Lock.h#pragma once#include <mutex>#include <condition_variable>typedef std::recursive_mutex RecursiveMutex;typedef std::lock_guard<RecursiveMutex> RecursiveLock;typedef st...

2019-10-30 00:19:49 506

原创 python简单实现代码生成

config.json{ "template_file": "templatecpp.txt", "class_name": "ConfigLoad", "config_name": "TestConfig", "settingip_name": "ServerIp", "file_name": "templatecpp.h"}templatec...

2019-10-29 23:49:21 697

原创 消息处理机制

游戏服务器消息处理机制一般mmo大型游戏都会有多个服务器进程构成,比如 gate、login、scene、world、db、node(进程节点管理也叫服务器管理服)只有gate与玩家进行交互,gate接到玩家消息会转发到不同服,不同服进行对消息处理,并返回给gate,gate在将消息发给玩家。消息通常是使用的都是protobuf。玩家请求消息,以排行为例:message rankA...

2019-10-29 19:54:27 344

原创 跳跃表代码完整实现

跳跃表实现#include <iostream>#include <stdlib.h>#include <time.h>#include <memory>using namespace std;const int MaxLevel = 10;int RandomLevel(){ int k = 1; while...

2019-10-28 23:25:32 937

原创 vector 删除元素的几种方式

//vector 删除元素方式#include <vector>#include <iostream>#include <algorithm>using namespace std;int main(int argc, char const *argv[]){ vector<int> vec; for (int i =...

2019-10-27 20:46:42 9459 1

转载 c++11 lambda总结

C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下: [函数对象参数] (操作符重载函数参数) mutable或exception声明 ->返回值类型 {函数体} 可以看到,Lambda主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable或exception声明、->返...

2019-10-27 20:27:28 141

原创 高效定时器实现方式

一般比较定时器的实现方式有几种1、升序时间链表,然后tick轮询方式2、使用时间轮的方式,主要是解决定时器过多,插入时间链表的时间会增长的情况.设定n个槽位,每个槽是一个时间链表假设有60个槽,每个槽的tick是1s,超时的设定跟槽关系就是 槽位置ts = (cur+(timeout/tick)) % 60, rotation = (timeout/tick )/603、使用最小堆...

2019-10-27 20:00:20 333

原创 cpp 可变参数模板传递任意类型参数实现

#include <iostream>#include <variant>#include <vector>#include <string>using namespace std;class Data{public: Data() {} virtual ~Data() {}};template <typ...

2019-10-27 16:43:33 915

原创 利用Snowflake 算法生成唯一id

总共64位数字//最高1位不使用,41位毫秒时间,12位中间数(6位机器码,6位进程号),10位毫秒序列SnowFlake.h#pragma once#include <cstdint>#include <chrono>#include <unistd.h>using namespace std;class SnowFlake{...

2019-10-27 00:02:58 761

原创 c++ 常用buffer实现

1、一个buffer缓存简单实现#include <cstdio>#include <cstring>#include <stdlib.h>#include <malloc.h>class Buffer{public: Buffer() { m_buf = (char *)malloc(m_incr...

2019-10-26 00:09:54 4653

原创 cpp热更

一般c++的热更有两种方式1、c++ 动态加载so的方式,也就是通过dlopen 、dlsym 、dlclose 这三个函数操作实现热更2、c++ 通过执行lua文件的形式,sol2(https://github.com/ThePhD/sol2)这是一个c++ 与 lua交互的开源库,已经支持lua5.3,c++14 c++17都已经支持了。使用lua热更其实跟下面的代码方式差不多,...

2019-10-25 16:57:00 1690

原创 kafka 安装使用及cpp kafka例子

1、下载kafka 安装包wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.3.0/kafka_2.12-2.3.0.tgz tar -xvzf kafka_2.12-2.3.0.tgz 2、下载安装librdkafkagit clone https://github.com/edenhill/librdkafka...

2019-10-23 22:57:05 2097

原创 codis 安装与部署

一个网友的教程案例:https://www.cnblogs.com/toutou/p/install_codis.html

2019-10-23 18:46:01 424

原创 docker 与 Kubernetes 教程

暂时记录一下学习地址:docker 从入门到实践:https://yeasy.gitbooks.io/docker_practice/content/Kubernetes 基础:https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/Kubernetes官网:https://kubernetes.io/zh/...

2019-10-23 18:22:34 515

原创 cpp 17 封装任意类型数据

利用c++17 variant 可以包装成任意类型数据#include <iostream>#include <variant>#include <vector>#include <string>using namespace std;template<typename T>class AnyData{public...

2019-10-23 15:28:05 996

原创 c++11 生成随机数

利用c++11 提供的随机函数,生成随机数#include <random>#include <limits.h>#include <iostream>using namespace std;template<typename T>class Singleton{public: static T& Instanc...

2019-10-23 14:57:32 341

原创 git 本地上传到github流程

因为老是忘记操作流程,特此记录一下:1、本地安装git2、ssh-keygen -t rsa -b 2048 -C "your_email@example.com",拷贝生成的公钥 (在id_rsa.pub 里面)3、打开github 网上仓库,进入setting,打开左边ssh,将公钥添加githu上4、在github上建一个仓库5、git init (本地仓库)6、...

2019-10-21 22:13:13 109

原创 python实现restful HTTP服务

这个实现http服务是基于flask简单配置环境:pip install flaskpip install flask-restfulgithub:https://github.com/Addision/Restful-Server/tree/master/RestfulServerc++ 构造一个简单post 或者get请求:std::string Http::C...

2019-10-21 22:00:45 2235

原创 python: request.json 无法获取请求body的json数据

1、http 请求header 增加Content-Type:application/json2、或者使用request.get_json(force=True)忽略mimetype

2019-10-21 09:44:40 3457

转载 Redis数据结构实现分析

面试中,redis也是很受面试官亲睐的一部分。我向在这里讲的是redis的底层数据结构,而不是你理解的五大数据结构。你有没有想过redis底层是怎样的数据结构呢,他们和我们java中的HashMap、List、等使用的数据结构有什么区别呢。1. 字符串处理(string)我们都知道redis是用C语言写,但是C语言处理字符串和数组的成本是很高的,下面我分别说几个例子。没有数据结构支撑的...

2019-10-19 01:54:33 124

原创 游戏技能系统相关不错的文章收藏

一个MMORPG的常规技能系统https://zhuanlan.zhihu.com/p/26077188技能脚本系统实现分析http://ju.outofmemory.cn/entry/152534一个MOBA游戏的常规技能系统https://zhuanlan.zhihu.com/p/26104183MMORPG游戏服务器技能系统设计:表格字段与技能程序框架https:...

2019-10-17 21:19:11 280

原创 c++开发环境常用检查工具罗列

c++ 内存泄漏检查工具valgrind (最常见的,功能很强大,但是对于比较大型的程序,使用会很卡不方便) mtrace dmalloc memwatch glibc 库提供的内存检查函数 tMemMonitor腾讯自主研发内存泄漏分析工具(win平台) c++ 性能分析工具gprof gperftoolsc++ 代码审查工具cppcheck 是一个静态代码检...

2019-10-15 21:44:11 450

转载 游戏技术精华分享之腾讯游戏学院-后端篇

游戏技术精华分享之腾讯游戏学院-后端篇腾讯游戏学院2017程序公开课 腾讯游戏学院,直接搜索,如服务器,即出现对应课程项目篇龙之谷服务器设计 《天天酷跑》手游后台属性系统设计教学篇游戏服务器架构概要 游戏开发中的数据表示 游戏服务器存储系统设计 游戏服务器并发设计 核心逻辑设计—登录系统 服务器可用性设计 服务器通信 MMORPG AI系统设计与实现 核心逻辑设...

2019-10-15 18:42:33 635

原创 说一说地图AOI 服务器实现(九宫格)

在mmo游戏中,玩家在地图上移动,如果发消息通知地图上其他玩家肯定是不合理的,因为一个地图上有很多人,如果都在移动,那么消息量会很大。为此服务器为了减少发包量,会将地图划分成一个一个的格子,然后通知相邻格子的玩家,而不是全地图的人。通常这种技术叫做AOI。通常的实现方式:1、服务器加载场景地图会将场景按照固定大小格子进行划分,并做好编号,2、通常有三个操作EnterZone、Lea...

2019-10-15 14:13:32 3364

原创 游戏开发玩家数据存储处理(个人记录)

结合个人参与的游戏项目开发,谈一下游戏开发玩家数据保存的处理玩家的数据基本上分为两份,一份是玩家下线或者永久保存的数据,通常保存至数据库(mysql或者mongodb)中,一份是保存在内存中。一般玩家数据的处理流程:(玩家不会操作非在线玩家信息)1、玩家上线 (1)新玩家上线,查询玩家是否在数据库中,没有就创建新的角色,写入到数据库中,并将玩家信息保存到内存中 ...

2019-10-15 12:49:17 7841 4

原创 游戏开发项目问题总结(优化和注意点)

优化设计:程序优化涉及到很多方面,一般有开发语言优化(随着开发语言不断升级,会有很多新语法的优化)、程序逻辑的优化(算法优化,使用不同的数据结构等)、设计的优化(比如使用某种设计模式,提高程序的可扩展性)还有一些通用做法(异步并发、并行等),这里只总结常用优化手段:1、异步并发(回调、协程)充分利用cpu时间分片,充分利用cpu的能力2、并行(线程池、多进程)利用cpu多核的性质...

2019-10-15 00:43:50 1197

原创 游戏Buff系统

游戏buff系统简单实现Effect.h#pragma onceclass Obj;enum eEffect{ E_EFFECT_ADD_HP = 0, E_EFFECT_DEC_HP = 1, E_EFFECT_ADD_SPEED = 2, E_EFFECT_DEC_SPEED = 3, E_EFFECT_MAX = 4,};/...

2019-10-13 18:16:31 1728

转载 游戏AI之初步介绍

目录游戏AI是什么? 游戏AI和理论AI 智能的假象 (更新)游戏AI和机器学习 介绍一些游戏AI 4X游戏AI 《求生之路》系列 角色扮演/沙盒游戏中的NPC 游戏AI 基本设计 智能体(Agent) 感知(Perception) 决策(Decision) 行为(Behavior) 游戏AI 需要学些什么? 有限状态机(FSM) 行...

2019-10-12 22:19:29 3449

原创 游戏中状态行为关联实现(AI)

State.h#pragma once#include <iostream>using namespace std;enum eAIState{ E_STATE_INVALID = -1, E_STATE_STAND = 1, E_STATE_WALK = 2, E_STATE_RUN = 3, E_STATE_MAX = 4,...

2019-10-12 21:30:17 189

转载 提高C++性能的编程技术笔记:总结

《提高C++性能的编程技术》这本书是2011年出版的,书中有些内容的介绍可能已经过时,已不再适用于现在的C++编程中,但大部分内容还是很有参考意义的。这里是基于之前所有笔记的简单总结,笔记列表如下:跟踪实例:https://blog.csdn.net/fengbingchun/article/details/83449625构造函数和析构函数:https://blog.csdn.net...

2019-10-12 12:19:38 119

转载 游戏地图同步AOI方法

1:灯塔法。所谓灯塔法,即将大地图划分成有限的小格子,在每个小格子中间放一个灯塔,这个灯塔管理两个队列:一个是本格子内所有的对象集合,另一个是对本灯塔感兴趣的对象集合(简称观察者)。而地图上的每个对象,维护一个视野队列:该队列为其视野范围内的所有对象,即自身感兴趣的所有对象。一个对象在地图上面运动:分为三个操作:enter,move,leave.enter:当对象进入地图的时候,根...

2019-10-11 20:09:00 1662

原创 mmo游戏系统设计

思维导图下载地址:https://download.csdn.net/download/chinabhlt/11851679

2019-10-11 14:22:41 4958

原创 常见面试手写程序

1、折半查找#include <iostream>using namespace std;int binarySearch(int* arr, int low, int high, int target){ while(low <= high) { int mid = (low + high)/2; if(arr[m...

2019-10-06 21:18:24 399

MMO游戏系统设计.emmx

mindmaster思维导图,一个mmo游戏系统设计包含一些系统展示

2019-10-11

composer工具

composer是laravel的管理程序,通过它进行laravel安装

2015-09-17

测试项目c++版

自己编写的一个小程序,包含server client通过简单协议进行交互,使用多线程及消息队列的使用,同时里面包含许多可复用的函数等。

2015-04-17

代码统计工具

可以统计c、java语言的代码量,然你方便的知道自己到底写过多少代码

2013-03-30

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

TA关注的人

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