游戏方面
文章平均质量分 53
一些游戏比较核心模块讲解
青蛙~~
这个作者很懒,什么都没留下…
展开
-
无缝大世界
前言无缝大地图只是外在表现,其实都是有缝隙的,现在的电脑性能还不足以加载一张非常大的地图,比如80公里,甚至几百,几千公里这么大的地图,电脑做不到,手机就更加不用说了这类大地图,在客服端都是分区域进行加载,也就是会进行切割,比如像绝地求生这样的游戏,大概80公里左右大的地图,会被切割成100 *100 个格子,大概每个格子800米左右,每个格子会打上索引标记,当客服端在进行移动的时候就会根据视野,一般都是九宫格区域,然后根据视野新旧对地图块进行预加载和删除。在绝地求生跳伞阶段,其实是整张地图进行加载原创 2022-04-04 17:06:37 · 957 阅读 · 0 评论 -
AOI -单点比如国战聚集问题解决方案
首先假设我们有一片大区域,在这片区域内的对象都可能产生交互.因此这片区域形成一块统一的AOI管理区域.进入这片区域的对象都要受到管理.可以将这片区域分布到N个进程上.所有受管理的对象在这N个进程中都存在副本.这些副本对象被分成两类:master对象或ghost对象.master对象只能存在于一个进程中,其它进程中必然是ghost对象.游戏对象发生位置变更时,将变更同步给所有的AOI对象.对于ghost对象只是简单的更新当前位置.只有master对象才会有进一步的处理.AOI服务以固定的频率处理mast原创 2021-08-18 18:04:40 · 365 阅读 · 0 评论 -
微服务帧同步方案
原创 2021-08-10 11:40:13 · 239 阅读 · 0 评论 -
protobuf 下载编译,拷贝,proto文件生成c# c++代码
下载并编译protobuf源码echo off & color 0Aset "WORK_DIR=%cd%"echo %WORK_DIR% rem 这里可以替换版本号set "PROTOBUF_VESION=v3.12.4"echo %PROTOBUF_VESION%set "PROTOBUF_PATH=protobuf_%PROTOBUF_VESION%"echo %PROTOBUF_PATH%git clone -b %PROTOBUF_VESION% git://gi原创 2021-07-21 13:03:57 · 941 阅读 · 0 评论 -
C环形buff
图解释结构体typedef struct byteQueue_s{ char* pBuffer;//数据 size_t nCapacity;//容量 size_t nReadIndex;//读指针索引 size_t nWriteIndex;//写指针索引} byteQueue_tt;初始 结构体假设要申请的空间 环形buff结构体大小为8nWriteIndex 写指针索引nReadIndex 读指针索引环形buff初始化void byteQueue_init(byteQu原创 2021-06-21 17:57:51 · 723 阅读 · 2 评论 -
bat 文件用 windows terminal启动方法
game.bat@echo offif not defined bflag set bflag=1 && start wt --title "game" %0 && exitcd /d %~dp0set CURRENT_DIR=%cd%set SERVER_BIN_PATH=%CURRENT_DIR%\..pushd %SERVER_BIN_PATH%\binserverHolder.exe res\lua\server\game\start-up.lua原创 2021-06-15 21:18:50 · 3930 阅读 · 3 评论 -
游戏方面NTP时间同步相关知识
示意图protobuff包定义message SceneClocksyncRequest{ int64 originate_timestamp = 1;客户端发送请求的时间T1}message SceneClocksyncRet{ int64 originate_timestamp = 1;客户端发送请求的时间 T1 int64 receive_timestamp = 2;服务器接收请求的时间 T2 int64 scene_timestamp原创 2021-06-08 19:36:57 · 392 阅读 · 0 评论 -
角色登陆流程
原创 2021-05-28 10:55:45 · 255 阅读 · 0 评论 -
四叉树lod结合灯塔AOI
灯塔相关结构体1:灯塔区域结构struct towerSpace_s{ void (*callback)(void*pUserData,bool bAddTo,uint64_t watcher, uint64_t marker); -- 回调函数 void* pUserData; //用户信息 float fMin[2]; //最小位置 float fGridLength[3];//网格x y,z方向长度 float fMovefRange;//移动范围 int32_t原创 2021-05-25 18:02:18 · 2325 阅读 · 5 评论 -
网络同步技术
基于ARQ(自动重传请求)原理超时自动重传时候有三种实现方式等待式在A重传M1的时候需要B确认之后A在发送M2的包,如果这种情况会造成信道的浪费(通道过于空旷),所以我们会有进一步的优化,于是就有了后退N步方式后退N步式M3丢包了,这个时候就会启动对M3的超时重传,A在重传M3的时候又会把M4M5重传一次,这样会造成一个问题,造成对网络信道的一种浪费(通道过于拥挤),为了对这中浪费我们需要进一步的优化,于是就有了选择重传选择重发这个时候我们可以把M4,M5缓存起来,这个原创 2021-05-24 14:54:38 · 297 阅读 · 0 评论 -
开始立项时候的一些帧同步的总结
一 帧同步注意事项1:float问题主要是和平台iee754 和iee854平台不同,还有运算精度问题,建议使用定点数来解决这个问题2:多线程问题主要是每个客服端多线程算出结果可能会不一致,比如A客服端用了3个线程来算你 这个数据,b客服端用1个线程来算你这个数据导致最后A和B的结果不一致,除非你 能保证最后结果一致,要不最好别用3:注意容器的排序不确定性,Coroutine内写逻辑带来的不确定性4:vector 浮点数问题5:物理碰撞问题6:随机数问...原创 2021-03-16 15:11:49 · 495 阅读 · 0 评论 -
位置同步策略
此思路参考的云风写的开发笔记流程如下:进入地图时做一次客户端和服务端的对时,以服务端为准,计算时间差,以后每隔一段时间(1分钟)对时一次。客户端每隔一段时间(1秒),将当前运动状态(位置、速度、加速度)和时间戳T1同步到服务端。服务端接到客户端同步后,立即推送给地图中的所有人的客户端。以下对于接收方是自己和其他人,两种情况分别讨论:对于其他人,根据T1时刻的运动状态和当前本地时...原创 2020-04-22 23:48:02 · 387 阅读 · 0 评论 -
客服端先进行判断服务器进行验证技能流程
原创 2020-04-22 23:33:48 · 232 阅读 · 0 评论 -
并发多进程服务器和多线程服务器总结
多进程服务器和多线程服务器区别多进程的服务器就好比是 立体的交通系统(立交桥)虽然说建造的时候花费比较大,消耗的资源比较多,但是真要是跑起来不会交通堵塞。但是汽车在上面跑,相互通信就是个很费事儿问题(进程间通信比较麻烦);多线程就好比是平面的交通系统,造价低,但是很容易交通堵塞, 但是也有好处同步的时候方便。在网络服务器方面单进程 < 多进程(单线程)< 多进程(多线程)...原创 2020-04-17 00:15:46 · 780 阅读 · 0 评论 -
游戏框架
此架构呢适用于ARPG类型游戏,便于分布式部署,当然其他类型也可以根据实际情况增删查改各游戏进程用途说明账号平台和数据统计和运维管理Web服全局游戏用微服务API服务器【可横向水平扩展全局功能API服务器-golang开发】大区内平台公用服务器大区平台内公用进程列表【目前为了简化采用1平台:1游戏配置】:单服内游戏核心进程服务器全球数据同服游戏逻辑进程服务器...原创 2020-03-16 23:01:42 · 846 阅读 · 0 评论 -
怪物的同步
这个和传统的mmorpy同步策略略有不同怪物的同步怪物的同步在传统的端游里,是完全由服务器的怪物AI系统触发,客户端只是纯粹的接受服务器下发的怪物状态数据。对于手机游戏里,由于手机上很难出现像PC里那样的外挂-[市场产品竞品假定前提],所以怪物的AI可以考虑放在客户端触发,同时减少怪物的状态同步。详细说明如下: 怪物的随机移动不同步在地图上,怪物都会有一个固定的位置。怪物没有进入战斗状...原创 2020-03-14 21:10:41 · 1122 阅读 · 0 评论 -
人物同步
客户端地图格子的相关知识在2.5D的MMO游戏里,角色是通过3D的方式渲染,2D的地图是通过2D的方式显示,所以在客户端一般会有三个坐标系:a) 3D坐标系:所有需要3D渲染的角色和光效,都以3D坐标系中定位。b) 2D坐标系:用来定位和绘制固定的2D地图元素,比如草皮、马路等。c) 3D坐标里的格子坐标系:用来实现打掩码、自动寻路和进行一些坐标配置(比如NPC和怪物初始的位置)。使用...原创 2020-03-14 20:44:16 · 2635 阅读 · 0 评论