Skip to content

Latest commit

 

History

History
213 lines (139 loc) · 7.29 KB

ProjectLocalRunLinux.md

File metadata and controls

213 lines (139 loc) · 7.29 KB

运行游戏

[TOC]

1 启动

完整的运行一个游戏还需要一个phone_aiclient文件包,运行方式又分两种,如下1.1和1.2。

​ 图1 phone_aiclientapi包

1.1 合并运行

将配置文件天天酷跑的cfg、data直接拖到AISDK的根目录下,系统会提示名字重复,是否取消还是合并,这时候选择合并,将配置文件都合入AISDK中,再将TTKP/data/ImitationModel目录下的文件移动到AISDK/data/ImitationModel目录下,这样运行时直接进入到AISDK的bin目录下执行1.3就可以,不需要再设置环境变量。

1.2 添加环境变量运行

在终端中进入到AISDK的bin目录下,添加游戏配置文件环境变量,命令如下:

cd game_ai_sdk/bin 
export AI_SDK_PATH=“你的配置文件的路径”

1.3 拉起AISDK

  1. 执行了1.1或1.2以后(bin目录下),在终端中进入虚拟环境下(虚拟环境是自己创建的,具体方法可以自行查找资料,其中需要安装的python依赖包就是AISDK根目录下requirements.txt文件中的依赖,如果自己本地的环境没有互相干扰问题,也可以不进入虚拟环境),命令如下:
workon game_ai_sdk(linux下需要先安装virtualenvwrapper依赖包,然后创建虚拟环境game_ai_sdk,才能使用该命令进入虚拟环境)
  1. 拉起AISDK的第一种,使用start脚本拉起(bin目录下),命令如下:

拉起AISDK的UI+AI服务

./start_ui_ai.sh

或 拉起AISDK的AI服务

./start_ai.sh

  1. 拉起AISDK的第二种,逐个进程拉起(bin目录下),命令如下:
python3 io_service.py
python3 agentai.py
python3 manage_center.py --runType=UI+AI   #如果只运行ai,不需要加--runType=UI+AI
./GameReg
./UIRecognize   #如果只运行ai,不需要执行该命令

注意:以上命令全部执行表示同时拉起UI+AI服务,每一个命令都需要一个单独的终端,都需要先执行1.1或1.2、1.3的1)

1.4 配置phone_aiclient并拉起

  • 设置AI SDK/tools/AIClient/aiclient/cfg/network_comm_cfg/communication_cfg.ini

代码如下:

[IP]
ip = 127.0.0.1
port1 = 8898
port2 = 8899
send_pattern = 5
recv_pattern = 5
; 0 for PAIR, 1 for PUB, 2 for SUB, 3 for REQ,
; 4 for REP, 5 for DEALER, 6 for ROUTER, 7 for PULL, 8 for PUSH
save_last_action = 0
key = 0
comm_type = 1
#1 for zmq, default common_type = 1, currently only support zmq comm
use_env_variable = 0

[MONITOR]
process_speed_test = 1
frame_decode_type = 2
; 0 for raw img, 1 for binary img, 2 for cv2 en/decode img d
save_img = 1
; 0 for not saving imgs, 1 for saving UI images, 2 for saving AI images, 3 for saving UI+AI images. Available when frame_decode_type is 2
max_send_interval = 0.1
# max_send_msg to ai-service interval, /s
max_none_frame_time = 40
# max_none_frame_time is continued none frame max time, /s
max_none_action_time = 10
# max_none_action_time is continued none frame max time, /s

[resource_apply]
service = 1
# 1 AI, 2 UI + AI
auto_apply_resource = 0

· ip 为本机ip(127.0.0.1代表本机 ,如果在云端运行,则是ASM上对应申请的资源的ip)

· Port1、port2 为端口(本地运行一台手机时默认为以上代码中的端口号,多台手机同时运行,端口需保证不能重复,如果在云端运行,则是ASM上对应申请的资源端口号)

· Key值(本地运行时为0,如果在云端运行,则是ASM上对应申请的资源的key)

· Service 为1时表示运行游戏AI,为2时表示运行游戏UI+AI

  • 修改手机截图分辨率大小配置

AI SDK/tools/AIClient/aiclient/cfg/device_cfg/device.ini

[device]
use_env_variable = 0
device_type = Android
; device_type is defined in aiclient/device_remote_interaction/device_interface/config.py
platform = Local
; platform is defined in aiclient/device_remote_interaction/device_interface/config.py
long_edge = 1280
; screen captured will be resized to the level of long_edge. The resize rate is long_edge/device_real_long_edge
max_restart_time = 300
; seconds to restart device while keep receiving none frame or frame exception.
; set to 0 for not restarting device when keep receiving none frame or frame exception

[log]
log_dir = ./log/device_log
level = LOG_INFO
;level = LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_CRITICAL

[mobile_device]
device_serial =
is_portrait = 0
show_raw_screen = 1
; set 1 to show screen on your pc

[pc_device]
foregroundwin_only = 0
; set to 1 so getScreen() will capture the window your cursor selected. set to 0 for the whole screen
win_names =
; window names getScreen() focus on. Each name is separated by "|", eg. win_names = QQ|Wechat

[android_action_handler]
use_login_function = 0
; use_login_function = 1, will auto use game_account and game_pwd to login game
auto_launch_app = 0
app_package_name =
game_account =
game_pwd =

[ios_action_handler]
placeholder =

[windows_action_handler]
placeholder =

1) use_env_varialbe:表示该配置文件中long_edge和is_portrait的值是从系统环境变量中读取还是从该配置文件读取。从环境变量读取的方式如下:

long_edge = int(os.environ.get("IMG_LONG_EDGE"))

is_portrait = int(os.environ.get("IS_PORTRAIT"))

2) device_type:表示支持的设备系统型号,目前支持Android、Windows。后续会支持Ios

3)platform:默认local,该参数目前未使用,为以后开发预留

4) Long_edge:表示从手机中截取图片的长边。

5)max_restart_time:在设定的时间内(时间单位为秒)没收到动作或帧异常时,重新启动设备

6)log_dir:日志文件目录

7)level:日志级别

8) device_serial:表示手机的序列号,当多台手机连接是需要设置,但是手机连接时置为空即可,此时会检测连接的手机。

9) is_portrait:表示截图游戏是横屏还是竖屏,1为竖屏,0为横屏(该项配置参数可以在1.2中资源获取)。

10) show_raw_screen:表示是否在pc中显示手机画面,0不显示,1显示。

11)foregroundwin_only:设置截屏数据,为0时表示抓取整个桌面的图像,为1时表示抓取窗口的数据,用手机跑时,这里设置为0

12)win_names :窗口的名称,当foregroundwin_only=1时,这里要设置窗口的名称

13) use_login_function:表示使用QQ自动登录功能,0表示不使用,1表示使用。

14) auto_launch_app: 表示是否自动运行app,0表示不使用,1表示使用。

15) app_package_name: 表示自动运行app时,app的包名。

16) game_account: 表示使用自动登录功能时,使用的QQ账号。

17) game_pwd : 表示使用自动登录功能时,使用的QQ密码。

18)placeholder :占位符

  • 拉起phone_aiclient

    在终端进入phone_aiclient目录下,在终端中进入虚拟环境下(虚拟环境是自己创建的,具体方法可以自行查找资料,如果自己本地的环境没有互相干扰问题,也可以不进入虚拟环境),执行如下命令:

    workon game_ai_sdk   #(linux下需要先安装virtualenvwrapper依赖包,然后创建虚拟环境game_ai_sdk,才能使用该命令进入虚拟环境)
    
    python3 demo.py    #拉起phone_aiclient