常用游戏框架
常用框架
ecs [^文章]
服务器架构[^常用的]
前置内容1. 同步机制
帧同步 moba atc game
按帧同步客户端所有协议给所有玩家
每个客户端都在执行相同的操作,所以最后的结果一样。
需要使用定点数,当你的逻辑中使用了浮点数的时候,因为每一台机器的不同,浮点最后的有效值其实是不一样的,所以为了保证逻辑的同步性,再游戏逻辑中,需要使用定点数。
状态同步 mmo等
状态改变再同步
状态帧同步 fps游戏
状态帧同步就是状态同步和帧同步的概念相结合。客户端向服务器上传操作,服务器跑逻辑,但是又在按照固定的每一帧下发所有玩家的状态(属性位置等)给每一个客户端实现同步。
2. 定点数 浮点数
帧同步中 定点数 作为一个标准存在
定点数小数 [^计算方式]
计算方式和整数一样
浮点数 定点化
java 可以用bigdecimal
浮点数的定点化 [^设计用例]
IEEE 754 规定,浮点数的表示方法为:
最高的 1 位是符号位 s,接着的 8 位是指数E,剩下的 23 位为有效数字 M。
ECS框架 和 传统编程方式
主要说明ecs框架 ...
游戏服务器中的分布式
游戏服务器中的分布式之前有了解一些服务器架构发展
现在大多游戏的服务端都是分布式架构,这个篇文章稍微学习以下分布式架构在游戏中使用吧。
分布式系统在《分布式系统原理与范型》一书中定义:分布式系统是若干独立计算机的集合, 这些计算机对于用户来说就像单个相关系统
进程通信多个组件通过网路配合协作
socket
网络编程,写服务器客户端连接,服务端与服务端连接,第三方服务连接等。
一些中间件,消息队列,MQ,tbus(腾讯的)等
tbusTbus基于共享内存构建无锁双通循环消息队列,发送的双方通过专用的读写队列完成数据收发,实现本地进程通信或者远程进程间通信。通信双方使用的两个队列称之为tbus通道(channel),每一组通讯的双方就需要有一个tbus通道。进程A或B启动后,通过tbus API绑定到对应的通道,使用通道的两个消息队列进行收发数据,而不用关注对方的部署位置。
如果A和B进程不在同一台物理设备上
标记找到进程A和B的地址(World.Zone.Func.Instance)4位十进制的地址
通过Tbusd将两台机器建立联系,互相发送消息
Tbusd如何获得进程地址, ...
游戏成就系统实现
游戏成就系统实现
每个游戏基本都有成就系统,它的实现流程和任务基本相同,但是没有任务功能那么复杂。本质上都是任务系统。所以梳理一下成就系统的实现方案。
成就功能内容和游戏功能的关系。很显然成就功能大部分是基于游戏玩法触发的比如:升到x级,获得xxx道具,xx玩法胜利….。
设计方案
触发点
首先是触发点比如升到30级,升级(加经验)的时候在对应模块里触发。获得xxx道具,在背包变更 或者获得物品里触发。
类型区分
成就部分大多是相同需求不同数值,升到15、20、30级。所以定义一个枚举类型AchievementType 1001是升级,1002是道具….
统计方式
成就主题 – 成就数据 用一个set<Long> 表示成就完成情况。 可以减少数据的存储和协议的处理
扩展性
有了AchievementType 如果同类型在细分,比如:升级中新加一个 宠物升级,我们只能新加一个类型1003,但是这样配置和代码都有冗余的可能。
所以设计是尽可能做到通用,可以加一个类型subKey 用来增加类型。定义为 1=>玩家 2=>宠 ...
nas系统Unraid
unraidtodo
未来考虑直接安装linux 完成所有功能
原因:unraid的基础系统为(Linux version 5.19.17-Unraid (root@Develop) (gcc (GCC) 12.2.0, GNU ld version 2.39-slack151) #2 SMP PREEMPT_DYNAMIC Wed Nov 2 11:54:15 PDT 2022) 虽作为nas基本够用但是作为linux服务器用户量小 有些功能实现起来过于繁琐。
问题:qb下载cpu占满。安装nvida驱动后 启动系统和docker详情界面极慢(暂时没有找到方案)
1. 设备拯救者r720-15ikbn
方案: U盘作为启动盘 1t叠瓦机械 和125g的m.2固态作为缓存盘 无外接硬盘柜。功耗 基本在 50左右
作为一个中转暂缓的方案临时用就笔记本改
2.安装部署安装方案:搜索unraid安装就好了 开心版和正版一样 最详尽的Unraid安装教程(2)- 国内网络环境下安装APP市场以及几个必要的插件安装与使用(Unraid002)_哔哩哔哩_bilibili
缓存盘机制 ...
电吉他
电吉他 弹奏技巧
电吉他
电吉他养护日常维护
Gibson 硝基漆清洁液
漆面擦擦就行 其他类型漆面基本随便擦擦就行
玫瑰木指版 要上油 保湿 防止干裂 1-1.5月清洁保湿一次就可以
musicNoMad 天然指版油
柠檬油 分情况 邓禄普的建议是经常用琴的。起到清洁保湿,但是基本不会补湿。
有条件用蜡代替油 蜡不会沁入品丝里 导致脱落。上油要小心 控制用量。
清洁后 滋润几分钟擦掉就行 正常应该是玫瑰木原木色 红黑色 润润的
品丝 正常使用 避免琴弦生锈时使用 一般不需要抛光
抛光用: vortex清洁
清洁用油擦净就可以
琴弦:定期换就行 每次用完琴擦干净琴弦上的污渍。 练琴前洗手。
什么品丝清洁液 都没性价比(会导致琴弦有变化,声音和手感都变差。到时间都要换,所以用处不大)。实在每天见换琴弦,也可以用。
保湿
玫瑰木指板 药保湿湿度50-70% 要不然会裂=。=
资料
b站GibsonTv官方维护琴的教程够用
找了一阵子 我的Gibson怎么买护理液 找到了这个贴吧
【图片】关于电吉他的保养维护【老炮可以忽略】_电吉他吧_百度贴吧 (baidu.com)
effective Java记录
effective Java相关链接书中代码用例 jbloch/effective-java-3e-source-code: The source code from the third edition of Effective Java, with minor additions as necessary to make it runnable. (github.com)
第二章
linux线上分析
linux性能分析
uptime
$ uptime 16:53:45 up 588 days, 22:34, 1 user, load average: 0.12, 0.14, 0.14
load average 分别是1,5,15min内的load值 load越大 cpu越忙
top
$ top |grep Cpu%Cpu(s): 0.8 us, 0.4 sy, 0.0 ni, 98.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
深入聊聊 top 命令中的 CPU 使用率(超详细) - 知乎 (zhihu.com)
shift+h 按照线程查看
-p [pid] 查看端口
top -H -p 查看线程 shift<和>
Shift+M键 内存排序
Shift+P键 cpu排序
free
Linux free命令 | 菜鸟教程 (runoob.com)
查看内存剩余
jstat -gc 24107
jps -m -l
jstack 虚拟机快照
jinfo 查看参数
jmap 查看等待回收队列
...
三体
三体只是想记录一下 所以这玩应应该叫emmm读书笔记?不重要
前一阵看完了买了好久的《重启蒙娜丽莎》看完之后怀疑起了自己的阅读能力,随即放弃了后面的部分。 正巧 三体电视剧热度上来了
那就看看三体吧
进度当前看书+听书 1,2部看完了。
时间管理-timeManagement
时间管理
这个笔记 就是记录一下公司白嫖的课程 本来想搞一个京东卡或者番茄时钟. 结果白嫖了空气炸锅 番茄钟觉得鸡肋就先上课呗.看了 一下概述 可能会有用先看一下
如何有效的做计划项目管理表/日历表项目管理表
大概就是规划备忘
项目拆分为子目标 计划先构思
阶段性规划 按照周期 (举例: 季度规划 粒度到周)
不要太细致 反而没效果
不漏不重(流程不漏, 具体细节不重)
每个项目只有一个重要负责人
deadline很重要
承诺与一致: 尽量需要他人的截止时间由他们自己定
项目记下相关方(同步记录等)
日历表
大概就是规划备忘
日历表 周期性的规划
先规划大石头(意义重大 耗时的)
两类”先规划的”工作: 短期无效长期有影响 / 短期起效
重要日期需要准备的
后规划其他的碎的对象
流出20%的缓冲时间
每日计划 这个我一直在做 但是摆烂懒了 盒盒盒盒盒盒盒
提升执行力的关键方法敏捷工作法管理合作者的时间摆脱被动忙碌 投入自我驱动主动忙碌