游戏服务器

分布式游戏服务器2-消息队列

…衆ロ難τιáo~ 提交于 2019-11-29 11:25:04
引入消息队列的主要目的是为了加大信道的利用率 从而提高可扩展的上限。其他目的在这里不在阐述(分发,中转,隔离,订阅,事件等)。 进程间通信主要手段是socket,可以跨语言,跨机器等等优势 问题分析: 1.传统的进程间通信更多是同网络拓扑结构,星型连接等,2个进程之间必然有一条连接实现通信 2.IP端口数量限制,维持信道的必要消耗,都会导致内耗增加。 问题模型1: 1.假设现在有4个游戏进程,连接规则是互联,因为他们之间可能会任意进行通信。 2.信道条数是6条每个信道利用率是33% TODO 来源: oschina 链接: https://my.oschina.net/kkkkkkkkkkkkk/blog/3134825

Netty游戏服务器搭建之服务端

亡梦爱人 提交于 2019-11-29 08:32:27
一直从事的java web方面的开发,最近想去深圳了,据说那里做游戏服务的很多,就学习一下nio框架netty。 一、 java NIO简介 nio是java New IO的简称,在jdk1.4里提供的新api。Sun官方标榜的特性如下:  为所有的原始类型提供(Buffer)缓存支持。  字符集编码解码解决方案。  Channel:一个新的原始I/O抽象。  支持锁和内存映射文件的文件访问接口。  提供多路(non-bloking)非阻塞式的高伸缩性网络I/O。 关于java NIO的实现部分不是本文讨论的重点,有兴趣的朋友可以访问JAVA夜无眠的博客JAVA NIO 实例。 二、 NIO框架简介 在Java社区,最知名的开源Java NIO框架要属Mina和Netty。实际上,Netty的作者原来就是Mina作者之一,所以可以想到,Netty和Mina在设计理念上会有很多共同点。而本文主要介绍的是使用netty搭建简单的游戏服务器,对于netty与mina的比较以及简单netty应用教程,将在其他文章中有所提及,敬请关注! 三、开始写游戏服务 maven依赖如下 <ependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>5.0.0.Alpha2<

OpenResty搭建游戏服务器(三)使用protobuf

房东的猫 提交于 2019-11-28 21:56:35
lua 的 protobuf 库 之前一直用的 云风的pbc ,一直用的很嗨皮。 但这个库好像已经不怎么维护了,而我想要的是支持 proto3。 最终我找到 lua-protobuf 这个库。 1、下载库并将 pb.c 和 pb.h 编译成 pb.so git clone https://github.com/starwing/lua-protobuf cd lua-protobuf gcc -O2 -shared -fPIC pb.c -o pb.so 如果报错,fatal error: lua.h: No such file or directory 则要通过 gcc -I 来指定 头文件查找路径 gcc -O2 -shared -fPIC pb.c -o pb.so -I /usr/local/openresty/luajit/include/luajit-2.1 2、把需要的文件放入openresty中 把 “用于对数据进行encode、decode” 的 pb.so 文件放入 openresty 的 luaclib 。 把 “用于编译 .proto 文件” 的 protoc.lua 文件放入 openresty的 lualib。 (可选) 3、准备具体业务要用的协议文件(.proto文件) 这里,为了先跑通流程,只定义登录需要的协议(两个.proto 文件)。 /

外挂

你。 提交于 2019-11-27 17:04:10
外挂 前言 记得小学的时候玩页游把家里电脑弄坏了(怎么回事,页游还能弄坏电脑?),然后我爸拿去重新装了系统,回来之后电脑里有了两个新的单机游戏,植物大战僵尸和大鱼吃小鱼。 那个年代周围的小学生都是赛尔号/奥比岛/洛克王国/天书奇谭/龙之刃/梦幻西游,玩摩尔庄园的小学生说出来都不是九年义务教育的。植物大战僵尸虽然现在看来比较久远,但他的游戏元素却是推生出许多游戏音乐文化,比如Billie Eilish的《bad guy》,节奏简直就是植物大战僵尸的 灯 灯 灯 灯 灯灯~ 了。 当时因为生存模式被虐,在网上找了修改器,可以修改阳光点数,那时候虽然没学计算机专业,但对修改器的运行机制还是有所猜测的,当时小学因为不知道内存这回事,所以是觉得修改的文件中的数据。 这个猜测如今看起来很搞笑,但也不失道理(要开始狡辩了),有些游戏的数据可能是先放在文件中的,在游戏启动之后把文件中的数据读取到游戏的内存区域,所以我们需要先修改数据所在的文件内容,然后启动游戏,但是很多游戏的数据文件是加密的(出大问题,骑马与砍杀就没有加密),我们没办法从文件进行修改,所以需要让游戏进程先把它读到内存,然后从内存修改,然后再退出游戏的时候游戏进程自动把它保存下来,之后也就是这个数据了。 所以综上可以发现有这几类修改对象: 游戏数据在本地未加密文件,直接修改它来修改游戏数据 这一类的代表就是骑马与砍杀

游戏服务器解决的3个问题

匆匆过客 提交于 2019-11-26 23:16:37
  写游戏服务器有一段时间了,在我看来一个游戏服务器设计得好不好,可以从以下三个方面: 1.配置读取问题   配置读取直接决定了策划改表是否方便。 2.消息处理问题 消息处理决定了服务器业务逻辑处理是否方便 3.数据落地  数据落地为最关键的一条,游戏数据最终是否能落地。 来源: https://www.cnblogs.com/LittleLee/p/11334942.html

托管游戏服务器要如何选择配件

故事扮演 提交于 2019-11-26 12:46:13
由于游戏对服务器配置要求高,因此选择服务器托管的用户要确保游戏服务器有承受较大的数据吞吐量的能力,在选择服务器提供商和其硬件配置的时需要综合考虑。      1、服务器CPU的挑选      网页游戏服务器每天都会接受几百、乃至上千万的访问量,对CPU的快速吞吐量、稳定性、长时间运行都有着严格的要求,因而服务器CPU是衡量服务器性能的首要指标。目前市面上对网页游戏服务器CPU已经达到八核16线程,CPU已经不再是网页游戏服务器选择的瓶颈所在。      2、磁盘I/O能力      针对于网页游戏逻辑服务器以及GameDB的小数据块对磁盘随机I/O能力有着较高的要求,是游戏架构与设计中需要重点考虑的环节。网页游戏服务器商通常会选择随时读写速率高、故障率低的SATA、SAS硬盘作为服务器的标准配置。值得注意的是:传统高速SAS硬盘在面对大量小图片元素时,磁盘I/O还是吃力,但SSD固态硬盘技术可以有效解决此类问题。葵芳IDC数据中心的服务器都是采用SATA/SSD硬盘,读写速度高且稳定。      3、机房带宽以及服务器带宽      网页游戏有着一定的时间性,需要有足够大的带宽来应对突发传输速率,在游戏玩家访问的高峰期保证玩家的用户的用户体验。在机房带宽直接连接国家骨干网的访问速度会更快。      4、Ping值      对于游戏玩家来说,服务器对请求的响应和流畅度至关重要