世界那么大,我想去看看 引言 通过对前九篇的介绍,至此我们已经了解了UE里的游戏世界组织方式和游戏业务逻辑的控制.行百里者半九十,前述的篇章里我们的目光往往专注在于特定一个类或者对象,一方面固然可以让内容更有针对性,但另一方面也有了身在山中不见山的困惑.本文作为GamePlay章节的最终章,就是要回顾我们之前探讨过的内容,以一个更高层总览的眼光,把之前的所有内容有机组织起来,思考整体的结构和数据及逻辑的流向. 游戏世界 如果我们在最初篇所问的,如果让你来制作一款3D游戏引擎,你会怎么设计其结构?…
PlayerController:你不懂,伴君如伴虎啊 AIController:上来,我自己动 引言 上文我们谈到了Component-Actor-Pawn-Controller的结构,追溯了AController整个家族的崛起和身负的使命.本篇我们继续来探讨Controller家族中最为人所知的PlayerController和AIController. 作为一个Controller,我们讨论的依然是该如何控制.我们已经知道了Controller可以Possess并控制Pawn,但是Cont…
我的世界,我做主 引言 上文我们说到在Actor层次,UE用Controller来充当APawn的逻辑控制者,也有了可以接受玩家输入的PlayerController,和能自行行动的AIController.Actor的逻辑编写介绍完了,那么本篇,我们继续爬升,对于由Actors组成的Level这一层次,UE又是怎么控制的呢? 对Level记不太清楚的朋友,可以翻回去查看"GamePlay架构(二)Level和World"的讲述,简单概括就是World是由一个PersisitentLe…
<InsideUE4>-6-GamePlay架构(五)Controller Tags: InsideUE4 GamePlay 那一天 Pawn又回想起了 被Controller所支配的恐惧 引言 如上文所述,UE从Actor中分化了一些专门可供玩家"控制"的Pawn,那我们这篇就专门来谈谈该怎么个控制法! 所谓的控制,本质指的就是我们游戏的业务逻辑.比如说玩家按A键,角色自动找一个最近的敌人并攻击,这个自动寻找目标并攻击的逻辑过程,就是我们所谈的控制. Note1:重申一下…
一人之下,万人之上 引言 上篇我们讲到了UE在World之上,继续抽象出了Player的概念,包含了本地的ULocalPlayer和网络的UNetConnection,并以此创建出了World中的PlayerController,从而实现了不同的玩家模式策略.一路向上,依照设计里一个最朴素的原理:自己是无法创建管理自身的,所以Player也需要一个创建管理和存储的地方.另一方面,上文提到Player固然可以负责一些跟玩家相关的业务逻辑,但是对于World之上协调管理的逻辑却也仍然无处安放. 如果…
<InsideUE4>-5-GamePlay架构(四)Pawn Tags: InsideUE4 我像是一颗棋 进退任由你决定 我不是你眼中唯一将领 却是不起眼的小兵 引言 欢迎来到GamePlay架构章节的下半部分! 在上一篇的内容里,我们谈到了UE的3D游戏世界是由Object->Actor+Component->Level->World->WorldContext->GameInstance->Engine来逐渐层层构建而成的.那么从这下半章节开始,我们…
你们对力量一无所知 引言 回顾上文,我们谈完了World和Level级别的逻辑操纵控制,如同分离组合的AController一样,UE在World的层次上也采用了一个分离的AGameMode来抽离了游戏关卡逻辑,从而支持了逻辑的组合.本篇我们继续上升一个层次,考虑在World之上,游戏还需要哪些逻辑控制? 暂时不考虑别的功能系统(如社交系统,统计等各种),单从游戏性来讨论,现在闭上眼睛,想象我们已经藉着UE的伟力搭建了好了一个个LevelWorld,嗯,就像<西部世界>一样,场景已经搭建好了,…
Tags: InsideUE4 UE4深入学习QQ群: 456247757 引言 前文提到说一个World管理多个Level,并负责它们的加载释放.那么,问题来了,一个游戏里是只有一个World吗? WorldContext 答案是否定的,首先World就不是只有一种类型,比如编辑器本身就也是一个World,里面显示的游戏场景也是一个World,这两个World互相协作构成了我们的编辑体验.然后点播放的时候,引擎又可以生成新的类型World来让我们测试.简单来说,UE其实是一个平行宇宙世界观.…
UE4深入学习QQ群: 456247757 引言 上文谈到Actor和Component的关系,UE利用Actor的概念组成一片游戏对象森林,并利用Component组装扩展Actor的能力,让世界里拥有了形形色色的Actor们,拥有了自由表达3D世界的能力. 那么,这些Actor们,到底是怎么组织起来的呢? 既然提到了世界,我们的直觉反应是采用一个"World"对象来包容所有的Actor们.但是当游戏的虚拟世界非常巨大时,这种方式就捉襟见肘了.首先,目前虽然PC的性能日益强大,但是依…
读的不如写的快 引言 在之前的<InsideUE4>UObject(四)类型系统代码生成和<InsideUE4>UObject(五)类型系统收集章节里,我们介绍了UE4是如何根据我们的代码和元标记生成反射代码,并在Main函数调用之前,利用静态变量的初始化来收集类型的元数据信息.经过了我这么长时间的拖更--也经过了Epic这么长时间的版本更替,把UE从4.15.1进化到了4.18.3,自然的,CoreUObject模块也进行了一些改进.本文就先补上一个关于代码生成的改进:在UE4.…