【游戏客户端】实现游戏中的小地图
【游戏客户端】实现游戏中的小地图
之前的博客中,我和大家分享了如何做:
- 商业化的充值活动 :【商业化充值活动博客】
- 抽卡系统:【抽奖,抽卡系统博客】
- 装备系统:【装备系统博客】
- 红点系统:【红点系统博客】
- 商店&拍卖系统:【商店&拍卖系统】
- UI环绕特效:【UI环绕特效】
- 实现刮刮乐效果:【实现刮刮乐效果】
- 实现卡牌翻转效果:【实现卡牌反转效果】
- 实现剧情对话:【实现剧情对话效果】
今天和大家分享一下如何制作游戏里的小地图的思路,主流的实现方式有两种:
(一)预制作底图
首先第一种就是预制作底图,就是把场景的整体外貌作一个缩放并提前制作成图片,程序在写代码的时候只需要简单的把图片加载到控件上就可以了
(1)预制作底图的好处
这种做法比较简单,而且由于是美术的输出所以底图的质量是可控的
(2)分块获得场景外貌
首先就是要获得整个场景的样貌。在对场景进行航拍取景的时候,我们并不能简单的把摄像头拉到很高的地方,然后正交投影的相机以俯视的方式把整个场景渲染到一张图上,这样得到的图片会很糊
为了地图的精度,我们可以设定采样的规则,统计整个场景有多少地图块,然后多少个地图块进行一次航拍,遍历所有的地图块,然后把拍到的图片再重新整合成一个完整的图片交给美术优化再重新打入游戏就可以了
(3)预防内存裂开
对于一般的场景来说,(2)的做法是可以完成需求的。但是!!!如果是那些很大很大的地图,比如吃鸡,率土这些大场景来说,如果直接合成一张完整的航拍图只会有两个结果,要么美术的photoShop裂开,要么加载进游戏的时候引擎裂开
因此我们必须采取另外的优化手段,比如我们的小地图是一个正方形,那么我们就不直接把各小块合成一张”大“图,而是合成3*3九张”中等“的图
(4)多级分辨率设计
当然这样子做只是减轻了美术的压力,当我们把这9张中等规模的图load到游戏中时,占用的内存是一样的,因此可以采用多级分辨率设计(其实就是利用越远越模糊,越近越清晰的思想),把地图按照清晰度进行分级
比如还是那个九宫格,当玩家观看整体的地图时,是由九张图片进行合成的,一张一M那就是9M,当玩家想看左上角那一块地图时,则进入下一分辨率,重新加载左上角所组成的九张图片,同样是一张一M,这样玩家无论什么时候都能看到9M的图片资源而不是对1m的资源进行放大!!通过配置不同分辨率的资源来实现固定内存开销却又满足清晰度的需求
(二)实时渲染制作小地图
上文巴拉巴拉了一大堆,最后看似保证了清晰度且稳定了内存开销,但是想想也知道多分辨设计会很影响包体大小,而实时渲染就可以直接根据可视的UI,Capture出当前显示的地图,然后load到小地图的精灵就可以了
其实就是时间换空间的方法
(1)实时渲染制作小地图的好处
而实时渲染制作小地图的地图,就可以保证了每帧的小地图上的显示信息的准确性和即时性,无需预制作底图,不会增加包体和底图维护的开销,渲染的效果和表现脚本可控
(2)降低实时渲染的开销
当然缺点也很明显,需要用时间换空间,频繁的capture会造成性能的损耗。因此需要减少渲染所造成的开销
比如如果原先capture的大小是目前玩家可视的场景画面,那么每帧都需要重新绘制小地图,而如果,我们把capture的大小设定为可视场景大小的四倍,然后将之加载到地图中
那么这个时候只需要作一个简单的裁剪,同样能展现出玩家当前的小地图场景,但是好处是只要玩家没有超出”边界“,我们就只需要对地图进行位置的移动,这样子就避免了每一帧capture的开销
不知不觉已经十点半了,好啦今天就到这里
点赞,关注!!!
【游戏客户端】实现游戏中的小地图相关推荐
- QA经验分享:游戏客户端性能
更多行业干货,上网易游戏学院app查看! https://game.academy.163.com/ssi/app/?referrer=csdn 客户端是有硬件平台支撑的APP程序,同时能够提供本地服 ...
- 从客户端游戏漏洞看开发中的安全隐患
本文转自wooyun知识库0x00 前言 虽然现在的应用开发越来越趋向于web应用,大型软件也大量使用了现有的框架,随着现有框架和引擎的完善,绝大多数安全问题已经被解决.但是遇到一些定制需求时,开发人 ...
- 【游戏客户端】聊天排行榜朋友圈系统实现机制
[游戏客户端]聊天&排行榜&朋友圈系统实现机制 之前的博客中,我和大家分享了如何做: 商业化的充值活动 :[商业化充值活动博客] 抽卡系统:[抽奖,抽卡系统博客] 装备系统 ...
- html5游戏性能测试工具,游戏客户端性能测试常用方法 - msnshow的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
51Testing软件测试网"t%d f3a~3SM 概述*kB&\&Q*~,DL&Ny$I0 ~NF&|Vt)BB*h}0 衡量一个游戏客户端产品的性能,是 ...
- cf修改游戏客户端是什么意思_cf游戏客户端是什么
穿越火线双十一大狂欢 CF游戏一局即送邓紫棋 火线双十一大狂欢,英雄级周免已经开启,更有巨肺天后邓紫棋亲临献shen(g?). 克苏鲁的呼唤保险箱密码是什么 克苏鲁的呼唤游戏中有一关是要玩家输入一个保 ...
- 【游戏客户端】剧情系统
[游戏客户端]剧情系统 "剧情是游戏的灵魂" 一个优秀的剧情设计能够让玩家更好的了解游戏的世界观,致使玩家能够沉浸式体验游戏.大家好,我是Lampard猿 ...
- 2023秋招--游卡--游戏客户端--二面面经
一面面经 2023秋招–游卡–游戏客户端–一面面经 二面:9/20 - 40min 面试官提问:38min 一共两个面试官,首先技术面试官提问 自我介绍 介绍项目.实习中的难点,怎么解决的 Unity ...
- 【游戏客户端】如何实现环形进度条
[游戏客户端]如何实现环形进度条 Hello大家好,我是Lampard.好久没写博客了,之前在忙着制作项目的一个大的副本,趁着过年得闲,和大家分享一下制作过程中遇到的一些有趣的问题.今天主 ...
- 游戏客户端安全方案。
1.客户端版本号也能让游戏客户端变得不安全. 2.移动端的游戏通常都会根据客户端版本号决定是否要提示客户端升级或下载新的资源. 在版本的开发过程中通常都会使用 1.1, 1.3, 1.6 这样的版本号 ...
- 【游戏客户端】实现刮刮乐效果
[游戏客户端]实现刮刮乐效果 之前的博客中,我和大家分享了如何做: 商业化的充值活动 :[商业化充值活动博客] 抽卡系统:[抽奖,抽卡系统博客] 装备系统:[装备系统博客] 红点系统:[红 ...
最新文章
- [转]asp.net权限认证:摘要认证(digest authentication)
- julia与python对比_有人说Julia比Python好,还给出了5个理由
- sql(join on 和where的执行顺序)
- python获取当前路径导包_python 通过文件夹导入包的操作
- CentOS系统缺少库文件解决办法
- 时间序列数据的存储和计算 - 开源时序数据库解析(一)
- 华为手机设置页面黑色_羡慕黑色背景照片?华为手机简单一招即可轻松拍摄
- 冷链场景应用实例解读
- EDA365_skill2.5百度网盘资源
- SSM+中小型企业绩效管理系统毕业设计-附源码081536
- 电影评论分类:二分类问题(IMDB数据集)
- 在系统中增加各银行卡刷卡消费分析
- ETOKEN 身份认证 电子证书
- 数独基本规则_独数游戏,数独题目大全
- Edit Control响应全选(Ctrl+A)
- 人工神经网络:径向基函数神经网络
- 用英雄联盟的方式讲解JavaScript设计模式!
- 【测试源】bbb_sunflower_1080p_30fps_normal.mp4 等下载地址
- Pytorch 实践 —— 乳腺癌预测
- 太阳能光伏发电基础知识科普教学QY-TF11
热门文章
- 做LED照明类产品有感
- 钢琴节奏时值测试软件,钢琴技巧:弹奏时值较长双音的技巧——自网络
- centos mysql5.6卸载_centos 卸载mysql
- markdown 插入视频 、gif、 MP3
- Netty处理器的小技巧和Netty大文件传输方法思路
- 地理信息系统GIS的评价
- 计算机桌面蓝字,教你电脑桌面图标有蓝色阴影怎么去掉
- 【Watery DP】[Dota1002]光之守卫(Gandolf)
- 什么是“决策表”?什么是“决策树”?
- Win11触摸键盘如何开启?