游戏开发之问,这种游戏怎样开发?

1个回答

写回答

何群群

2026-02-14 21:00

+ 关注

韩国
韩国

引擎其实无所谓,关键是制作思路。2.5D视角自2000年初被暗黑破坏神2带火后就很流行,当时那些被统称为韩国泡菜的韩国网游好多都是暗黑破坏神2的换皮游戏,其中最著名的当属传奇。传奇是用Delphi5+WinGDI制作的,根本没用任何引擎,现在做引擎的人里,不少甚至都没听说过Delphi。所以这和引擎没关系,只要思路正确,用不用引擎都能制作。那么说回正题,这东西要怎么做?学习路线又是什么?别管它是否斜45度,它都是基于瓦片(tilebased)的。tilebased属于一种逻辑数据,就是把肉眼看到的块当作逻辑中的点来处理。要做出画面中的这些内容,在基于瓦片的游戏里得有这样几个游戏制作方面的历练:这是我给新人的建议:想入行做游戏,先尝试做仓库番或者俄罗斯方块。但很多傲慢的笨蛋不接受,觉得这是对他们的侮辱,真是可笑。仓库番和俄罗斯方块都属于标准的基于瓦片(TileBased)类型的游戏。仓库番注重静态的基于瓦片逻辑地图概念,一旦掌握了仓库番的制作,就能制作像最终幻想、早年勇者斗恶龙那种游戏的大地图模式了。可别小瞧仓库番这种小而全的游戏,它蕴含着通往游戏开发的道路,包括:看明白了吗?要做题目里这个东西,先得做个俄罗斯方块,这就需要有tilebased相关概念。Tilebased相关概念不只是贴图方面的问题(贴图是另一回事),还包含前面提到的逻辑问题。

为什么要做俄罗斯方块?因为它具备动态改变逻辑单元格的能力。学会这个,当家具位置变动后,你就能清楚阻挡信息该怎么做了。家具的阻挡信息总是需要的,比如在(3,3)放了桌子,那会覆盖(3,3)的橱柜就放不了了。那么第一步,你得耐着性子去学习玩俄罗斯方块和仓库番。这就好比武侠小说里练武功是从挑水、扎马步起步的,一上来就练华山剑法的,最后都会被像我这样的反派瞬间打败。那为什么要做火纹?火纹里存在着游戏图里的另一个问题(当然,不一定只是火纹,英雄无敌也有这问题),即火纹系列中有些单位所占格子不止一个,对吧?

在这里,你得学会前面提及的Anchor Grid概念。每个单位逻辑上仅有一个Vector2Int坐标,可实际上它或许占据多格。这多格并非简单地用再创建一个List来表示它的偏移坐标格就能解决的,而是:当确定角色落点时,这些格子不能覆盖到某些格子或者超出棋盘,这是首要解决的问题。所以在判断某样东西能否放进某个格子时,应该判断的是一个坐标加上一个偏移量数组。通常教程里告诉你判断一个坐标能否放置,这其实是完全错误的。第二个更简单些,他作为阻挡者在地图上占据多个单元格,对吧?把Tilebased概念弄清楚后,这就不是特别难理解了。说到这,是不是和你图片中的许多家具相同?

小说
小说

就拿这个柜子来说,它是(3x1)或者(1x3)的吧。像床之类的物品会更大,并且还不一定是完整的矩形。这时候你用Vector2Int当作offset,针对代表其坐标的Anchor Grid就能解决问题,这是制作这类游戏要学的第二项内容。然后就是斜45度视角的游戏了。除了像传奇大菠萝这种单层的,还得有多层的,于是就打算做皇家骑士团类游戏,那斜45度视角会有哪些坑?

首先要学会坐标轴转换,这是二维数组与坐标系的关系,二者是平行世界关系而非绝对关系。简单来讲,二维数组能储存平面俯视视角,也能转化为其他视角,其本质是数据,所以这就是个坐标到下标的简单转换问题。

接下来就是贴图谁覆盖谁的问题了,在unity里这就是sorting order赋值的问题。要是平面俯视的,像仓库番那种,只要简单地让越下面的格子排序越靠前就行。但要是斜45度的话,就存在谁覆盖谁的问题了,就像你问题图中的那样。

最后还有个非常难的问题,我怎么能知道自己鼠标选中的是哪个家具?你看这图,我鼠标点在红圈里的一些地方,像最左边,这时候是要点灶头还是白板就很难判断了。这是玩皇家骑士团like游戏才会碰到的情况,其实解决起来并不复杂。这个不管用啥引擎都能做,放心去做就好,不过先得学会前面提到的知识和技巧。

举报有用(6分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号