搜索
首页后端开发php教程文字播报型的自动战斗系统该如何保障不出现漏洞?

目前是想做一款纯文字类网页游戏,战斗模式采用文字播报模式
看到过一个别人写的是,本地进行战斗计算,最后把战斗结果post到服务器上,这种很容易造成漏洞,直接在本地修改结果不停的post
如果同步战斗状态的,感觉会太复杂,有没有方便的方法不容易出漏洞
我将php和c#用socket连接在一起,可以进行数据交换计算,可以利用这个做吗?

回复内容:

战斗过程中如果玩家不能介入的话,直接服务端算好整场战斗过程,一次性下发到客户端慢慢播文字就是了,你指的复杂是什么。

用socket的话,需要实现一套基于socket的游戏协议,好处是省流量、通信灵活,服务器主动推送信息容易。如果想简单点,可考虑直接用http短连接通信,但对于一些服务器主动下行的功能不好实现。 矮油,我觉得我应该很有资格回答这个问题,因为我做的游戏就是这样的。
看到楼主是用php,那么觉得我更有资格了。

首先分为两种情况。
1. 所有战斗都在服务器一次性完成,客户端只是简单的播报结果
这是最简单的,也是我现在用的方案,也是绝大多数古典页游用的方法。
客户端提交一个战斗请求,然后在服务器完全全部计算,将结果用json或者其他什么方法传给客户端,然后浏览器再用js解析出来。
注意:这种方法也不能完全的杜绝客户端作弊,最典型的例子,对于一些有消耗的战斗(无论是有冷却时间,还是入场需要消费资源),玩家开两个窗口然后同时点击战斗按钮,可能会出现双份奖励。我的游戏就曾经出现过这种bug。
此外,还存在我在后台改了数据没有刷新缓存导致前台用户玩的时候出现崩溃的问题。
总之这种方法难度不高,对服务器压力也小(因为是集中计算)。
缺点是无法响应玩家输入,也就是玩家并不能在战斗中进行控制,这就要看你的游戏是否要求玩家在战斗中进行操作了。

2.战斗会一边进行一边回传到客户端,响应客户端输入之后再传到服务器。
这种会比较难,其实这里麻烦的问题反而不是作弊,而是服务器负载……只要做好负载反而就没有什么问题。
方法有很多种,你说的socket是一种,但我不懂……(-_-|||)。
此外还有node.js系列的socket.io,更轻量,毕竟涉及C#就要涉及.net那种大而厚的东西,node.js相比之下更轻。
当然如果不选PHP的话,也有更多其他方案,比如纯asp.net或者纯java,甚至可以用现代的手段比如unity,当然这就扯远了……
所以如果要我来做的话,估计还是会选传统的js轮询ajax的办法,不断去服务器查。会更吃一点服务器资源(毕竟每次玩家操作都要走一次完整的http request),所以对于我们这种VPS放国外的屌丝可能会遭遇延迟问题。因此,我大概会把游戏做成延迟不影响游戏体验的模式。
举例就是做一个万智牌游戏,我点击出牌的时候,动画直接播放出牌效果(但此时还处于http request中),然后画面出现“电脑正在思考中”,然后播放电脑的出牌结果。
当然还有个办法就是你说的,把一些简单的东西放到客户端,但实际上这些内容必须还是要传到服务器在计算一次,最终回来的时候覆盖客户端算的结果,并且要保证从头到尾不使用客户端的数据。客户端计算的数据“仅仅是处于让玩家感受速度快”。
这点其实很常见,比如大型网站点赞,点赞的瞬间就+1了,其实只是客户端计算而已。刷新之后就会变成真实数据。
如果负载实在扛不住,可以考虑把游戏的一部分做成不消耗服务器的模式(例如你的游戏设定,在上面玩2小时可以获得100点游戏内战斗力,那么你就设置一个2小时的远征任务,这个任务挂好了之后就获得100点战斗力,又或者刷1天怪物平均可以获得3件装备,那么你可以设置一个副本,冷却时间24小时,必掉3件装备)。
总体上玩家的收益是相同的。
我倾向于把游戏做成不那么肝(也就是不需要反复算时间,一直在屏幕前点点点)。因此服务器负载倒不是那么大,512M1核的低配VPS,长期负载也就0.0x,所以还跑了几个其他业余利用资源……

有想到再补充

利益相关:RPG类型纯文字类网页游戏 莉诺达斯 - Linodas.com 制作人。
(PS:前几天打通了奥里与迷失森林,所以在首页放了一个全屏跳转推荐这款游戏,不要以为进错网站了。。 不要本地计算,用服务端计算后下发客户端就好。
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
继续使用PHP:耐力的原因继续使用PHP:耐力的原因Apr 19, 2025 am 12:23 AM

PHP仍然流行的原因是其易用性、灵活性和强大的生态系统。1)易用性和简单语法使其成为初学者的首选。2)与web开发紧密结合,处理HTTP请求和数据库交互出色。3)庞大的生态系统提供了丰富的工具和库。4)活跃的社区和开源性质使其适应新需求和技术趋势。

PHP和Python:探索他们的相似性和差异PHP和Python:探索他们的相似性和差异Apr 19, 2025 am 12:21 AM

PHP和Python都是高层次的编程语言,广泛应用于Web开发、数据处理和自动化任务。1.PHP常用于构建动态网站和内容管理系统,而Python常用于构建Web框架和数据科学。2.PHP使用echo输出内容,Python使用print。3.两者都支持面向对象编程,但语法和关键字不同。4.PHP支持弱类型转换,Python则更严格。5.PHP性能优化包括使用OPcache和异步编程,Python则使用cProfile和异步编程。

PHP和Python:解释了不同的范例PHP和Python:解释了不同的范例Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP和Python:深入了解他们的历史PHP和Python:深入了解他们的历史Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

在PHP和Python之间进行选择:指南在PHP和Python之间进行选择:指南Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和框架:现代化语言PHP和框架:现代化语言Apr 18, 2025 am 12:14 AM

PHP在现代化进程中仍然重要,因为它支持大量网站和应用,并通过框架适应开发需求。1.PHP7提升了性能并引入了新功能。2.现代框架如Laravel、Symfony和CodeIgniter简化开发,提高代码质量。3.性能优化和最佳实践进一步提升应用效率。

PHP的影响:网络开发及以后PHP的影响:网络开发及以后Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?Apr 17, 2025 am 12:25 AM

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器