0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎么用Python玩GTA5?跟着教程玩!

马哥Linux运维 来源:未知 作者:李倩 2018-11-15 12:55 次阅读

当OpenAI's Universe(Universe)出现后,很多文章都在鼓吹大量的游戏(甚至GTA5)已经做好了迎接AI时代的准备。我当时跃跃欲试,然而GTA5最终被神神秘秘的清除出Universe,连个解释都没有。

后来我短暂的放弃了这个念头,但偶尔想起来依然有点抑制不住的小激动。所以我还是决定在这件事情上多花点功夫,同时好好思考这件事情到底是不是非得用OpenAI不可。OpenAI的好处在于针对一些简单的游戏项目可以实现每分钟上千次的迭代训练,但是GTA5这种游戏嘛,情况就不一样了。

我们来说一下为什么选择GTA5。至少对我来说,GTA5是一个有无数理由让我去进行练习的绝佳环境。在这个开放世界里你几乎没有不能做的事情——举一个最简单的例子:自动驾驶汽车。在游戏中,我们可以用MOD控制时间、天气、交通、速度、遇到的紧急状况等等等等。这是个完全的、可以量身订制(有时需要MOD)的世界。

我的教程有时候经过充足的计划、有些计划过一点、有的完全没有计划过。这个项目就是完全没有计划的教程之一。我知道不是所有人都有GTA5,不过我想你可以使用其他类似的游戏来和我一起学习这个项目——我们有很多游戏都可以拿来使用。(如果使用其他游戏)你需要对某些部分进行调整以使其正常运行,所以你可能得有点基础才行。

我的初步目标是创造一个自动驾驶汽车,所以任何一个有公路和汽车的游戏都可以拿来用。我用来接入游戏的方法几乎可以在其他所有游戏中也使用,如果你选择了更简单的游戏,那就省事多了。因为GTA5的高度拟真,阳光会让电脑识别变得更加具有挑战性。

我可能也会尝试其他游戏——因为我相信我们可以通过简单示范来教AI怎么玩。通过卷积神经网络处理信息,然后让AI进行练习就行。

我的初步判断是:

尽管Python并没有现成的库可用,不过1.我们可以读取屏幕图像2.我们可以模拟按键

这两项足够我们处理常规事务,不过对于深度学习来说,我们可能还想要记录游戏世界的进程。好在现在的大部分游戏已经完全可视化,这已经不再是个难题,我们可以通过追踪鼠标和按键,这一切都为深度学习提供了条件。

我猜这一路不会一帆风顺,但至少会很有趣。我的担忧主要集中在项目推进的速度上。我们可以做,最少是值得做。

总而言之,这是一个大项目,如果我们不拆分来做,显然就超纲了。所以我们来一点一点的尝试,第一步的目标是:

找个像样的FPS工具以访问游戏画面,能用就行的那种。我们的要求是能看就行。

确保键盘输入的指令可用。我觉得这很简单,但是必须得试试才知道。

尝试手柄输入。特别是转向、刹车等操作。

尝试使用OpenCV。希望不会遇到大问题。

在简单的道路环境下实现自动驾驶。

好了,第一步,我们如何实现读取屏幕画面?我一直在想可以做,但还真没想过怎么做。所以,Google!我找到不少案例,不过大部分都不能用,只有这个还算可以:Screen Capture with OpenCV and Python-2.7。

注意:导入的时候似乎有点错误,ImageGrab是PIL的一部分。

果然出错了,我们改一下:

什么鬼?dtype明显应该是字符串,而不是什么没定义的变量名。这哥们写完代码到底运行了没?

这回终于正常了。不过这段代码太长,而且太慢。改一下吧。

这个看着还不错,就是太慢了,每秒大概只能有个2-3帧的样子。再改一下试试。

还是2-3帧。所以问题不是出在imshow函数上。

好了,现在的成绩是:

loop took 0.05849909782409668 secondsloop took 0.044053077697753906 secondsloop took 0.04760456085205078 secondsloop took 0.04805493354797363 secondsloop took 0.05989837646484375 seconds

我们还需要一个numpy数组给OpenCV的imshow函数使用。相对于重新编写.getdata,我还是选择把ImageGrab.grab(bbox=(0,40,800,640))转化为numpy数组。重写是没必要的。

做了这么多事,现在大概有个每秒12-13帧的样子。这个成绩不算好,但是够用了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    87

    文章

    30188

    浏览量

    268444
  • python
    +关注

    关注

    56

    文章

    4782

    浏览量

    84466
  • 深度学习
    +关注

    关注

    73

    文章

    5493

    浏览量

    120983

原文标题:用Python玩GTA 5—使用OpenCV读取游戏面面

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    刚到手的NAS怎么?这些TIPS请收好~

    怎么? 铁威马教你轻松上手 铁威马NAS上手指南 01 快速安装指南 新鲜NAS刚到手,突然脑袋一片空白,不知道该从何设置? 不用慌张,进入铁威马官网,选择【支持】→【快速安装指南】,选择对应的型号,点击一下,让你快速了解如何安装使用铁威马NAS。 02 基础安全
    的头像 发表于 11-25 15:46 50次阅读
    刚到手的NAS怎么<b class='flag-5'>玩</b>?这些TIPS请收好~

    CR5791GTA是一款高度集成的移动电源无线充方案

    简介 CR5791GTA是一款高度集成的移动电源无线 充方案,支持给多种类型无线充终端充电。搭配不 同移动电源SOC芯片满足客户不同需求,支持客 户定制不同显示功能如:灯显示、数码管显示、及 呼吸灯
    发表于 11-04 15:41

    【RA-Eco-RA0E1-32PIN-V1.0开发板试用】开箱+环境搭建 终于会用HAL框架了,环境搭建成了!

    【RA-Eco-RA0E1-32PIN-V1.0开发板试用】开箱+环境搭建终于会用HAL框架了,环境搭建成了! 粗心的我把RASC中设置成32脚芯片, 在KEIL中设置成了同名64脚芯片, 所以烧不进代码, 终于解决了问题,
    发表于 11-01 13:18

    为什么I2C 一直失败?

    第一次Cypress的PSOC,的是CY8CKIT-042开发板,按照官方的例程下Capsense,调用调谐器Tuner,一直提示I2C连接不上,管脚都确认了,管脚电平也都确认了? 有没有大佬碰到过同样问题,怎么解决的
    发表于 10-20 16:38

    《科普时报》:探索量子奥秘,跟着院士去“追光”

    《科普时报》:探索量子奥秘,跟着院士去“追光”
    的头像 发表于 10-12 08:06 187次阅读
    《科普时报》:探索量子奥秘,<b class='flag-5'>跟着</b>院士去“追光”

    《黑神话:悟空》,除了“官配”硬件还需要注意这些......

    《黑神话:悟空》,除了“官配”硬件还需要注意这些......
    的头像 发表于 08-30 14:58 386次阅读
    畅<b class='flag-5'>玩</b>《黑神话:悟空》,除了“官配”硬件还需要注意这些......

    python写验证环境cocotb

    本文介绍了cocotb的安装、python tb文件的写法、xrun仿真cocotb的脚本等,我们来看看体验如何。
    的头像 发表于 07-24 09:38 472次阅读
    <b class='flag-5'>用</b><b class='flag-5'>python</b>写验证环境cocotb

    如何实现Python复制文件操作

    Python 中有许多“开盖即食”的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在这篇文章中,你将会看到一些 Python 实现文件复制的特殊方法。下面我们开始学习这九种不同的方法来实现
    的头像 发表于 07-18 14:53 374次阅读

    pycharm进行python爬虫的步骤

    以下是使用PyCharm进行Python爬虫的步骤: 安装PyCharm和Python 首先,您需要安装PyCharm和Python。PyCharm是一个流行的Python集成开发环境
    的头像 发表于 07-11 10:11 722次阅读

    RetroArch iOS模拟器现已发布,可畅多平台游戏

    作为第一款公开获得tvOS认证的模拟器,RetroArch让iPhone、iPad及Apple TV用户能够畅多种系统的游戏。同时,该模拟器支持MFi手柄,方便用户在大屏设备上进行游戏体验。
    的头像 发表于 05-16 11:08 1154次阅读

    Python怎么读取STM32串口数据?

    Python写的一个串口读取代码 :import serial import timeser=serial.Serial(\'com5\',9600,timeout=2)s
    发表于 04-24 07:30

    赛车游戏还能这么?看移远如何赋能远程现实赛车游戏新体验

    你喜欢赛车游戏吗?赛车游戏作为一种竞技类游戏,不仅能带来虚拟世界的“速度与激情”,更能在游戏中宣泄情绪、释放压力,深受年轻玩家的青睐。   传统赛车类游戏通过逼真的物理引擎以及细致的赛道
    发表于 04-03 14:51 282次阅读
    赛车游戏还能这么<b class='flag-5'>玩</b>?看移远如何赋能远程现实赛车游戏新体验

    赛车游戏还能这么?看移远如何赋能远程现实赛车游戏新体验

    ··你喜欢赛车游戏吗?赛车游戏作为一种竞技类游戏,不仅能带来虚拟世界的“速度与激情”,更能让人们在游戏中宣泄情绪、释放压力,深受年轻玩家的青睐。传统赛车类游戏通过逼真的物理引擎以及细致的赛道
    的头像 发表于 04-03 08:27 343次阅读
    赛车游戏还能这么<b class='flag-5'>玩</b>?看移远如何赋能远程现实赛车游戏新体验

    Python运行环境有哪些

    ,也是最常用的解释器。它是C语言编写的,支持C的扩展和嵌入。CPython可以在各个操作系统上运行,并提供了Python的核心功能。 JPython: JPython是Python的Java实现,它可
    的头像 发表于 11-29 16:14 1914次阅读

    python shell怎么

    Python Shell是一种交互式解释器,可以通过命令行直接运行Python代码。在Shell中,可以输入一行代码并立即得到结果,非常适合于测试、尝试新代码或进行简单的任务。本文将详细介绍
    的头像 发表于 11-29 14:36 1108次阅读