• 注册
  • 玩家交流 玩家交流 关注:1790 内容:12823

    关于小地图迷雾全开的一些问题

  • 查看作者
  • 打赏作者
  • 当前位置: 七日杀中文网 > 玩家交流 > 正文
  • 玩家交流
  • Lv.5
    冲向2023

    发一篇帖子,算是交流,也算是记录一下心路历程
    先说一下起因,我最开始是想实现地图全开的效果,但是七日杀的类很多,没有什么思路
    后面看到了关于homelist的帖子,自定义传送HomeV2 修复1.11版 适配V1.2(开源)12.11更新
    在里面提到一个XUiC_MapArea类,提到onOpen方法(这类挺大的,将近两千行代码)
    我这里想到一个思路,既然打开地图了,那肯定是会调用相关的渲染
    然后我通过AI分析找到了updateMapSection方法,其中提到如下内容(以下为AI分析结果)(完整代码我就不展示了,自行反编译)

                // 检查地图数据库中是否有该区块的数据

                long chunkKey = WorldChunkCache.MakeChunkKey(num3, num4);

                ushort[] mapColors = mapDatabase.GetMapColors(chunkKey);

                if (mapColors == null)

                {

                    // 如果没有数据,显示迷雾(黑色)

                    …

                 }

                 else

                {

                    // 如果有数据,根据迷雾掩码显示部分或全部

                    bool flag2 = mapDatabase.Contains(WorldChunkCache.MakeChunkKey(num3, num4 + 1));

                    bool flag3 = mapDatabase.Contains(WorldChunkCache.MakeChunkKey(num3, num4 – 1));

                    bool flag4 = mapDatabase.Contains(WorldChunkCache.MakeChunkKey(num3 – 1, num4));

                    bool flag5 = mapDatabase.Contains(WorldChunkCache.MakeChunkKey(num3 + 1, num4));

                    // … 后续代码处理迷雾边缘效果

                }

    可以看到这里找到了mapDatabase,地图数据都存在这个变量里面,我只需要找到再哪里给这个变量赋值的,就能够实现地图全开,但事与愿违。

    分析this.localPlayer.ChunkObserver.mapDatabase的被调用

    // 在PlayerId方法中

    entityPlayerLocal.ChunkObserver = this.m_World.m_ChunkManager.AddChunkObserver(entityPlayerLocal.GetPosition(), true, GameUtils.GetViewDistance(), -1);

    // 在RequestToSpawnPlayer方法中

    entityPlayer.ChunkObserver = this.m_World.m_ChunkManager.AddChunkObserver(entityPlayer.GetPosition(), false, _chunkViewDim, entityPlayer.entityId);

    一个是通过GameUtils.GetViewDistance()方法去赋值的,另一个是

    int num = GamePrefs.GetInt(EnumGamePrefs.ServerMaxAllowedViewDistance);

    _chunkViewDim = Mathf.Clamp(_chunkViewDim, 4, num);

    以下为AI分析结果

    这里的GameUtils.GetViewDistance()返回的是玩家的区块观察距离,这直接影响地图上迷雾的显示范围。

    ServerMaxAllowedViewDistance是服务器可以通过配置限制玩家的最大观察距离,从而间接控制迷雾的显示半径。


    其实已经不用向下继续分析了,整套分析结果总结下来就是,七日杀地图通过玩家可见范围,进行实时渲染绘制地图的(这还玩个蛋啊),已经卡在这里了,希望中文网能有大佬提供新思路。另外补几张分析图

    关于小地图迷雾全开的一些问题

    关于小地图迷雾全开的一些问题

    关于小地图迷雾全开的一些问题

    关于小地图迷雾全开的一些问题

    "点赞是美意,打赏是鼓励"

    Lv.9

    没啥好分析的 原理就是弄个人开飞行模式挨着飞一遍

    定制+Q417983415

  • 什么都只会一如果服务端能存储一份跑开地图的地图数据,玩家加入时将它传给玩家覆盖掉玩家本地的地图数据,或许真的可以实现地图全开,应该叫地图共享 [s-39]
    拉黑 1个月前 电脑端回复
  • 回复
    Lv.9
    冲向2023
    提供一个思路,把视野扩大到10000米,进图会卡一会,然后地图全开
  • 什么都只会一这个我有想过,本地单机或许可以,性能消耗也很大。如果是服务器,一直有玩家进进出出,一直加载所有区块,会卡的不要不要的
    拉黑 1个月前 电脑端回复
  • 无名_577 @什么都只会一 可以设置成一个单独的mod,然后开服务器的时候服主打一下开全图,然后把mod去掉,另外再打一个地图共享的mod共享给其他人。不过就是有点麻烦。
    拉黑 1个月前 电脑端回复
  • 小沐1212游戏探索未知的乐趣就让你们给整没了
    拉黑 1个月前 手机端回复
  • 超级刘晨还有一个笨办法,地图作者直接制成图片版的超大对照地图,玩家可以对照着地图图片玩。就是作者前期拼截图做对照地图,太肝了,要先吐几口老血。。。。 [s-25]
    拉黑 1个月前 电脑端回复
  • *❀༒希/斯 @超级刘晨 也不是不行2333
    拉黑 1个月前 电脑端回复
  • 回复

    有种地图渲染的感觉

    回复
    大版主
    Lv.9
    武林萌主

    求大佬先出一个视野范围在1千米范围的mod,我拿来做地图用,原版的范围只有100米

    回复
    大版主
    Lv.9
    武林萌主

    还有一个问题,地图本来就是已经完全生成了的,用上帝上天就知道,,只是地图不放开而已

  • 什么都只会一上天的时候只能看到一个大致的地形,只有当玩家靠近的时候,建筑物才会生成
    拉黑 3星期前 电脑端回复
  • 无名氏_217 @什么都只会一 建议开发一个可视区域,提升5-10被这样对于游戏性能影响不大
    拉黑 3星期前 电脑端回复
  • 无名氏_217都是一次性的东西
    拉黑 3星期前 电脑端回复
  • 回复
    创建和谐社区,请勿发表 不符合法律法规 的内容,社区不是大家 发泄个人情绪 的地方
    获取金币请查看 网页右侧悬浮栏领金币按钮 ,做 签到社区任务 获得金币!

    请登录之后再进行评论

    登录
    • 大版主
    • 小版主
  • 摸鱼摸鱼摸
    摸鱼摸鱼摸
    交流吹水群967780922
  • 柒月白风清
    柒月白风清
    一只小萌新,万年摸鱼党!已经脱坑了。。。
  • Cure_805
    Cure_805
    晚上在睡觉,白天在工作,不一定能及时回复,有事可以留言!
  • 至善丶丶
    至善丶丶
    群:1050040662 定制/开服/地图制作/价格公道
  • 银河
    银河
    CSOL大灾变欢迎你的到来。QQ群:967780922
  • 无名氏_217
  • 安安
    安安
    大背包、常显、叠加、除草树,唯一作者QQ383125283
  • happy!
    happy!
    住院中
  • 咖啡很苦
  • 妮可Neko
    妮可Neko
    无聊写些小玩意儿
  • 暂没有数据

    赞助广告位

  • 点击展示图片即可一键加入QQ群
    赞助广告:100R/月 目前空缺广告位:0

    分享网站

  • 繁体中文
  • 任务
  • 动态
  • 到底部
  • 帖子间隔 侧栏位置: