该引擎的主要特点如下: 简单易用。 开发者只需继承游戏对象并设置相应的属性参数即可生成各种游戏对象和角色。 具有很强的扩展性,引擎以SDK的形式集成,代码可以随意修改和扩展。 配备触摸控制:虚拟操纵杆。 移动设备以触摸控制为主,引擎自带的虚拟摇杆控制器即插即用。 采用Android自定义视图封装,反馈准确高效,动画流畅自然。 1.1 选题来源及目的 1.1.1 什么是独立游戏? 很难直接定义什么是“独立游戏”。 幸运的是,我们有一个具有相似意义和可供借鉴的对象——“独立电影”。 独立电影来源于英文“IndependentFilm”,又称独立电影。 这是一个与好莱坞等主流电影相对立的概念,诞生于20世纪中叶。 从技术角度看,“独立电影”是指在财务投资和制作上不隶属于任何电影集团、公司(或制片厂),主要依靠制片人或导演自己筹集资金的电影。各种渠道。 资金(包括个人捐款)用于制作电影。 独立电影不通过商业机构直接投资实现融资,不受市场带来的压力。 因此,它们往往体现出电影人与商业电影完全不同的强烈意识形态性。 小制作、低成本、技术手段简单化,是独立电影极其现实的标志。 事实上,世界各国都有所谓的“独立电影”。 广义上讲,任何在国家主流(商业/官方)电影体系之外的电影创作都可以归类为独立电影。 里面。
对比了“独立电影”和“主流电影”的关系之后,我们通过例子来分析一下独立游戏制作的流程。 早期成功的独立游戏《超级食肉男孩》的制作团队只有两人。 他们都有自己的想法。 或许他们的目标并不纯粹,但可以肯定的是,他们已经厌倦了传统的大型游戏厂商。 开发流程和内容,为了避免千篇一律的公式化制作,他们走到一起,想做一款自己喜欢的、与众不同的游戏(而且能养活自己)。 经过长时间的打磨,他们在 Xbox 360 上发布了自己的游戏,《超级食肉男孩》凭借新颖的角色设计和高难度的游戏玩法获得了巨大成功。 因此,媒体在采访时将其贴上了“独立游戏”的标签。 从上述来看,被贴上“独立游戏”标签的标准应该是:制作不隶属于任何游戏制作公司,且游戏由其自行发行。 资金不通过商业机构融资。 小团队、小生产、低成本。 主流体系之外的非主流创作主要是指内容和实现形式上的创作。 自由地反映制作者想要表达的思想和观点。 1.1.2 机遇与挑战 近年来,随着游戏制作技术在多方面发展到顶峰,但瓶颈尚未突破,传统游戏开发商为了谋求稳定发展,往往固步自封或者选择更安全的选择现有的游戏制作。 方法,因此被玩家视为珍品的3A大作越来越显出“单调”、“公式化”的刻板印象。
相反,与各大公司的稳定相比,《独立游戏》制作团队却表现出了一种求成功、求成功的拼命态度。 他们破釜沉舟的英雄气概安卓2d游戏引擎,以及因资金紧张而选择的另类道路,恰好可以让他们的作品在3A杰作中脱颖而出。 时代,逐渐占据一席之地。 1.2 开发工具的选择 1.2.1 Android Studio简介 Android Studio是Google推出的一款Android集成开发工具。 Android Studio基于IntelliJIDEA.EclipseADT,提供集成的Android开发工具用于开发和调试。 架构组成 基于 IDEA,Android Studio 提供: 基于 Gradle 的构建 支持 Android 特有的重构和快速修复提示工具,用于捕获性能、可用性、版本兼容性等问题 支持 ProGuard 和应用程序签名 基于模板的向导来生成通用的使用Android应用程序设计和组件强大的布局编辑器,允许拖放UI控件并预览效果主要功能2013年5月16日,在I/O大会上,Google推出了新的Android开发环境——Android Studio,并开发者控制台已得到改进3D交通工具,增加了五项新功能。 Android Studio是Google推出的全新Android开发环境。 开发人员在编写程序时可以看到他们的应用程序在不同尺寸的屏幕上的外观。
谷歌改进了开发者控制台,增加了五项新功能,包括优化提示、应用翻译服务、推荐跟踪、收入曲线、Beta测试和分阶段演示。 1.优化提示:在正文中打开您的应用程序,单击提示,您将得到以下建议:开发您的应用程序的平板电脑版本。 2.应用翻译服务:让开发者直接在开发主体中获得专业翻译。 上传您的需求,选择翻译,将显示译者和价格,翻译将在一周内发回。 3. 推荐跟踪:让开发者找到最有效的广告 4. 收入曲线图:展示开发者的应用收入,按国家划分 5. 试用版测试和阶段性展示:开发者可以进行测试,然后推出给测试用户。 测试结果不会向公众公布。 当某个版本结束测试时,开发人员可以将其推广给特定比例的用户。 首次公布开发工具AndroidStudio,也是为了方便开发者基于Android进行开发。 首先要解决的问题之一是多分辨率。 Android 设备有大量不同的屏幕尺寸和分辨率。 根据新的Studio,开发人员可以轻松地在各种分辨率的设备上调整应用程序。 同时,Studio还解决了语言问题。 多语言版本(但没有中文版本)和翻译支持让开发者更适应全球开发环境。 Studio还提供收入记录功能。 最大的变化是 Beta 测试的功能。
Studio提供BetaTesting,可以让开发者轻松测试运行。 2015年3月29日,在Google I/O开发者大会上,Google发布了Android Studio 1.3,支持C++编辑和错误检查功能。 Android Studio 1.3版本代码开发变得更加简单,速度提升,并且支持C++编辑和错误检查功能。 2 游戏引擎系统设计 2.1 基本框架 游戏引擎的开发主要包括资源管理、碰撞检测、渲染、用户界面、音乐音效等模块。 该引擎采用组件化设计安卓2d游戏引擎,将各个系统进行拆分并单独处理,最后将计算结果传递到canvas进行渲染。 开发者首先依赖Android项目中的引擎SDK,在MainActivity的xml中嵌入游戏引擎GameView(渲染视图)来渲染屏幕。 根据需要,他们可以添加RockerView(虚拟摇杆控制)作为游戏控制器。 然后,将资源素材导入到项目中,通过继承GameObject类并重写一些属性和方法,创建游戏中的各种物体或角色。 将角色和其他对象添加到GameObjectManager(游戏主体管理器)中,管理器将自动生成游戏主体的碰撞检测。 此时GameView(渲染视图)可以通过GameObjectManager(游戏主体管理器)主体获取当前状态的游戏,并将游戏主体渲染到视图上。
2.2 UI(User Interface)设计 用户的控制界面完全基于Android的Design来设计,大致包括:背景视图、状态栏、虚拟摇杆、攻击键、必杀技键。 2.3 资源管理 资源管理器也是基于Android资源进行管理的。 图片资源放在res/mipmap文件夹下,音乐和音效资源放在res/raw文件夹下。 2.4 碰撞检测系统设计碰撞检测系统分为碰撞事件和碰撞检测两部分。 支持检测的图形有圆形与圆形、矩形与矩形、圆形与矩形三种情况。 2.5 渲染 屏幕渲染基于Android的SurfaceView,仅支持2D图像3D交通工具,刷新率为每秒60。 2.6 音乐和音效 音乐功能基于Android MediaPlayer,支持循环播放。 MediaPlayer类可用于播放音频和视频文件或音频流。 开发者可以用它来播放本地音频或网络在线音频。 音效方面,由于播放的频率非常频繁,所以采用Android SoundPool来处理。 SoundPool采用音效池的概念来管理多个短音效,通过ID来管理音效。 SoundPool 用于播放短声音片段。 与MediaPlayer相比,SoundPool还支持设置音质、音量、播放码率等参数。
游戏引擎系统实现 3.1 系统模块 1.UI(User Interface):玩家进行操作和交互所使用的视图界面。 2.渲染视图:游戏中物体和角色之间的碰撞交互结果将通过该控件渲染在屏幕上。 3. 碰撞系统:检测游戏中物体与角色之间是否存在交互的重要系统。 如果发生碰撞,将提供相应的碰撞事件。 3. 动画系统:根据素材资源生成帧动画。 它也是游戏体的一种。 除了自身的动画属性外,它还具有游戏主体对象的所有属性,并支持碰撞检测。 4.音乐音效系统:提供外部静态方法,方便开发者在任何环境下播放音乐或音效。 支持码流优先级设置、循环次数、播放速率等。 3.2 UI(用户界面)的实现?xml version="1.0"encoding="utf-8"? 布局RelativeLayout xmlns:android =“” android:layout_width =“match_parent” android:layout_height =“match_parent” com.shulin.flight .GameView android:id =“@ + id / gameView” android:layout_width =“match_parent” android:layout_height ="match_parent" com.shulin.flight.RockerViewandroid:id="@+id/rockerView" android:layout_width="160dp" android:layout_height="160dp" android:layout_alignParentBottom="true" android:layout_marginLeft="20dp" android :layout_marginBottom="20dp" android:background="@drawable/circle_rocker_core" 按钮android:id="@+id/b_fire" android:layout_width="80dp"