nodejs游戏源码解析:让《球球大作战》运行起来

2017年4月6日 阅读:306

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

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

下图为游戏运行画面,游戏规则如下。
1、玩家可以移动鼠标控制小球
2、当小球吞食场景中的食物或其他玩家控制的小球时,玩家控制的小球会变大
3、小球越大,移动速度越慢
4、小球的质量代表它的大小,质量为它吞食的食物或其他玩家的质量之和
5、游戏目标是尽可能的吞食其他玩家,使小球变大
6、玩家刚出生时会有无敌属性,直到它吞食食物
7、每当有玩家进入游戏,场景中会生成3个食物
8、每当吞食食物时,场景中亦会生成一个新的食物

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

1、安装nodeJs
游戏使用nodejs开发,那就必须要安装nodejs,可以有两种方法安装。
方法1 :输入sudo apt install nodejs,这是最简单的安装方法了。不过使用该方式安装的程序名叫为nodejs,而不是普遍使用的node。可以使用sudo ln -s /usr/bin/nodejs /usr/bin/node建立名为node的连接,以解决这个问题。

方法2:下载源码、编译、安装。具体可以参考这篇文章https://linux.cn/article-5766-1.html(文章里使用的node-v6.9.5 要改为最新版的)

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

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

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的格式可以参考这篇文章http://ju.outofmemory.cn/entry/130809

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

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

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

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

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

欢迎关注笔者出版的书籍《Unity3D网络游戏实战》,本书充分地讲解怎样开发一款网络游戏,特别对网络框架设计、网络协议、数据处理等方面都有详细的描述,相信会是一本好书的。

作者:碧俐千仞
转载请注明出处:http://weidublog.com/index.php/2017/04/06/315/

没有评论

评论已关闭。