zoukankan      html  css  js  c++  java
  • 基于Netty和Raphael的塔防online游戏(一)

    这是一个出于兴趣而在业余时间写的项目,初版的目的在于了解游戏服务端的一些设计思路,所以基本是想到什么写下什么,并没有做过于细节的设计,和过早的优化。

    在这个版本里面,主要要完成以下功能:

    1. 定制简单的通信协议
    2. 处理简单的游戏逻辑
    3. 可运行的Server和Client

    一. 服务端设计

    整个服务端暂且分成以下几个部分:

    1. 基础通信模块
    2. 逻辑处理模块
    3. GM模块
    4. 服务器状态监控模块

    对服务端的几个高级抽象:

    1)Context

                Context代表了整个服务端的生命周期, 负责启动和停止所有的游戏

    2)Game

               Game表示不同的游戏,每个Game定制自己的protocol,并负责创建和销毁Room

    3)Room

               Room负责处理游戏的逻辑,控制游戏的进度

    4)Charactor

               每个Charactor代表一个玩家,存储一些玩家的基本信息

    5)Dispatcher

               Dispatcher负责消息的分发

    6)Processor

               Processor是消息的最终处理终端

    在整个服务端,netty负责建立连接,接收和发送消息,netty接收到消息以后,会把消息从netty线程(netty启动的线程)分发到用户线程(处理游戏逻辑),这里使用了Jactor2来完成线程间的通信

    二. 客户端设计

    客户端比较简单,参考了这里,UI基于Raphael库,目前只有一些基本的功能,

    后续会将一些基础组件抽出来,最后完善成为一个小engine

    项目地址:https://github.com/occume/D3000

  • 相关阅读:
    PHP 超级全局变量
    PHP 魔术变量
    PHP 变量
    Thinkphp 模板中常用的系统变量总结
    PHP $GLOBALS超全局变量分析
    php使用curl的post提交数据和get获取网页数据的方法总结
    php获取客户端真实ip地址的三种方法
    Jquery 【on事件】
    ptyhon【递归练习】
    C#中的线程
  • 原文地址:https://www.cnblogs.com/occume/p/3891305.html
Copyright © 2011-2022 走看看