《Android 3D 游戏案例开发大全》——6.3节游戏的架构

简介:

本节书摘来自异步社区《Android 3D 游戏案例开发大全》一书中的第6章,第6.3节游戏的架构,作者 吴亚峰 , 于复兴 , 杜化美,更多章节内容可以访问云栖社区“异步社区”公众号查看

6.3 游戏的架构
Android 3D 游戏案例开发大全
本节主要介绍本游戏的类框架,通过本节的介绍,读者可以进一步了解本游戏的开发过程,为后面要开发的代码部分打下坚实的基础。

6.3.1 各个类简要介绍
为了使读者可以更好地了解各个类的作用,本小节将本游戏中用到的所有类分为4部分进行介绍,而每个类的代码将在后面的小节中相继给出。

1.公共类
Activity的实现类TXZActivity。
TXZActivity是本游戏中的主控制类,此类继承自Activity,是整个游戏的控制类,同时也是整个游戏的入口。

常量类Constant。
本类是常量类,该类主要是存储一些静态常量和静态方法。

2.辅助界面相关类
欢迎界面类TXZWelcomeView。
本类是欢迎界面类,该类是在游戏开始时进行调用。

主菜单界面类TXZMenuView。
本类是主菜单界面类,该类负责绘制菜单界面,以及通过单击按钮跳转到其他界面,例如,进入游戏、设置、选关、帮助、关于等,也可以通过单击返回键直接退出游戏。

主菜单界面机器人部件类MenuBodyPart。
本类是主菜单界面机器人部件类,该类的主要功能是提供给了组装机器人、机器人绘制,以及机器人运动的各种方法。

主菜单界面机器人动作执行类MenuDoActionThread。
本类是主菜单界面机器人动作的执行类,该类主要负责执行机器人的各个动作。
设置界面类TXZSetView。
本类是设置界面类,该类负责设置界面的绘制,该界面的主要功能是实现声音的设置,单击对应的按钮将进行相关的设置。

设置界面机器人部件类SetBodyPart。
本类是设置界面机器人部件类,该类的主要功能是提供给了组装机器人、机器人绘制,以及机器人运动的各种方法。

设置界面机器人动作执行类SetDoActionThread。
本类是设置界面机器人动作的执行类,该类主要负责执行机器人的各个动作。
选关界面类TXZSelectView。
本类是选关界面类,该类负责绘制选关界面,在该界面中玩家可以选择已经解锁的关卡从而进入相应的游戏界面。

选关界面机器人部件类SelectBodyPart。
本类是选关界面机器人部件类,该类的主要功能是提供给了组装机器人、机器人绘制,以及机器人运动的各种方法。

选关界面机器人动作执行类SelectDoActionThread。
本类是选关界面机器人动作的执行类,该类主要负责执行机器人的各个动作。
关于界面类TXTAboutView。
本类是游戏关于界面类,该类负责绘制游戏关于界面,该界面对游戏版权进行了说明,按下返回键可以返回到菜单界面。

帮助界面类TXZHelpView。
本类是游戏帮助界面类,该类负责绘制游戏帮助界面,该界面对游戏玩法进行了说明,单击向右方向键可查看下一条说明;单击向左方向键可查看上一条说明。在第一页单击向左方向键或在最后一页单机向右方向键返回到主菜单界面。

枚举类WhichView。
本类是枚举类,该类主要是存储一些界面的类型。

3.游戏界面相关类
游戏主界面类TXZGameSurfaceView
本类是游戏的主界面类,主要负责游戏界面中各个对象的创建及各个实体的绘制等工作。

游戏线程类TXZDoActionThread。
本类是游戏线程类,其主要负责监听与执行整个游戏过程中产生的动作。

摇杆动作线程类YGDoActionThread。
本类是摇杆动作线程类,其主要负责的是监听与执行摇杆的动作。

机器人类Robot。
本类是机器人类,该类主要负责机器人的组装与绘制,其中包括各个界面中机器人的组装和绘制。

游戏中动作类Action
本类是游戏中动作类,其主要提供了创建动作对象的构造方法,该类对象有动作数据与动作类型。

动作种类枚举类ActionType。
本类是动作种类枚举类,主要负责提供游戏过程中用到的动作的类型,即摄像机的动作、机器人的动作、视角的转换动作、摇杆的移动动作和抬起动作。

游戏界面机器人部件类BodyPart
本类是游戏界面中机器人的部件类,该类的主要功能是提供给了组装机器人、机器人绘制,以及机器人运动的各种方法。

部件的数据类BodyPartData
本类是机器人某个部件的数据类,其中包括机器人子骨骼在初始坐标系中的不动点、子骨骼在父骨骼坐标系中的平移、旋转,以及旋转的辅助平移。

机器人的动作数据类ActionGenerator
本类是机器人的动作数据类,其中包括机器人各种动作的数据。

游戏中动态数据类GameData。
本类是游戏中动态数据类,其主要负责提供游戏中用到的动态数据,以及修改数据的方法。

游戏中静态数据类GameStaticData。
本类是游戏中静态数据类,其主要负责提供游戏中用到的静态数据。

游戏中的关卡类GuanQiaData
本类是游戏中的关卡类,主要负责提供关卡的数据,以及游戏界面中需要的一些数据和方法。

顶点数据管理类 VertexDataManager。
本类是顶点数据管理类,该类负责加载界面所需物体的obj文件与初始化物体顶点位置坐标数据和顶点纹理坐标数据。

加载图片类 PicDataManager。
本类是加载图片的类,该类主要提供了将图片数据加载进内存的方法。

绘制物体类VertexTexture3DObjectForDraw。
本类是绘制物体类,该类负责对物体进行普通的绘制。

绘制物体类VertexTextureNormal3DObjectForDraw。
本类是绘制物体类,该类负责对加载物体进行带光照的绘制。

4.相关工具类
箱子排序类CompareDis。
本类是箱子的排序类,该类实现了接口Comparable,其是根据摄像机与箱子的距离排序。

模型加载类LoadUtil。
本类是模型加载类,该类从obj文件中将模型的相关信息加载进来,然后生成顶点位置坐标数据、顶点纹理坐标数据和法向量数据,最后构造对应的模型对象。

法向量类Normal。
本类是法向量类,该类主要提供了计算平均法向量的方法。

屏幕自适应工具类ScreenScaleUtil。
本类是屏幕自适应工具类,该类主要提供了计算缩放情况的方法。

屏幕自适应工具类ScreenScaleResult。
本类是为ScreenScaleUtil服务,两者共同完成缩放工作,实现游戏全屏显示功能,即实现游戏屏幕的自适应。

记录关卡工具类SharedPreferencesUtil
本类是记录关卡工具类,该类的作用是记录玩家最近一次的关卡数,若是第一次进入游戏,默认为第一关。

声音加载类SoundUtil。
本类是声音加载工具类,该类主要提供了声音缓冲池初始化的方法及声音的播放方法。

法向量的计算类VectorUtil
本类是计算法向量的工具类,其中有向量叉积的计算方法和向量规格化的方法。

6.3.2 游戏框架简介
在前一小节中介绍了游戏中用到的所有类,读者可能对每个类的理解并不深刻,本小结将从游戏的整体架构来介绍,如图6-22所示。


4e89ca3d84d5ce2a71d661c4156cc36ff421b666

从图6-22所示中可以看到,本游戏的类很多,这里不一一介绍,接下来按照程序运行的顺序介绍部分类的作用及游戏的整体框架,具体步骤如下。

(1)打开本游戏,首先进入游戏的主控制类TXZActivity,在该类中首先跳转到欢迎界面TXZWelcomeView。

(2)欢迎界面TXZWelcomeView结束后跳转到主菜单界面TXZMenuView。

(3)在主菜单界面TXZMenuView中单击“设置”按钮进入设置界面TXZSetView,可以对游戏进行设置;单击“选关”按钮进入选关界面TXZSelectView;单击“关于”按钮进入关于界面TXTAboutView,可以查看该游戏版权所属的相关信息;单击“帮助”按钮进入帮助界面TXZHelpView,可以查看游戏的帮助信息。

(4)在主菜单界面TXZMenuView中单击“开始游戏”按钮进入游戏界面TXZGameSurfaceView

相关文章
|
3天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
23 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
16天前
|
API 数据库 开发者
构建高效可靠的微服务架构:后端开发的新范式
【4月更文挑战第8天】 随着现代软件开发的复杂性日益增加,传统的单体应用架构面临着可扩展性、维护性和敏捷性的挑战。为了解决这些问题,微服务架构应运而生,并迅速成为后端开发领域的一股清流。本文将深入探讨微服务架构的设计原则、实施策略及其带来的优势与挑战,为后端开发者提供一种全新视角,以实现更加灵活、高效和稳定的系统构建。
20 0
|
25天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
12 0
|
4天前
|
消息中间件 监控 持续交付
构建高效微服务架构:后端开发的进阶之路
【4月更文挑战第20天】 随着现代软件开发的复杂性日益增加,传统的单体应用已难以满足快速迭代和灵活部署的需求。微服务架构作为一种新兴的分布式系统设计方式,以其独立部署、易于扩展和维护的特点,成为解决这一问题的关键。本文将深入探讨微服务的核心概念、设计原则以及在后端开发实践中如何构建一个高效的微服务架构。我们将从服务划分、通信机制、数据一致性、服务发现与注册等方面入手,提供一系列实用的策略和建议,帮助开发者优化后端系统的性能和可维护性。
|
25天前
|
监控 Java 开发者
构建高效微服务架构:后端开发的新范式
在数字化转型的浪潮中,微服务架构以其灵活性、可扩展性和容错性成为企业技术战略的关键组成部分。本文深入探讨了微服务的核心概念,包括其设计原则、技术栈选择以及与容器化和编排技术的融合。通过实际案例分析,展示了如何利用微服务架构提升系统性能,实现快速迭代部署,并通过服务的解耦来提高整体系统的可靠性。
|
25天前
|
NoSQL Java Redis
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件(二)
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件
15 0
|
1天前
|
传感器 Java Android开发
Android HAL深入探索(1): 架构概述
Android HAL深入探索(1): 架构概述
5 1
|
6天前
|
监控 持续交付 开发者
构建高效微服务架构:后端开发的新趋势
【4月更文挑战第18天】在数字化转型的浪潮中,微服务架构已成为企业提升系统灵活性、加速产品迭代的关键。此文深入探讨了构建高效微服务架构的实践方法,包括服务划分原则、容器化部署、持续集成/持续部署(CI/CD)流程以及监控与日志管理等关键技术点。通过分析具体案例,揭示了微服务在提高开发效率、降低维护成本及促进团队协作方面的显著优势。
|
9天前
|
监控 负载均衡 API
构建高性能微服务架构:后端开发的最佳实践
【4月更文挑战第14天】 在当今快速发展的软件开发领域,微服务架构已成为构建可扩展、灵活且容错的系统的首选方法。本文深入探讨了后端开发人员在设计和维护高性能微服务时需要遵循的一系列最佳实践。我们将从服务划分原则、容器化部署、API网关使用、负载均衡、服务监控与故障恢复等方面展开讨论,并结合实际案例分析如何优化微服务性能及可靠性。通过本文的阅读,读者将获得实施高效微服务架构的实用知识与策略。
|
12天前
|
存储 数据库 Android开发
构建高效安卓应用:采用Jetpack架构组件优化用户体验
【4月更文挑战第12天】 在当今快速发展的数字时代,Android 应用程序的流畅性与响应速度对用户满意度至关重要。为提高应用性能并降低维护成本,开发者需寻求先进的技术解决方案。本文将探讨如何利用 Android Jetpack 中的架构组件 — 如 LiveData、ViewModel 和 Room — 来构建高质量的安卓应用。通过具体实施案例分析,我们将展示这些组件如何协同工作以实现数据持久化、界面与逻辑分离,以及确保数据的即时更新,从而优化用户体验并提升应用的可维护性和可测试性。