CS游戏外挂的设计与实现.docx

上传人:b****8 文档编号:12395764 上传时间:2023-06-05 格式:DOCX 页数:22 大小:386.59KB
下载 相关 举报
CS游戏外挂的设计与实现.docx_第1页
第1页 / 共22页
CS游戏外挂的设计与实现.docx_第2页
第2页 / 共22页
CS游戏外挂的设计与实现.docx_第3页
第3页 / 共22页
CS游戏外挂的设计与实现.docx_第4页
第4页 / 共22页
CS游戏外挂的设计与实现.docx_第5页
第5页 / 共22页
CS游戏外挂的设计与实现.docx_第6页
第6页 / 共22页
CS游戏外挂的设计与实现.docx_第7页
第7页 / 共22页
CS游戏外挂的设计与实现.docx_第8页
第8页 / 共22页
CS游戏外挂的设计与实现.docx_第9页
第9页 / 共22页
CS游戏外挂的设计与实现.docx_第10页
第10页 / 共22页
CS游戏外挂的设计与实现.docx_第11页
第11页 / 共22页
CS游戏外挂的设计与实现.docx_第12页
第12页 / 共22页
CS游戏外挂的设计与实现.docx_第13页
第13页 / 共22页
CS游戏外挂的设计与实现.docx_第14页
第14页 / 共22页
CS游戏外挂的设计与实现.docx_第15页
第15页 / 共22页
CS游戏外挂的设计与实现.docx_第16页
第16页 / 共22页
CS游戏外挂的设计与实现.docx_第17页
第17页 / 共22页
CS游戏外挂的设计与实现.docx_第18页
第18页 / 共22页
CS游戏外挂的设计与实现.docx_第19页
第19页 / 共22页
CS游戏外挂的设计与实现.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

CS游戏外挂的设计与实现.docx

《CS游戏外挂的设计与实现.docx》由会员分享,可在线阅读,更多相关《CS游戏外挂的设计与实现.docx(22页珍藏版)》请在冰点文库上搜索。

CS游戏外挂的设计与实现.docx

CS游戏外挂的设计与实现

内容摘要

如今的生活已经不单单只需要解决温饱问题,还有精神上的满足,游戏就是人们娱乐活动之一,因此它也能成为如今必不可缺的一部分。

游戏是竞技体育发展的初级阶段,许多的竞技体育项目最开始的时候只是人们在业余时间的简单玩耍从而释放压力,经过不断的发展,游戏也形成了一套较为完整的体系,有平时放松娱乐玩的,也有竞技类的游戏,因此游戏达人也越来越多,他们通过游戏比赛来赚钱,通过直播平台教导普通玩家如何更好的体验游戏的乐趣。

一些比较大型的游戏很受到人们的欢迎,他们会为自己喜欢的游戏选手呐喊助威,成为他们的粉丝团,所以游戏竞技也逐渐完善化,会有明确的规则,规范场地器材与组织形式,就逐渐转化为正式的体育项目。

因为各种游戏的越发蓬勃,随之兴起的是各种游戏辅助外挂。

游戏中普通玩家是占据很大一部分,他们没有向专业竞技选手的速度和运用灵活度,比较难每次都获得胜利,然而游戏外挂就弥补了他们的这些缺陷,可以更容易的活的胜利,并且从中获得快感,这也是游戏辅助外挂能够蓬勃发展的原因。

游戏外挂有很多种,有将外挂程序嫁接到游戏程序当中,通过改变本地的一些信息,或者增强瞄准度,或者一键可以完成同时多键才能完成的技能,从而得到提高自己玩游戏的胜利率。

CS游戏外挂的设计与实现的设计是由STM32F103C8T6为主控制器,通过OpenCV的图像处理,将截取的原视频转化为灰度视频,再通过斑点扫描算法提取斑点坐标,也就是敌方血量条的坐标,再打开串口发送相应的斑点坐标,STM32F103C8T6接收到数据后,控制鼠标进行一系列操作。

关键词:

STM32F103C8T6鼠标控制图像识别视觉检测

Abstract

Today’slifeisnotonlyaboutsolvingtheproblemsoffoodandclothing,butalsospiritualsatisfaction.Gamesareoneofpeople’sentertainmentactivities,soitcanalsobecomeanindispensablepartoftoday.Gamesaretheinitialstageofthedevelopmentofcompetitivesports.Atthebeginningofmanycompetitivesports,peoplesimplyplayedintheirsparetimetoreleasethepressure.Aftercontinuousdevelopment,thegamehasformedarelativelycompletesystem.Therearealsocompetitivegames,sotherearemoreandmoregamemasters.Theyteachordinaryplayershowtobetterexperiencethefunofthegamethroughthelivebroadcastplatform.Someofthelargergamesareverypopularwithpeople.Theywillcheerfortheirfavoritegameplayersandbecometheirfangroup,sothegamecompetitionisgraduallyperfected,andtherewillbeclearrulestoregulatevenueequipmentandorganizationalforms,graduallytransformedintoaformalsportsevent.

Asvariousgamesbecomemoreandmoreprosperous,variousgames-assistedplug-insareemerging.Ordinaryplayersaccountforalargepartofthegame.Theydon’thavethespeedandflexibilityofprofessionalathletes.Itisdifficulttowineverytime.However,thegamemakesupfortheseshortcomingsandcaneasilywin.Getpleasurefromit,whichiswhythegame-assistedplug-incanflourish.Therearemanytypesofgameplug-ins,someofwhicharegraftedintothegameprogram,bychangingsomelocalinformation,oronekeycancompletetheskillsthatcanbecompletedbymultiplekeysatthesametime,therebyimprovingthevictoryrateofplayingthegame.ThedesignandimplementationofthisCSgameismadebySTM32F103asthemaincontroller.ThroughOpenCVimageprocessing,theoriginalvideoisconvertedintogray-scalevideo,andthenthespotcoordinatesareextractedbythespotscanningalgorithm,whichistheenemy.Thecoordinatesofthesquarebloodvolumebar,andthenopentheserialporttosendthecorrespondingspotcoordinates.Afterreceivingthedata,STM32F103controlsthemousetoperformaseriesofoperations.

Keywords:

STM32F103C8T6MousecontrolImageRecognitionVisualInspection

第一章绪论

1.1课题背景和意义

说到游戏,每个人脑海里都有不同的画面,因为游戏已经跟我们的生活紧紧的联系在一起,游戏带给我们的不单单是消遣还有幸福的回忆。

小时候和朋友们玩的小游戏,猜谜语、跳台阶等游戏,慢慢长大就会接触到电子产品,开始的时候是在街边可以看到很多男孩子玩的游戏机,到后来因为科技和互联网的迅速发展,家用的电脑,手机等等的出现,就开始慢慢接触电子游戏,也算是见证游戏的一段快速发展的历程,因为对游戏的兴趣,因此毕业设计的时候选择跟游戏相关的题目。

查阅资料后发现,电子游戏也是各种类型都有,有生存类的,有射击类的,有养成类的,有益智类的,也有单人模式和多人组队模式的,许多游戏都没玩过,因为游戏除了一些比较大型出名的游戏,其他一些小游戏很容易被淘汰,随着电子游戏的发展,电子游戏的平台有四种:

1、家用主机,也就是专门用来玩游戏的家用游戏机,是通过电视作为显示屏幕,想要玩什么游戏就要买专用的多媒体光碟或卡带,再连接游戏手柄等一体化进行操作的设备,这种平台可以更换不同的游戏,因此比较灵活,也是它能成为最常见的游戏平台的其中一个原因,其中美好最出名并且是第一个最成功的商业用途的专门为电子游戏爱好者们设计的平台就是雅达利的雅达利2600。

雅达利2600该电子游戏平台是用一个主机,分离的控制器和可以更换游戏种类的卡带,因为它的崛起,其他也是按照这种构架发展起来的,比如任天堂的FC。

因为是刚开始发展,所以硬件方面也比较简陋,随着科技的不断进步,游戏画质也向高清和蓝光发展,能够让玩家更能体验游戏带来的满足感。

市场也会跟随时代的发展,让这些游戏主机不单单只玩游戏,娱乐性也逐渐拓展,销售的对象也不单单是年轻人,群体也扩大了,因为除了游戏外,还具备看视频,看图片,听音乐或者上网等功能,所以也受到很多家庭的喜爱,成为生活或不可缺的部分。

2、掌上主机,字面理解就是拿在手上的游戏机,准确是指个人使用的可以随身携带电子元件,因为他非常小巧而且还方便携带,外出的时候也可以玩,满足人们更多的需求,也让越来越多的人进行消费。

例如手机,到现在21世纪,为了方便沟通交流,手机也成为必需品,而且也不单单只能玩游戏,还可以连接网络、通讯、娱乐等。

因为这种消费模式的转变,电子游戏平台也需要创新,因此游戏也有专门的类似于手机,小巧方便的形态为玩家更好的体验。

最开始的时候,掌上主机无法替换其他游戏,也是一个问题,买一个游戏机就只能玩一种游戏,在空间上取得了创新,可是却没有家用主机的灵活性。

面对大众的需求,任天堂也生产出了GameBoy,最后被用作商业用途。

3、街机就是我们年轻人比较喜欢的,可以在一些游戏机室找到,用这个名称是为了和个人电脑和家用游戏机分开来。

4、个人电脑,个人电脑是有很多电脑游戏的,现如今许多游戏在网站上下载,然后利用模拟器或者在PC端的游戏平台进行单机游戏或联机游戏。

由于游戏的发展,随之兴起的游戏外挂也越来越多。

游戏外挂就是通过电脑技术针对相应的游戏,进行一些修改,从而使游戏的胜利率提高和辅助手速慢的玩家进行设置或者键盘多个键位的同时操作。

游戏外挂也分为很多种,例如修改数据包,然后把修改好的数据发送到相应的位置、模拟键盘、修改一些本地内存、模拟鼠标等。

这些都是电脑来进行的,通过虚拟键盘或鼠标,可以用API函数,这是软件上设置的虚拟键盘或鼠标,现在很多游戏厂家已经禁止用Mouse_event()这类方法移动鼠标,需要和游戏相结合就要找到对应的游戏窗口,才能进行操作。

还有一些游戏操作比较简单,是通过消息传输,这种就可以通过截取消息,这样可以改变一些我们想要提高的数值,例如血量、金币数、能量值等。

我们制作出游戏外挂不仅能够解放双手与提高效率,还能使游戏厂家更完善游戏,让玩家有更好的体验。

1.2游戏外挂的发展进程

游戏外挂的发展也有十几年的历史,最开始出现外挂的是在2003年,那时候对于外挂并不是为了赚钱,牟取利益,只是一些对电脑技术极具热情的年轻人开发的软件,那时候的想法只是想要研究电脑的一些语言程序,例如比较早的基础语言就是C语言,到后面用到JAVA语言,PYTHON语言等,他们只是想要尝试制作虚拟键盘或者鼠标,在他们的研究下,按键精灵产生了,也是该软件的产生,让一些想赚钱的人看到了商机,从而开始研究各种游戏的外挂程序,让玩家能够提高胜率。

开始的时候这并不是一种为了作弊而产生的程序,但是由于游戏的迅速发展,许多玩家会认为这是非常不公平的操作,因此游戏厂家也纷纷开始反抗,因为这样也会导致他们的利益受损,游戏外挂也因此得到了压制,尽管这样,游戏外挂也是有一段时间非常火爆。

因为对游戏外挂有一定的认知,游戏商家也会自行制作一些外挂,目的是为了让初始玩家更有体验感,由于现在的联机游戏越来越多,游戏玩家也会更加注重游戏的胜利率,可是很多玩家都是普通玩家,他们匹配组队都是不熟悉的人一起玩,默契度不会很高,就是导致一直输,这种情况如果一直持续下去,会让玩家消极对待该游戏,因此游戏商家就会制作一些程序,例如人机,这样设计比较简单的,难度系数就会降下回来,也可以让普通玩家适当的提高胜率,提高对游戏的积极性,而且还可以用在测试的模式下,玩家可以自行进入人机模式,对自己使用的角色进行熟悉,了解该角色的特点,技能使用方式,如何避免出错,如何提高存活率。

如今的游戏外挂不单单是让游戏玩家提高胜率,从而获得快感,也可以通过这样,让游戏商家提高自家游戏的管理能力,游戏外挂使用的一些技术也是游戏商家自己也会使用到的,不管怎样,游戏外挂还是让许多玩家无法自拔。

第二章整体方案设计

2.1系统整体方案

CS游戏外挂的设计与实现这项目在选择上面的目的是能够运用软件和硬件相结合的一个能够让游戏爱好者解放双手,提高速度的一款设计。

因此我是用STM32f103C8T6芯片作为硬件设计系统的主要模块,而且这项目是一款主机和设备相结合的辅助游戏程序,包括高速外部时钟源电路、电平转换电路、运用复位方式为系统复位的复位电路、运用用户闪存为启动模式的BOOT启动电路、连接主机PC端的USB接口电路、调试接口电路、电源电路和用二极管LED测试烧录电路等电路组成,完成对信息的处理,接收和传输。

在软件设计方面,用ROI设置图像区域,截取游戏视频,函数将彩色视频转化为灰度视频并保存,用边缘检测算法Canny找到视频中灰度变化较大的位置,输出轮廓;同时用斑点扫描算法提取红色的敌方血量条,得到斑点坐标,将信息通过通讯发送到STM32主芯片,STM32接收到斑点坐标后,鼠标移动到对应的坐标进行左键点击后释放。

2.2系统整体框架图

图2.1整体流程框架图

第三章硬件电路设计分析

3.1硬件电路整体设计

在CS游戏外挂的设计的整体构成中,主要的硬件模块包括STM32F103C8主控制芯片、HSE时钟源电路、电平转换电路、运用复位方式为系统复位的复位电路、运用用户闪存为启动模式的BOOT启动电路、连接主机PC端的USB接口电路、调试接口电路、电源电路和LED测试烧录电路。

硬件功能图如下:

图3.1硬件电路功能图

3.2主控芯片介绍

选择芯片的时候要考虑到芯片的功能、接口、价钱和采购是否便捷,本次设计采用STM32F103C8为主控制芯片,该芯片是在这系列里面比较基础的,而且成本不高,不选择51单片机是因为该单片机一般没有自编程能力,而且我们需要高速的双向通讯,STM32就比51单片机更好。

因为项目比较复杂,因此需要通过一长串不断的调试才能完善该程序,STM32的保护能力会更好一些,没有这么容易烧坏芯片,同时我们需要通过USB供电和传输数据,51单片机也不具备该功能。

代码上面需要很多等待的命令,这就需要用到时钟,它具备五种时钟源,满足我们的需求,而且内核有ARMCortex-M332的微控制器,可以做到低功耗,减少成本。

STM32外围有很多引脚,可以在串口调试有更多的选择,该芯片还包含了两种存储器,其中就有我们需要用到的SRAM存储器,用来进行代码的烧录和调试,它的电源是在2V至3.6V之间,比较方便实用,且不会有局限性。

新型的外围设备最大程度和出色的实时表现的集成器,具有内嵌复位电路、也可以兼容我们需要的5V供应电流为开发本设计具有较强的灵活性。

其原理图

如下:

图3.2STM32F103C8主芯片原理图

3.3时钟源电路

本次选用的主芯片有1个AHB和2个APB总线,APB分为APB1(36MHz)和APB2(72MHz),本设计用到的是内外部时钟电路,也叫HSE,高速外部时钟源,因此在画PCB的时候要加入8MHz的晶体振动器,它能够提供最基本的时钟信号,电容是为了稳定它的输出,连接两边的电容还能避免相互干扰,而且要焊接在靠近芯片的地方。

时钟电路是为了让程序能够正常准确运行工作的一个必不可缺的部分。

HSE的信号精度高,因此我选择外部加8MHz的晶振。

因为STM32的特性,因此我们需要对它进行频率加倍,PULLMUL需要乘9倍频后,就得到我们的时钟源PLLCLK。

因为不单单是CPU需要时钟源,其他模块也是需要时钟源工作,所以还我们需要对倍频后的时钟源进行分配。

我们也需要用到定位器,因为该项目需要一个硬件的中断,确保每一个模块都能正常运行。

本项目用到的是RCC寄存器,因此画出电路原理图如下:

图3.3电路原理图

3.4复位电路

系统每次进行工作前都要恢复到最开始状态,这样才能使程序更准确,这样就需要复位电路的存在,主要是利用电容放电的原理。

本项目用到的复位方式是系统复位,如图3.4.1复位电路原理图可以看出,我们这次使用的是在按键上边连接VCC,连接VCC的电阻R3是为了防止C7直接接地,如果没有这个电阻,会让电源直接接地从而形成短路,S1按钮就是可以设置高低电平的装置,按下该按键就能使该地方变为低电平,从而进行复位。

系统复位其实就是复位寄存器。

图3.4复位电路原理图

3.5BOOT启动电路

在STM32F103C8T6芯片中,44号引脚是BOOT0,在该引脚串联一个10k的电阻R4,20号引脚是BOOT1,在该引脚串联一个10k的电阻R1,因为这两个引脚是复位电路的重要部分。

这次用到的启动模式是内置SRAM启动,因为项目不是一次过的,需要进行不断地调试,才能更加完善,这种启动模式就能更好的清除代码再写入,比较方便调试。

项目中选用keil5作为上位机通讯的设备,因此我们需要把keil5中生成的代码烧录进我们需要的芯片板上,该操作是通过高低电平进行烧录的,当电路板上的BOOT0位和BOOT1都置为1时,改为低电平,需要连接VCC3.3和这两个引脚,当烧录后BOOT0位和BOOT1都要置0,连接GND和这两个引脚,这种方式也方便清除上次烧录的项目。

图3.5BOOT启动电路原理图

3.6系统供电稳压

本次项目的供电是通过USB实现的,是5V的直流电,由于我们需要3.3V的直流电,因此利用SPX3819M5-L-3-3电源芯片,将电压稳定在+3.3V,选择该芯片的原因是这是一款低压线性稳定器LDO,电路也比较简单。

而且它还具有低压差、旁路引脚实现低噪音的输出,而且在100mA输出的时候能够提供接GND电流。

该芯片停止使用后,功耗能够差不多将至0,它的输入电压范围2.5V至16V,不能超过500mA的电流,本设计中用C10电容串连接到电源正端,为硬件模块提供反接保护,芯片过热还能断电,可以把5V电源通过该芯片将电压变成3.3V。

图3.6系统供电稳压原理图

3.7元器件选择与作用

根据本设计原理图的各元器件不同的作用,有JP3和JP4排针、16个不同作用的电容、NRST按键、8MHz晶振、二极管等元器件的作用说明。

表3.1各元器件作用说明表

元器件

作用

JP3、JP4排针

传输电流或信号

P2跳线帽

控制线路板上电流流动的开关

C1、C2、C3、C4电容

去耦

C5、C6、C8、C9、C10、C11、C12、C14、C15、C16电容

滤波

R2电阻

作为反馈

R1、R3、R4、R9电阻

上拉/下拉电阻

R5、R6、R7、R8电阻

限流以保护电路

C7电容

RC延时

按键开关

控制电路通断

晶振

提供时钟

MicroUSB连接器

用于设备之间的数据传输

二极管

肖特基二极管用以反向保护电路

第四章软件设计分析

4.1整体软件设计

首先对选取的游戏进行试玩,通过试玩来了解游戏的一些具体操作,本游戏是通过鼠标点击敌方血量条,直至敌方血量条消失即可。

用ROI设置图像区域,截取游戏视频,函数将彩色视频转化为灰度视频并保存,用边缘检测算法Canny找到视频中灰度变化较大的位置,输出轮廓;同时用斑点扫描算法提取红色的敌方血量条,得到斑点坐标,将信息通过通讯发送到STM32主芯片,STM32接收到斑点坐标后,鼠标移动到对应的坐标进行左键点击后释放。

图4.1整体软件设计流程图

4.2截取游戏视频模块

首先通过用ROI设置图像区域,需要找到游戏对应的网页,因此需要定义游戏窗口名#defineGAMEWINDOWNAME"MicrosoftEdge",然后运行后寻找到该窗口,利用该循环条件while(hwnd==NULL),,如果找到后,输出MicrosoftEdgefound,找到窗口后,利用SwitchToThisWindow(hwnd,false);直接跳转到该窗口,然后截取一段视频作为测试范例。

从数学的角度来看,视频数据其实就是多张图像数据以人眼难以分辨的帧率而刷新得到的,所以创造视频数据的过程其实就是以一定帧率,向同一文件中不断叠加图像帧的过程[1]。

首先游戏窗口大小通过prinft(“sWidth:

%d;sHeight:

%d\n”,sWidth,sHeight);语句读取,然后再设置捕获游戏视频屏幕的高和宽,GDI截图是位图(bitmap)格式,因此必须转换为Mat格式,才能由OpenCV进行图像处理,设置需要截取视频的区域,利用ROI设置区域就不需要处理整副图像,只需要截取整副游戏视频的画面来减少CPU的消耗,因为图像处理是用CPU来处理这些图片的,但是这样会非常消耗CPU的资源。

因此利用captured_frame=Frame(Rect(900,350,300,514));就可以把从坐标点(900,350)开始,宽为300,高为514的矩形截取每一帧图片赋值给在captured_frame,然后通过Videowriter把图片写进去创建的AVI文件里面去,这样方便下面算法的实现,由于GDI截图的通道是4通道,因此通过4通道来读取像素。

4.3灰度游戏视频模块

Mat数据结构里矩阵的每个元素代表一个像素,我们要把图片的bmp格式改为能够跟OpenCV使用的Mat的数据类型才能进行下面的操作。

图片信息进行二值化处理后,对图像的每一行进行处理,可以得到每行图像黑线的位置[2]。

灰度图像时,每一个像素代表其中之一(0~255),其中0表示黑色,255表示白色,其他为灰色。

我们的目的是要知道敌方的坐标,因此可以通过提取敌方的红色血量条的坐标来确定敌方的坐标。

基于轮廓波变换的局部对比度增强的彩色图像灰度化算法主要包括两部分:

彩色图像的初步灰度化与灰度图像的局部对比度增强[3]。

首先需要对视频进行处理,RGB{255,0,19},把红色血量条变成白色,其他颜色变为黑色,从而得到单通道的灰度图(Gray),创建灰度图:

Matgray,确定读取的高度为514,宽度为300,通过3通道,即AVI通道读取所有的像素,然后保存结果,使用灰度比值相邻像素的梯度算法来检测[4]。

4.4斑点扫描算法

实验需要从经过灰度化的图像中找出敌方血量条,而斑点扫描算法检测的作用是在检测图像中与周围环境相比亮度或颜色不同的点和/或区域的模块,基于求导的微分方法和基于局部极值的分水岭算法,这两种方法都是可以实现我们想要的结果基于边缘检测的斑点识别算法,首先,采用边缘检测器检测当前帧的边缘区域,其次,针对边缘像素,利用正反扫描方法和局部运动估计的SROD斑点识别算法识别出全部像素点[5],由于这种算法对边缘检测的准确度不是很高,不能精准确定我们所需要的斑点坐标,因此本次设计所采用的OpenCV的类SimpleBlobDetector就是基于第二种办法,基于局部极值的分水岭算法。

分水岭算法主要用于图像分段,把灰度化的视频比作一张张灰度图,然后求出梯度图,也就是像一片凹凸不平的地面,水滴下来一定会落在凹进去的地方,这些地方就是最小值点,最高的地方就是边缘点,这些集合就组成了“分水线”,然后在这个基础上进行该算法,这样就能求出这些图像的黑色和白色的边缘线。

基于边缘的扫描算法的原理是使用一系列提前定义标记来引导图像分割的定义方式。

本项目使用的是OpenCV的分水岭算法,对我们需

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2