PHP网页游戏学习之Xnova(ogame)源码解读(六)
九、公共代码(common.php)
Common.php是Xnova的公共代码,几乎每次点击都会被执行,所以这里要是优化的好,那么整个程序的效率都会有提升;当然这个文件调用的其他代码也要一并优化才行。
$game_config=array(); $user=array(); $lang=array(); $link=""; $IsUserChecked=false;
变量$game_config存放整个游戏的参数数据,每次都要读数据库,可以优化,优化方式比如保存在文件里面;变量$user存放登录的用户数据;$lang存放的是本地语言数据;$IsUserChecked记录是否check过用户。然后设置一些系统常量,在以后的代码中都要使用到的;再include一些函数文件,有以前我们介绍过的小函数在里面等。
接下来就要用到一个常量INSTALL,这个是在安装的时候定义的;除了安装的时候,这个判断都会进入。进入之后,又include一些文件,其中的includes/vars.php文件很重要,我将专门讲解,现在继续。这里还要从数据库中取得数据,并填充变量$game_config。
if($InLogin!=true){ $Result=CheckTheUser($IsUserChecked); $IsUserChecked=$Result["state"]; $user=$Result["record"]; }elseif($InLogin==false){ if($game_config["game_disable"]){ if($user["authlevel"]<1){ message(stripslashes($game_config["close_reason"]),$game_config["game_name"]); } } }
以上是检查保存在cookie里面的用户登录数据的,在$InLogin=true的时候,不会执行;现在我们讲到的是用户平时操作,所以这里$InLogin的值为false。首先调用函数CheckTheUser(),参数$IsUserChecked的值为false;CheckTheUser()声明在includes/functions/CheckUser.php文件中,它又调用了声明在includes/functions/CheckCookies.php中的CheckCookies()函数。而函数CheckCookies()的功能就是使用Cookie中的信息来check用户,代码我就不列出了。
如果CheckTheUser()成功,那么变量$user里面就填充好了用户的数据,然后执行下面的分支。这个分支是检查服务器参数设置的,如果服务器被管理员设置为关闭,则检查用户的权限;如果权限不够,则显示错误消息。
然后就要处理的是用户活动中的舰队了,分为两段逻辑:
1.当前时间大于舰队抵达目的地的时间,需要处理发生战斗、运输等逻辑
2.当前时间大于舰队返回出发地的时间,同样要处理发生战斗后、运输后的舰队回归逻辑
每个活动都调用函数FlyingFleetHandler()来处理,此函数我们以后再分析,现在只要知道功能就行了。如果用户点击频繁的话,这段逻辑将是非常耗资源的,所以这里也可以优化,比如缓存或者不是每次都执行等等。
舰队活动处理完了,那么导弹的活动呢怎么办?接下来的rak.php文件就是用来处理星际导弹的。文件功能包括了导弹的拦截、导弹摧毁的防御数量、发送消息给被攻击方等。具体逻辑我们也略过,以后分析。
然后调用函数SetSelectedPlanet()取得玩家上次所在的星球,注意这个函数的参数,是传址的,函数声明在includes/functions/SetSellectPlanet.php。接下来的要取得两个变量值,$planetrow存放用户当前星球的数据;$galaxyrow存放当前星球的星系坐标数据。
最后调用函数CheckPlanetUsedFields()更新当前星球的使用空间,同样参数是传址的,声明在includes/functions/CheckPlanetUsedFields.php。
Common.php文件分析完了,如果大家理解了的话,就应该知道这里的效率很重要;希望大家一起来优化,其他部分也同样。
相关文章
- Php面试问题_php面试常问面试题
- vue新春游戏-拼手速抢车票,学习玩乐两不误(可在线体验)
- 微信授权网页扫码登录php,PHP实现微信开放平台扫码登录源码
- 游戏化角度解析用户类型及其意义2020.11.9
- Gamepad Tester游戏手柄在线测试平台
- 游戏党注意!Rootkit病毒新变种通过私服登录器传播
- 使用pygame制作一个种菜游戏
- 小程序游戏相较于H5游戏的优点在哪里?
- MySQL求和算法在PHP中的应用(mysql求和php)
- PHP在Linux上安装:轻松快捷(php安装包linux)
- PHP命令执行php文件需要注意的问题详解编程语言
- 英特尔推出第11代10纳米酷睿H系列处理器 有望为游戏本性能提高19%左右
- 查询使用PHP运行MySQL查询的步骤(php运行mysql)
- PHP实现MySQL乐观锁的技术研究(mysql乐观锁php)
- 使用PHP测试Redis的最佳实践(php测试redis)
- 硬核观察 #346 谷歌宣布新的游戏化漏洞赏金平台
- 开发者福利!Unity云来了,解锁联网游戏新姿势,背后推手是腾讯
- Linux环境下,如何进行PHP测试?(linux测试php环境)
- 使用PHP操作Redis实例:简单高效的数据存储方案(php操作redis实例)
- PHP实现Oracle数据库连接(php支持oracle)
- 轻松设置PHP连接MySQL数据库(php设置连接mysql)
- PHP读取MSSQL数据库:实现简单快捷的网页查询(php读取mssql网页)
- 安装MongoDB,接入PHP开发新篇章(php安装mongodb)
- Microsoft SQL Server带来的游戏支付体验(mssql游戏支付平台)
- PHP第一节php简介
- PHP网页游戏学习之Xnova(ogame)源码解读(二)
- PHP网页游戏学习之Xnova(ogame)源码解读(四)