游戏服务器

外挂

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

java游戏服务器开发之整合spring

匿名 (未验证) 提交于 2019-12-02 21:53:52
netty和spring的结合 上篇将netty大致部署好了,但是里面的配置我们都是写在代码里面,其实这样是不太好的,毕竟你改个参数就要打包一下。 所以打算写在配置文件中,顺便把spring也集成进来 第一步,在pom文件中加入spring的包, <!-- spring框架包 --> # code.debug=true port=8088 channelType=NIO protocolType=TCP 第三步,添加spring的配置文件ApplicationContext.xml,里面的各个标签都有加注解,应该挺容易阅读的 @Value("#{cfgProps['port']}") /** * Copyright (C), 2015-2018 * FileName: ServerConfig * Author: zhao * Date: 2018/6/12 11:16 * Description: 服务的配置内容 * History: * <author> <time> <version> <desc> * 作者姓名 修改时间 版本号 描述 */ package com.lizhaoblog.server.pojo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org

3.1 端

心不动则不痛 提交于 2019-12-02 05:41:13
Minecraft中的端(Sides) 当模组设计需要两端配合时,有一个需要理解的非常重要的概念: 客户端和服务器 。关于端有许多常见的误解和错误,这可能不会导致游戏崩溃的错误,但可能会产生意图之外的且通常无法预测的影响。 不同种类的端 当讨论“客户端”或“服务器”时,我们通常会非常直观地理解自己正在谈论的游戏的哪个部分。毕竟,客户端是用户与之交互的内容,服务器是用户连接多人游戏的地方。很容易,对吗? 事实证明,即使有两个这样的术语,也可能会出现一些含糊不清之处。这里我们区分了“客户端”和“服务器”的四种可能的含义: 物理客户端 - 物理客户端 是从启动器启动Minecraft时运行的整个程序。所有线程、进程、在游戏的图形化时的服务,和可交互的生命周期都是物理客户端的一部分。 物理服务器 - 通常称为专用服务器, 物理服务器 是在您启动任何 minecraft_server.jar 时运行的整个程序,它不会显示可游玩的GUI。 逻辑服务器 - 逻辑服务器 运行游戏逻辑:生物(译者注:“生物【Mobs】是指游戏世界中除玩家外的有生命的,可自主移动的一类实体。”——摘自Minecraft中文Wiki)产生,天气,更新物品,健康,AI和其他所有游戏机制。逻辑服务器存在于物理服务器中,但也可以作为单人世界与逻辑客户端一起在物理客户端内运行。逻辑服务器始终在名为 Server Thread

[转贴] 游戏服务器架构二

南笙酒味 提交于 2019-12-01 18:46:30
来自: http://www.libing.net.cn/read.php/1724.htm 服务器公共组件实现 -- 环形缓冲区   消息队列锁调用太频繁的问题算是解决了,另一个让人有些苦恼的大概是这太多的内存分配和释放操作了。频繁的内存分配不但增加了系统开销,更使得内存碎片不断增多,非常不利于我们的服务器长期稳定运行。也许我们可以使用内存池,比如SGI STL中附带的小内存分配器。但是对于这种按照严格的先进先出顺序处理的,块大小并不算小的,而且块大小也并不统一的内存分配情况来说,更多使用的是一种叫做环形缓冲区的方案,mangos的网络代码中也有这么一个东西,其原理也是比较简单的。   就好比两个人围着一张圆形的桌子在追逐,跑的人被网络IO线程所控制,当写入数据时,这个人就往前跑;追的人就是逻辑线程,会一直往前追直到追上跑的人。如果追上了怎么办?那就是没有数据可读了,先等会儿呗,等跑的人向前跑几步了再追,总不能让游戏没得玩了吧。那要是追的人跑的太慢,跑的人转了一圈过来反追上追的人了呢?那您也先歇会儿吧。要是一直这么反着追,估计您就只能换一个跑的更快的追逐者了,要不这游戏还真没法玩下去。   前面我们特别强调了,按照严格的先进先出顺序进行处理,这是环形缓冲区的使用必须遵守的一项要求。也就是,大家都得遵守规定,追的人不能从桌子上跨过去,跑的人当然也不允许反过来跑。至于为什么

egret 发布ios记录

≯℡__Kan透↙ 提交于 2019-12-01 12:03:35
根据官方文档 http://developer.egret.com/cn/github/egret-docs/Native/native/hybrid/hybrid/index.html 将现有的项目发布成Hybird。 发布成功之后,使用xcode打开xcworkspace工程。 然后点击运行按钮。成功调用启动了iphone模拟器,但是内容确实一片空白,即手机模拟器屏幕上显示的是一片空白。 到这里为止,我再次回到官方文档查看。 逐个排查工程模版。 1.默认工程是从本地启动游戏。 我没有做任何改动,那就是从本地启动游戏。 1.1 启动流程     1.1.1初始化EgretWebViewLib; [EgretWebViewLib initialize:@"/egretGame/preload/"]; // "/egretGame/preload/"是缓存目录,在应用的document目录下。    成功;      1.1.2检查游戏资源是否已经部署到本地服务器; [EgretWebViewLib checkLoaded:zipFilePath Host:host] // zipFilePath是游戏资源zip的绝对路径 // host是游戏映射到哪个url下,如host为"https://egret.com/game/",对应的游戏url为"https://egret.com

游戏服务器和Web服务器的区别

帅比萌擦擦* 提交于 2019-12-01 09:55:57
用Go语言写游戏服务器也有一个多月了,也能够明显的感受到两者的区别。这篇文章就是想具体的聊聊其中的区别。当然,在了解区别之间,我们先简单的了解一下Go语言本身。 1. Go语言的特点 Go语言跟其他的语言例如Java比起来,算得上一门很年轻的语言。Go语言是由Robert Griesemer、Rob Pike和Ken Thompson于2007年在Google开发。并于2009年正式发布。 Go语言的设计理念围绕着简洁这两个字,认为少即是多。如果你熟悉Java,用Java那一套语法命名跟Go做对比,可以很明显的体会到这种感觉。 Go的特点可以简单的概括成以下几个点。 1.1 静态类型和编译型 首先Go是静态类型,静态类型就是编译时就知道每一个变量的类型,得益于此,在编译的阶段就能够发现很多问题。而如果是动态语言,例如JavaScript,有些问题直到运行时才能发现。 Go是编译型语言,看到编译型大家脑子里可能会想到另外一个词解释型。两者的区别从字面上来理解其实已经可以看出来,我用一个简单的例子来类比一下。 编译型 去餐馆吃饭,点了菜之后,饭店会等所有的菜做好了再上 解释型 去餐馆吃饭,点了菜之后,陆陆续续的边吃边上 1.2 跨平台 顾名思义,你写的Go源码在所有的系统都能够运行。 这点其实很好理解,例如Java的口号是"Write once, run anywhere"

SignalRCore与H5游戏混搭

我们两清 提交于 2019-12-01 07:18:10
因为SignalRCore支持websocket支持,因此希望在H5游戏中加以引入使用。官方的文档介绍过于繁琐了,经过试验,采取以下步骤: 1.创建dotnet web空工程:dotnet new web 2.从示例中拿出signalr.js,signalr.min.js放入H5游戏客户端的lib文件夹中,并在index.html中加以引用; 3.服务器工程按官方文档编写好范例代码; 4.H5游戏客户端加入测试代码: var connection = new signalR.HubConnectionBuilder().withUrl("http://localhost:5000/chatHub").build(); // withUrl中可以指定要连接的服务器地址 connection.on("ReceiveMessage", function (user, message) { // 注意"ReceiveMessage"与服务器的RPC目标方法名要保持一致 console.log("(__GameManagerLoad__)message:" + message); }); // 优先使用webSockets选项 connection.start({ transport: ['webSockets', 'longPolling'] }).then(function() { //

状态同步和帧同步个人理解

梦想的初衷 提交于 2019-11-30 15:54:00
一、同步 所谓同步,就是要多个客户端表现效果是一致的,例如我们玩王者荣耀的时候,需要十个玩家的屏幕显示的英雄位置完全相同、技能释放角度、释放时间完全相同,这个就是同步。就好像很多个人一起跳街舞齐舞,每个人的动作都要保持一致。而对于大多数游戏,不仅客户端的表现要一致,而且需要客户端和服务端的数据是一致的。所以,同步是一个网络游戏概念,只有网络游戏才需要同步,而单机游戏是不需要同步的。 二、状态同步和帧同步的区别 最大的区别就是战斗核心逻辑写在哪,状态同步的战斗逻辑在服务端,帧同步的战斗逻辑在客户端。战斗逻辑是包括技能逻辑、普攻、属性、伤害、移动、AI、检测、碰撞等等的一系列内容,这常常也被视为游戏开发过程中最难的部分。由于核心逻辑必须知道一个场景中的所有实体情况,所以MMO游戏(例如魔兽世界)就必须把战斗逻辑写在服务端,所以MMO游戏必须是状态同步的,因为MMO游戏的客户端承载有限,并不能把整张地图的实体全部展现出来(例如100米以外的NPC和玩家就不显示了),所以客户端没有足够的信息计算全图的人的所有行为。 具体到客户端和服务端通信上,在状态同步下,客户端更像是一个服务端数据的表现层,举个例子,一个英雄的几乎所有属性(例如血量、攻击、防御、攻速、魔法值等等)都是服务端传给客户端的,而且在属性发生改变的时候,服务端需要实时告诉客户端哪些属性改变了,客户端并不能改变这些属性

[转贴] 游戏服务器架构一

人盡茶涼 提交于 2019-11-30 14:19:03
来自: http://www.libing.net.cn/read.php/1724.htm 这里讨论的游戏服务器架构大概是目前国内乃至世界上的网游通用的一种架构了: http://bbs.gameres.com/showthread.asp?threadid=93775 作者:qinglan 有段时间没有研究技术了,这次正好看到了新版的mangos,较之以前我看的版本有了比较大的完善,于是再次浏览了下他的代码,也借此机会整理下我在游戏服务器开发方面的一些心得,与大家探讨。   另外由于为避免与公司引起一些不必要的纠纷,我所描述的全都是通过google能够找到的资料,所以也可以认为我下面的内容都是网上所找资料的整理合集。在平时的开发中我也搜索过相关的中文网页,很少有讲游戏服务器相关技术的,大家的讨论主要还是集中在3D相关技术,所以也希望我将开始的这几篇文章能够起到抛砖引玉的作用,潜水的兄弟们也都上来透透气。   要描述一项技术或是一个行业,一般都会从其最古老的历史开始说起,我本也想按着这个套路走,无奈本人乃一八零后小辈,没有经历过那些苦涩的却令人羡慕的单机游戏开发,也没有响当当的拿的出手的优秀作品,所以也就只能就我所了解的一些技术做些简单的描述。一来算是敦促自己对知识做个梳理,二来与大家探讨的过程也能够找到我之前学习的不足和理解上的错误,最后呢,有可能的话也跟业内的同行们混个脸熟

学习游戏服务器编程进阶篇之全球同服技术架构

不想你离开。 提交于 2019-11-29 13:25:09
笔者介绍: 姜雪伟 ,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你 架构 3D游戏引擎》电子工业出版社和《 Unity3D 实战核心技术详解》电子工业出版社等。 CSDN视频网址: http://edu.csdn.net/lecturer/144 服务器架构技术一直是技术热点,比如比较流行的游戏服务器,各种数据平台系统等等都离不开服务器的架构设计,服务器架构设计的好坏直接决定了用户对产品使用的体验,在互联网时代,全世界用户或者玩家的距离已经开始变的越来越小,我们做的各种平台设计要能满足全球用户的使用已经成为了现实,数据的共享已经成为当前急需解决的问题。 游戏服务器在这块技术也已经打通,比如COC海盗奇兵,皇室战争游戏,它们的架构设计采用的就是全球同服架构设计,很多开发者对此感觉很难,其实利用现有的开源技术我们同样可以自己搭建一个全球同服的服务器,而且可以满足实时在线玩家几万到几十万人。下面将搭建全球同服服务器涉及到的技术给读者一一介绍: 全球同服 第一个摆在我们面前的问题是时间问题,地球上不同的国家,他们的时差是不同的,不同的时差的人要实现全球同服,需要在服务器这块处理好,解决方案是需要在不同的地区布置一组服务器,这些服务器数据最终要统一到一个数据库中,比如中国大陆玩家可以通过香港服务器登陆到美国服务器