风暴幻想游戏家园系统设计芷水

(1)这些东西如何在场景中摆放:地面,围墙,小窝,人,未解锁区域等等。

(2)地图大小限制和地图最小单位的大小等因素。

(3)我们需要保存的数据有哪些。

当时的解决方法:

1)幻想的地图层,把地图分成好几块加载的。策划根据地图编辑器生成了对应的文件,底层加载地图的时候会加载这些地图。但是家园地图是一个全新的地图。而且不是地图编辑器编辑的。但是底层有不提供修改支持。因此原先那几块地图就用了空的文件进行修改。相当于进入这个场景的时候,是一个黑的世界。

2)地面,围墙,小窝,人,未解锁区域等,所有的家园场景的东西,我们通过不同的层加载到场景里。写了一个HomeMapDrawObject.lua下面是它的初始化函数。

下面是HomeMapPiece.lua

幻想的原先的地图的逻辑块大小是60*30代表一个格子。所有如果在原先基础上进行寻路和拾取就变成了60*120,120*240的地图。

当时美术那边提出说,要使用菱形的地板,从美术角度来说,看起来的效果会好一些。最后使用的方案是这样的:

图中的坐标系是服务器的坐标系,一个菱形面积等于二个坐标系格子面积。这样的摆放,通过观察会发现一些规律。

规律1:例如第一排的点A,B他们的坐标分表是(1,1),(3,1);第二排的点C,D他们的坐标分别是(2,2),(4,2);x,y满足奇偶性。

因为我们摆放的点不存在例如(2,3),(5,6)类似这样的点。

规律2:因为我们需要进行拾取判定,我们的点击可能落在任意坐标系格子内。但是可分成8种情况进行讨论(一个菱形区域中)。

下面讨论其中的1种情况。

1.例如图中E点,根据图中可以看出,当我们点击E点的时候,实际上我们要算出,当前我们点击的是(7,3)这个点的菱形区域。

E点的周围4个点分别是(min_x,min_y),(min_x,max_y),(max_x,min_y),(max_x,max_y)。(这些点都可以通过e点向上取整或者向下取整得出)

这4个点中的一个点就是当前我们想求出的菱形区域的中心点。

但是此时,连接的是(min_x,max_y),(max_x,min_y)这两个点,构成了菱形的一条边。

经过观察,我们知道

E点的min_x=6,max_y=3,和E点相类的点F,它的情况是min_x=7,max_y=4,可再根据几个点进行观察总结。

我们可以得出

当min_x,max_y不是同奇数或者同偶数的时候,连接的是(min_x,max_y),(max_x,min_y)这两个点,构成了菱形的一条边。

当min_x,max_y是同奇数或者同偶数的时候,连接的是(min_x,min_y),(max_x,max_y)这两个点,构成了菱形的一条边。

2.由于1.得出的判断,我们可以排除2个点(因为已经构成了菱形的一条边了),剩下2个点,我们要如何判断呢

使用线性规划,根据1.求出的这2个点,我们构建直线,判断E点是在这条线段上方还说下方。这样,我们就可以得出需要找到的那个点了。

剩下的几种情况类似,同理进行讨论。

通过这样,我们就可以进行对拾取和放置场景碎片(草地,小窝等)进行操作。

4)我们需要保存和维护的数据有哪些呢?

1self.pieceList={}--家园碎片对象(草地上的东西等)2self.map={}--家园地图3self.roadMap={}--可行走的区域维护4self.shadowMap={}--阴影区(人行走在这个区域会调整透明度)5self.tmpList={}--临时展示的区域6self.lockList={}--解锁格子信息

2.拾取问题。

如果通过模拟点击能判断到是具体哪一个地图最小元素。

下面代码是通过服务端逻辑坐标,计算出当前点击的是哪一个地图逻辑块的中心位置的坐标。

1functionHomeController:homePiecePick(location)2localpos=HandleRenderUnit:ViewToWorld(location)3pos=HandleRenderUnit:WorldToLogic(pos)--服务端的逻辑坐标4localscaleSize=HomeMapManager:getInstance():getScaleSize()--缩放比5localhomeLogicX,homeLogicY=self.handleTerrainHandler:ToHomeMapPos(pos.x,pos.y,scaleSize)67self:modelHander(homeLogicX,homeLogicY)8endViewCode

3.寻路问题。

(1)使用一个怎么样的寻路算法。迪杰斯特拉,或者A*,或者其他方式。

(2)如何维护一个动态地图。

首先要解决的是一个动态维护的过程。其实按照前面的铺垫,这个动态地图的维护并不难,等同于维护一个可行走区域。当加入一个逻辑快的时候,

我们会对这个数据进行分析,加入的是什么。是草地,还说小窝或者是其他什么东西。这里就可以需要添加一个判定函数,这个东西是行走有否。

然后分别对这个区域,和这个区域的相邻区域进行设置。这样加入和删除一个地图里的元素,我们都可以动态处理。

下面是动态删减的维护代码,其中SCENE_DIRECTION是当前地图最小格子,周围8个方向的table

原先使用的方案是迪杰斯特拉。刚刚说起,这个最小的地图是3600*3600,然后根据我们铺的菱形他的大小是120*60的。所以最小的行走地图是

30*60=1800个点。但是大多数情况下这个地图并不是稀疏的地图。极端情况可能存在路径是1800*8个方向=14400条路径。每一次行走,我们需要形成1800个点的最小生成树,这样消耗比较大。这仅仅是3600*3600的地图。后面扩展成7200*7200,会更明显。

A*算法。详细的这里不介绍了。详细请谷歌百度一下。

A*的实现

4.其他问题。

因为家园场景中对象太多,进入场景的时候,一次创建会卡帧。体验很不好。有一台比较老的安卓机子,等了好久才加载完这个场景。后面采取的方式是分帧加载。一帧创建几个对象。然后在x秒后能够完成创建完这个场景。这里的x需要各种尝试,应该多大,肯定不行,玩家进入场景的时候明显感觉到到周围是黑色的。如果过小也不行,代表一帧需要加载的数量太多,会卡帧。而且不同的手机性能不同,也会有不一样的效果。

THE END
1.家园游戏有什么家园游戏推荐家园游戏排行家园游戏有什么家园游戏中小伙伴们要做的有很多,有些游戏当时需要小伙伴们去采集资源,建造基地,制作工具,对抗野生动物,有些游戏里需要小伙伴们拆除各种违规建筑,为了便民生活而建造各种生活服务设施,还有些游戏里可以自由的在没有物品的空地之上建立起各种不同类型的建筑,可以是服务设施,也可以是生活设施,由玩家自由https://app.ali213.net/heji/jyyxysm.html
2.有家园系统的游戏有哪些下载2024有家园系统的游戏有哪些推荐九游有家园系统的游戏有哪些游戏榜单为您提供2024新出的有家园系统的游戏有哪些下载推荐、经典有家园系统的游戏有哪些合辑、好玩的有家园系统的游戏有哪些安卓下载资源,同时还有最新有家园系统的游戏有哪些资讯推荐,欢迎到九游下载。https://www.9game.cn/zhuanti/360142/
3.哪些游戏带有家园系统游戏懂哥的动态以下是一些带有家园系统的游戏: 1. 《圆梦庄园》:这款游戏是一款模拟经营农场游戏,玩家需要在游戏中建造一个生机勃勃的庄园。玩家可以种植农作物、饲养动物,并建造和加工厂。通过订单赚取金币,售卖作物可以扩建庄园。玩家可以自己编辑地形和马路,打造理想中的庄园。 https://www.taptap.cn/moment/538082578440129249
4.有家园系统的单机游戏,有家园系统的单机游戏有哪些单机有家园系统的单机游戏,有家园系统的单机游戏有哪些 像,家园,一样的单机游戏有哪些? 现代城市建设类的,模拟城市系列,都市运输系列,特大城市,海岛大亨,纪元系列(这个从中世纪到未来科幻殖民月球都可以玩),工人物语系列 类似家园7贵族的单机游戏? 《龙之崛起》,原名为《皇帝:中国的崛起》,是Serria公司城市建设系列的https://www.koreaps.cn/jiaoshi/10944.html
5.有家园系统的仙侠游戏推荐可以布置家园的仙侠游戏有哪些以其独特的仙侠世界观和奇幻的故事情节吸引了大量的玩家,但一款有魅力的仙侠游戏却是靠着丰富的玩法内容留住了更多的玩家,比如大家都非常喜欢,非常耐玩的家园系统,玩家可以在修仙战斗之余休闲下来,去建设自己仙气飘飘、美轮美奂的小家,可以布置家园的仙侠游戏有哪些?http://m.9k9k.com/tags/5628/
6.带古风家园系统的游戏带古风家园系统的游戏大全带古风家园系统的游戏都有哪些?本次给玩家整理带来了带古风家园系统的游戏的合集,在这些游戏中的开始经营自己的家园,当然玩家也可以在丰富的仙界世界中开始冒险和游戏,给玩家的游戏感受内容都会是十分有趣的,每一个玩家喜欢仙侠游戏的玩家都可以感受到,喜欢赶紧来试试http://m.doyo.cn/zhuanti/dgfhyxtdyx/
7.《原神》家园系统,若按照“牧场物语”的玩法设计会很有意思资讯原神台服官方曾经回复过后续会有家园系统与服装系统,而最近也有内鬼爆出1.3版本会有家园系统,不过boyue觉得可能性很小,宁愿相信1.4稻妻城会上线。 那么当未来某一天原神更新了家园系统,大家希望会是什么样的呢,这边boyue的希望是玩法设计参考牧场物语系列的,能有80%的玩法哪怕照搬必吹。 https://game.xiaomi.com/viewpoint/1127866428_1608213359650_16
8.第六章家园系统【开局福利版游戏系统】上了一天的课,除了四节必修课以外,专业课和自选课也是认真努力的学习中,尤其是专业课上,自由联系时好是让潘玻斯把刚获得技能训练了一番,当然是最低消耗,毕竟不想引起注意,不过专业课导师倒是重点关注了他,不过他并不知道。晚上吃完晚饭,洗漱https://www.hongxiu.com/chapter/18961717801552704/50929550800433859
9.燕云十六声个人家园系统怎么解锁:游戏更新内容前瞻燕云十六声个人家园系统怎么开启?新版本游戏测试中有着全新的个人家园系统可供玩家们进行体验,小编已经帮助玩家们整理好了个人家园系统解锁方法介绍,希望可以给玩家们带来帮助。 燕云十六声个人家园系统怎么开启 1、首先打开地图找到开封府地区,可以看见宅邸标识。 http://www.jingyingbdc.com/texe/25080.html
10.《行侠仗义五千年》家园系统玩法攻略游戏攻略家园系统:打造属于你的武侠乐园在《行侠仗义五千年》中,家园系统扮演着至关重要的角色。作为玩家的休憩之地和实力发展的基地,它提供了丰富的内容和玩法。php小编香蕉特此带来这篇攻略,为你详细解析家园系统的玩法,助你打造专属的武侠乐园,开启波澜壮阔的江湖之旅。 https://m.php.cn/faq/824080.html
11.大话水浒1游戏历史 2游戏简介 游戏风格 游戏背景 游戏文化 3游戏特色 4职业介绍 剑客 医师 武师 术士 道士 5游戏指南 界面说明 基本操作 战斗操作 人物属性 6系统内容 社交系统 召唤兽 宠物 家园系统 7安装说明 配置需求 客户端信息 8词条图册 1游戏历史编辑 大话水浒火石出品的《水浒Q传》06年底交给金山公司代理运营,代https://baike.sogou.com/v6800839.htm
12.攻略激活码礼包开服表好玩么07073魔力家园网页游戏官网合作主题站,为您提供关于魔力家园游戏各方面详尽的游戏资讯.包括: 魔力家园激活码、魔力家园礼包、魔力家园新闻、魔力家园新手指南、魔力家园截图、魔力家园攻略、开服表等.同时还有魔力家园官网的最新动态http://www.07073.com/mljy/
13.你可能没看懂Supercell的新游戏spercell重新定义电子竞技两种家园模式在游戏初期都是一片空地,玩家们在通关之后能够赚取资源来建造家园。《梦幻水族箱》和HDP拥有一个“自由家园系统”,玩家们可以在限定空间内随意摆放装饰品。空间的范围较小,且空间内有一些不可互动的元素,比如道路和河流。但除此之外,玩家可以在其他任何地方建造。这些装饰从视觉上展现了玩家的游戏进度,让https://blog.csdn.net/wubaohu1314/article/details/120636858