查看: 29005|回复: 177

[卡牌] Unity产品类刀塔卡牌《Myhero》前端源码

  [复制链接]
uxqclm 发表于 2019-9-14 18:26:11 | 显示全部楼层 |阅读模式
特别声明(unity引擎刀塔传奇类卡牌游戏)

后端代码地址,VIP可下载————http://www.appcome.com/thread-274591-1-1.html
1、Unity产品类刀塔卡牌《Myhero》前端源码
2、非APP来研发项目,所以请不要商用,仅限学习使用,请24小时内务必删除。
3、技术问题请到APP来社团_官方9群(QQ:128102769)询问。
说明:

1.内附全套美术资源
2.内附全套文档(不懂请看文档)
3.内附环境搭建说明、server配置等
不说了上图!
bg.jpg QQ截图20190914181422.jpg QQ截图20190914183808.jpg QQ截图20190914183920.jpg QQ截图20190914183908.jpg



环境搭建说明
1.安装apache-httpd-2.2.25-win32-x86-no_ssl.msi,一路默认
2.拷贝htdocs到C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
3.拷贝PHP文件夹到d:\PHP
4.D:\PHP下的php5ts.dll文件拷贝到系统的C:\WINDOWS\system,D:\PHP"下的php5apache2_2.dll考到C:\Program Files\Apache Software Foundation\Apache2.2\modules下
5.拷贝httpd.conf 到C:\Program Files\Apache Software Foundation\Apache2.2\conf
6.安装vs2008
7.安装 mysql,可能需要.net vs 等环境,root password 123456
安装完成后导入Dump20140825,这是数据库表结构及一些历史数据
8.ACE_wrappers文件夹放到D:\work\目录
9.server文件夹放到D:\work\目录
10.D:\work\server\ServerEngine是整个后台项目目录
11.运行D:\work\server\ServerEngine\Debug\0startup.cmd启动后台,ok


说明,如果工程或PHP不想放到D盘,请修改相应的配置文件httpd.conf
server配置
在windows xp下的配置步骤,版本是:
php-5-2-9-win32
apache_2.2.11-win32-x86-openssl-0.9.8i
mysql-5.0.67-win32


1.安装apache
直接按默认安装,安装时要关闭浏览器跟下载软件,否则安装完成后服务器不能启动,报不能绑定80端口的错误。
在安装过程中需要输入服务器的相关信息(Server Information 的 Network Domain、Server Name 等),根据自己的情况输入即可,设置server.com www.server.com server@qq.com
在安装结束时,会弹出一个 DOS 窗口,然后就消失了,这是系统apache自动启动了。
启动后在地址栏中输入“http://localcast/”或“http://127.0.0.1/”,如果可以看到"It Works",说明安装成功。


默认路径是“C:/Program Files/Apache Software Foundation/Apache2.2/htdocs”,如果需要更改默认路径,打开“C:/Program Files/Apache Software Foundation/Apache2.2/conf”目录下的httpd.conf文件,查找“DocumentRoot(这里有两处都必须改),将其路径修改成需要设置的访问路径,这里改为“F:/masterphp”(注意斜杠方向,是“/”而不是\”)。




2. PHP的安装配置
下载后直接解压就可以了,我解压到“D:\PHP”目录下。
下面将PHP和Apache服务期连接:
(1)修改“D:\PHP”目录下"php.ini-recommened"文件名,改成"php.ini" ;
(2)打开D:\PHP\php.ini文件,修改以下几个关键字
查询extension_dir = "./"修改为extension_dir = "D:\PHP\ext"


如果在显示中文的时候出现乱码,可以查询;default_charset = "iso-8859-1"修改为default_charset = "gbk",注意要去掉前面的“;”
很多时候需要利用session对象来存储数据,如session身份验证、设计购物车等,因此还必须要找到另外一个属性,即把
;session.save_path = "/tmp"修改为session.save_path = "D:\PHP\session"
(session文件夹需手工创建,也可以创建其他的目录,必须去掉前面的分号“;”)
查找display_errors和cgi.force_redirect,原始设置为
display_errors = Off
; cgi.force_redirect = 1
修改为
display_errors = ON
cgi.force_redirect = 0
(display_errors属性表示在运行时如果发生错误,是否会显示错误信息。而cgi.force_redirect为0表示强制不运行在CGI模式下)


PHP在Apache中工作,有两种方式,一种是以CGI二进制文件方式工作,一种是使用Apache模块DLL的方式工作,采用不同的方式,需要在php.ini文件中进行不同的设置。
(如果采用CGI方式,则需要将以下代码插入到Apache的httpd.conf文件中:
ScriptAlias /php/ "C:/Program Files/php-5.2.5-Win32"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php-5.2.5-Win32/php.exe")


我采用模块化的工作方式,则首先需要将"D:\PHP"下的php5ts.dll文件拷贝到系统的C:\WINDOWS\system(Windows XP);
接着将"D:\PHP"下的php5apache2_2.dll(这是Apache的版本号,如果是2.0版本的则复制php5apache2.dll)文件复制到"C:\Program Files\Apache Software Foundation\Apache2.2\modules"下,然后将下面的一段代码插入到httpd.conf文件的最后
LoadModule php5_module modules/php5apache2_2.dll
AddType application/x-httpd-php .php
重启apache服务,ok


如果还想让Apache执行其他后缀名,则可添加其他的类型,如下所示


AddType application/x-httpd-php .php4


AddType application/x-httpd-php .php3


AddType application/x-httpd-php .phtml


AddType application/x-httpd-php-souce .phps


Apache默认的连接文件名为"index.html",即如果在地址栏中输入"http://localhost/"和输入"http://localhost/index.html"显示结果一致,如果想增加其他的默认连接文件名,则在httpd.conf中找到"DirectoryIndex",原始设置如下:


DirectoryIndex index.html


如果想支持default.php,则修改成如下格式:


DirectoryIndex default.php index.html index.html.var


为了测试PHP配置是否成功,打开记事本输入以下代码:


<?php


    phpinfp()


?>


将该代码保存成version.php,拷贝到"F:\master.php"目录下,停止apache服务器,再启动。在地址栏输入"http://localhost/version.php"如果一切配置正常,可以看到PHP的各种信息.



3. MySQL的安装配置


安装过程应该没问题不再细述,在设置Windows选项时复选Include Bin Directory in Windows PATH,这样在命令行下也可以启动MySQL数据库。
点“开始”—>“运行”,在弹出的对话框中输入“cmd”,再在命令模式下输入“mysql -h localhost -u root -p”如:
输入密码之后若出现mysql>标志,则表示安装成功,如:




MySQL安装成功后还需要同PHP连接上,因此,还需要进一步配置。


打开“C:\Program Files\Apache Software\Foundation\Apache2.2”目录下php.ini文件,查找"MySQL",修改以下几个属性


原始设置为:
mysql.default_port =
mysql.default_host =
mysql.default_user =
mysql.default_password =


修改为:
mysql.default_port = 3306       (网络端口,安装时默认设置为3306)
mysql.default_host = localhost (default_host为服务期名称,localhost表示本地机器)
mysql.default_user = root       (default_user表示用户名,root是默认的用户名)
mysql.default_password = 123456 (即安装MySQL时输入的密码)


修改了以上属性后,还需要启动PHP对MySQL支持模块,在php.ini文件中查找"extension=php_mysql.dll"
修改为extension=php_mysql.dll (即把分号去掉)


在httpd.conf文件最后追加下面这段
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "d:\\PHP\\"
LoadModule php5_module "d:\\PHP\\php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
然后重启apache


设置完成后重启系统,重启后测试MySQL是否安装成功,打开记事本写下测试代码,如下:


<?php


$link=mysql_connect('localhost','root','123456');


if(!$link) echo "失败!";


else echo "成功!";


mysql_close();


?>


(代码要写正确啊,不然你是测不出来的!)


保存为“mysqltest.php”并放到默认路径下,如我的已经改到了“F:/masterphp”下,在地址栏输入"http://localhost/mysqltest.php",如果连接成功,则会显示“成功!”如:

服务器框架机构
1.服务器框架结构
1.1基本结构
服务器的主类继承GameService这个类,然后通过main函数启动就可以;
服务器的功能模块增加adapter来实现,从BaseAdapter继承;
每一个adapter可以有n个儿子节点;
ServiceID,AdapterID,ObjID可以唯一确定一个obj,服务器内部消息全部以这个格式来传递;
Service启动以后,首先会向Service mgr注册,所以每一个ServiceID必须是唯一的;

1.2服务器分类
1.2.1 Game Server(基本不需要改动)
整个服务器群的大脑,也是唯一的,第一个启动,Service mgr也在这个上面;
iPad版的管理工具也是把命令发到这里,由他负责响应或者转发;

1.2.2 DB Server
数据库服务器
功能:读写数据库,数据库缓存
可以根据负载,通过配置增加多个DB Server分布式处理请求,目前为止看,一个足够

DB Server共有3Adapter,如下
DBLoginMgr(基本不用改动)
负责登录时候的信息获取,
DBLoginHandler是他的儿子节点的类,login信息获取具体实现的类

DBUserMgr
查询角色和创建角色会用到
DBUserHandler是他的儿子节点的类,根据UserID,查询和创建角色具体实现

DBHomeMgr
管理每一个玩家角色的所有数据的读取和更新
DBHomeHandler是他的儿子节点的类,根据CharacterID,读取和更新玩家角色信息的具体实现

1.2.3 User Info Server
玩家角色全局信息管理服务器,只有一个,是唯一的;
把当前玩家的信息保存在内存中,,查找陌生人,好友具体信息,都是通过他来获得,也就是说获取别的玩家信息不会从数据库获得,而是从User Info Server获得;
PVP的排行榜和匹配池也全部由他来管理;

1.2.4 PhpProxy
作为php页面和内网服务器通信的一个代理,把phpjson请求转成内网格式的消息转发,把内网格式的消息转成json转发给php
目前为止只有内购的购买协议使用了他,包括ios和电信的,同一条协议;


1.2.5 Login Server(基本不需要改动)
登录服务器,只有一个
负责响应玩家的登录请求,返回合适的gateway ip地址和端口

1.2.6 Gateway
可以有多个,根据负载,通过配置增加多个Gateway
负责保证客户端合法连接
负责序列化和反序列化客户端和服务器之间传递的消息

1.2.7 Map Server
游戏的主逻辑服务器,可以根据负载,通过配置增加多个Map Server
Map类的实例负责一个玩家角色所有的游戏逻辑

1.2.8 DataUpdateTool
就是一个工具,负责版本更新以后的数据库数据转换

1.3 服务器启动顺序
a. Game Server
b. DB Server
c. User Info Server
d. Map Server
e. PhpProxy
f. Gateway
g.Login Server

1.3 添加新协议
协议添加在ControlProtocol.h中;
如果需要更客户端通信的,客户端请求继承结构MsgBaseRequest,返回给客户端的应答继承结构MsgBaseResponse
客户端用到的协议需要在Gateway中序列化和反序列化;
客户端的请求在GatewaySession类的函数virtual int parse_into_intranet_msg(MessageInfo &msgInfo,char *buff, int size)中处理,反序列化成内网的协议;
给客户端的应答在GatewaySession类的函数virtual ACE_Message_Block *parse_into_internet_msg(MessageInfo &msgInfo)中处理,序列化成客户端用的字节流;

1.4 添加新功能
1.4.1 客户端到服务器流程
客户端发送请求到gateway
Gateway反序列化成内网协议,发送给Map Server;
Map Server中的Map处理,返回应答给Gateway,如果有数据更新,向DB Server发送更新请求(add_db_request函数)
Gateway序列化成字节流返回给客户端


1.5 服务器配置和添加新服务器
服务器配置文件service_config.xml
1.5.1 <multicast>
组播地址,现在不起作用

1.5.2 <database>
<name>xiyou_db</name>        数据库名
<host>tcp://192.168.1.43:3306</host>                数据库地址
<user>root</user>                        数据库用户名
<password>123456</password>                数据库密码

1.5.3 <service_define_list>        服务器定义列表
<service_define>
        <name>Game Server</name>        服务器定义名称
        <id>1</id>                                        服务器定义ID
        <is_serviceMgr>1</is_serviceMgr>        ServiceMgr的标志位
</service_define>

1.5.4 <service_instance_list>                服务器实例列表
<service_instance>
        <name>Game Server</name>        实例名字
        <type>Game Server</type>                服务器定义名字
        <lan>                内网地址
                <ip>192.168.1.43</ip>                ip地址
                <port>1005</port>                        端口
        </lan>
        <wlan>                外网地址
                <ip>192.168.1.43</ip>
                <port>1100</port>
        </wlan>
        <public>                公开发布地址
                <ip>192.168.1.43</ip>
                <port>1100</port>
        </public>
        <id>1</id>
</service_instance>

2.PHP代码

2.1 文件列表
create_account.php
创建新的帐号,在快速进入游戏的时候使用
DBInstance.php
php对数据库操作的代码都在这里
deliver_sms_i.php
电信短信充值以后,发放元宝的具体实现
deliver_sms.php
电信短信充值以后,电信的回调php,这个php然后再调用deliver_sms_i.php
deliver.php
ios充值以后,发放元宝的具体实现
env.php
php中用到的环境变量,主要是一些ip地址和ios充值验证地址
login.php
登陆用php,获取user_idmac
lxy_gonggao.html
公告
order.php
电信充值生成订单
register.php
注册帐号或者绑定帐号
server_ip_list.php
根据版本,返回对应的服务器ip
ServerRequest.php
php和内网服务器通信的类,用json做为消息传递的格式
sms_order_status.php
查询电信充值订单的状态
utils.php
一些工具函数的实现


3.维护必须要做的事

修改server_ip_list.php,使当前版本的客户端登陆显示维护
ipad工具关闭服务器
备份服务器代码
备份数据库数据
更新服务器代码(可选)
更新公告(可选)
更新php(可选)
运行数据库数据转换工具(可选)
开启服务器
新版本测试(可选)
修改server_ip_list.php,取消维护状态


后端代码地址,VIP可下载————http://www.appcome.com/thread-274591-1-1.html
游客,如果您要查看本帖隐藏内容请回复

点评

后端缺少wing_tbl表。目前发现一张表缺失。  发表于 2020-4-15 21:54
qinxiaoo 发表于 2019-9-14 21:01:24 | 显示全部楼层
lslsjlkdfjlkdsjkl连接上了快递寄来的反馈就到了看法

点评

Hello. And Bye.  详情 回复 发表于 2023-4-12 15:10
249304969 发表于 2019-9-15 04:29:43 | 显示全部楼层
Unity产品类刀塔卡牌《Myhero》前端源码
卡繆 发表于 2019-9-15 16:34:57 | 显示全部楼层

Unity产品类刀塔卡牌《Myhero》前端源码
xiaoshua 发表于 2019-9-15 18:32:31 | 显示全部楼层
Unity产品类刀塔卡牌《Myhero》前端源码
member 发表于 2019-9-15 20:52:14 | 显示全部楼层
这个源码貌似不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

推荐阅读 More>


© 2019-2020 APP来源码下载

合作伙伴

公司简介 | 联系方式
津ICP备19009288号-3
码矿(天津)科技有限公司
返回顶部 返回列表