界面的本质是美术设计和用户体验,本身相当易变,需要不断调优,拼界面这事最好由设计人员全职负责并积极改进。而美术资源和布局之外,仍然有大量的逻辑是需要程序员完成的,无论是通用控件,还是具体业务逻辑。

说说我了解的实际情况,经历有限,主要举完美的例子:

1. 引擎组提供统一UI编辑器

完美本部的端游基本都是用Angelica引擎开发,从完美世界一直到笑傲江湖。引擎含有UI系统,包括一个所见即所得编辑器,由公司引擎部维护,基本上是所有项目兼容的。一个项目有1~2名UI策划,负责拼界面。编辑器以游戏面板为单位编辑,每个面板对应一个xml,支持固定布局的界面,支持特效,在编辑器里面就可以看见界面效果。

局限

Angelica编辑器仅提供基本控件,项目需要自己定义诸如物品格的逻辑。

兼容性

引擎部会不定时增加新功能,例如“变色文字”之类。各项目组会不定时去取更新的引擎版本。

需求

为保证兼容性,底层需求只能往引擎部提交,等待更新。当然,据我们老大说,也有胆大的项目组硬改,然后硬是反提交到了引擎部。

2. 自己实现UI编辑器

页游和手游时代,有些项目组自行实现了UI编辑器。举其中一个为例:

编辑器是专门写的C#独立程序。游戏本身是Cocos2D-X。

编辑器研发时间约一个人4周:两周框架,两周基本控件。不过呢,这么做一定是有后续修改的。

编辑器是固定布局的。

对于很多项目来说,自制UI编辑器是一个很好的方案,也是推荐方案。编辑器对策划非常友好,易学易用,因为他限制了输入的可能性,没有冗余选项,每个控件直接对应一个明确的功能。另一方面,他特别适合性能优化,因为他对资源的规格、输入输出和预处理有最精确的控制力。不过动手前,需要熟悉UI架构,能说清楚编辑器的功能和结构。

我想详细解释一下优化。页游时代,我们项目的UI是用Flash直接制作的,连带问题就是,各个界面的资源不能共享。同时期使用编辑器的项目,二手手机交易平台已经是使用3D引擎渲染界面,使用共享九宫格,无论是下载速度还是显示性能都有天然优势。

3. 直接使用引擎自带的UI系统

大部分Unity项目,都是由策划人员直接使用NGUI制作UI的。好的系统往往提供更强的功能。例如,NGUI支持自适应纵宽比的动态布局,这是上面提及的自研编辑器所不支持的。美术可以自由添加任何引擎支持的资源。程序和TA可以提供小脚本,让设计人员来直接定义动画效果。但是完全自由组合的系统,对策划/美术的技术要求高,容易引入bug,不易控制性能,资源稳定性差。

我们的项目,有一份面向策划的图文文档,20页左右,说明界面的基本概念,全部的控件和自定义控件,以及常见的错误。

新UI策划的上手大致是这样的:

看NGUI的视频教程,并亲自动手做一次,大致1~2周时间

看项目的UI文档

直接上手拼界面

之后就是在工作的各种bug中刷经验了。由于UI和引擎完全混在一起,又不可能完全解释所有情况,还有麻烦的潜规则,所以“正确地做界面”是要经验积累的。老带新的情况下,新人可以平滑过渡到工作输出。但是如果整个团队从零开始的话,相当需要突出的个人能力,可能需要3个月以上的磨合。

工作流程:

系统策划首先提供系统需求,参考图,以及建议的ui框图。

ui策划一方面提供比例准确的框图,交美术制作。框图要细,需呈现的文字、图标要全,有时候美术做完效果图加一行字,就破坏了布局的美感,运气不好的时候还得做大调整。美术拿到框图制作正式界面,包括效果图和素材。素材按风格分素材集,会复用。

另一方面,ui策划制作比例准确的策划版界面,程序完成逻辑,完成验收,很多时候会发现有用户体验问题,也是在这个阶段修改。我们推荐这个版本尽量完成细节,包括文字颜色、选中态、切换动画等。所有和布局、动画相关的东西,都尽量提供机制,能让策划/美术自己调整。

当美术提供正式界面后,ui策划替换资源,这时候里程碑往往要截止了。运气好的话,不会有代码改动,但很多时候还是有结构修改。

程序需要掌握工程细节。比较困难的部分,例如有交互的动画、需要目前尚缺少的控件逻辑时,需要多方讨论,程序提方案。特别困难的动画,有时候策划会给出参考游戏,用Flash/Unity 做一些动态演示。用户体验特别难,或者技术特别难的情况下,方案可能多次修改,需要有心理准备。

其他:

我们有一位主美,之前在的手游公司,是由程序拼界面的,性能很好。界面完全九宫格化,大致应当类似于设置Style就能换素材。

灵游坊梁其伟《小团队,大制作》表示他们采用了不同的模式,员工倾向于多面手,一人兼任美术、策划、程序中的数职,提出想法同时也负责实施。

14年曾跟人讨论,界面脚本化的情况下,由策划写界面业务逻辑的可行性(这样程序猿就再也不用干活了!)。大多数人反对。但有人表示有一个未上线的项目,其ui由两位脚本策划负责,且合作较愉快。

游戏开发中 UI 是由谁来完成的?相关推荐

  1. VR硬件演进与其游戏开发中的若干注意事项

    最近两年虚拟现实(Virtual Reality,简称VR)从刚刚走进公众视野到逐渐变得炙手可热,很多不同领域的IT开发者都想进入虚拟现实领域.本篇文章将首先讲解VR入门所需要学习的知识,然后从VR软 ...

  2. 为什么在游戏开发中我不喜欢用MVC系列模式了

    为什么在游戏开发中我不喜欢用MVC系列模式了: 1,代码繁冗,当你阅读别人的代码,一个很简单的逻辑,被封装了多次,需要在多个代码文件中索引,阅读效率极低.代码文件分散,一些很简单的逻辑,例如按钮点击, ...

  3. 游戏开发中常用的数据结构和算法

    转载Loving_初衷 前言 时间流逝,物是人非,就好像涌动的河流,永无终焉,幼稚的心智将变得高尚,青年的爱慕将变得深刻,清澈之水折射着成长. ----------<塞尔塔传说> PS:为 ...

  4. 游戏开发中的各种角色浅析

    在以往的游戏开发中,我们往往需要处理很多角色,围绕着这些角色的组织形式,解耦等话题,出现了很多复合设计模式.例如:pureMVC,MVVM ,MVC 等等.对于这些设计模式,都是有利有弊,有他自己的使 ...

  5. lua搭建ui_Unity游戏开发笔记-UI框架之Lua层封装-上篇

    现在的商业游戏开发,业务层绝大多数都是在Lua层实现.UI作为业务一哥,首当其冲.上一篇文章我们讲了UI框架在C#层的封装,这篇文章核心介绍下在Lua层的封装.还有之前遗留的几个问题数据层和显示层的抽 ...

  6. 反射在游戏开发中的应用

    文/宋忆疆 上一期专栏, 我曾提到. N E T提供了一个特性叫做反射(Reflection),其实反射并不是.NET所独有的.在这一期专栏,我想和大家讨论一下反射这个特性,在游戏开发中的应用,以及发 ...

  7. 手机游戏开发中如何选择适合的纹理格式

    手机游戏开发中如何选择适合的纹理格式 为毛要写这个 本来觉得像这样的问题,是无法归类的,因为不同的项目有不同的需求,但今天因为quick论坛中的一个技术疑问贴,钩起了我整理这篇文章的兴趣 http:/ ...

  8. 一些语法在游戏开发中的应用

    一些语法在游戏开发中的应用 一.减少不必要的全局变量 二.动态二维数组 三.整数转换为字符串输出 四.播放音乐模板 一.减少不必要的全局变量 游戏开发中有些变量只需要在少数函数中传递,修改数值.如果不 ...

  9. J2ME游戏开发中时钟的简单实现

    在java.util包中有一个TimerTask类,你可以扩展这个类并且实现他的run()方法,在run()方法中编写我们的逻辑代码.如果我们想制作一个游戏时钟,那么非常简单我们编写一个GameClo ...

最新文章

  1. android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating cl
  2. 分布式键值系统Amazon Dynamo简介
  3. Angular应用的router-outlet使用一个例子
  4. 如何获得即时编译器(JIT)的汇编代码(linux环境下)
  5. vmos安卓虚拟手机系统x86_VMOSPro下载-VMOSPro下载v 1.1.26 安卓版-西西软件下载
  6. CCF201912-4 区块链(100分)【模拟】
  7. Atitit 项目的主体设计与结构文档 v3
  8. webview播放php音乐,android webview中的音乐的暂停与播放
  9. 图片验证,滑块验证解决
  10. SPR传感原理(附Matlab源码)
  11. 身份证号归属地数据库
  12. 利用Word实现交叉引用或引用尾注添加参考文献图解
  13. chunxunnet
  14. 目标检测—基于Yolov3的目标检测项目实战(学习笔记)
  15. 获取贵州茅台2010年1月1号至今的股票交易数据,计算该股票历史数据的5日均线和30日均线
  16. 哈佛结构和冯·诺依曼结构
  17. Java学习之路-----Java基础简介,基础语法,Java标识符,修饰符,关键字与注释
  18. 个人设置微信公众号自定义菜单的初级经验
  19. android studio 工作区间背景颜色设置眼睛保护色
  20. 中国AI专利申请量超越美国:百度排名第一,国外企业申请量占20%

热门文章

  1. plsql连接oracle未找到oci,Plsql Developer连接Oracle时出现Could not initialize oci.dll解决方案...
  2. 旋钮编码器c代码_人脸合成效果媲美StyleGAN,而它是个自编码器
  3. 来自Android客户端什么意思,如何通过回调函数中的Node.js来自Android客户端
  4. es类比关系型数据库
  5. 7天备战蓝桥杯之第一天
  6. (转)Python开发规范
  7. 不要忽视任何小问题!!!一个XML的XPath的问题.....
  8. VMware找不到父磁盘 父虚拟磁盘在子虚拟磁盘创建之后被修改过。父虚拟磁盘的内容 ID 与子虚拟磁盘中对应的父内容 ID 不匹配
  9. 什么是python编程例子_案例详解:优化Python编程的4个妙招
  10. Linux 中内核级加强型火墙的管理