游戏开发随想之2D游戏架构
游戏开发中的几个要素
一、游戏首要的要素便是角色,如果将角色归纳为一个MVC架构的话:
1、模型便是角色的位置信息,属性之类的。
2、视图则是一些图片集合,有规则的组合它们,将它们分成若干组,那么每一组就是一个动作。每个组有若干张图片,一般的它们通过时间来决定应该怎样呈现这个视图(亦即显示哪张图片)。可以设置动作,让这个视图有不同的行为。一般的,我们称这个视图为精灵(Sprite),精灵将在另一篇文章中描述。
3、控制器就是用来设置角色动作的。它有可能是对精灵的一个简单的代理,假如控制器设置角色状态为行走,那么可能控制器只是简单的调用了精灵的setAction(ActionRun)方法,并且有精灵自己去设置速度。 当然也可以这样去实现控制器,一方面它通过代理设置精灵的动作,同时也去修改对象的物理属性。控制器可能由玩家来操作,也有可能由NPC的A.I.进行操作,也有可能来自网络。
二、接下去比较重要的便是地图模块。对于地图,目前只把它当成一个MV结构。
1、模型层:地图一般有各种碰撞线或者每个块有不同的状态(比如能否通过该块),所以这些状态都应该保存在地图的模型中。
2、视图层:地图一般通过外部的编辑工具来设计的。一般的,地图很少在游戏过程中变动,所以将它直接保存在内存中的一张图片中。对于地图怎么创建的,将在另一篇文章描述。
三、物理引擎。
物理引擎一般对对象进行碰撞检测,以及改变对象的运动状态。对于一些简单的游戏,只要设计简单的物理引擎就可以了。对于对物理效果要求比较高的游戏,最好套用现成的比较成熟的引擎。
四、用户界面元素。
这个模块提供各种窗口,按钮来供交互。
五、游戏的“Holder ”:
它是游戏的持有者,它持有几乎所用的游戏对象,它维护游戏的正常运作。它与资源管理器协同完成游戏对象(比如窗口,角色,地图)的创建,以及释放资源。它定时驱动渲染线程,解析角色的动作,我这里它组合有物理引擎。
六、游戏的资源管理器。
游戏运行过程中需要大量的图片相关的资源。而且很多游戏中,一个相同造型的角色会有好几份拷贝,如果没有进行良好的设计的话,这些角色就会持有不同的图片资源的拷贝。因此特意设计了资源管理器,GameHolder创建对象时,都会向资源管理器申请资源,如果该资源已经加载到内存中了,就会返回资源的引用;如果没有,就会载入该资源。
转载于:https://blog.51cto.com/mooncity/1001833
游戏开发随想之2D游戏架构相关推荐
- Unity 2D游戏开发教程之2D游戏的运行效果
Unity 2D游戏开发教程之2D游戏的运行效果 2D游戏的运行效果 本章前前后后使用了很多节的篇幅,到底实现了怎样的一个游戏运行效果呢?或者说,游戏中的精灵会不会如我们所想的那样运行呢?关于这些疑 ...
- Unity 2D游戏开发教程之2D游戏的运行效果
Unity 2D游戏开发教程之2D游戏的运行效果 2D游戏的运行效果 本章前前后后使用了很多节的篇幅,到底实现了怎样的一个游戏运行效果呢?或者说,游戏中的精灵会不会如我们所想的那样运行呢?关于这些疑问 ...
- unity 2d 游戏开发教程(2d战棋)
unity 2d 游戏开发教程(2d战棋) 类似的游戏有:火焰纹章,梦幻模拟战 先上效果 源码领取方式:私信发送 2D战棋资料领取 这是 unity3d 战棋游戏开发 专题的内容拓展 这个专题完整的讲 ...
- Unity 2D游戏开发教程之为游戏场景添加多个地面
Unity 2D游戏开发教程之为游戏场景添加多个地面 为游戏场景添加多个地面 显然,只有一个地面的游戏场景太小了,根本不够精灵四处活动的.那么,本节就来介绍一种简单的方法,可以为游戏场景添加多个地面. ...
- 游戏开发 unity3d python_游戏研发系列 Unity3D/2D游戏开发从0到1 第2版.pdf
作 者 :刘国柱著 出版发行 : 北京:电子工业出版社 , 2018.01 ISBN号 :978-7-121-33499-3 页 数 : 507 丛书名 : 游戏研发系列 原书定价 : 99.00 开 ...
- 【游戏开发】《Java游戏服务器架构实战》项目在windows上部署
[游戏开发]<Java游戏服务器架构实战>项目在windows上部署 文章目录 [游戏开发]<Java游戏服务器架构实战>项目在windows上部署 一.配置项目基础环境 二. ...
- Unity 2D游戏开发视频教程 Unity 2D Game Developer Course Farming RPG
Unity 2D游戏开发视频教程 Unity 2D Game Developer Course Farming RPG Unity 2D游戏开发课程农业RPG MP4 |视频:h264,1280×72 ...
- 【Visual C++】游戏开发笔记二十 游戏基础物理建模(二) 重力系统的模拟
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7496200 作者:毛星云 邮箱: h ...
- 【Visual C++】游戏开发笔记十五 游戏人工智能(一) 运动型游戏AI
分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 本系列文章由zhm ...
最新文章
- C++对象模型7——类的成员函数、反汇编虚析构函数、RTTI、多态的开销
- java comp env 区别_加和不加java:comp/env/前缀有什么区别?
- 春节期间,你错过了这些开源论文 | Paper + Code 清单
- 由于开发者通过接口修改了菜单配置_开发者说:Seata 0.7.0 版本,你 get 'Metrics' 技能了吗?...
- linux输出文字的颜色特效
- dubbo 路由配置_Dubbo-go v1.5.1发布,Dubbo 的 Go实现
- python函数的参数可以接收哪些类型的数据_Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数...
- 某交规模拟考试系统验证绕路手记
- Java虚拟机工作原理详解 (一)
- shape中的ring标签的使用方法
- 第10章 项目沟通管理
- python数字转换英文26字母_用python实现英文字母和相应序数转换的方法
- [游戏杂谈]浅谈单机游戏制作人到底应该具备什么样的能力
- Python编码错误的解决办法SyntaxError: Non-ASCII character '\xe5' in file
- (转)windows 7兼容软件列表搜集加转帖
- JAVA工程师最新面试题(来源于互联网)
- 弦理论三先驱获2020年狄拉克奖
- 难受难受,真它吗的难受... ...
- 餐厅菜单html代码,html5css3 3D餐厅菜单概念_订餐菜单选择工具
- CSDN文章转onenote笔记(markdown)
热门文章
- POJ2391 Floyd+离散化+二分+DINIC
- hdu4912 LCA+贪心
- hdu 1044 BFS(压缩图)+DFS
- 【错误记录】编译 Linux 内核报错 ( /bin/sh: 1: flex: not found )
- 【Android 进程保活】应用进程拉活 ( 系统 Service 机制拉活 | Service 组件 onStartCommand 方法分析 | 源码资源 )
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | 项目中配置 OpenSSL 开源库 | 使用 OpenSSL 开源库解密 dex 文件 )
- 会声会影x7 每次安装均会提示:已安装这个产品的另一个版本
- 判断三个数最大的数 从结果出发思考问题
- Server Tomcat v7.0 Server at localhost failed to start.解决办法(图文详解)
- The differences between capturing and bubbling