(1)跟我一起学!

第一篇就随便写写,当做开坑之作吧。

如果不愿看海量的吐槽,那么请记住一句话:来,跟我一起学!

可能很多人不知道jmonkeyengine3(jme3)是干啥的!在这之前我也没听过,因此,讨论这个话题,我也只是边学边输出了,可能会有写得不到位的地方,毕竟不像web后端领域那么熟悉,但是相信会好起来的。

没错!jme3是一个java 3d游戏框架

相信很多coder说起游戏,会觉得很高大上,向往之余又觉得门槛很高、今生无缘!但是神话就是用来打破的,自学六年java的我来证明这是真的,并且还可以告诉你:
曾经神秘的jvm,因为《深入理解java虚拟机》,看起来也不是那么神秘了;
曾经深奥的编译原理,因为《编程语言实现模式》《antlr4权威指南》的加入,也并非完全不可操作;
还有我最常说的一句话:代码该怎么写,早在上世纪80年代就已经确定了!额,虽然几本神作《clean code》《重构》《敏捷软件开发:原则、模式与实践》直到本世纪初才成书。
结论是:看对了书,情人节每天都过

游戏开发也是这样。

一年前就想入门游戏开发,无奈遍寻良书,网络上都是诸如windows游戏编程这样的大部头著作,名字都记不太起来。且,恐怖而又粗制滥造的windows api,成功避开了所有编程最佳实践,讲授这种api的书籍,估计没几个人能看进去。
终于,中间找到一本不错的书,介绍了一种java 2d游戏框架,包括怎么做瓦片地图、材质、纹理、粒子、精灵、音效、特效,总算不会让人完全摸不着头脑。书名原谅我忘了。
直到这时,事件主循环、fps、碰撞检测、npc ai、动画等等,才有了基本的概念。

这里我们知道了,所谓游戏,也不过是和动画一般。动画糅合了图片和声音,游戏则 将 图 片 、 声 音 , 捆 绑 着 回 调 程 序 , 加 载 到 内 存 , 然 后 在 一 帧 的 时 间 内 算 好 下 一 帧 该 画 啥 、 播 放 啥 、 执 行 啥 \color{red}将图片、声音,捆绑着回调程序,加载到内存,然后在一帧的时间内算好下一帧该画啥、播放啥、执行啥 而已。一眼望不出本质,仅仅是因为电脑完成得太快了。事件主循环,终究走的还是计算机“无限迭代”的老套路,它深谙此道。

是不是有种神话之墙轰然倒塌的感觉。

当然,知道了这些还开发不了游戏,毕竟游戏要模拟真实世界啊。不要慌,我们绝不是门外汉,现在只要再加上一些 数 学 、 物 理 和 美 工 \color{red}数学、物理和美工 就好。
前两者好说,我们从小就开始与他们的亲密接触!一些基本的线性代数、自由落体,肯定不在话下。
剩下的美工就难一点了,但经过这么多年业界的积累,网上抠点做好的模型,再用免费开源的Blender处理下,就能得到不错的模型和动画了。下面这段摘自百度百科:

Blender 是一款开源的跨平台全能三维动画制作软件,提供从建模、动画、材质、渲染、到音频处理、视频剪辑等一系列动画短片制作解决方案。

解决了理论基础,我们当然不用从头制造轮子,框架已经帮我们准备好了很多开箱即用的功能:诸如资源管理、事件主循环、物理引擎等等。想象一下,不用自己使用io读文件、音频、动画,不用自己搭框架代码,甚至不用自己写基本的物理公式,这些都有框架提供一站式的工具,开发游戏好像也没有那么难了吧!

下面,是时候我们的主角入场了:有请jme3

这个框架不知道火不火,但版本迭代是很活跃的,截止到2020年3月还有新版推出来,纯java的api,所谓一通百通,从这个框架入门是较好的。还有一个好处,jme3环境搭建是想当容易的。本来准备从unity3d入手学习,一是软件不免费,二是下载不顺畅嘛(||^^)。这俩问题对jme3而言,都是不存在的。

前期的准备都完成了,按照惯例,现在只差一本好书了!这里的答案是:jme3教程

很遗憾,这个框架没有什么圣经般的书籍可以参考,仅能弄到的书是jme3 beginer’s guide,比较坑的是这书是英文的,而且套用了cookbook系列的文风,图和文还分开放在两本书里,徒增烦恼,算是比较糟糕,因此,建议下载了稍作参考就好。

我这个系列的文章会参考上面的文档,但关注点主要放在:0基础入门、简单好懂、循序渐进、重点突出。此外,顺便记录下我个人的学习轨迹,并为jme3的推广稍微做点贡献吧。如果我有任何没讲清楚的,或者过于复杂的,请拿砖块砸我!

学习编程,最好的资料永远是源码。jme3自带了examples模块,演示了框架的主要功能。我们就从这些代码出发!

先贴一个例子!这个例子出自helloworld包里的HelloPhysics.java。

jme3


很带感的射击体验,有内味儿了!

环境搭建过程这里我就省略了。参考前面列出的教程,去jme3官网,下载操作系统相应的sdk即可。官方sdk的ide基于netbeans,安装好并进入netbeans,新建项目,类型选择jme3的examples项目,就得到各种可以执行的示例了。
还可以下载源码,使用idea导入,由于idea内置对gradle的支持,导入不会遇到任何困难,只要选择open project,找到根目录的build.gradle,打开,就可以成功导入项目。

初始建议一定要安装sdk,skd内置了blender,省去我们很多功夫!毕竟快速开始,得到反馈,建立信心,才是比较舒适的切入姿势。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
com.jme3.animation com.jme3.app com.jme3.app.state com.jme3.asset com.jme3.asset.pack com.jme3.asset.plugins com.jme3.audio com.jme3.audio.joal com.jme3.audio.lwjgl com.jme3.audio.plugins com.jme3.bounding com.jme3.bullet com.jme3.bullet.collision com.jme3.bullet.collision.shapes com.jme3.bullet.control com.jme3.bullet.joints com.jme3.bullet.joints.motors com.jme3.bullet.nodes com.jme3.bullet.nodes.infos com.jme3.bullet.util com.jme3.collision com.jme3.collision.bih com.jme3.effect com.jme3.export com.jme3.export.binary com.jme3.export.xml com.jme3.font com.jme3.font.plugins com.jme3.input com.jme3.input.awt com.jme3.input.binding com.jme3.input.dummy com.jme3.input.event com.jme3.input.lwjgl com.jme3.light com.jme3.material com.jme3.material.plugins com.jme3.math com.jme3.niftygui com.jme3.post com.jme3.renderer com.jme3.renderer.jogl com.jme3.renderer.layer com.jme3.renderer.lwjgl com.jme3.renderer.queue com.jme3.scene com.jme3.scene.control com.jme3.scene.debug com.jme3.scene.mesh com.jme3.scene.plugins com.jme3.scene.plugins.ogre com.jme3.scene.shape com.jme3.shader com.jme3.shader.plugins com.jme3.shadow com.jme3.system com.jme3.system.jogl com.jme3.system.lwjgl com.jme3.terrain com.jme3.texture com.jme3.texture.plugins com.jme3.ui com.jme3.util com.jme3.util.xml com.jme3.video com.jme3.video.plugins.jheora jme3game.cubefield jme3test jme3test.app jme3test.asset jme3test.audio jme3test.awt jme3test.bounding jme3test.bullet jme3test.collision jme3test.conversion jme3test.effect jme3test.export jme3test.gui jme3test.light jme3test.material jme3test.math jme3test.model jme3test.model.anim jme3test.model.shape jme3test.niftygui jme3test.post jme3test.scene jme3test.stress jme3test.texture jme3tools.converters jme3tools.converters.model jme3tools.converters.model.strip jme3tools.nvtex jme3tools.optimize jme3tools.preview

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值