立即注册找回密码
 

奇瑰网社区

社区官方在线联系

工作时间: 周一到周五早上09:00-11:00, 下午03:00-05:00, 晚上08:30-10:30(周六、日休息)
点击这里给我发消息
QQ: 617155901  E-Mail: [email protected]  E-Mail: [email protected]
用户交流QQ群
①群87904533 ③群943814120 ←提醒:请勿重复加群, 谢谢合作

[编程与开发类] 《球球大作战》源码解析——(1)运行起来

[复制链接]

63

主题

80

帖子

1037

积分

网站民审组

Rank: 7Rank: 7Rank: 7

G币
142
信用
8
体力
95

技术大神论坛版主周年纪念

发表于 2020-3-17 18:48:53 | 显示全部楼层 |阅读模式
免费G币领取活动中
本帖最后由 吴大大 于 2020-3-17 18:49 编辑

v2-e163e9c18c851b9b40b12796818d64c1_1200x500.jpg
鉴于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、每当吞食食物时,场景中亦会生成一个新的食物
v2-e163e9c18c851b9b40b12796818d64c1_720w.png

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

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目录下

v2-4a98a80d201d4bb9dc3e9b482aa32d35_720w.png
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/ ,即可看到如下的游戏界面。
在笔者的试验中,该页面报错,点击按钮没有反应。原因是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 >
运行游戏,服务端也会打印出相应的信息,如下图所示。
v2-e387db51d37a5ea13985f30671e40648_720w.png
把游戏运行起来后,下一步就要分析下游戏的流程了。
QQ截图20200317181333.png
v2-0d517a2b892733d3740045ca41c3ae8d_720w.png



内容来自:https://zhuanlan.zhihu.com/p/26193373





上一篇:原来404页面可以这样做
下一篇:域名解析到了IP,但仍然无法访问的原因是什么?
回复

使用道具 举报

2

主题

63

帖子

148

积分

资深会员

Rank: 2

G币
50
信用
0
体力
36
发表于 2020-3-17 18:48:57 | 显示全部楼层
马上来领取免费的邀请码加入奇瑰吧
我也顶起出售广告位
回复

使用道具 举报

0

主题

255

帖子

190

积分

资深会员

Rank: 2

G币
10
信用
0
体力
-4
发表于 2020-3-17 18:48:58 | 显示全部楼层
在撸一遍。。。
回复

使用道具 举报

0

主题

76

帖子

74

积分

资深会员

Rank: 2

G币
0
信用
0
体力
21
发表于 2020-3-17 18:49:16 | 显示全部楼层
马上来领取免费的邀请码加入奇瑰吧
鼎力支持!!
回复

使用道具 举报

0

主题

256

帖子

192

积分

资深会员

Rank: 2

G币
10
信用
0
体力
-4
发表于 2020-3-17 18:49:17 | 显示全部楼层
LZ帖子不给力,勉强给回复下吧
回复

使用道具 举报

0

主题

22

帖子

70

积分

资深会员

Rank: 2

G币
0
信用
0
体力
23
发表于 2020-3-17 18:49:22 | 显示全部楼层
马上来领取免费的邀请码加入奇瑰吧
学习下
回复

使用道具 举报

0

主题

69

帖子

139

积分

资深会员

Rank: 2

G币
0
信用
0
体力
31
发表于 2020-3-17 18:49:24 | 显示全部楼层
锄禾日当午,发帖真辛苦。谁知坛中餐,帖帖皆辛苦!
回复

使用道具 举报

使用高级回帖 (可批量传图、插入视频等)

发表回复

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
Powered by Discuz! X3.4 ( 粤ICP备18094825号-1 知道创宇云安全  |网站地图
Copyright © 2014-2020 www.qiguiwl.cn All Rights Reserved.
快速回复 返回顶部 返回列表