这篇文章是官方整理的:
技术栈
| 客户端 | 引擎:Cocos Creator 2.0.6. |
| 语言:Javasctipt | |
| 可用开发平台:MAC,Windows | |
| 可发布平台: iOS,Android,Windows,Mac,Html5 | |
| 服务器 | 基础框架:NodeJS 6.16.0 |
| 语言:Javasctipt | |
| 可开发平台:Mac,Windows,Linux | |
| 可部署平台:Mac,Windows,Linux | |
| 数据库 | MySQL 5.1.x |
| 部署平台:Mac,Windows,Linux |
目录说明
安装与部署
| 服务器安装与部署 | 1、将server目录放至目录服务器 |
| 2、在服务器安装NodeJS 4.x版本 | |
| 3、在数据库服务器安装MYSQL 5.X版本,并配置好权限 | |
| 4、检查服务器的防火墙,MYSQL权限等是否OK | |
| 5、修改config.js或者config_local.js里面的IP和端口 | |
| 6、启动start_all.sh | |
| 客户端版本发布:Android | 1、打开Ccocos Creator->Project->Build |
| 2、platform选择:Android | |
| 3、template选择:binary | |
| 4、修改自己的packagename 比如 com.youcompany.gamename | |
| 5、选择一个有效的Android签名,填上alias和密码 | |
| 6、点击Build 等待操作完成 | |
| 7、如果要修改发布的版本信息,请修改 client\build\jsb-binary\frameworks\runtime-src\proj.android\AndroidManifest.xml 下面的 android:versionCode="70" 用于系统识别 android:versionName="1.12" 用于显示 |
|
| 8、如果要修改发布的名字,请修改client\build\jsb-binary\frameworks\runtime-src\proj.android\res\values\strings.xml 下面的 <string name="app_name">天天麻将</string> |
|
| 9、如果要修改发布的图标,请修改 client\build\jsb-binary\frameworks\runtime-src\proj.android\res\下面 drawable-hdpi drawable-ldpi drawable-mdpi 中的icon.png |
|
| 10、点击Compile ,等持操作完成 | |
| 11、client\build\jsb-binary\publish\android 目录下会有发布好的APK | |
| 客户端版本发布:iOS | 1、打开Ccocos Creator->Project->Build |
| 2、platform选择:iOS | |
| 3、template选择:binary | |
| 4、修改自己的packagename 比如 com.youcompany.gamename | |
| 5、点击Build,等待操作完成 | |
| 6、用xCode打开client\build\jsb-binary\frameworks\runtime-src\proj.ios_mac下面的IOS项目 | |
| 7、按照正常流程进行打包 | |
| 8、如果要修改IOS启动时的SFLASH SCREEN和图标,替换client\build\jsb-binary\frameworks\runtime-src\proj.ios_mac\ios下的图片即可 |
技术细节
| 客户端服务器交互流程 | 1、客户端请求account_server的get_serverinfo |
| 2、account_server返回大厅IP,当前游戏版本号,游戏下载地址 | |
| 3、客户端拿到版本号,若版本号不匹配,则提示用户下载 | |
| 4、如果匹配,则走登陆流程 | |
| 5、account_server的wechat_auth接口会验证微信账号合法性,并从微信平台拉取用户信息,更新到数据库中 | |
| 6、account_server返回认证结果 | |
| 7、客户端拿到认证结果,向hall_server请求登陆 | |
| 8、hall_server向玩家返回账号信息,房卡数量等 | |
| 9、hall_server还负责房间的创建与进入 | |
| 10、创建房间或者进入房间成功后,客户端会拿到分配给自己的房间服IP,端口信息,以及登陆用的token | |
| 11、客户端使用此token与房间服建立联连,并做后续的操作 | |
| 12、牌局结束,客户端断开与房间服的连接。 并跳转到大厅场景 | |
| 服务器间的交互 | 1、均使用HTTP协议 |
| 2、HTTP协议中,使用MD5(参数+IP+**)的方式进行合法性验证,以防止恶意访问 | |
| 3、utils\db.js 是所有操作数据库的SQL封装,想添加REDIS支持,可通过修改这个接口层来解决 | |
| 客户端 | 客户端代码中,scripts/components下的,均表示需要挂接到场景节点上的组件 |
| 不需要挂接到场景上的组件,均放在了scripts/文件夹下 | |
| LoadingLogic.js中initMgr函数负责初始化单件类,以方便程序访问 | |
| 客户端目录下的version_generator.js,是官方给的热更新方案,目前已集成进来。由于官方人员承认有问题。因此未开启。 开启的办法是把启动场景选为update 官方在1.4版本中会提供完整的热更新方案,预计一个月以后(热更新方案并不会对当前的项目代码造成改动。可先开发逻辑,回头再集成) |
|
| 为了管理方便,客户端大部分逻辑代码,都挂在了每一个场景的Canvas节点上。只有极少数的,用于扩展UI组件的代码挂在了UI本身上。 因此,主逻辑代码,通过查看Canavs面板,可快速定位 |
微信接入
| Android | 确保存在 proj.android/libs/libammsdk.jar |
| 确保存在 proj.android/src/com/vivigames/scmj目录 | |
| 在proj.android/src/org/cocos2dx/javascript/AppActivity.java:onCreate 函数末尾添加WXAPI.Init(this); | |
| 修改 proj.android/src/com/vivigames/scmj/Constants.java中的public static String APP_ID = "wxe39f08522d35c80c";为自己申请的APPID | |
| 注:如果自己修改了包名,则com/vivigames/scmj 要重构为自己的包名 | |
| 在AndroidManifest.xml中加入以下代码 | |
| <activity android:name=".wxapi.WXEntryActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:configChanges="keyboardHidden|orientation|screenSize" android:screenOrientation="sensorLandscape" android:exported="true"/> |
|
| iOS | 确保以下内容存在 frameworks/runtime-src/proj.ios_mac/SDKExport/libWeChatSDK.a frameworks/runtime-src/proj.ios_mac/SDKExport/WXApi.h frameworks/runtime-src/proj.ios_mac/SDKExport/WXApiObject.h |
| 在项目的Info设置中,添加URLType 示例如下 | |
|
|
|
| 交互 | 微信登陆和分享由AnysdkMgr.js发起,参看源码即可明白 |
| 微信登陆回调后,与微信平台的验证,在account_server中,appscret也由account_server保管,客户端不可见 |
语音
| 注:语音SDK是自已研发的,无需第三方 |
| 确保android目录下 proj.android/src/VoiceSDK存在 |
| 在AndroidManifest.xml添加以下权限 |
| <uses-permission android:name="android.permission.RECORD_AUDIO" /> |
| >>>>> IOS <<<<<<<<< |
| 确保ios目录proj.ios_mac/VoiceSDK存在 |
| 确保xcode工程中已经对其进行了引用 |
| 用法请参考assets/scripts/VoiceMgr.js |
后台管理系统
| 客户端 | admin/front |
| 使用Cocos Creator开发 | |
| 服务器 | 代码 server/admin_server |
| 数据库 sql/t_admins.sql | |
| 启动 5.admin_server.bat |