我的任务系统

任务/成就系统

游戏中任务/成就系统是必不可少的,如何实现一个成就系统?

任务系统基本需求

  1. 检测玩家完成该任务
  2. 奖励
  3. 领取奖励有触发下一阶段任务

名词解析:

任务链:

同一类型的任务为一个链

如:
玩家连续登陆任务,连续登陆1天,连续登陆2天,连续登陆3天,…为一种类型的任务链
获得多少金币,
通过多少次副本,
加多少好友

阅读全文
在谷歌插件中使用nodejs模块

-

相关

这次要介绍如何在谷歌插件中使用nodejs模块,演示的项目是 一个后台定时提醒的插件

运行环境

##基础框架搭建

###创建一个基础的chrome插件框架
可以从谷歌插件的github克隆相应的例子进行修改

基本架构只需要包含:

  • manifest.json (谷歌插件配置文件)
  • background.js (后台逻辑js文件)

##将nodejs库使用转化为浏览器可使用的库

阅读全文
Leancloud的使用

leanCloud介绍

官网:leancloud
LeanCloud 是国内的移动应用一站式云服务。
LeanCloud提供了数据存储、实时消息、统计分析以及多种扩展组件,全面涵盖移动应用开发的需求,支持 iOS、Android、Web 等多平台。
它帮助开发者摆脱后端开发负担以专注于产品创新,同时缩短开发周期、节省开发投入、快速进入市场。


很久之前看到baas的相关介绍,感觉自己要失业了,知道现在才有机会试用一下leancloud


正文

环境

nodejs
leancloud命令行工具

下载安装nodejs

百度

下载安装leancloud命令行工具(在已安装nodejs的基础上)

npm install -g avoscloud-code

环境搭建完毕

阅读全文
如何使用visual stdio code编写TypeScript

运行环境


部署环境

下载visual studio code

自行官网下载

安装nodejs

百度

阅读全文
在tornado中使用异步mysql操作

在使用tornado框架进行开发的过程中,发现tornado的mysql数据库操作并不是一步的,造成了所有用户行为的堵塞.tornado本身是一个异步的框架,要求所有的操作都应该是异步的,但是数据库这一层就把整个服务器都拖住了.

查找到的解决办法:

  1. 使用异步的mysql操作库. 查找了一下,有两个比较完善的异步操作库
    一个是AsyncTorndb,国人自己写的异步操作,看了一下,好像不错的样子,但是没有响应的测试用例,不敢用.

    一个是Tornado-MySQL是对PyMySQL的异步化的一个库,测试用例,文档,都比较齐全,可以尝试使用.

2.仿照(torngas)[https://github.com/mqingyn/torngas]的异步线程池,使用tornado的concurrent.run_on_executor装饰器对数据库操作进行异步化

3.使用任务队列,太过麻烦,对之前的代码修改过大,不使用该方案

  • 在使用Tornado-MySQL过程中,发现对现有代码更改太过严重,放弃,使用了异步线程池的方式.做到最小的代码更改以及异步数据库操作的实现

如何使用异步线程池concurrent.run_on_executor

  1. 在原先的同步的数据库执行的方法添加@concurrent.run_on_executor装饰器,如以下例子:

    1
    2
    3
    4
    5
    6
    7
    8
    @concurrent.run_on_executor
    def runSql(self):
    t = time.time()
    db = client.conn()
    db.execute('''select * from TABLE_CONSTRAINTS join (CHARACTER_SETS,STATISTICS)''')
    db.close()
    return time.time() - t

阅读全文
Nodejs单元测试

相关依赖包

第一步

安装依赖包

全局安装mocha
npm install mocha -g

进入项目根目录(package.json所在路径)
npm install --dev

创建一个单元测试

进入单元测试文件目录:
cd test

添加文件,并填写单元测试内容
如何编写单元测试

查看是否通过测试
mocha ./

阅读全文
Algolia