- 博客(54)
- 资源 (2)
- 收藏
- 关注
原创 net.sz.framework 框架 ORM 消消乐超过亿条数据排行榜分析 天王盖地虎
序言 天王盖地虎, 老婆马上生孩子了,在家待产,老婆喜欢玩消消乐类似的休闲游戏,闲置状态,无聊的分析一下消消乐游戏的一些技术问题;由于我主要是服务器研发,客户端属于半吊子,所以就分析一下消消乐排行榜问题;第一章消消乐排行榜大致分为好友排行榜和全国排行榜;好友排行榜和全国排行榜的其实是重合的只是需要从全国排行榜中提取出来而已;那么就需要记录所有玩家的通关记录已进行
2017-07-30 10:35:27
4157
3
原创 加密算法-对称加密,支持解密;
前言目前市面上的加密算法,有很多,什么AES,什么MD5,等,有的能反解密,有的不能反解密;加密的目的是为了增加盗取数据的难度。比如密码;增加截包数据分析难度;不在是明文发送;思路为了前端(u3D,C#代码)和后端java代码,统一版本保持高一致性;保证不出错,加密过程便于自己控制;我是一个假程序猿,喜欢自己制造代码!最初思路是,采用base64位对字符串进行一次处理,但是,我们都
2017-07-30 10:35:24
4753
4
原创 net.sz.framework 框架 登录服务器架构 单服2 万 TPS(QPS)
前言无论我们做什么系统,95%的系统都离不开注册,登录;而游戏更加关键,频繁登录,并发登录,导量登录;如果登录承载不起来,那么游戏做的再好,都是徒然,进不去啊;序言登录所需要的承载,包含程序和数据存储瓶颈,统一都可以看成io瓶颈;我的登录服务器,操作只是做登录注册和返回服务器列表功能(只要其他负载均衡不讲解,软负载,硬负载);登录服务器,分不同渠道登录验证,本地渠道验证,如果登录账户
2017-07-30 10:35:21
2403
原创 net.sz.framework 框架 轻松搭建数据服务中心----读写分离数据一致性,滑动缓存
前言 前文讲述了net.sz.framework 框架的基础实现功能,本文主讲 net.sz.framework.db 和 net.sz.framework.szthread;net.sz.framework.db 是 net.sz.framework 底层框架下的orm框架,仿照翻译了hibernate实现功能,虽然不足hibernate强大;但在于其功能实现单一高效和高可控性;net.
2017-07-30 10:35:18
1310
原创 net.sz.framework 框架 轻松搭建服务---让你更专注逻辑功能---初探
前言 在之前的文章中,讲解过 threadmodel,socket tcp ,socket http,log,astart ,scripts;都是分片讲解,从今天开始,将带大家,一窥 net.sz.framework 框架;net.sz.framework 框架分为java版本和C#.net 版本,两种语言版本保持高一致性;net.sz.framework 能做什么呢?net.sz.fr
2017-07-30 10:35:15
826
原创 微服务--webapi实现,脱离iis,脱离tomcat
前言微服务,顾名思义就是微小的单一的服务程序,单一流程,单一发布,开发和部署都可独立;这是我的理解;但基于web的服务,不管是webservice还是webapi等类似的服务都需要基于iis或者tomcat,本文介绍重点绕过iis或tomc部署基于http服务明文程序;所谓明文程序就是源码发布;当然你也可以不必是源码发布,这个可以个人需求;序言请不要问我为什么不直接使用web现成的架
2017-07-30 10:35:13
2696
原创 3秒钟完成50万条并发日志 文件写入
前言目前本人从事 JAVA开发 之前讲过《你的日志组件记录够清晰嘛?--自己开发日志组件 Logger》 日志文件,当你是羡慕java下面的log4j,打印日志够清晰,可以很清晰定位打印日志所在文件,行号等;于是尝试了重写了日志组件来模拟清晰打印;序言最近和群里大佬们研究游戏服务器架构的时候,讨论像魔兽,完美国际等游戏世界场景无缝地图实现方案;讨论两周后开始动手BB自己的服务器架构已经线
2017-07-30 10:35:10
5120
3
原创 游戏中战斗伤害范围-弹道飞行
回顾前瞻在上一篇文章《游戏中战斗伤害范围攻击计算完整全版》我们计算了扇形,多边形,圆形,等伤害范围获取。但是前天的多边形规整计算中,我发现一个问题,就是在获取多边形判断的时候,总有验证不足的情况,也就是未包含出现!最后百度几何原理,得到一个算法1 /*我们可以把多边形可以看做是一条从某点出发的闭合路,可以观察到在内部的点永远都在路的同一边。2 给定线段的两个点P0(x0
2017-07-30 10:35:07
1148
原创 游戏中战斗伤害范围攻击计算完整全版
2017-03-24修正在以前版本中有一个错误之处需求修正,当坐标朝向是4,5,6的时候算出来的角度是错误的;导致这个时候攻击怪物的时候矩形,扇形都无法攻击;现在附录最新修正值 1 case 4: 2 case 5: 3 case 6: 4 case 7: 5 c
2017-07-30 10:35:04
3364
原创 更加强健的线程模型,解决线程卡死,退出异常情况
线程模型 1 package net.sz; 2 3 import java.util.Random; 4 import java.util.concurrent.ConcurrentLinkedQueue; 5 import org.apache.log4j.Logger; 6 7 /** 8 * 9 * 10 * author 失足程序员11 * mail
2017-07-30 10:35:01
850
原创 存在即合理,重复轮子orm java版本
1,业务描述前序?需求来源于,公司的运营部门。本人所在公司(私营,游戏行业公司),从初创业,我就进入公司,一直致力于服务器核心研发。公司成立块3年了,前后出产了4款游戏,一直在重复的制造公司游戏对应的游戏后台管理工具(web版本);今年年初公司成立里运营部门,不仅开始运营公司自己产品也代理了其他公司产品。越来越觉得做出统一的平台管理和游戏后台管理工具迫切需求;既然有需求,就有市场,就需要研
2017-07-30 10:34:58
1129
原创 游戏里12方向,任意方向计算正前方矩形规则
此文章意在记录我是如何处理游戏里面特殊技能需求处理方案,之前做游戏很多年,技能打出去都是扇形,圆形为主的攻击范围获取伤害;然后昨天策划提出一个需求,从玩家当前坐标点开始打出正前方一个矩形返回获取伤害值计算; 1 // 2 public static int getATan(float x1, float y1, float x2, float y2) { 3
2017-07-30 10:34:55
835
原创 我是如何设计游戏服务器架构的
前言 现在游戏市场分为,pc端,移动端,浏览器端,而已移动端和浏览器端最为接近。都是短平快的特殊模式,不断的开服,合服,换皮。如此滚雪球!那么在游戏服务器架构的设计方面肯定是以简单,快捷,节约成本来设计的。来我们看一张图:这个呢是我了解到,并且在使用的方式,而PC端的游戏服务器而言,往往是大量的数据处理和大量的人在线,一般地图也是无缝地图的完整世界观,所以不同的程序都是独立的进
2017-07-30 10:34:53
9148
2
原创 游戏中精灵对象的属性功能设计
我们大部分it人事可能都玩过游戏,且不止一款游戏,都知道游戏有属性;在游戏中,包含哪些属性,时候数值策划而定;属性牵涉三个大问题,1,属性不管是前期还是后期变更可能会非常大;2,存在不同的属性系统,比如人物基础属性,坐骑属性,宠物属性等;3,属性计算;属性最终计算; 第一条和第二条,是非常息息相关的功能块设计;需要做到统一,方便,且可扩展性设计;有且是对策划在配置各
2017-07-30 10:34:50
1526
原创 看我是如何处理自定义线程模型---java
看过我之前文章的园友可能知道我是做游戏开发,我的很多思路和出发点是按照游戏思路来处理的,所以和web的话可能会有冲突,不相符合。来说说为啥我要自定义线程模型呢?按照我做的mmorpg或者mmoarpg游戏划分,线程被划分为,主线程,全局同步线程,聊天线程,组队线程,地图线程,以及地图消息分发派送线程等;一些列,都需要根据我的划分,以及数据流向做控制。游戏服务器,主要要做的事情,肯定
2017-07-30 10:34:47
654
原创 面试和面试者如何保持心态
我(面试官):你先自我介绍一下。面试者:我叫xxx。xxxx经验。。xxx上线项目经验。xxxxxxxxxxxxxxxxxxxxxxx目前在职状态,但是公司游戏研发服务器主程。我:那你讲一下,你们线程模型,线程控制,数据流向如何处理的。面试者:他不知道怎么讲。我:如果让你设计一个组队系统,你改如何考虑?面试者:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
2017-07-30 10:34:44
649
1
原创 谈谈枚举的新用法——java
问题的由来前段时间改游戏buff功能,干了一件愚蠢的事情,那就是把枚举和运算集合在一起,然后运行一段时间后buff就出现各种问题,我当时懵逼了!事情是这样的,做过游戏的都知道,buff,需要分类型,且包含是否需要切换场景删除,下线删除,死亡删除等信息,好吧我就把这个做到一起了用一个字段标识!问题就出来了;/** * * * author 失足程序员 * mai
2017-07-30 10:34:42
732
原创 介绍,介绍我的底层支持库 Net.Sz.CFramework
Net.Sz.CFramework 是我自己的底层库,是经过验证的底层库。包含:socket tcp协议,socket http协议线程池,线程模型,任务模型,定时器模型,日志模块脚本模块一些辅助类接下来一一介绍这里是华丽丽的分割线辅助类功能块 1 // 摘要: 2 // 获取当前时间和 1970-01-01 00:00:
2017-07-30 10:34:39
941
原创 线上bug的解决方案--带来的全新架构设计
缘由本人从事游戏开发很多年一直都是游戏服务器端开发。因为个人原因吧,一直在小型公司,或者叫创业型团队工作吧。这样的环境下不得不逼迫我需要什么都会,什么做。但是自我感觉好像什么都不精通。。。。。好了好像偏题了!回归正题现在公司是做手游开发,java服务器 + U3D做客户端的mmo手游,仿魔兽世界!做软件的都知道一个蛋疼的事情,那就是线上Bug。但是做服务的人更清楚另一个
2017-07-30 10:34:36
852
原创 生成随机id对比
生成随机id最近公司的项目游戏生成的随机不重复id,重复概率有点大,代码如下: 1 private static int id = 0; 2 public static int serverID = 0; 3 private static final Object obj = new Object(); 4 5 public sta
2017-07-30 10:34:34
1063
原创 我的EF功能
由来话说这个功能想法由来与java的Hibernate功能,我需要一个类和数据库映射,很简单的写一个实体类简单配置一下就ok了,很是方便, 1 package com.game.po.log; 2 3 import com.game.engine.utils.Config; 4 import com.game.po.player.Role; 5 im
2017-07-30 10:34:31
429
原创 一步一步开发Game服务器(五)地图寻路
目前大多数使用的寻路算法有哪些?目前市面上大部分游戏的寻路算法是A*,或者B*。A*通常所说的是最优算法也就是寻找最短路径。B*碰撞式算法也就是,也就是不断的去碰撞能走就走,不管是不是绕路。当然以上都是我的理解。我这里只描述一下A*算法的一部分。通常A*算法分为四方向和八方向计算。现目前的游戏方式来看不管是2D还是2.5D,还是3D,几乎都采用8方向方式,也有游戏是采用360°
2017-07-30 10:34:28
2958
原创 一步一步开发Game服务器(四)地图线程
时隔这么久 才再一次的回归正题继续讲解游戏服务器开发。开始讲解前有一个问题需要修正。之前讲的线程和定时器线程的时候是分开的。但是真正地图线程与之前的线程模型是有区别的。 为什么会有区别呢?一个地图肯定有执行线程,但是每一个地图都有不同的时间任务。比如检测玩家身上的buffer,检测玩家的状态值。这种情况下如何处理呢?很明显就需要定时器线程。 我的处理方式是创建一个线程的时候根据
2017-07-30 10:34:25
779
原创 java netty socket库和自定义C#socket库利用protobuf进行通信完整实例
之前的文章讲述了socket通信的一些基本知识,已经本人自定义的C#版本的socket、和java netty 库的二次封装,但是没有真正的发表测试用例。本文只是为了讲解利用protobuf 进行C# 和 java的通信。以及完整的实例代码java 代码 svn 地址,本人开发工具是NetBeans 8.0.2 使用 maven 项目编译http://code.taobao.org/s
2017-07-30 10:34:23
545
原创 我看不下去鸟。。。。Java和C#的socket通信真的简单吗?
这几天在博客园上看到好几个写Java和C#的socket通信的帖子。但是都为指出其中关键点。C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的。本人使用的是自己开发的一套组件。Java socket通信的组件也有很多,常用的大多数都是用的mina或者netty。游戏行业使用也是居多。关于socket的底层写法,实在太多,我就不在BB。这里我想说
2017-07-30 10:34:20
401
原创 你的日志组件记录够清晰嘛?--自己开发日志组件 Logger
现在现成的日志组件实在是太多太多,为什么我还需要自己实现呢?????需求来源于java的log4j,[07-31 16:40:00:557:WARN : com.game.engine.thread.ServerThread:117] -> 全局排行榜同步执行器-->ServerThread[全局排行榜同步执行器]执行 执行时间过长:23简单的一句日志信息,但是我却可以很清晰的定位日志
2017-07-30 10:34:17
286
原创 你的程序支持复杂的时间调度嘛?如约而来的 java 版本
你的程序支持复杂的时间调度嘛? 这篇文章介绍了时间适配器的c#版本,是给客户端用的,服务器自然也要有一套对应的做法,java版本的[年][月][日][星期][时间][*][*][*][*][*]这样利于分割,配置,清晰。然后就是验证,时间在不在配置的时间开发内?当然想到的*肯定是默认支持所有的[2015][7][*][*][10:00-11:59]这个格式,表示2015
2017-07-30 10:34:14
246
原创 你的程序支持复杂的时间调度嘛?
时隔两个月了,这段时间,游戏筹备正式上线,根据游戏平台数据反馈,反响还不错。但是牵涉出新问题,就是活动。活动功能本身很简单。问题就在于,时间配置上,什么时间段开发活动。配置多种多样。比如,没做星期2,4,6活动。每周的周六,周日,活动。指定月份和日期的活动。配置简直是天花乱坠了。。。这尼玛怎么搞????那么有么有万能的配置方式呢?首先,我能想到的配置肯定是字符串格式的。必须包含,年
2017-07-30 10:34:12
353
原创 说说溢算那些事~!你的计算方式溢算了吗?
游戏快正式上线了,今天发现一个bug,让人哭笑不得。数据计算溢出了;玩家充值的元宝变为了0;这个可是一件大事,毕竟谁都担不起这个责任啊;来说说原因吧。开发语言是 java 工具是 netbeans ide 8.0.2玩家对象有一个属性是 gold 是int类型的;玩家充值的时候计算方式如下. int gold = 20000;//玩家原有的 in
2017-07-30 10:34:09
476
原创 让你的web程序“动”起来。
看到这里你可能会问,asp.net程序本身就是动态网站,还要如何动?我这里所谓的动起来,是指动态加载,动态更新。好吧可能你又要问了动态网站本来就是动态加载,动态更新的。asp.net的程序依附于IIS(当然不是唯一)运行的,有代码的更新,只需要拷贝到对应的目录下面。刷新界面就加载最新程序了。无需重启IIS。但是我这里所说的是动态加载脚本。这里的脚本是C#的类文件(*.cs)文件动态编译加入
2017-07-30 10:34:06
3127
7
原创 你程序会做饭嘛?我能!
别嘲笑这个标题。我想了很久。有点“投机取巧”的功效吧!程序当然不能做饭。之前的我们的系列文章,介绍, 多线程执行,任务派发。定时器执行。脚本加载。程序状态机。这些都是零零散散,或者说都是模块化介绍,以及模块测试用例。那么今天我们就来模拟正常程序流程。使用上述的功能性代码完成流程。当然今天的测试用例程序肯定和做饭有关。今天要做的是模拟一个餐厅的流程。完成 客人入座 -> 点菜
2017-07-30 10:34:04
444
原创 Game中的状态机
我相信大多数博友都会玩游戏。玩游戏,牵涉到状态包含 登陆,正常,死亡,复活,下线,在上面状态的基础上。同时包含 站立,走动,跑动,不可移动施法状态, 战斗状态,通常这是三个不同的分组。也就说可以同时存在的状态和不可同时存在的状态。通常情况下也许你会这么定义,//分组1public bool 登陆 = false;public bool
2017-07-30 10:34:01
263
原创 一步一步开发Game服务器(三)加载脚本和服务器热更新(二)完整版
上一篇文章我介绍了如果动态加载dll文件来更新程序 一步一步开发Game服务器(三)加载脚本和服务器热更新可是在使用过程中,也许有很多会发现,动态加载dll其实不方便,应为需要预先编译代码为dll文件。便利性不是很高。那么有么有办法能做到动态实时更新呢????官方提供了这两个对象,动态编译源文件。 提供对 C# 代码生成器和代码编译器的实例的访问。 CSharpCodePr
2017-07-30 10:33:58
458
原创 初来乍到 Java 和 .Net 迭代器功能
最近有一个需求是这样的,根据键值对存储类型数据,也算是数据缓存块模块功能设计。一个键对应多个值。每一个键的值类型相同,但是每个不同的键之间类型不一定相同。 Java 设计如下HashMap>java把数据添加到集合中TestIterator tIterator = new TestIterator(); ArrayList objs = n
2017-07-30 10:33:55
241
原创 Java 多线程 自定义线程辅助
之前的文章我介绍了C#版本的多线程和自定义线程处理器。接下来我们来看看Java版本的呢java 的线程和C#的线程有点区别,java的线程没有是否是后台线程一说,具体原因是java的线程是jvm的c++代码模拟线程,而C#的线程也是C++模拟线程。但是区别在于C#的线程会基于系统的线程。C# 的 Thread.IsBackground;这里唯一的区别在于,C#开启线程如果是非后台线
2017-07-30 10:33:52
396
原创 辅助功能性代码,研究和记录代码。
C#下面能产生每秒65535个我无重复ID,但是毫无规则可言。 1 private static int id = 0; 2 3 private static int serverID = 1; 4 5 /// 6 /// 下面这段代码在一秒内,只能生产 65535 个操过了生产是会重复ID 的 7
2017-07-30 10:33:50
445
原创 一步一步开发Game服务器(三)加载脚本和服务器热更新
大家可能对游戏服务器的运行不太理解或者说不太清楚一些机制。但是大家一定会明白一点,当程序在运行的时候出现一些bug,必须及时更新,但是不能重启程序的情况下。这里牵涉到一个问题。比如说在游戏里面,,如果一旦开服,错非完全致命性bug,否则是不能频繁重启服务器程序的,你重启一次就可能流失一部分玩家。那么就牵涉到程序热更新修复bug功能。今天就来扒一扒热更新的事情。java和C#的加
2017-07-30 10:33:47
447
原创 一步一步开发Game服务器(二)登陆2
上一篇文章,讲解了简单的登陆情况。接下来我们继续讲解登陆模块。在正常的游戏服务器情况下。在尚未登录前可以查看服务器大区情况,登陆后也可以查看服务器大区情况,然后选择大区服务器。进行登录操作。这样的情况就需要我们有一个登录服务器来负责,目前大区服务器的状态,是正常。拥挤,爆满。还是停服维护。那么这样登录服务器,如果进行控制和输出呢?如何与大区服务器正常进行通信已经同步登录状态呢?登录
2017-07-30 10:33:44
462
原创 一步一步开发Game服务器(二)完成登陆,聊天
我知道这样的文章在博客园已经多的大家都不想看了,但是这是我的系列文章开始,请各位大神见谅了。多线程,线程执行器,(详见),socket通信相关 (详见)本人blog相关文章测试代码,示例,完整版svn地址。(http://code.taobao.org/svn/flynetwork_csharp/trunk/Flynetwork/BlogTest)提供全部源码功能块。希望各位大神,提供
2017-07-30 10:33:41
561
2
原创 C# 利用socekt做到http监听,怎么样才能做到高性能
c#原始提供了http的监听的类HttpListener,实现了简单的http。文章地址《C# 控制台或者winform程序开启http的监听状态》但是经过我测试,这个HttpListener提供的真的就只是简单的http监听功能,无法实现高并发处理。不知道是我处理问题还是其他什么原因,无法实现,当上一个http请求连接尚未关闭的情况下,即便是把请求放到另外一个线程执行,都要等到处理结束,
2017-07-30 10:33:39
1738
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人