java球球大作战小游戏 球球大作战网站源码_服务器

鉴于http://agar.io类型游戏的火爆场面,一些公司纷纷效仿,一时间出现各种《XX大作战》类型的游戏。出于学习的目的,亦是做些技术和方案储备,接下来会有大概10篇文章,分析下面这款使用nodejs编写的开源“球球大作战”。由于该游戏采用服务端运算、客户端显示的方式,服务端的逻辑处理是该源码的重点,故而系列文章主要针对服务端。通过这套源码,可以学习到“一种基于nodejs的简单服务器实现方法”“一种简单的服务端物理逻辑的实现方式”“一种基于redis pub/sub的跨服设计思想”“nodejs语法、框架及其使用方式”等内容。


系列文章将会分析huytd/agar.io-clone的源码,这是一套简约而不简单的Agar.IO实现。该项目使用NodeJS开发,使用socket.IO作为网络通信,使用HTML5实现客户端。


下图为游戏运行画面,游戏规则如下。


1、玩家可以移动鼠标控制小球


2、当小球吞食场景中的食物或其他玩家控制的小球时,玩家控制的小球会变大


3、小球越大,移动速度越慢


4、小球的质量代表它的大小,质量为它吞食的食物或其他玩家的质量之和


5、游戏目标是尽可能的吞食其他玩家,使小球变大


6、玩家刚出生时会有无敌属性,直到它吞食食物


7、每当有玩家进入游戏,场景中会生成3个食物


8、每当吞食食物时,场景中亦会生成一个新的食物

java球球大作战小游戏 球球大作战网站源码_服务器_02


 


第一步便是要让游戏运行起来,只有运行起来了,才谈得上后续的源码分析。为了“从零开始”,笔者购买Ubuntu系统的腾讯云,新的系统几乎没有安装额外软件,一步一步安装所需的软件,然后将游戏运行起来吧。笔者选用了最低一档配置的服务器,花费近50大洋(此处是不是应该发个求赞助的链接?)配置如下图所示。

java球球大作战小游戏 球球大作战网站源码_服务器_03


 


1、安装nodeJs


游戏使用nodejs开发,那就必须要安装nodejs,可以有两种方法安装。


方法1 :输入sudo apt install nodejs,这是最简单的安装方法了。不过使用该方式安装的程序名叫为nodejs,而不是普遍使用的node。可以使用sudo ln -s /usr/bin/nodejs /usr/bin/node建立名为node的连接,以解决这个问题。


方法2:下载源码、编译、安装。具体可以参考这篇文章在Ubuntu下安装Node.JS的不同方式-技术 ◆ 学习|Linux.中国-开源社区 (文章里使用的node-v6.9.5 要改为最新版的)


完成后,可以使用node -v查看nodejs版本号,以验证是否成功安装。


2、上传代码文件


从github上下载源码,然后上传到linux服务器上。如下图所示,笔者将源码上传到/home/ubuntu/agar.io-clone-master目录下

java球球大作战小游戏 球球大作战网站源码_java球球大作战小游戏_04


 


3、安装npm


npm(node package manager)是nodejs的包管理和分发工具,一般安装nodejs后都需要安装该软件,可以使用以下命令安装:sudo apt install npm


4、安装gulp


项目使用到了gulp,需要安装它。gulp是一个前端构建工具,开发者可以使用它在项目开发过程中自动执行常见任务,比如复制文件,比如替换文件中某些字符。进入源码目录,执行sudo npm install -g gulp 即可安装。


5、安装项目所需的包文件


进入源码目录,执行npm install即可安装项目所需包文件。npm install会检查当前目录下的package.json文件,文件包含了项目所需的模块,npm根据该文件的描述下载这些文件并把模块放到./node_modules目录下。关于package.json的格式可以参考这篇文章package.json for NPM 文件详解


6、运行服务器


在源码目录下执行gulp run,可以看到服务器启动的提示信息。


7、运行客户端


运行浏览器,输入地址即可,笔者的腾讯云ip为139.199.179.39,由于默认配置了3000端口,所以要输入http://139.199.179.39:3000/ ,即可看到如下的游戏界面。

java球球大作战小游戏 球球大作战网站源码_gulp_05


在笔者的试验中,该页面报错,点击按钮没有反应。原因是src/client中的index.html最后面有这么一句,<script src="//code.jquery.com/jquery-2.2.0.min.js"></script>,该语句用于加载jquery的,而http://code.jquery.com/jquery-2.2.0.min.js无法访问(或国内网络访问速度慢),导致报错。只要换个文件地址即可,例如改成下面这样:


<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script >


运行游戏,服务端也会打印出相应的信息,如下图所示。

 


java球球大作战小游戏 球球大作战网站源码_gulp_06


把游戏运行起来后,下一步就要分析下游戏的流程了。