RockChip 平台LCD初始化代码转化工具 — python版


工作中为了调试客户给的lcd,通常需要写入初始化参数,但客户提供的初始化代码,通常是各种测试夹具的单片机代码,和rockchip平台的lcd初始化代码的格式差异非常大,若是手动修改,几百行的代码,修改的起来非常的枯燥,而且比较容易出错,于是,我抽空写了一个简单的工具,做自动转化,这里做个记录:
继续阅读“RockChip 平台LCD初始化代码转化工具 — python版”

魔兽世界怀旧服-1.12.x ubuntu 搭建指南


wow 1.12 作为一个经典的版本,一直以来都是很多人研究的对象,掌握了基于cmangos的编译和使用指南,其他关于mangos-zero 及 lightshope等其他模拟器的编译都是大同小异,下述为编译搭建的说明:

1. 编译环境要求

// 更新ubuntu的仓库
sudo apt-get update 
// 安装必须的编译环境
sudo apt-get install build-essential gcc g++ automake git-core \
autoconf make patch libmysql++-dev mysql-server libtool \
libssl-dev grep binutils zlibc libc6 libbz2-dev cmake subversion \
libboost-all-dev

继续阅读“魔兽世界怀旧服-1.12.x ubuntu 搭建指南”

Ren’Py 游戏引擎简介及流程破解教程


Ren’Py是一个基于python的小说类游戏引擎,可以轻松的制作各类型的图文游戏小说,甚至是RPG游戏。官方网站表示有1500个小说使用该引擎,但据我了解,其游戏的数量至少要多加1个0,达到15000个。Ren’Py使用Python和Pygame进行开发,此游戏引擎广泛适应多个平台,其官方网站的截图显示如下:

不得不说:人生苦短,我用Python,是一个至理名言啊!

其官方网站为:https://www.renpy.org/,需要学习他的制作技巧的同学可以直接去官方网站学习,目前官方网站有中文教程,其地址如下:

https://www.renpy.cn/doc/index.html

Ren’Py是开源的,免费用于商业用途。

Ren’Py几乎支持所有视觉小说所应该具有的功能:包括分支故事、储存和载入游戏、回退到之前故事的储存点、多样性的场景转换等。Ren’Py拥有类似电影剧本的语法,并且能够允许进阶使用者编写Python代码来增加新的功能。除此之外,游戏引擎内附的出版工具能够为脚本加密以及压缩游戏素材以防止侵权。

这里不讨论制作的细节,下面我简单介绍一下关于流程破解的简单步骤:

1. 找到.rpyc的脚本文档,其通常存储的位置如下:

Android apk的脚本文档的存放路径通常为assets文件的x-game文件夹,寻找其中的.rpyc文件即可,先使用winrar打开apk文件,然后找到assets文件夹,直接拖出来就可以了。

若是在其他平台有.rpa 文件,你需要rpatool工具提取其中的rpyc文件。

.rpa的地址为:https://github.com/Shizmob/rpatool

2. 解密对应的.rpyc文件,生成明文的.rpyc文件。

解密.rpyc或者.rpymc文件,你需要 unrpyc 工具,其也是python的工具,正所谓:以彼之道,还之彼身。

unrpyc 地址:https://github.com/CensoredUsername/unrpyc

unrpyc的运行需要python 2.7版本,建议使用虚拟机的ubuntu 系统,其14.04以后都内置有python2.7,或者你也可以考虑在windows上运行,不过有可能有部分问题无法解决。

解密的方法很简单,建议按照如下步骤:拷贝下载好的unrpyc文件夹的unrpyc.py 和 decompiler文件夹都rpyc加密文档的文件夹,然后在终端解密输入 ./unrpyc -c *.rpyc 即可把所有的文件都一次性解密。

3. 认识rpyc和分析rpyc脚本。

认识rpyc脚本,你需要对脚本有几个简单的认识,具体如下:

label menu 和 jump 用来控制流程,menu 是一个选择菜单,label是一个场景的标签,jump 用来控制跳转。

image 可以把图片对象变成标签,不使用自动的图片显示。

scene 和 show 用来显示主背景图和副图,一般后面对应的是图片的名称,2个名称时,通常为文件夹和文件名,不带后缀名的。

dissolve 和 fade ,是转场方式,表示溶解和飞入的方式。

at 用来规范副图位置,常见的为 :left 表示界面左端, right 表示屏幕右端, center 表示水平居中(默认位置), truecenter 表示水平和垂直同时居中

play music 和 play sound ,music 会循环,只到停止,sound 只有一次。

return 和 pause ,return 表示游戏结束,pause 为暂停等待点击事件。

一般脚本比较分散,需要通过查找label的值和变量的值来分析逻辑,建议使用grep工具去查找所有关于某个值的包含位置。

命令如下:

grep -i "xxxxx" -R ./

认识到这些流程细节,你可以掌握写作者的逻辑和关键点,就可以破解游戏了,若是需要修改或者汉化的话,那就需要学习编译和打包了,这部分将在以后陆续增加文章。

我叫MT游戏服务器搭建详解


mt
最近有友人分享了一个手游的服务器端程序,我尝试在阿里云的服务器上搭建了一个游戏服务器,下面将搭建过程和大家分享一下:

0. 内容分析和环境要求:

此份手游的服务器端程序分为2个部分,http服务器和游戏服务器,需要同时工作才能保证游戏正常运行,其内容如下:

http服务器部分,http服务器部分主要包括:

1) 账号注册,修改密码,服务器端相应的服务端口和游戏服务器的地址获取等内容。
2) 游戏更新补丁及对应的内容
3) 游戏公告,攻略,充值等相关页面。

游戏服务器部分,游戏服务器部分主要包括:

1) public config 文件夹,用来配置游戏内各种卡牌和游戏配置的相关数据。
2) server config 文件夹,用来配置游戏内玩家相关配置的相关数据。
3) mt_a 及对应的cfg文件,用来启动游戏服务器和配置游戏服务器,其中mt.s.conf用来配置游戏服务器,mt.g.conf用来配置游戏参数。
4) chatserver 及对应的cfg文件,用来配置聊天服务器的相关内容。

搭建的环境要求:

操作系统: linux 推荐使用ubuntu 14.04 或者centos 6.5,必须为64位的系统。
数据库:mysql用来存储主要数据,redis用来交互数据,mongoDB用来配置聊天服务器。
php环境:必须使用php5.x,推荐使用php-fpm 5.x,由于http服务器内容较老,不兼容新的php版本。
http服务:推荐使用nginx,这里也是nginx作为例子进行说明。
注:若是没有linux 服务器操作经验,可先参考网络例子安装宝塔操作平台减少操作。

1. 环境搭建。

http环境搭建:

http环境和常规的http服务器搭建除php版本以外,没啥大的差异,这里简单的记录一些指令:

.安装mysql

sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

注:安装过程中按照提示输入root用户的密码

.安装nginx 和php-5.x

sudo apt-get install nginx
sudo apt-get install php5-fpm

这里特别说明一下,若是ubuntu版本较高,无法找到php5-fpm,可以采用如下方式更新源来解决

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

.安装redis和MongoDB

sudo apt-get install redis-server
sudo apt-get install mongodb

环境配置文件的修改:

.mysql远程访问:

一般不需要远程访问修改数据库的可不做修改,若需要远程访问修改数据内容,按照如下步骤修改

1) mysql -u root -p 输入密码登录mysql操作界面.

2) use mysql; 切换到mysql本身数据库。

3) grant all privileges on *.* to root@’%’ identified by “password”; 修改外部访问权限和密码

4) flush privileges; 授权生效

.redis端口修改:

由于配置的默认端口使用的6379,占用了redis默认端口,需要修改redis的默认端口,修改/etc/redis/redis.conf的端口,重启一下redis就可以了。

.nginx及php5-fpm的修改:

主要是为匹配php和nginx的端口,保证nginx的端口转发正常,建议把php5-fpm的端口改成9000,修改/etc/php5/fpm/pool.d/www.conf中的listen为9000。

修改nginx的配置:

在/etc/nginx/sites-enabled/default 中增加如下字段:

server {
        listen 80;
        # 你的网站域名
        server_name xxx.xxx.xx;
        # http 服务器存放路径
        root /var/www/http-server;
        index index.php index.html index.htm;
        # php解析必须按照如下2个填写
        location ~ [^/]\.php(/|$){

                fastcgi_keep_conn on;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }

        location / {
                try_files $uri $uri/ /index.php?$args;
        }
    }

检查服务启动情况:

1) 用ps -a 查看相关的程序是否都已经启动,
2) 在外部电脑,通过浏览器访问你当前服务器的IP或者域名,看下是否能出现nginx的欢迎界面。
3) 按照路径访问对应的文件是否能访问,如:http://你的IP/api/getgameinformation.php,看下是否显示xml

2. 数据库的导入:

按照如下步骤新建和导入数据库

mysql -u root -p 输入密码登录mysql操作界面
create database mtdb; 创建mtdb的数据。
use mtdb; 切换到mtdb的数据库。
source mtdb.sql; 导入数据表格,注意选择好对应的路径。

此时数据库就已经完成创建和导入。

3. http服务器的配置修改

需要修改mysql的登录账号和密码,主要修改http服务器目录的如下文件:

config.php
Account/changepasswd.php
Account/register.php

修改服务器配置,主要修改api/getgameinformation.php,此处根据实际情况修改即可。

4. 游戏服务器的配置和修改:

游戏服务器主要修改的mt.g.conf,mt.s.conf,用来配置游戏运行的主要mt.s.conf,另外一个不做说明。

mt.s.conf主要修改内容如下:

1) 搜索 mysql,修改mysql的db,账号和密码,注意本地数据一般使用127.0.0.1
2) 搜索 use_redis ,修改使能redis,目前看到不使用redis是无法启动游戏的,检查端口和数据库名称,一般不需要修改。
3) 根据需要,搜索open_chat_server 看是否需要开启聊天服务器。
4) 游戏服务还有更多内容,由于没有深入研究所有暂时不建议修改。

5. 游戏更新的配置:

有时需要在远程修改游戏的配置和资源文件,目前的服务器是支持在线升级,需要按照如下方式配置:

resourceMap.txt — 完整的数据map,根据原有的map文件增加新的内容。
file.list — 更新文件的表单,内容包括:文件名,MD5码
resouce 文件夹 — 需要更新的文件。
VERSION — 更新后的版本号

将所有内容放到http服务器路径下的版本号对应的文件夹中。

6. 服务器管理:

有时为了方便管理服务器,特意编写了脚本管理游戏服务器的启动和相关,具体如下:

  #!/bin/bash
    # 游戏服务路径
    server_path=/xx/xxx/server
    case "$1" in
    init)
        echo -n "Init game-Server"
        cd $server_path
        ./chatserver mt.chat.conf mt.g.conf&
        sleep 50
        ./mt_a mt.s.conf mt.g.conf&
        sleep 30
        ;;
    restart)
        pid=`pgrep mt_a`
        if [ ! -n  "$pid" ];then
            echo "MT-SERVER not start yet, It will start Soon !"
        else
            kill -9 $pid
        fi

        cpid=`pgrep chatserver`
        if [ ! -n  "$cpid" ];then
            echo "Chatserver not start yet, It will start Soon !"
        else
            kill -9 $cpid
        fi

        cd $server_path
        ./chatserver mt.chat.conf mt.g.conf&
        sleep 50
        ./mt_a mt.s.conf mt.g.conf&
        sleep 30
        ;;
    stop)
        pid=`pgrep mt_a`
        if [ ! -n  "$pid" ];then
            echo "MT-SERVER not start yet, Stop none !"
        else
            kill -9 $pid
        fi

        cpid=`pgrep chatserver`
        if [ ! -n  "$cpid" ];then
            echo "Chatserver not start yet, Stop none !"
        else
            kill -9 $cpid
        fi
        ;;
    *)
        echo -n "Usage: /opt/MT-server/run {init|restart|stop}">&2
        exit 1
        ;;
    esac

    exit 0

这样子在实际操作中只需要执行脚本就可以启动和重启服务器了。

8. 客户端的修改:

客户端必须要和服务器端匹配,但是客户端修改的内容不多,主要是:

1) 获取游戏服务器配置的路径,需要反编译客户端,具体路径为:src/com/locojoy/comm/WelActivity.java,一般反编译到samli文件即可修改。修改的具体内容为:getServerList 接口的String str ,大约在326行。
2) 用工具修改库文件的路径。

9. 注意事项:

1) 网上修改的版本较多,config文件和资源文件需要匹配修改,所以需要服务器版本和客户端版本对应,不然会出现资源找不到的异常。
2) 服务器端是来源于网络,因此版本内容还有部分不全,并非所有内容都完备,但是配置文件相对独立,还是可以做很多的修改。
3) 服务器端的tab文件是明文,客户端的tab文件是加密,所以若是要修改还需要解密。

10. 总结:

这是一个老旧的游戏服务器端,内容设计现在看来是有些可取的内容,包括程序和配置分离,游戏和服务器程序分离等等,可快速移植和换皮。其他游戏的服务器端,我也看过一些,这一个服务器端还是属于比较优秀的设计。

Windows平台个性化定制文件夹指南


folder
现在有很多的应用程序将自己的所在文件夹做得很个性,方便用户的点击和查找,而如何制作这样子的个性化的文件夹呢?现在我来给大家说一下,常见的一些功能的制作方法。
继续阅读“Windows平台个性化定制文件夹指南”