• 《怪兽必须死》游戏框架分析


    一 游戏接入平台

    二 游戏版本管理解决方案

    三 通讯解决方案

    四 其它工具类

    五 源码下载

    一 游戏接入平台

    爱微游平台:http://play.11h5.com/game/?gameid=62&code=c-3b84ffb5e4a537303109245489db32fb

    接入玩吧:http://qzs.qzone.qq.com/qzone/qzact/act/game/wanba/index.html

     

    二 游戏版本管理解决方案

    主要的需要版本号的文件

    main.min.js

    default.res.json

    default.thm.json

    main.min.js更新实现方案

    默认写死main.js?v=20170214104539。

    当加载超过5s,出现重载按钮,获取Date.now()作为版本号加载。

    <script>
    		function reload()
    		{
    			window["AWY_SDK"].setItem("gameVer", Date.now());
    			location.reload();
    		}
    		function hideLoading()
    		{
    			var preloadDiv = document.getElementById("preloadDiv");
    			preloadDiv.style.display = "none";
    		}
    		setTimeout(function()
    		{
    			var reloadBtn = document.getElementById("reloadBtn");
    			reloadBtn.style.display = "block";
    		}, 5000);
    		var gameVer = window["AWY_SDK"].getItem("gameVer");
    		if (gameVer)
    		{
    			window["AWY_SDK"].loadSingleScript("main.min.js?v=" + gameVer, function()
    			{
    				egret.runEgret();
    			});
    		}
    		else
    		{
    			window["AWY_SDK"].loadSingleScript("main.min.js?v=20170214104539", function()
    			{
    				egret.runEgret();
    			});
    		}
        </script>
    
    //加载单一script文件
    sdk.loadSingleScript = function(src, callback) { var node = document.createElement("script"); node.src = src; if (node.hasOwnProperty("async")) { node.async = false } node.addEventListener("load", function() { this.removeEventListener("load", arguments.callee, false); if (callback) { callback() } }, false); document.body.appendChild(node) };

    sdk.loadSingleScript("http://qzonestyle.gtimg.cn/open/mobile/h5gamesdk/build/sdk.js", callback);

    default.res.json和default.thm.json更新实现方案

    游戏内,使用window["game_version"]获取写死在index.html中的版本号

    <script>var platform = "vutimes";</script>
    <script>var engine_version = "3.2.3";</script>
    <script>var game_version = "20170214104539"</script>
    var e = "resource/default.res.json?v=" + ExternalUtil.inst.getVersion();
    var e = "resource/default.thm.json?v=" + ExternalUtil.inst.getVersion();

    default.res.json内资源,使用手写版本号...

    三 通讯解决方案 

    1 通讯工具类:NetService。游戏没有使用websocket,而是使用http进行服务端通讯。

    2 http发送格式

    GET数据格式:

    url?cmd=xxx&token=xxx&date=Date.now()&拼接其它数据

    POST数据格式:

    post的data数据 request.data = "cmd=xxx&token=xxx&date=Date.now()&拼接其它数据"

    3 http接收

    loader.data = json格式

    {

      diamond:xxx,

      spendDiaomon:xxxx

    }

    4 token。定义在AWY_SDK.js中,值从url上获取。

    var sdk = window.AWY_SDK || {};
    
    sdk.init = function() {
        sdk.token = sdk.getURLVar("token")
    };
    
    sdk.getURLVar = function(name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
        var r = window.location.search.substr(1).match(reg);
        return r != null ? unescape(r[2]) : null
    };
    

    如果有测试token,则使用测试的

    NetService.inst.token = VUEngine.TEST_TOKEN ? VUEngine.TEST_TOKEN: ExternalUtil.inst.getToken();
    

      

    四 其它工具类

    TickerUtil              ?

    StringUtils            字符串

    ArmatureManager  骨骼

    EventManager       事件管理, 继承EventDispatcher,写成了单例类

    DisplayUtil            

    PanelManager        弹框管理。

                               新建getDefinitionByName

                               弹框模态isModal

                               图层管理this._layerMap

    CommandID          Control层,注册Command。用于处理http返回数据。

    NetService            网络通讯层,http通讯,发送和处理接收数据

                               sendCallBack  发送并设置回调

                               sendNextRequest  序列发送,发送并接收处理数据后,再发送下一条

                               发送方式egret.URLLoader,egret.URLLoaderDataFormat.TEXT

                               发送格式:cmd + token + date  (token在游戏拼在游戏链接上)

                               返回格式:json的string

    DefaultProcessing  数据发送等待,发送数据时显示,接收数据时隐藏。     

    ExternalUtil           外部处理,断线刷新、重新登录等。主要是调用window的代码和设置index.html中变量。

    UserProxy             用户数据

    BigNum                 大数字处理

    Dictionary              flash词典类

    EffectUtils              特效类

    ImageLoader          图片加载,有回调

    GeomUtil                数学计算,距离之类

    IncreaseUtils           技能增加显示

    ItemUtil                  宝石、物品

    LoaderUtils             异步加载,有回调

    MathUtil                 数字处理

    MovieClipUtils         影片剪辑

    ObjectPool             对象池

    RegUtils                正则

    ShareUtil               分享,二维码,分享标题等

    BasePanel             弹框基类

    Alert                     提示框

    AutoBitmap          图片加载

    Broadcast             游戏广播

    SimpleButton       简单按钮

    VUEngine            游戏全部变量

    DataConfig          存放json,接口getTableData从json中获取数据。 游戏的配置大多都放在data.json中。

    Config                 配置信息

    五 源码下载

    怪兽必须死源码

  • 相关阅读:
    unity-疑难杂症(一)
    unity-【UI】点击交互(一)
    asp.net core 附加进程调试、指令等
    几种定时器(timer)的区别
    ObjectDisplay 对象属性展示 Display
    IEnumerable,ICollection,IList,List 比较
    Excel等格式文件从服务端调用导出
    Azure DevOps 与VS 2019
    从 数据库表 生成 项目实体 文件
    Border样式
  • 原文地址:https://www.cnblogs.com/gamedaybyday/p/6405679.html
Copyright © 2020-2023  润新知