每个人,几乎每个人,都喜欢电子游戏。 因此,即使您不打算成为专业游戏开发人员或不确定,也可以通过练习来学习编程语言并创建自己的视频游戏项目,这是一个绝妙的主意。 此外,这可能是您学习的良好动力。
本文面向所有准Java初学者和所有想创建自己的Java游戏项目并且不知道从哪里开始以及如何以最佳方式学习这种语言的人。
Java对GameDev不利吗?..神话与现实
如果您阅读了一些有关游戏开发的论坛和文章,尤其是已经存在了一段时间的论坛和文章,您可能会觉得Java不是游戏开发的好选择。 但是,这种观点有些过时且不准确。 电子游戏世界高度多样化。 按照惯例,您可以将游戏分为以下几类:
“大”游戏。 例如3D射击者,大型动作冒险/动作RPG。 此类别也包括AAA级项目。 通常,它们是为大众设计的高预算游戏,例如《荒野大镖客:救赎2》,《刺客信条:起源》等。 这种游戏通常用C ++编写,并带有游戏引擎。
由于JVM的特殊性,Java在这种游戏开发中是罕见的访客。 更准确地说,它可以用于例如创建后端零件。
独立游戏 。 一位玩家鄙视独立项目,另一位玩家则充满激情地爱他们。 独立游戏是指由小团队甚至一个开发人员创建的独立游戏。
独立组织中有许多业余项目,其中一些项目并不能为创作者赚钱。 独立游戏更多地是关于原始想法和游戏玩法,良好的脚本和主观视觉,而不是性能和高端图形。 然而,这样的独立项目却冲破了市场,并大受欢迎。 Minecraft就是此类游戏的一个很好的例子,它最初是由一个人Markus Persson创建的。 截至2019年5月,Minecraft已售出超过1.76亿份。 这使其成为有史以来最畅销的视频游戏之一。 2014年,微软以25亿美元收购了Minecraft和Mojang。 顺便说一句,Markus Persson是Java开发人员,因此他用这种语言写了他的杰出著作。 因此,是的,Java对于独立项目确实非常有用。
手机游戏。 这个巨大的市场与智能手机的数量和性能一起不断增长。 几乎每个人都在他们的移动设备上玩过游戏。 可能是2048,旧游戏的移动翻拍或具有原创想法的游戏。 Java是否适合手机游戏开发? 答案是肯定的 “ 是 ”。 目前,Android智能手机的市场份额占80%。 您可能将Java视为Android的本地语言,因此确实有很多用这种编程语言编写的手机游戏。
结论。 Java适用于手机游戏和独立项目开发(这些市场有些交叉)和高负载在线游戏服务器部分的开发。 现在是Indie成长的时代,因此,如果您对这样的游戏感兴趣,可以尝试在学习Java的过程中尝试一些游戏。
而且,Java是一种通用语言。 它用于服务器端企业开发,大数据,移动和Web应用程序,交易应用程序,嵌入式空间等。 Java Developer可以自由切换其编程角色。 因此,Java使您可以选择的自由比其他任何编程语言都更多。
如果您确定要成为大型游戏开发商,那么可以选择C ++和某些游戏引擎(例如Unity和Unreal)进行学习。
新手编程学生可以创建自己的游戏吗? 怎么做?
实际上,即使是最简单的视频游戏也很难编写,特别是对于没有编码经验的游戏。 幸运的是,我们生活在开放信息时代,所以我们可以找到不同级别的不同逐步说明和课程。 在本段中,我们将讨论新手用Java创建游戏的三个选项。
情况1.使用分步说明从头开始。 CodeGym 游戏部分
此功能适合早期的初学者。 您可以使用非常基础的Java知识来创建3个经典游戏(目前尚在开发中的3个)的版本。 CodeGym上的“游戏”部分是主要课程的一部分,不仅对CodeGym学生开放,而且对所有用户免费提供。
CodeGym Games部分可让您创建自己的传奇视频游戏的版本,例如Minesweeper,2048或Snake(正在开发Space Invaders,Moon Lander和Racer)。
每个游戏都是一个带有两个子任务和分步说明的任务。 学生得到子任务和提示,编写代码,然后通过自动CodeGym系统进行检查。 如果代码以正确的方式工作,则学生进入下一步。 所有代码都直接在CodeGym网站上编写,或者通过特殊插件在IntelliJ IDEA中编写,您可以在CodeGym上获得该插件。
完成您可以使用的游戏的最后一步,您可以在网站上发布,并根据自己的创造力进行自定义,并与朋友分享。 这些游戏使用简单的CodeGym游戏引擎,您可以从本文中学习其结构。
您对这些游戏进行编码应了解什么? 这是第一个Java程序的级别:有关类和对象的基本知识,基本原始数据类型,字符串,循环和分支以及数组和有关ArrayList结构的初步知识。 CodeGym的作者建议完成本课程的前5个级别以获取此类知识。 如果您不足够自信,这里有一些有用的理论可以帮助您解决任务。 如果您了解Java Core但从未尝试过制作游戏,则CodeGym Games对您来说仍然很有趣,尤其是在批准标准解决方案后修改和定制您的标准解决方案的机会。
付款: CodeGym Games是免费使用的。
案例2.对于喜欢Minecraft的中级Java学生的菜鸟
如果您喜欢Minecraft ,最好尝试使用Java进行一些mod(修改)。 大多数mod会在游戏中添加一些内容,以改变游戏玩法或为玩家提供更多与Minecraft世界互动的选项。 例如,您可以编写一个新的更精确的弓或类似的东西。 有些人在Minecraft内创建迷你游戏 。
即使您不是这个游戏的忠实拥护者,对每个新手来说,使用反编译的代码,尝试理解它并为您进行更改也将是有益的。 稍后,您可以使用自己的模式玩Minecraft。
要开始改装,您应该安装IDE和JDK以及改装工具。 Forge是用于Java改装的最受欢迎的工具之一。 Java Minecraft改装有无数的教程和课程。
这里是其中的一些:
使用Java修改Minecraft应该知道什么?
这取决于您要执行的模式的复杂性。 您至少应该了解Java类和对象(数据结构的基础知识),但是如果您或多或少具有扎实的OOP使用技巧,线程和流介绍以及Java集合,那么它会更加有用。
付款:通常您应该购买自己的Minecraft版本。 如果您不想自己学习改装,可以在互联网上轻松找到一些付费课程。
案例3。我对Java Core有扎实的知识,已经准备好自己的游戏项目
当然,这种情况与完整的新手无关。 在这一点上,我们将告诉您决定创建游戏项目的Java新手程序员应该注意什么。
您有一个关于Indy跨平台或移动项目的想法吗? 也许您知道如何创建自己的流行游戏版本? 好吧,如果您了解Java Core并且仅了解游戏开发该怎么办? 用原始Java编写游戏是很困难的观点,但是确实有一些有趣且有用的框架和库可以帮助您将想法付诸实践。
游戏由什么组成?
- 图形
- 物理(游戏中对象互动的方式)
- AI(不是在每个游戏中都有代表,但通常是代表)
- 图形用户界面
- 声音
OpenGL是用于渲染2D和3D矢量图形的跨平台应用程序编程接口(API)。 在Java中,你可以使用OpenGL函数与一些图书馆- Java3D的 , JOGL (Java的OpenGL的)和LWJGL (轻量级Java游戏库)。 它们都是跨平台,免费和开源的。 最受欢迎的是最后一个,LWJGL。 它是许多其他游戏引擎和库的核心技术。 LWJGL使您可以访问OpenGL图形库,并包含创建2D和3D游戏所需的一切。 LWJGL还支持强大的跨平台API,用于创建音乐和声音效果OpenAL,并支持OpenCL(跨平台并行编程的标准)。
libGDX是用于跨平台游戏的LWJGL框架。 它包含一个有用的Box 2D引擎 ,可让您创建游戏物理,许多图形类以及用于处理音频的工具。
libGDX由几个模块组成,因此您可以使用它来创建基于AI的角色,控制灯光行为,声音和物理。
使用libGDX和box2d,您可以为不同的平台开发游戏,例如Android,iOS,Windows,Linux,MacOS和Web。 您无需为每个代码都重新创建代码,只需编写一次即可,由于跨平台,它可以在每个系统上使用。
因此,为初学者Java游戏开发者学习libGDX是一个好主意。
还有什么?
游戏开发不仅是清晰的编程。 如果您打算自己一个人处理项目,则还应该:
制作一些像素艺术,纹理,人物角色。 为此,您需要一个图像编辑器。 例如, Pinta或Paint.Net 。
设计级图。 要创建地图,您需要一个图块集。 您可以在图形编辑器中创建它。要从图块创建地图,可以使用地图编辑器Tiled 。
创建纹理地图集。 纹理图集是包含我们所有精灵的一幅大图像。 Atlas无疑可以加快开发过程。 您可以为该任务使用免费的Sprite Sheet Packer 。
创建图形界面。 使用例如Overlap2D
有许多使用libGDX的很好的教程。 这是官方链接。
结论
无论您是游戏开发人员还是以后喜欢编程的其他分支,创建自己的游戏对于Java学习而言都是非常有用的。 编写游戏代码,从开始到发行,您都将参与典型软件开发项目的所有过程。 您可以看到自己的工作结果,并可以将其展示给您的朋友,甚至可以将其发布到某个地方(例如Google Play)。
即使您绝对是初学者,也可以尝试使用一些Web教程和工具(例如CodeGym Game Section)来创建视频游戏。
您也可以尝试创建现有游戏的某些模式,并且Minecraft(Java版)与Forge一起非常有用 。
如果您足够了解Java Core, 那么libGDX框架是学习和使用第一个游戏项目的好选择。
祝您的游戏好运!