Skip to content

This is a online game flappy bird.

Notifications You must be signed in to change notification settings

TalkWIthKeyboard/flappyBird

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FlappyBirdOnline

node-icon egret express-icon mongoose-icon build-icon

This is a online game flappy bird. Version: 1.1.0

Update

日期 版本 功能
2016-6-12 v1.1.0 添加排行榜功能
2016-6-6 v1.0.0 完成网络基础功能

Explain

这是一个 H5 游戏,前端使用 Egret 引擎开发,打包后通过 Express 进行发布。所以该库只是发布库游戏开发库见下。游戏开发库的编写推荐Egret 官方的IDE:EgretWing3

FlappyBird-Egret

Installation & Start

  • 克隆游戏开发库
$ git clone https://github.com/TalkWIthKeyboard/FlappyBird-Egret.git
  • 修改Websocket服务器地址并发布
$ cd FlappyBird-Egret/src
$ vim Websocket.ts
  • 克隆发布库
$ git clone https://github.com/TalkWIthKeyboard/flappyBird.git
  • 将在 FlappyBird-Egret/bin-release/web 中的发布文件对 flappyBird/public 进行覆盖

  • 启动项目**(默认5500端口,可以修改)**

$ cd flappyBird
$ node app.js

最新版本添加了与数据库的交互,所以需要手动到 app.js 里配置数据库的端口

Game-design

.
├── BackgroundImage.ts    // 背景类 
├── Bird.ts               // 小鸟类
├── Birds.ts              // 小鸟数组类 
├── Column.ts             // 障碍物类  
├── Columns.ts            // 障碍物数组类  
├── Floor.ts              // 地板类  
├── LoadingUI.ts          // 加载UI类  
├── Main.ts               // 主逻辑类
├── Score.ts              // 通用的分数类
├── TextInput.ts          // 通用的输入框类
└── Websocket.ts          // 处理Websocket通信逻辑类

物理引擎使用的是 Egret 官方推荐的 p2,小鸟和障碍物的背后都创建了配套的刚体进行物理碰撞的模拟,并且整个游戏场景是设有重力场,让小鸟的跳跃与降落更加的自然。

Server-design

通信协议:Websocket

通过 Websocket正则字符串进行传递,主要监听:

  • message
    • start
    • jump
    • high
    • dead
  • close

同步策略:共享玩家状态的帧同步

  • 玩家同步

    • 客户端定时向服务端汇报该客户端玩家的状态
    • 服务端维护一个玩家的状态数组
    • 服务端定时向客户端广播所有玩家的状态
    • 客户端插值向新状态转移
  • 障碍物同步

    • 由服务端统一生成所有的障碍物,并更新障碍物位置,使用定长队列进行维护
    • 服务端统一向客户端广播现在存活的客户端位置
    • 客户端插值向障碍物新状态转移
    • 客户端会自动释放已经淘汰的障碍物

About

This is a online game flappy bird.

demo: http://115.159.1.222:5500/

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published