场景实例化(续)

要点

场景实例化带来很多便利的用法,总体来说有:

  • 将场景细分,更便于管理
  • 相对于某些引擎中的Prefab组件更灵活,并且在许多方面更强大
  • 是一种设计更复杂的游戏流程甚至UI的方式

这是一种设计语言

场景实例化真正强悍的地方就在于它是以一种卓越的设计语言的机制运行的。这一点使得Godot区别于其它引擎,并有很大的不同。Godot整个引擎从底层开始都是围绕着这个概念进行设计的。

在使用Godot制作游戏时,建议把MVC或ER图这样的设计模式先抛开一边,而开始用更自然的方式思考游戏:设想出游戏中的可见元素,这些元素可由任何人去命名,而不仅仅是开发者。

例如,这是一款简单的射击游戏能设想出的元素:

几乎对于任意类型的游戏,提炼出这样一张图(Diagram)都非常简单。仅需将脑子里出现的元素记下来,然后用带剪头的线标注出所代表的所有者关系就行了。

一旦这种图确定好了,制作游戏的过程就是先为图上的这些节点创建相应场景,然后利用场景实例化(通过编码或编辑器直观操作)来代表其所有者关系。

对于大多数的游戏开发或通常意义的软件开发来说,时间都是花费在架构设计及填充架构中的游戏组件上。而基于场景的设计使得整个开发过程变快很多,而且更直观,让你可以更关注游戏本身的东西。基于场景/场景实例化的设计,由于多数的组件直接对应到某个场景,极大的节省了那部分架构设计的工作。这样,项目中几乎不需要或者仅需少量架构性代码即可。

下面是一个较为复杂的例子 - 一个开放世界类型的游戏,带有很多资源文件(Asset),并有些交互效果:

先制作一些带有家具的房间,将它们联系起来。再制作房子,并将那些房间作为其内部构成。

房子可以作为城堡的一部分,城堡中会有很多房子。最后,城堡可以放到世界地形图中。还可以将前面创建的守卫及其它非玩家角色(NPC)添加给城堡。

使用Godot时,游戏可以根据需要快速壮大,因为仅仅是更多的子场景在被创建和实例化。Godot的编辑器也是面向非程序员的操作习惯设计的,常规团队开发环境的角色:三维或二维设计师、关卡设计师、游戏设计师、动画师等等都能使用编辑器界面进行协作。

信息量有点大了是吗?!

不用有太多担心啦,这部分文档的最重要目的让你对实际开发过程中场景和实例化的用法产生一些认知。要想全部理解,最好的方式是动手去做些游戏。

在实践过程中,所有的东西都会变得明晰起来的,所以别挠头了,继续看下一篇!

[译]Godot系列教程三 - 场景实例化(续)的更多相关文章

  1. [译]Godot系列教程二 - 场景实例化(Instancing)

    场景实例化(Instancing) 原理阐述 创建一个场景并将节点扔到里面对于小项目是适用的,但随着项目不断发展,用到越来越多的节点,整个项目很快就会演化成难以管理的状态. 为了解决这个问题,Godo ...

  2. [译]Godot系列教程一 - 场景与节点

    场景(Scene)与节点(Node) 简介 先设想有那么一瞬间你自己不再是一名游戏开发者了,而是一名大厨! 你的装备换成了一套大厨的制服.不要考虑制作游戏的事情,你现在的职责是为你的顾客创建新的可口的 ...

  3. [译]Godot系列教程五 - 制作Godot编辑器插件

    制作插件 下文仅针对2.1版本. 关于插件 插件是为编辑器扩展出更多有用工具的重要方式.它可以完全用GDScript和标准场景开发,甚至都不需重新加载编辑器就可生效.不像模块,你无需创建C++代码.也 ...

  4. [译]Godot系列教程四 - 编写脚本

    编写脚本(Scripting) 简介 关于无需编程即可创建视频游戏的那些工具的谈论有很多.不用学习编程知识对很多独立开发者来说就是一个梦想.这种需求 - 游戏开发者.甚至在很多公司内部,希望对游戏流程 ...

  5. [译]Godot系列教程六 - 简单的二维游戏

    Pong Godot自带的Demo中有大量更复杂的示例,但这款叫"Pong"的游戏可以对2D游戏的基本特性做一个介绍. 静态资源 本文所用到的一些资源文件:http://files ...

  6. CRL快速开发框架系列教程三(更新数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  7. Fastify 系列教程三 (验证、序列化和生命周期)

    Fastify 系列教程: Fastify 系列教程一 (路由和日志) Fastify 系列教程二 (中间件.钩子函数和装饰器) Fastify 系列教程三 (验证.序列化和生命周期) 验证 Fast ...

  8. WPF系列教程——(三)使用Win10 Edge浏览器内核 - 简书

    原文:WPF系列教程--(三)使用Win10 Edge浏览器内核 - 简书 在需要显示一些 H5网站的时候自带的WebBrowser总是显示不了,WebBrowser使用的是IE内核,许多H5新特性都 ...

  9. Android Studio系列教程三--快捷键

    Android Studio系列教程三--快捷键 2014 年 12 月 09 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzhang.com/ ...

随机推荐

  1. 相识HTML5 canvas

    Canvas是HTML的API,我们可以用它在网页中实时的来生成图像. 文章导读 1.必备技能 2.用于画图的函数 例子: -会话气泡-    -心形-    -钟表-      -星球里的星星- - ...

  2. AutoMapper 最佳实践

    AutoMapper 是一个基于命名约定的对象->对象映射工具. 只要2个对象的属性具有相同名字(或者符合它规定的命名约定),AutoMapper就可以替我们自动在2个对象间进行属性值的映射.如 ...

  3. 60分钟Python快速学习(给发哥一个交代)

    60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...

  4. 2013 duilib入门简明教程 -- 自绘控件 (15)

        在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如 ...

  5. Hibernate框架的配置

    概念 持久化框架 把对象保存到数据库中,对数据的CURD操作 配置Hibernate 1.在项目中引入Hibernate的Jar包 在 WebContent/WEB-INF/lib 目录下 导入jar ...

  6. Over:窗口函数(滑动聚合)

    Over 窗口函数在Select 子句中,对查询的结果集进行“滑动-聚合”运算:如果使用count,那么基于滑动窗口的聚合语义同 base+1 累加:如果使用sum,那么基于滑动窗口的聚合语义等同于数 ...

  7. UDP(强行关闭了一个现有的连接远程主机)

    事件回顾:客户端连接服务器 ,一段时间后会发生服务器“挂掉”的情况,为了找到原因,在调试模式下运行服务器,捕捉到了一下异常: 红色框出来的即为异常原因:强行关闭了一个现有的连接远程主机 然后就发生了可 ...

  8. 深入理解javascript中的焦点管理

    × 目录 [1]焦点元素 [2]获得焦点 [3]失去焦点[4]焦点事件 前面的话 焦点作为javascript中的一个重要功能,基本上和页面交互都离不开焦点.但却少有人对焦点管理系统地做总结归纳.本文 ...

  9. scikit-learn K近邻法类库使用小结

    在K近邻法(KNN)原理小结这篇文章,我们讨论了KNN的原理和优缺点,这里我们就从实践出发,对scikit-learn 中KNN相关的类库使用做一个小结.主要关注于类库调参时的一个经验总结. 1. s ...

  10. hdu4833 Best Financing(DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4833 这道题目关键的思想是从后往前dp,dp[i]表示在第i处投资xi能获得的最大收益,其中xi表示从 ...