下载 App

【星火进阶教程03-代码锁】如何构造代码锁来提高代码的安全性,十分实用

修改于2023/11/25768 浏览主题教程

一、前言

    我们在设计游戏的时候,可能会发现一个问题,就是当玩家快速点击按钮或者由于客户端某种其他未知原因,结果服务器重复处理了事件的逻辑,导致程序未按照我们想要的流程走,或者出现了其他可能问题,这里给大家提供一个十分方便的【代码锁】功能,可以有以下优点:
1、封装完善的代码锁可能十分方便的实现开锁、解锁功能
2、所有锁可以层级套用
3、客户端与服务器都可以使用(服务器锁最为安全)
4、去掉了导致程序不稳定和分散的IF方法的使用

二、创建锁的“三件套”

    在服务器触发器的常用库中,创建一个锁的预设值,一个锁组全局变量和一个代码锁的全局函数。俗称三件套
TapTap
库函数
TapTap
锁组
TapTap
代码锁
其中,当我们需要在不同的地方进行开锁和闭锁时,我们只需要从锁的预设值中,”购买“一把锁就行了,预设值可以确保锁的一一对应,而不会出现人为引起的代码错误。

三、开锁和闭锁

闭锁:

这时候,我们在任意服务器代码中,如果需要某段代码进行闭锁,就直接使用下面的方式,将代码块放入闭锁区域,同时选好自己的锁,勾上false。这时候,锁里面的代码就永远不会执行第二次了,直到我们开锁。
下面就是:当玩家点击开始战斗之后,我们就闭锁,不管玩家是多次点击还是因为其他原因,我们都不希望战斗逻辑会重复执行。
TapTap
闭锁操作

开锁:

接下来,我们可以在服务器的其他任意代码中,进行开锁操作,比如我们在结束战斗时,进行开锁,这样玩家上面被锁住的代码,就被打开了,能够进行下次的战斗逻辑。
TapTap

四、总结

1、锁一一对应,一把锁开一扇门
2、客户端的锁和服务器逻辑一模一样,但是客户端锁可以被黑客进行伪造和篡改,并不能确保安全,只能够做到防止浪费UI资源
新版的背包存档截图
新版的背包存档
舍弃老版超长代码逻辑还不好用的背包存档。想多少个格子就多少个格子不用一个格子创建一个变量,不用写一堆繁琐重复的代码。适用性更强,支持恢复到指定格子,多背包恢复 主要实现核心围绕云变量表这个类型变量来进行处理、获取用户背包栏,循环背包栏获取指定背包栏的物品存入云变量表,然后提交。 读取的话反之也是获取的云变量赋值给云变量表,循环读取背包栏并且获取格子,在将物品放入指定格子 最后附上demo地址 h
36 赞
5 回复
无须申请,星火编辑器现已公测开放下载截图
无须申请,星火编辑器现已公测开放下载
—————————————————— 各位关注星火编辑器的小伙伴: 感谢大家一直以来对编辑器支持! 破晓已去,曙光降临! 星火编辑器现已开启公测! · 关于下载和资格申请 现已无需申请,请去下面的官方首页直接下载! 缘起测试是星火编辑器自诞生以来第一次对外测试! 从2022年八月开始到十一月,历时三个月。 缘起之后缘聚测试,历时又七个月! 缘聚之后,破晓降临,历时又十二个月! 曾经微弱的星火现已渐
官方
326 赞
375 回复
04:10
自定义飘字教程截图
自定义飘字教程
之前编辑器更新的飘字,可能有不少同学还不会使用,所以我稍微写了下这篇教程,希望对大家有所帮助,更好的制作游戏
14 赞
1 回复
9月星火编辑器社区教程汇总&答疑结算&贡献度公示
星火编辑器『生态贡献度』是面向广大星火编辑器开发者的一种特别积分。贡献度可以 1比1 提现成现金,也可以 1比2 抵扣服务器成本。此外,对于有游戏上线的开发者,历史累计获得的贡献度越多,可以获得越多的免审次数。 更多细节详见:生态贡献度 | 星火编辑器文档- 全部教程可以前往汇总文档中查看【腾讯文档】星火编辑器生态贡献度-星火编辑器投稿案例公示墙 诗雨 + 1500贡献度 「自制卡牌游戏DIY」制
官方
17 赞
2 回复
02:24
2022 TapTap 游戏发布会|星火编辑器截图
2022 TapTap 游戏发布会|星火编辑器
官方
88 赞
25 回复