PiMuseum-游戏开发入门级教程-中国象棋-Chapter-3

导语

在上一篇系列文章中国象棋 - Chapter 2中基本完成了象棋在数据层面的实现,我们所谈到缺少的规则其实是将相这两枚棋子相互不能照面的棋盘约束,可以放到moveChessman(nextPosition : Position) : MoveResult 方法中做公共判断,如何给数据模型锦上添花,完成一款我们能自娱自乐的象棋游戏,本章我们来一起深入了解游戏引擎的一些概念。

游戏引擎

游戏引擎概念及其组件

游戏引擎主要是一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件,一般来说,游戏引擎大多包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。

光影效果

光影效果,即场景中的光源对处于其中的人和物的影响方式。游戏的光影效果完全是由引擎控制的,折射、反射等基本的光学原理以及动态光源、彩色光源等高级效果都是通过引擎的不同编程技术实现的。

动画组件

一般分为骨骼动画和模型动画,前者用内置的骨骼带动物体产生运动,比较常见,后者则是在模型的基础上直接进行变形。引擎把这两种动画系统预先植入游戏,方便动画师为角色设计丰富的动作造型。

物理系统

引擎提供的物理系统这可以使物体的运动遵循固定的规律,例如,当角色跳起的时候,系统内定的重力值将决定他能跳多高,以及他下落的速度有多快,子弹的飞行轨迹、车辆的颠簸方式也都是由物理系统决定的。碰撞探测是物理系统的核心部分,它可以探测游戏中各物体的物理边缘。当两个3D物体撞在一起的时候,这种技术可以防止它们相互穿过,这就确保了当你撞在墙上的时候,不会穿墙而过,也不会把墙撞倒,因为碰撞探测会根据你和墙之间的特性确定两者的位置和相互的作用关系。

渲染系统

渲染是引擎最重要的功能之一,当模型制作完毕之后,美工会按照不同的面把材质贴图赋予模型,这相当于为骨骼蒙上皮肤,最后再通过渲染引擎把模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上。渲染引擎在引擎的所有部件当中是最复杂的,它的强大与否直接决定着最终的输出质量。

通信模块

引擎还有一个重要的职责就是负责玩家与电脑之间的沟通,处理来自键盘、鼠标、摇杆和其它外设的信号。如果游戏支持联网特性的话,网络代码也会被集成在引擎中,用于管理客户端与服务器之间的通信。

上面的各类系统的研发都需要大量的各种成本,笔者认为把现实中的不管是光学,力学还是各种特殊的物理环境映射到计算机中本身就是一个及其复杂的工程,其本质的伟大程度不亚于以造世者的身份创造一个世界。而大部分的游戏开发仅仅是在合理使用游戏引擎的层面上,游戏引擎的起源其实跟写代码的工具类差不多,本质都是减少重复的工作,让资源投入到游戏本身之中,当然,不依赖游戏引擎也是可以一行代码一行代码写游戏,所有的规则都可以是游戏的编写者决定。

初始化游戏引擎

选择游戏引擎

对于一些当今游戏引擎的介绍,可以看看这篇文章主流游戏引擎分析

在之前第一篇系列文章说过,游戏开发使用的编程语言是需要符合游戏引擎开发组件支持的,当然基本所有引擎都是支持C/C++的,使用引擎只是游戏开发的一个入门过程,如果是客户端程序员,基本上需要了解以下知识:图形学,图形API(D3D/OGL),算法/数据结构,物理,游戏逻辑,音乐音效,人工智能,编程语言,设计模式,操作系统,工具编写,UI等等,只有这样,对于切换不同的游戏引擎只是一个熟悉过程,毕竟大部分原理都是相通的。

接入游戏引擎

对于本例象棋游戏开发,我们选择的是libgdx引擎,libgdx是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C++语言编写而成,适合初学者,我们进入libgdx官网,如下:
LibgdxHome
点击下载官网提供给我们自动生成项目结构的Jar,运行该Jar如下:
在这里插入图片描述
图中Destination表示项目的存放路径,Sub Project下表示项目支持的平台,这里主要包括端游,AndroidiOS手游,和页游,Android SDK 表示安卓手机端平台下的开发工具组件路径,如果你在Sub Project中勾选 Android 平台可以不填写,当然我们这里以 Android 平台为例,你可以到 google 官网下下载 Android 开发IDE Android Studio,使用该IDE我们可以下载想要版本的Android SDK,填写好相应路径 ,点击上示图中Generate在我们的对应目录下生成如下目录:
在这里插入图片描述
基本上所有的逻辑和引擎使用代码都是放置在core目录下,我们把之前写好的数据模型类相关代码放在里面,因为KotlinJava互通,所以libgdx同样支持Kotlin编写的代码,这种目录结构也展示了引擎把平台和逻辑隔离的思想,游戏开发者无需关心其他,只需关心自己的游戏逻辑,我们用AndroidStudio 打开该项目(当然可以使用任意IDE,任意平台,这是是为了方便在Android手机上演示开发效果):
在这里插入图片描述
如此一来,我们就算是成功接入游戏引擎了,我们看看项目依赖的jar包,主要是利用如下Api来编写我们的游戏Ui

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值