《骑马与砍杀2:霸主》开发日志(80)——Gauntlet(UI框架)

卡拉迪亚的战士们,大家好!

游戏开发可能会是一件棘手的事情。有的时候现有的技术或者工具并不能完全按照做到你想要的底部,或者没有你想象地那样有效率。这就让你做出艰难的选择:改变你的设计或者自己定制一个解决方案。

这是我们在处理霸主的用户界面(UI)时意识到的问题。之前,我们把Flash和Scaleform结合起来创建自己的UI,这是游戏界里很常见的方法。我们先用Flash创建UI,然后用Scaleform让UI在游戏里运行。技术上来说,Scaleform和Flash的运行都很好,并让我们能够去通过喜好来应用UI。然而在之后不久,我们在创建和利用UI的时候发现了一些问题。

首先,这个制作过程非常缓慢。在放到游戏上测试之前,任何UI的的更改都需要在Flash上操作。随着界面变得复杂, .swf文件生成时间就会更长。然后我们每次做的更改都需要重新加载才能看到结果。即便是个小的改动,也需要把一个东西向左移动5位,这也需要很漫长的过程。

此外,Scaleform和Flash都是我们不能有效控制的第三方框架。由于需求而去更换和修改所造成的困难,让我们开始怀疑我们做的这些努力是不是值得。

最终,我们意识到我们在UI上花费的时间和精力确实拖了我们的后退,而能拥有符合我们自己所要的游戏UI就是创建我们自己的UI库。毕竟,一些困难实际上是机会伪装起来的!

这是一个可怕的前景,因为我们在现有的UI中花了上千小时。幸运的是,在开发过程的早期我们救救决定用一个教MVVM的框架创建UI。这意味着我们部分代码会是简洁的C#而不需要以来某个特定的UI库,而我们可以把这部分代码重新利用起来,即便我们我们也需要重新做这部分工作。耶!

接下来,我们决定了我们的新UI库是什么样子,我们提出了以下需求:

我们决定命名我们的新UI框架叫Gauntlet【护手,臂铠】(也就是听起来很酷!)。有了Gauntlet,我们能即时进行更改,也就是在不关闭游戏的情况下编辑界面,不需要生成文件或者额外的步骤。当我们用xml文件更改界面时,我们能通过保存文件来看到结果。而且因为我们可以完全控制系统,我们就能根据需求对系统进行更改。

那这个东西是怎么运作的呢?这个系统实际上很简单。我们把xml合并到游戏界面里,当游戏加载的时候这个界面就会打开。界面的所有信息布局都指定在这个文件里。我那么还能在每个xml之间引用其他xml,这意味着如果我们创建了可以多次使用的UI元素(能用在其他界面里),我们就直接引用这个元素。这能让我们能随意更改文件,并能在这类xml引用的时候直接发生变化。

我们也有一套独立的xml文件来指定不同元素的外观,就像html页面中的css文件。这种外观系统非常强大,美工可以轻松指定某个UI元素的外观和运行细节。比如说,当玩家把鼠标放在一个按钮上时,按钮就会变色,点击的时候就能播放一段动画。(也就是说UI做好了就能有绚丽的效果)

游戏中的库存


xml格式的库存

我们希望Gauntlet系统能受到mod团体的欢迎。在战团,UI编辑一直是一件头疼的事情,而且总会有一些限制无法解决。有了Gauntlet系统,mod制作者就能完全掌控每个界面,唯一的限制就是他们的想象力。

下一周,我们就会和设计助理Cihan Şekercioğlu谈话。如果你有什么问题想问他,请在下面留言,我们会选择一个问题来对他进行问答。

本文禁止转载或摘编

-- --
  • 投诉或建议
评论