Java游戏开发要学什么?所谓的游戏开发编程语言其实有很多,基本上任何一种语言都可以作为游戏服务器的编程语言。这需要根据自己游戏的类型和要求加以选择。比如C++,Java,Erlang,go等等。目前我用过的只有C++和Java.但是以Java为主。所以接下来就以自己的经验,谈谈以Java为核心的游戏服务器开发技术体系。
Java目前作为游戏服务器开发语言已经很是普遍。但是大多数是作为页游或手游的服务器,而端游戏一般选择C++,因为端游对服务器的性能要求相对比较高一些。两种语言各有利弊。C++效率高,但是掌握度难些。没有Java易于掌握。而目前对于追求快速上线率的页游和手游来说,Java成了一个不错的选择。
一、Java的技术系统
需要学习的技术:
(1)Java基础知识
(2)JavaNIO编程
(3)Netty,Mina网络框架精通一种,其它作为了解。
(4)一种缓存框架:Redis;memcache熟悉使用一个。
(5)SQL语言,用于数据库:mysql数据库
(6)springmvc主要用于http协议的服务器
(7)多线程编程,明白线程安全的重要性。
(8)Java并发集合的掌握。
(9)Linux常用的基本命令及shell脚本。
(10)数据库操作,比如mybatis。
以Java为服务器编程语言来说,掌握Java的基本知识就不必说了,是必不可少的。可以参考《Java编程思想》,《Java核心技术》等书。根据游戏通信协议的不同,大致有两种实现方式:Socket和http。先说简单些的http协议,这个协议已经很成熟的应用到了网站上。而Java语言也可以用于网站开发,所以相当就简单些。现在有很多开源的服务器软件,比如:tomcat,resin等。游戏前端不管是页游flash,还是手游的Android,IOS都支持http协议,只要把游戏的逻辑数据按post方法向服务器发出请求即可了。
二、学习流程
当然了,学习这些东西并不是一蹴而就的。需要根据实践循环渐进,这里推荐一个学习流程:
(1)对于初学Java的人来说,如果自学能力好些,可以买些书自己练习,而现在又更的多选择参加Java培训机构,以快速的掌握Java的知识。
(2)掌握了Java知识之后,要多写代码实践。这个时候可以结合mysql学习SQL语言,掌握数据库的操作。比如用springmvc写一个小网站,用mybatis实现网站数据的增,删,改,查等功能。
(3)完成上步之后,可以在服务器程序和数据库之间加一个缓存,学习redis或memcache。
(4)把程序部署到linux服务器上,练习linux的基本命令及shell脚
免责声明:内容来源于公开网络,若涉及侵权联系尽快删除!
有,我个人比较喜欢Java的框架。这也是安卓应用开发的祖传框架之一了。其实现在安卓的应用市场是很大的,因为更多人的手机系统应用的是安卓。因为安卓的市场份额和手机应用的火热,与之相关的一些程序员在这些方面也是有很大的前途的。虽然程序员的工作比较累,但每年还是有无数人前仆后继加入其中。
01、安卓应用的原生框架,Java和c++
说实话我其实对程序不太懂,但是因为有朋友在学Java,所以我也读这个比较有好感。手机上的一些应用最基础的设计和功能基本上都是通过Java和c++实现的。通过这两种程序语言,不仅可以设计出安卓应用,还包括网页和其他方面的很多东西。这两种语言都比较灵活,可以让用户体验更流畅、更便捷。
02、Unity开发,比较不错的安卓游戏开发框架
Unity是一种什么样的语言呢?相较于Java来说,Unity其实更适合游戏开发。因为很多游戏都是二维、三维的,使用这种语言开发游戏会比开发应用更方便一些。举一个我们平常经常玩的游戏,比方说王者荣耀,就是通过这种技术实现的。Unity的种类特别多,所以相较于Java来说,内容更集中一些。
03、作为开源框架的React Native,走在前端
React Native这个东西是一个开源框架,可以对开源软件进行定义。这个框架算是一个比较新鲜的框架了。而且React Native的利用率是非常高的。现在很多网页浏览器已经选择React Native作为自己的选择了。像ins和沃尔玛,都对这一框架十分青睐。所以它的未来是比较被看好的。
首先,我得说明的是,目前市场上新人很难去做pc游戏开发,要么是做页游要么是手游。
页游不清楚我就不说了,手游里面,客户端主要就是c2d和u3d。
如果你想做客户端,那么你可以转学u3d,因为它使用的语言是csharp,这个语言和java相似。网上unity的教程也很多,你随便找一下就有了。
再说说手游服务器,其实我入行服务器还是挺巧合的,当初本来是打算做客户端的,都入职了,因为招不到服务器,就让我转服务器了。。
服务器的教程,我至今也没找到,而且也找不到系统的教程。
开源的服务器框架也只熟悉kbengine和scut。其中一个是cpp做底层python做开发的,一个是csharp做开发。而且scut已经两年没有更新了,应该是死掉了。
所以,想要学服务器开发,得碰点运气。
java服务器目前主流框架技术有网络层netty或mina,数据协议protobuf,数据库mysql,缓存数据库redis,jdbc一般是mybaits或者jpa,项目管理maven,设计层面spring
然后还需要熟悉多线程,linux的基本操作,git或者svn。
差不多了,这些都有个大致的了解,会用,应该就能找到工作了。
后面再深入需要学习的也挺多的,到时候你再根据业务需求自己琢磨着学吧。
在第1章“配置开发环境”中,我向读者介绍了将要在整本书中使用的代码库。描述了这个库的设计,并给出了编译示例游戏的说明。可能会在游戏开发环境中使用的一些附加代码、图形和音频文件,也在本章确定了下来,还介绍了软件开发的一些流行工具。以模板的形式给出了一个演示Java游戏编程基础知识的游戏示例。
在第2章“部署框架”中,我们关注的重点是在可以安装在多种不同类型的平台上的一个框架中部署游戏。在动画线程管理技术的相关内容中,介绍了一个被广泛使用的框架接口以及applet生命周期。在对适合于游戏的不同发布而进行不同部署的选项进行了一个简要的回顾以后,给出了允许游戏部署在不同开发环境中而不需要任何修改的一个抽象层的源代码示例。
在第3章“Swing动画”中,介绍了一个基于Swing的动画库,这个动画库会在整本书中使用。这一章主要考虑的问题是动画的性能和灵活性。在介绍核心动画引擎类的源代码时简单介绍了优化权衡。
在第4章“动画库”中,介绍了通用动画任务的一个类集合。这些类提供了很多功能,例如场景管理和Sprite实现。它们也用来介绍怎样开发与核心动画引擎类互操作的游戏特定代码。
在第5章“高级图形技术”中,介绍了高级图形技术,包括硬件加速图形、多缓冲和全屏独占模式。给出了使这些技术的使用变得更加方便的可重用类和使用这些可重用类的示例游戏。对其中的每一个技术,都介绍了关于它们使用方法的一些限制。
在第6章“持久数据”中,对在各种部署框架中加载和保存游戏数据的机制进行了对比。在这个过程中还介绍了可以用于大多数游戏编程的可重用数据持久性的类库。对更加高级的持久性需求的其他选择也进行了考虑。
在第7章“游戏体系结构”中,介绍了适合于Java游戏开发的面向对象的软件体系结构的优点。使用这种体系结构的一个示例游戏是作为新游戏开发模板进行介绍的。本章还简单介绍了一下数据驱动的设计。
在第8章“A*算法”中,介绍了现在在游戏行业中*和最常用的一个人工智能(AI)算法的实现。本章还介绍了使用A*算法绕过障碍物寻找路径的示例。
在第9章“HTTP隧道技术”中,介绍一个可以在大部分Java游戏部署环境里常见的安全限制以内进行操作的一个联网库。本章还给出了一个示例,在这个示例中,数据在服务器和客户机之间进行传递。
在第10章“HTTP轮询机制”中,将联网库扩展以支持在线多玩家游戏。使用轮询来同步客户机和服务器上的游戏状态。在由单玩家游戏向多玩家联网游戏的转换中,介绍了我所推荐的软件体系结构的灵活性。
在第11章“HTTP Pulling机制”中,事件驱动的消息是作为轮询的另一个选择而推荐使用的。使用在前面两章中介绍的这些类,演示了这是怎样在无符号applet的安全限制以内实现的。使用这些技术进行进一步开发的一些建议已经超出了本书的范围,这里只进行简单的介绍。
本书合作站点
本书应该保持其“高级性”。为此,我专门为这本书建立了一个Web站点。从这个站点上,您能够订阅与本书相关的电子邮件列表,包括补充的指南和勘误表。您将能够测试和运行本书所介绍的示例游戏,并下载开放源代码库和用来创建这些游戏的公共领域的多媒体文件。针对老师,我已经在Creative Commons License下发布了我在讲授游戏开发课程中使用的课程提纲、幻灯片和布置给学生的作业。我也提供了我的联系方式,这样您可以将您的建议和意见反馈给我,以便我以后进行更正。
在开始阅读第1章以前,请先访问网站,并订阅Advanced Java Game 通知邮件列表。
IV
Java游戏高级编程