golang游戏服务器 - tgf系列课程06
游戏配置
使用框架提供的游戏配置工具,只要两步,开箱即用
需求描述
沿用上一节课的案例, 创建道具表,通过道具id在道具服中获取配置中道具的名称
Excel
创建配置表

根据项目文档中进阶教程目录下ExcelToJson的教程文档,创建指定格式的Excel文件.
- 脚本
- 生成脚本
func main() {//关闭框架缓存db.WithCacheModule(tgf.CacheModuleClose)//设置excel路径util.SetExcelPath("./excel")//设置excel导出的go文件路径util.SetExcelToGoPath("../common/conf")//设置excel导出的json文件路径util.SetExcelToJsonPath("../common/conf/js")//开始导出excelutil.ExcelExport()
}
- 生成代码
- 配置结构文件
type PropConf struct {//唯一idId string//道具名称Name string
}
Prop节点
道具节点相关修改
启动函数
修改节点的启动函数,追加指定json路径
- 代码
- json路径配置
func Startup() {r := rpc.NewRPCServer().WithRandomServicePort(8021, 8030).WithCache(tgf.CacheModuleClose).WithService(NewService()).WithGameConfig("../Common/conf/js"). //新增的json路径指向Run()<-r
}
逻辑代码使用
通过框架提供的函数,使用生成后的配置文件
- 代码
- 核心使用函数
component.GetGameConf[*conf.PropConf](args.PropId)通过泛型指定和传入的主键id,获取配置相关内容
func (s *service) GetUserPropCount(ctx context.Context, args *model.GetUserPropArgs, reply *model.GetUserPropReply) (err error) {userId := rpc.GetUserId(ctx)reply.Count = s.propCountCache[args.PropId]if propConfig, h := component.GetGameConf[*conf.PropConf](args.PropId); h {reply.Name = propConfig.Name}log.DebugTag("prop", "get %s user %s prop %s count %d ", userId, args.PropId, reply.Name, reply.Count)return
}
更多高级用法,可以查看项目文档相关介绍.
交流群
QQ群:7400585
下期预告
使用数据管理工具,对玩家数据进行自动化的缓存管理.
视频教程
golang游戏服务器 - tgf系列课程06
B站教程合集
项目地址
Github项目地址
Gitee项目地址
项目案例
项目文档
知乎博客
CSDN专栏
相关文章:
golang游戏服务器 - tgf系列课程06
游戏配置 使用框架提供的游戏配置工具,只要两步,开箱即用需求描述 沿用上一节课的案例, 创建道具表,通过道具id在道具服中获取配置中道具的名称Excel 创建配置表根据项目文档中进阶教程目录下ExcelToJson的教程文档,创建指定格式的Excel文件. 脚本 生成脚本 func main() {//…...
【Canvas】记录一次从0到1绘制风场空间分布图的过程
前言 📫 大家好,我是南木元元,热衷分享有趣实用的文章,希望大家多多支持,一起进步! 🍅 个人主页:南木元元 目录 背景 前置知识 风场数据 绘制风场 准备工作 生成二维网格 获取…...
如何用gpt改写文章 (1) 神码ai
大家好,今天来聊聊如何用gpt改写文章 (1),希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧: 如何用GPT改写文章 一、引言 随着人工智能技术的飞速发展,自然语言处理领域取得了重大突…...
IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Spring依赖注入数值问题
第一章 Spring依赖注入数值问题 1.1 字面量数值 数据类型:基本数据类型及包装类、String语法:value属性或value标签 1.2 CDATA区 语法:<![CDATA[]]>作用:在xml中定义特殊字符时,使用CDATA区 1.3 外部已声明…...
egen3 rowwise().maxCoeff()的使用
1、安装eigen3 2、引用头文件 3、代码测试 MatrixXf aaa(2, 4);aaa << 1, 2, 3, 4, 5, 6, 7, 8; Vector2f diff(10, 20);aaa.colwise() diff;std::cout << "new_aaa : " << aaa << endl; 全部代码: int main() {MatrixXf …...
关于Pytorch和Numpy中的稀疏矩阵sparse的知识点
Pytorch和Numpy中的稀疏矩阵sparse 0 稀疏矩阵类别0.1 coo_matrix0.2 dok_matrix0.3 csr_matrix0.4 csc_matrix0.5 bsr_matrix0.6 bsc_matrix0.7 lil_matrix0.8 dia_matrix 1 pytorch中的稀疏矩阵1.1 to_sparse()1.2 to_sparse_csr()1.3 sparse_coo_tensor()1.4 sparse_csr_ten…...
2024年AI云计算专题研究报告:智算带来的变化
今天分享的人工智能系列深度研究报告:《2024年AI云计算专题研究报告:智算带来的变化》。 (报告出品方:华泰证券) 报告共计:32页 Al 云计算 2024:关注智算带来的新变化 通过对海内外主要云厂商及其产业链…...
孩子还是有一颗网安梦——Bandit通关教程:Level 5 → Level 6
🕵️♂️ 专栏《解密游戏-Bandit》 🌐 游戏官网: Bandit游戏 🎮 游戏简介: Bandit游戏专为网络安全初学者设计,通过一系列级别挑战玩家,从Level0开始,逐步学习基础命令行和安全概念…...
vue2-elementUI部分组件样式修改
el-radio样式: /deep/ .el-radio__input .el-radio__inner {width: 20px;height: 20px;position: relative;cursor: pointer;-webkit-appearance: none;-moz-appearance: none;appearance: none;border: 1px solid #999;border-radius: 0;outline: none;transition…...
fijkplayer flutter 直播流播放
fijkplayer flutter 直播流播放 fijkplayer 是 ijkplayer 的 Flutter 封装, 是一款支持 android 和 iOS 的 Flutter 媒体播放器插件, 由 ijkplayer 底层驱动。 通过纹理(Texture)接入播放器视频渲染到 Flutter 中。 前言 目前使用…...
Javascript的基本语法(规范)
JS的基本语法规范 1.JS中严格区分大小写 2.JS中每一个指令被称为一个语句,每一个语句都应该以分号结尾 - 在JS中有自动的添加分号的机制,如果不写分号浏览器会自动为你添加 - 有些情况下,浏览器可能会给你加错了(几率低&#…...
vue chrome debugger 无效
昨天晚上debbger可以正常运行的,但是早上起来突然间所有的debugger都不会被命中,重装了vscode,也清了浏览器缓存,可是这个bitch还是不行!整整折腾了一早上,就是无法解决,没办法只能找找资料 ,搜…...
JRT实现Cache的驱动
我只给PostGreSql和iris写了连接驱动,永国的库是Cache,他就自己写了个驱动,驱动其实就是把数据库差异接口抽取了出来,然后只要配对应数据库驱动就能连响应的数据库了。 package JRT.Dal.Base;import JRT.Core.MultiPlatform.JRTC…...
ESP32网络开发实例-Web串口(WebSerial)
Web串口(WebSerial) 文章目录 Web串口(WebSerial)1、软件准备2、硬件准备3、代码实现4、接收数据在本文中,我们将介绍如何实现的基于 Web 的 ESP32 串行监视器。 1、软件准备 Arduino IDE在前面的文章中,如何搭建ESP32的Arduino IDE开环境,主参考: ESP32-Arduino-开发实…...
P2 Qt Creator创建第一个Qt程序
前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ 🔥 推荐专栏2: 《LLinux C应用编程(概念类)_ChenPi的博客-CSDN博客》✨✨✨ 🌺本篇简介 :这一章我们学…...
加班、效率和价值
效率不等于单位时间单位人干的活,而是等于单位时间单位人产出的价值,衡量工作量的难度很大,而如何选择工作重点,挖掘工作价值难度更大。 加班的不可持续在于两点,第一点是对身体和精神的损害,降低内在动力…...
【QT 5 调试软件+(Linux下验证>>>>串口相关初试串口)+Windows下qt代码在Linux下运行+参考win下历程+基础样例】
【QT 5 调试软件Linux下验证>>>>串口相关初试串口参考win下历程基础样例】 1、前言2、实验环境3、先行了解4、自我总结-win下工程切到Linux下1、平台无关的代码:2、依赖的库:3、文件路径和换行符:4、编译器差异:5、构…...
地址栏不安全提示
在使用浏览器时访问网站的时候,我们可能会遇到地址栏提示不安全的情况。这种情况通常都是是由于未安装有效SSL证书或者网站SSL证书过期等原因导致的。本文将介绍如何处理地址栏提示不安全的问题,以确保我们的上网安全。 1,缺少SSL证书&#x…...
glib编译与实战
文章目录 下载编译修正实战参考 下载 https://ftp.acc.umu.se/pub/GNOME/sources/glib/ 编译 cd glib mkdir buildmeson --prefix/home/glib build ninja -C build ninja -C build install修正 meson.build:1:0: ERROR: Meson version is 0.53.2 but project requires >…...
PHP基础(4)
目录 一、PHP 创建用户定义函数 二、数组 数组的排序函数 一、PHP 创建用户定义函数 用户定义的函数声明以单词 "function" 开头: PHP自定义函数是指用户自行定义的函数,以满足自己的编程需求。在PHP中,可以通过以下语法来定义一…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...
JavaScript 标签加载
目录 JavaScript 标签加载script 标签的 async 和 defer 属性,分别代表什么,有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...
