JAVA与AS2制作一个2D多人游戏(1)

这几天用JAVA和AS2制作了一个小型的多人游戏,接下来作为复习总结一遍流程,如果有学过AS2的同学也可以试着做一下。

先简单概述一下这个游戏 玩家注册登录后进入游戏大厅,可以创建房间,加入游戏,然后玩家操作一个会射子弹的小人,和同一房间里的人对战。先上几张图大家看看。


服务器界面


开始制作之前先讲讲我对游戏中客户端与服务器通信几种方式自己的总结

1.服务器主动发消息给所有客户端  (例如同步时间,游戏大厅中发送玩家列表给客户端)

2.客户端发送消息给服务器,服务器发送消息给除该客户端之外的所有客户端 (例如许多实时RPG游戏中的移动,虽然也可以等服务器回应后再移动人物,但对于一直要进行操作的实时RPG来说,这种延时不太会影响游戏公平性.却会大大影响操作流畅度和美感。不过对于有些竞技游戏,比如LOL,是采用服务器回应客户端的移动请求后,再进行移动的,因为这种游戏中,这点点延迟就会影响游戏公平。)

3.客户端发送消息给服务器,服务器单独回应该客户端(例如玩家需要查看别人的信息,一般来说,这种都是即时请求的,但也有部分游戏可能将一些信息在游戏初始化时存到本地)

4.客户端发送消息给服务器,服务器发送消息给另一指定客户端(例如游戏中发送好友申请)

5.客户端提交数据给服务器,不返回(例如玩家升了一级,则同步信息到服务器端的数据库中,或玩家进入了一个房间,更新服务器的房间玩家列表,等待下一次返回给所有客户端)


几乎所有网游中的行为都可以概括为以上5种。不过我刚开始其实有点疑惑,玩家进入游戏大厅,算是哪一种?刚开始我觉得2比较合适,每一个玩家进入房间,发送消息给所有客户端

,这样可以做到实时响应。虽然确实是这么没错,不过后来思考了一下,这种做法其实有巨大的问题。正确的做法应该是5加上1,玩家进入大厅,同步消息给服务器,服务器更新保存在服务器的大厅玩家列表,然后服务器每多少秒,将这个消息发送给所有客户端。


不过可能有人有疑惑,这里给大家解释一下。假设房间里只有几个人,他们一直在玩,基本没有进入大厅退出大厅行为,客户端本地的大厅玩家列表就一直不用更新,但采用5+1的方法

却还是要每多少秒发送一次信息给客户端,这些信息似乎多余了。这样看上去似乎很正确,但一般有大厅的游戏,例如什么QQ堂,热血英豪,再不济大厅里也有几百上千号人,这个时候进入退出大厅的频率就显得高多了,假设每秒有10个人执行进入退出大厅的操作,假设大厅有1000号人,那么如果实时更新大厅玩家的话,每秒就变成了服务器要发10000条信息。而采用5+1每秒只用1000条而已,整整差了十倍。而且这个差距会随着大厅里人数的越来越多而变得越来越大。采用5+1的方法,即玩家只提交自己进入大厅的信息给服务器,然后等待服务器每多少秒的一次同步大厅玩家列表,虽然会有些许的不同步,但对于大厅这种系统来说,则是完全可以接受的。我以上所说的两款游戏经过观察后也是这种做法,玩家在退出大厅后,另一个客户端并不会立即刷新过来。


但有些时候就要用2的方法,比如即时战斗,理由之前也已经解释过了,因为这种方法所需要发送的信息数量是随着视野中可见其他玩家的数量增加而呈现指数型增长的。所有大家也就可以理解为什么有些游戏人一多就卡到不行,为什么很多游戏都是下副本模式。


做了个铺垫。接下来进入我们这次的多人2D小游戏制作。

先列举一些我们这个游戏的与服务器的交互。同时用上面所列的5种交互方式进行概括

1.玩家注册 第三种

2.玩家登陆 第三种

3.玩家进入游戏大厅 第五种加第一种

4.玩家添加他人好友 第四种

5.玩家射击  第二种(在其他一些游戏中可能是5+1)

6.玩家死亡 第二种(在其他一些游戏中可能是5+1)


游戏制作流程

一 制作游戏GUI

这个由于不是本篇介绍的重点,就稍微略过,网上下了点素材 稍微拼了拼,唯一值得注意的是,一般来说都不会在第一次的时候想把所有GUI界面做完,因为有些东西可能发现到最后根本没用到,所以我个人做开发,都是先做个大概,然后再进行迭代开发。

上几张图


好吧 不要吐槽游戏名字 因为我做这个游戏的重点是想学习一下JAVA做游戏服务器的过程 所以一些东西是之前做的小游戏里的,看的顺眼就拿过来用了

这篇也就先写到这里吧。


----------

欢迎关注我的github https://github.com/luckyCatMiao

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 2D多人射击游戏目前正在快速发展,可以为玩家提供趣味性十足的游戏体验。采用Cocos Creator引擎开发2D多人射击游戏是完全可行的,它具有强大的功能,可以实现快速、简单和高效的游戏开发。此外,Cocos Creator还提供许多实用的工具,可以帮助开发者快速完成2D多人射击游戏的设计和开发。 ### 回答2: 目前,2D多人射击游戏游戏市场上受到广泛的欢迎。与传统的3D多人射击游戏相比,2D多人射击游戏更简单易上手,并能在较低的技术要求下提供较好的游戏体验。这类游戏通常以俯视或侧面视角展现,玩家可以选择不同的角色来进行战斗,同时与其他玩家或电脑角色进行对战。 2D多人射击游戏的现状是非常火爆的。许多热门的移动游戏平台都有大量的2D多人射击游戏,例如"王者荣耀"和"穿越火线"等。这些游戏不仅拥有庞大的用户群体,而且在竞技游戏领域也有着广泛的影响力。 采用Cocos Creator引擎来开发2D多人射击游戏是完全可行的。Cocos Creator是一款强大的2D游戏开发引擎,具有快速开发、跨平台等优势。它提供了可视化的编辑器,让开发者可以方便地进行场景设计、精灵控制和动画制作。另外,Cocos Creator具有强大的网络支持,可以方便地实现游戏中的多人对战功能。 采用Cocos Creator引擎开发2D多人射击游戏的优势在于其易学易用的特点。即使是没有编程经验的开发者,也可以通过学习Cocos Creator提供的一些简单的脚本语言来实现游戏逻辑。同时,Cocos Creator支持多平台导出,可以将开发的游戏发布到多个平台,例如iOS、Android和Web等,极大地扩展了游戏的用户群体。 综上所述,2D多人射击游戏在市场上呈现出良好的现状,并且采用Cocos Creator引擎进行开发是可行的选择。开发者可以根据自己的需求和技术水平,借助Cocos Creator的强大功能和便捷优势,打造出具备竞争力的2D多人射击游戏

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值