PHP:5+
mysql:应该也是5吧,忘了,最新的就行。
放假前,网上查资料时,无意中发现了OGame
的源代码。这个页游我先贴个图:
这款游戏我是高中开始接触,大概是11年吧!那个时候我是在一个山寨手机上玩的!这是我拥有手机玩的的第一个多人在线的网络游戏!那个时候一方面准备高考,但是压力大;另一方面利用空余时间玩玩这个游戏来缓解压力!这游戏得经常在线,怕别人打;再后来进入大学时,山寨手机坏了。据说山寨手机的寿命一般就是1年。之后我就再也没找到类似的手游了!
大学期间我也找到,不过 找到是页游版的,并且还是台服!因为LOL
的兴起,页游就没怎么玩了。
端午的时候研究了下这玩意;这款游戏是用PHP
写的,我是怀着雄心壮志:想改写成java
版来研究。
第一天 、 OGame0.8
版本 虽然网上有些教程,但是我觉得不对,所以没有完全参考,试了很多次总是报错;表能创建出来,创建管理员账号时,总是报错!
因为有点PHP
的基础,所以安装了个PHPstorm
来调试;这里稍微讲解下过程;
下载xampp
软件。安装后,启动Apache
,启动mysql
。
由于我本机早已安装了mysql
,所以总是提示安装不了,试过网上说的改端口,但是还是不行。
后来,我刚才就不用xampp
里的mysql
,我使用我本机的mysql
;具体修改方法,百度查查吧,我PHP
不太会。
PHPStorm 中配置 XDebug 实现断点调试
上面的博文中:
验证 PhpStorm 的服务器配置
Run>Web Server Debug Validation,完成配置的填写,点击“Validate”按钮即可验证服务器的调试配置是否正确:
这一步 我没有成功,但是并不影响调试功能。
经过我反复的调试,总算知道为什么报错了;比如报的user_agent
字段没有默认值,其不能为空。这个是mysql
报的错误。
为什么呢?因为代码本身有bug
,其在插入语句时,没有user_agent
字段,但是这个字段又不能为空。 既然如此,我就补加上去就行了。
$QryInsertAdm = "INSERT INTO {{table}} SET ";
$QryInsertAdm .= "`id` = '1', ";
$QryInsertAdm .= "`username` = '". $adm_user ."', ";
$QryInsertAdm .= "`email` = '". $adm_email ."', ";
$QryInsertAdm .= "`email_2` = '". $adm_email ."', ";
$QryInsertAdm .= "`authlevel` = '3', ";
$QryInsertAdm .= "`sex` = '". $adm_sex ."', ";
$QryInsertAdm .= "`id_planet` = '1', ";
$QryInsertAdm .= "`galaxy` = '1', ";
$QryInsertAdm .= "`system` = '1', ";
//这句就是我加的
$QryInsertAdm .= "`user_agent` = '', ";
$QryInsertAdm .= "`planet` = '1', ";
$QryInsertAdm .= "`current_planet` = '1', ";
$QryInsertAdm .= "`register_time` = '". time() ."', ";
$QryInsertAdm .= "`password` = '". $md5pass ."';";
doquery($QryInsertAdm, 'users');
还有几处也有这样的问题,情况类似 补加上去就可以了。
安装完成后,访问时,页面实在是太丑了:
和最上面的图片为什么差距这么大呢?因为那是别人改版的!原版就是这的丑,这么的bug
。
我不甘心这么丑的画面,又不想花时间去改造,毕竟PHP
和前端
的东西,我都不想花过多时间。
最后找了个2Moons
,是个改进版,其也是基本上面的代码(0.8版本
)改造的!不过其做了很多优化和创新;比如增加了新的舰队、建造和研究科技。而且技术用的也毕竟新;原版PHP
是4,这个是5。 经过我再次摸索,终于成功,页面长这个样子:
说实话这个页面,依旧满意,只是相比 原版已经很不错了!毕竟有所创新吧!
图片中一会有中文,一会有英文,是因为我没有汉化完全;这个版本没有中文版,所以我自己来汉化,毕竟我是老玩家,我更专业点。
图片中的中间那个页面为什么不填充满呢?这样看的好难受!
这个2Moons
版本,我找到了半天都没有发现修改语言的代码。那一天害的我一天都没怎么吃饭,饿的都晕了。到了第二天,一步步调试 总于找到了!
说明:之前的版本一般只需要写 cn => “中文” 然后再在相应的目录引入中文文件就行了,这个版本不行;
这个版本不需要你去修改任何代码(cn = "中文"
),而是直接在language
文件中加个zh
文件夹文件。其会自动进行读取;具体是,代码会读取language
文件夹中的所有目录名,有多少个就表示,支持多少种语言。
所以第一次安装之前,就要引入zh
文件夹(复制en
文件夹就行了),假设你已经安装了,那就得重装了,因为每次都去读取language
文件夹中的所有目录名,这是一个很大的开销,所以其使用了缓存技术。不想重装就得进入管理员页面,左下角最下面有个clear cache
按钮,可以试试!我是重装的。
改写java
版 这条路估计会很长,毕竟我的老本行是java
,java
还有一堆的新技术有待了解!为了更好的明天,我的精力 得好好分配!