当前位置: 首页 > 科技观察

游戏引擎学习笔记:简介、架构、设计与实现

时间:2023-03-16 22:17:32 科技观察

从小到大,虽然玩过很多游戏,但从写程序到现在只写过2个游戏。一个是2011年在MTK平台下写的贪吃蛇,一个是2010年在嵌入式开发板上写的迷宫游戏,第一个大概3000行代码,第二个2000行左右。这两个游戏都很简单,网上有很多现成的例子可以参考,所以难度比较低。这2天,把耽搁了好久的《Android应用开发揭秘》的游戏引擎章节看完了,收获颇丰。我会在这里写一篇读书笔记。关于GameEngine,我可以想到几个问题:什么是游戏引擎?GameEngine解决了什么问题?GameEngine的架构是怎样的?如何设计游戏引擎?游戏引擎包含哪些模块?下面我们来讨论几个问题:1.什么是GameEngine?游戏产业是世界上一个非常庞大的产业,一款游戏大作包含的元素非常多。游戏涉及剧情、人物、任务、关卡、地图、画质、美术、音乐、网络等诸多元素。开发游戏实际上需要大量资源。据说北极星的《GTA V》造价上亿。正因为如此,在开发一个项目的过程中,尽可能复用之前项目中已经成功的东西是非常重要的。在游戏中,GameEngine直接控制着剧情、关卡、美术、音乐、操作等内容,将游戏的所有元素捆绑在一起。一般来说,一个GameEngine需要包含以下几个模块:基本框架(如何组装渲染、逻辑、物理等)资源管理和渲染的基本逻辑(网络游戏也需要解决逻辑的同步问题)物理(有时会结合逻辑)————————分割线,以下是重要但相对独立的部分————————6.UI7.音乐音效8.网络9.脚本(有些类型的游戏引擎对脚本和逻辑的关联性要求很强,有些脚本相对独立)2.GameEngine解决什么问题?GameEngine实际上有效减少了开发者编写程序时的冗余劳动,同时增强了游戏的可移植性。引擎是游戏的框架,我们需要用内容填充框架来形成游戏。引擎是一系列工具和生产链。像Unreal3和Unity这样的成熟引擎使用起来非常方便,因为它们的关卡/场景编辑器非常好用并且支持多种脚本语言。如果实现得当,这样的引擎理论上可以将大部分级别调试和对象流水线的工作完全移出程序员。3.GameEngine架构Game=引擎(程序)+资源(图像、声音、动画等)目前GameEngine架构是Model-View-Controller架构,逻辑和显示分离,采用逻辑控制流协调Client的请求和Server的动作。View:负责接口接收Controller:处理工作流的创建和种植,用户输入,各种事件的处理Model:模型、逻辑、程序功能实现消息循环->更新数据->绘制各个节点这是基本结构ofdrawing基本上不会有太大的变化。各种引擎的变体很大一部分是对游戏逻辑的封装。不管是脚本还是直接写代码。例如,较早的数据和函数分离是由C语言表示的。流行的类结构。以c++为代表。还有现在光环闪耀的CBSE,基于组件的架构4.如何设计一个游戏引擎?<1>.结构设计和功能设计GameEngine的设计包括结构设计、功能设计和注意事项。游戏引擎包括图形引擎、脚本引擎、物理引擎、工具模块、声音引擎、网络组件、事件组件等。Android游戏主要包括一个Activity类、进程控制类、游戏线程类和游戏对象类。Activity类是游戏的执行单元,负责游戏生命周期的控制。流程控制:提供在游戏中多个界面切换的方法;游戏线程:不断监听可能发生的各种事件,计算游戏状态,刷新画面。<2>.注意:手机游戏的主要问题是硬件限制和电池瓶颈。CPU和内存不足、屏幕尺寸、音效等诸多限制,这些方面都是设计时需要注意的。5、实现游戏引擎游戏引擎只是炒菜的油锅,但是炒锅好并不一定能做出好菜来。游戏引擎的实现非常复杂,需要按照上一节的架构和功能设计进行编码实现。目前大多是面向对象编程,设计了各种类型。比如人物,NPC,道具,动画,动植物等等,有余力的同学可以去研究一下。最近流行的一些游戏其实并不需要NB游戏引擎。只有充分挖掘用户的痛点,才能设计出好的游戏。目前有很多开源的GameEngine供大家研究,比如Unity3D、Box2D等,大家可以上网搜索研究。6、手游前景这两年我玩了很多手游。先说一款好的手游的特点:易上手,不易精通,边玩边珍惜。手游是面向大众的,难学的游戏一定要过关。游戏一定要简单,让玩家一装就能玩;可以中断,时间短。玩游戏一般是在公交地铁上等待的碎片化时间,所以你提供的是一种短暂的娱乐效果,让游戏和工作模式顺畅切换;必须加入SNS元素:一款好的手游应该是社交元素,可以加入LBS寻找身边的玩家,或者玩游戏和朋友互动,或者认识新朋友。因为手游很简单,所以要留住玩家。加入SNS可以留住玩家;充分利用手机的优势:手机的便携性、隐私性、甚至到达性等优势。手机是我们身体的延伸,一款好的游戏应该充分利用手机的一些传感器、摄像头、网络、蓝牙等,去挖掘手机的特性,才能设计出一款优秀的游戏。……