Survive

手游服务器框架
授权协议 GPL
开发语言 Lua
所属分类 手机/移动开发、 手机游戏
软件类型 开源软件
地区 国产
投 递 者 糜鸿风
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Survive是使用distri.lua框架实现的一个小型手游服务端示例.除了aoi和astar两个模块以外,所有游戏逻辑皆使用lua编写.

Survive是一个副本玩法的ARPG游戏,目前支持的功能如下:

  • 帐号验证、角色创建
  • 角色背包、装备穿戴、装备升级、装备升星、装备镶嵌
  • 技能学习、升级
  • 每日签到、每日任务
  • 每日挂机活动
  • 单人PVE副本
  • 5人PVE副本
  • 5V5战场副本

Survive的逻辑服务采用单进程单线程的方式,目前Survive的服务包括:

  • gateserver:负责保持与客户端的网络连接,将客户端请求转发到内部服务和把来自内部服务的消息转发给客户端
  • groupserver:负责帐号验证,角色创建,角色数据的保存,基本游戏逻辑以及副本的管理
  • gameserver:服务服务,运行具体的副本实例,实现战斗及AI处理

获取与构建Survive

获取

Survive依赖distri.lua所以首先需要获得distri.lua

git clone https://github.com/sniperHW/distri.lua.git

进入distri.lua目录

git clone https://github.com/sniperHW/Survive.git

构建

首先确保你的机器上已经安装libcurl和libreadline

然后在distri.lua目录执行以下命令:

make survive

运行Survive服务

首先在你的机器上安装ssdbredis

启动ssdb/redis

修改gateserver的对外服务ip/端口,打开Survive/setconfig.lua,将["gate1"] = {"192.168.0.87",8010}改成你希望的ip和端口.

在distri.lua目录执行以下命令:

./distrilua Survive/setconfig.lua

之后根据使用命令行还是使用管理工具分成两种不同的启动方式

命令行启动

执行如下命令:

./distrilua Survive/groupserver/groupserver.lua 

./distrilua Survive/gameserver/gameserver.lua

./distrilua Survive/gateserver/gateserver.lua

完成后游戏服务便启动完成,可以跳到客户端的启动章节

通过管理工具启动

Survive提供了一套基于web的管理工具,在配置之前请确保你的机器上已经安装了php和apache.除此之外,还要安装php的redis客户端库phpredis.

上面的所有要求都满足之后,打开examples/daemon.lua文件.

1) 将serverip修改为你期望的值

2) 修改groupname="group1"中所有项的ip为你的期望值

3) 修改StartProcess中的路径

4) 执行:

./distrilua examples/daemon.lua -d

这行命令会在你的机器上启动一个daemon进程用于启动/关闭和监控服务

5)在浏览器中输入ip/manage.php,如果看到下图表明php服务及daemon启动成功

Alt text

6)选择你刚才所配置的ip,点击启动,如果看到下图表明游戏服务启动完成

Alt text

启动游戏客户端

打开Survive/client/src/UI/UILogin.lua

local function btnHandle(sender, event)
        print("pre connect")
        --Connect("192.168.0.87", 8010)
        Connect("121.41.37.227", 8010)
        --cc.Director:getInstance():replaceScene(require("SceneLoading.lua").create())
    end

中Connect的参数改为你gateserver的ip和端口号

之后通过Survive/client/runtime/win32/battle.exe启动游戏客户端.

Alt text

用户名可随便输入,忽略密码直接点击进入游戏,如果一切正常你将会看到如下的创角界面:

Alt text

游戏图片展示

1)主界面

Alt text

2)背包界面

Alt text

Alt text

3)每日任务

Alt text

4)角色属性

5)装备强化

Alt text

Alt text

6)每日签到

Alt text

7)挂机任务

Alt text

8)单人副本

Alt text

9)5人PVE副本

Alt text

Alt text

10)5V5PVP战场副本

Alt text

Alt text

11)多机器人副本压测

Alt text

问题反馈

如有任何问题请通过huangweilook@21cn.com向我反馈,Enjoy!

 

  • Survive the flood 题解 实际上是一个简单的二分答案+bfs 首先我们先用bfs得出水在不同的时间所能到达的位置,给每个位置做一个最早到达时间的记录,即step[i][j]。 然后因为高度最高为1e5,那么我们开始二分这个最大跳跃高度的最小值,每次将高度传入,并以这个高度为标准再次进行rabbit在不同时间所能到达的位置,并记录rab[i][j]作为rabbit到达这个位置的时间(

  • Problem B: Survive in the White Terror Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 127  Solved: 31 [ Submit][ Status][ Web Board] Description        In 1927~1949, the whole of China were enveloped

  •        2012,已经过去;2013,已经开始。        写给现在的自己,写给将来的自己。        Change to survive ,        Change to survive ,        2013启程,        2013加油,        遵循自己的计划,遵循自己的内心,        Change to survive .

  • In the current era, the space for individuals to survive is limited, especially those who are capable but lack academic qualifications. Even if they do not lack academic qualifications, they still hav

  • 【数据资源】链接:http://pan.baidu.com/s/1hrANd1i 密码:uicz 【题目名称】survive 【时间限制】1000ms 【空间限制】128M 【题目描述】 子曰:不睡觉就会死。 深信此话的LYM决定在本学期接下来的n节课上考虑一下睡觉的问题。LYM认为如果在一堂课上睡觉,身体的疲劳值就会下降,反之如果在一堂课上不睡觉,身体的疲劳值就会上升。而身体对疲劳的忍耐是有限度

  • -- Jens Axboe --aVD9QWMuhilNxW9f Content-Type: application/x-bunzip2 Content-Disposition: attachment; filename="ata-tcq-258-all-1.bz2" Content-Transfer-Encoding: base64 QlpoOTFBWSZTWb9utasAo+H/gH9yvwJ

  • Blue Skunk Blog Like a number of districts, we need to assess the number of student households that have Cheap Jerseys home Internet access. Knowing the percent of students who can participate in onli

  • 7 Tips to be More Innovative in the Age of Agile Testing to Survive an Economic Crisis What is Agile Testing? “Agile testing involves testing from the customer perspective as early as possible, testin

  • 郑昀@玩聚SR 20090314 RT榜转发了这样的感慨: RT @王兴:创业几年,我对1949年之前的共產党人越来越佩服。和政治理念无关,纯粹是对他们能在那种艰苦的环境下生存并壮大起来觉得简直不可思议。 foxmachia 在 FriendFeed 回复道:毛澤東选集第一本里对这种艰苦的描述很生动。 是的,你可以尝试着像阅读一个互联网创业家的Blog一样去阅读毛澤東选集49年前的那些文章,生动活

 相关资料
  • 我试图建立一个通用服务器总是在连接的客户端。 该体系结构由4个主要组件组成 有状态应用服务器 无状态网关服务器 客户排队 系统和经纪人 工艺流程 客户端连接到网关 我正在使用JavaNetty作为网关。appserver也是用Java编写的。 我很想说这个设计像Mongrel2,但我不能完全确定。我想说,这更符合城市飞艇氦边缘服务器的设计(http://urbanairship.com/blog/

  • JAGS 游戏服务器是一个开源的 Java / AS 3.0 的游戏服务器,支持多玩家、碰撞检测以及键盘事件等等。

  • 二本鼠鼠学Java没出路。。 技术面 - 50min - 9.26 自我介绍 介绍一下你的项目经历 MySQL索引底层结构 Redis有哪些数据结构 Redis的持久化机制 学过其他语言吗(c++和go),说一下c++、go、Java的区别 LRU怎么实现 最短路径算法实现 JVM垃圾回收算法 手撕在一排数据中算出不重复数据的子集 TCP三次握手 你知道什么是SYN攻击吗 TCP四次挥手为什么是四

  • 过年回上海裸辞出去玩了一个月,5月回来找的工作,正好现在有时间了,抽空写一下社招面经,有些已经忘记了。裸辞还是太冲动了,菜鸡不配gap,两年工作经验不应该随便裸辞,还是太年轻、太狂妄了。当年校招腾讯、祖龙、小米等等offer随便拿,以为社招还跟校招一样简简单单,结果现在只能去个小公司养老了。 巨人网络(球球大作战) golang游戏后端,线下1、2、3面一起的 一面 项目架构图 pb的底层实现结构

  • 先简单自我介绍一下 项目 哪个项目能代表我的技术水平的,比较有深度的一个项目。讲一下 技术难点在哪里呢 kafka怎么保证消息不丢失的呢 kafka怎么做这个可靠性的 MongoDB、kafka这些都有副本机制。数据库里面这种副本机制一般都是怎么实现的?主节点和备节点,备节点去主节点同步数据的时候,一般需要做什么,之前有了解吗? 日志记录,具体怎么同步的呢?是主节点把日志记录发给从节点吗。 假如中

  • 我正在尝试构建一个使用套接字和udp协议的python在线游戏。我创建了一个多处理和多线程服务器:https://pastebin.com/zucxwpc9。 我会解释里面的代码是做什么的。所以首先,它等待两个请求,并将它们放入lobby列表中。如果发出了两个请求,服务器将向客户端发送一个新端口,并创建一个具有两个线程的新进程。两个线程都在使用新端口,一个接收数据,另一个发送数据。我正在使用队列,