Artificial Intelligence can be realized as a full autonomous or as a semi-autonomous system. A full autonomous system takes the human operator out of the loop, his hands are away from keyboard and he is doing nothing. Such systems have a high probability of failure because most software isn't able to model the system overall. In contrast, a semi-autonomous system supports the human player in a co-working space. The human stays in control but the AI is providing heat-up displays, suggestions and automation of minor tasks. Such a semi-autonomous system is called Aimbot

Note: This question can also be asked from an anti-cheat point of view. I am just asking this question out of curiosity. CS:GO refers to Counter-Strike Global Offensive.

Considering the fact that we can move forward with this problem with two apparent solutions in mind.

  • First one can be an image recognition model. It will recognize the
    head of the enemy and move the cursor to the position of the enemy's head and fire.

  • Second one can be a model which will be trained using the viewing angles of your model in real time.

Things to consider:
It would be much more preferable to train the second model in real time than using demos. Most of the available demos you might have may be 32 tick, but while playing the game, it works at 64 tick.

These were my thoughts on it. It is a very fresh idea in my mind, so I didn't actually think a lot about it. Ignoring facts like detection by VAC for a few moments.

Can someone suggest ways I could get started with something like this?

Later on this idea can be expanded to a completely self working BOT which can play the game by itself, but that's a bit too much initially.

  • $\begingroup$ Welcome to SE:AI! (Added the "getting-started" tag. Can I ask, might this be considered a "soft-question" in terms of asking for general approaches? We also have a tag for that.) $\endgroup$ – DukeZhou Aug 30 '18 at 20:12
  • 1
    $\begingroup$ Hello! Thank you for adding that tag. Actually, I am really considering to take this up as a project and I am a beginner in this field, so I wanted to know the approaches. Thanks for letting me know. I 'll add that tag whenever such a question is being asked from my side. $\endgroup$ – Mrunal Sonawane Aug 30 '18 at 20:16
  • 1
    $\begingroup$ Interesting, but do you have the computational resources to actually have a fast response aimbot? Otherwise you will be wrecked by globals which kind of defeats the purpose...One generalized non AI solution would be develop an algorithm which will make your movement stationary, that is even if you move the algorithm will render the pics infront of you as stationary, and now if anything moves in this stationary field you shoot with an additional check on the uniform color. $\endgroup$ – DuttaA Aug 30 '18 at 20:17
  • $\begingroup$ @DuttaA Hello! Thanks a lot for your reply. If you mean that do I have the resources to train the AI then I think yes. The lab I work with is getting a DGX-2 for the members. Would that serve the purpose? Right now, I'm thinking of only making it work with Gold Novas (max). $\endgroup$ – Mrunal Sonawane Aug 30 '18 at 20:22
  • $\begingroup$ I have no idea....I think it'll depend more on the connectivity bottleneck factors rather than the actual processor.. Recently csgo have pushed in a lot of changes, so I have no idea...Also if your bot reaches coldzera or simples level ping me here $\endgroup$ – DuttaA Aug 30 '18 at 20:28

Automation of Game-play

Aimbots are indeed designed to provide assistance to the human game player when the complexity of game play escapes full cybernetic autonomy at the current state of technology. There are five basic components in any game player, DNA based or digital.

  • Acquisition of the current state of the game
  • Control over execution of move options
  • Intercommunication with other players
  • Models related to the game
  • Execution engine for applying these

The models are as follows for a CS:GO aimbot.

  • Model of game players
  • Model of the opposing team
  • Model of the game player being assisted
  • Model of that player's team
  • Model of the opposing team
  • Model of the game state
  • Model of legal game moves that transition state
  • Model of objectives (winning or maintaining a top score)
  • Models of game-play strategy involving the first three items in the previous list

Learning all of these is not in the scope of current deep learning strategies but not outside the scope of AI if the following problem analysis and system approaches are taken.

  • Assumptions are made similar to those of Morgenstern and von Neumann in the later chapters of their Game Theory to mathematically treat the decisioning of game players in a minimalistic way.
  • DSP, GPU, network realization hardware, cluster computing, or some other artificial network hardware acceleration is available
  • Models programmed in Prolog, DRools, or some other production system and then leveraged by the execution engine in conjunction with other components such as deep learning networks, convolution processing, Markov trees, fuzzy logic, and the application of oversight functions or heuristics as needed

The two services, (a) the provision of suggestions and (b) the automation of minor tasks, may indeed represent the low hanging fruit from a software engineering perspective, but the problem analysis and system approach above may provide more.

Objectives in CS:GO

The CS:GO (Counter-Strike Global Offensive) game seems to have been written from a Westphalian geopolitical point of view. This is the typical western perspective, somewhat oblivious to the mindset of the true nature of asymmetric warfare1. This answer will focus on the creation of an aimbot for the existing models of game-play rather than a realistic simulation of geopolitical balance in this decade.

We have the objective types listed in online resources that provide a game overview, again, narrowed in authenticity by the prevailing western view of asymmetric war1.

  • Terminating players of the opposing team
  • Planting a bomb toward that end (terrorists only)
  • Defend hostages (terrorists only)
  • Prevention of bomb casualties (counter-terrorists only)
  • Rescue of hostages (counter-terrorists only)

Ballistic Control

The targetting of the body or head of an opponent is within the scope of what image recognition can do in conjunction with a movement model. In military applications, aeronautic devices must be propelled against air friction and the propulsion requires a largely exothermic reaction like combustion. Thus all targets have a heat signature, which can be recognized in an infrared video stream in such a way as to plot an intercept course for the ballistic weapon.

The targetting formulation for CS:GO is not as complex and aiming and firing may be fully automated with much less software machinery. A LSTM with sufficient speed can be trained to recognize a head in subsequent frames and terminate opponents even if moving. A simple web search for LSTM will provide a plethora of resources to the novice intending to learn about image recognition.

One Ambiguity

Whether the second objective can be met is dependent on what is meant by the term, "Viewing angles," in the context of image recognition. Can the player see from perspectives other than the location of their eyes? If so, this answer can be adjusted if given a clear picture of what is meant.

Training and Re-entrant Learning

Training of an artificial neural net to target a head is unnecessary unless the 3D rendering of the game objects and players is distorted by a wide angle virtual lens and trajectories and movements are curved. As mentioned LSTM can be used to locate a head in multiple frames and extrapolate an opposing players trajectory.

Where deep learning may be most effective is in the training of how to interact with the player to best assist. Also, if there are other non-targeting techniques that are more discrete, those who play CS:GO well could record their interactions and those recordings can be processed in preparation for use as training data.

Certainly a re-entrant learning strategy such as reinforcement is useful for game-play especially if the make up of teams changes and players exhibit different behaviors, executing differing strategies over different networks with different latencies and through-puts, and communicating with the game clients through different peripheral devices.

[DeepMind Lab Test Bed for Reinforcement Technology](https://github.com/deepmind/lab}

More than Suggestions

With proper architecture, more than suggestive strategies can be provided to the player. Statistical dashboards, identification of a bomb before or after planting, and identification of hostages should be among the aimbot services provided, which might suggest a new name, such as obot for objective bot or asbot for assistive bot.

It is not certain that the aimbot interface need be integrated with dashboards or bomb or hostage identifiers. Sometimes independent bots provide a more flexible arrangement for a user. Individual bots can always use the same underlying image recognition components and models.

Entry Points into Developing Such a System

Read some of the work on the above concepts and download what code you can find that demonstrates it in Python or Java, install what is necessary, and develop some proficiency with the components discussed above as well as the associated theory. Don't shy away from the math, since success will require some proficiency with feedback signalling and concepts like gradient descent and back-propagation.

Reinforcement in Games

LSTM Head Locating

Playing Atari with Deep Reinforcement Learning, Mnih et al., 2013

Phased Approach

The following phased research and development approach is suggested.

  • Learn the theory
  • Practice the theory in code
  • Develop the image recognition front end
  • Develop the library to control a virtual player
  • Develop at least one of the above models
  • Create the simplest bot to use it
  • Expand automation from there


[1] In asymmetric power struggles, there are always at least two factions within each side because didactic legitimacy seeks division. Unity is not practically possible. Each real team usually has a more religious and more secular faction, each of which has economic, philosophic, and historical justifications for their position and agenda. Also, terrorists don't seek the public detonation of bombs or retention of hostages as objective but rather as means, with the total elimination of all not fully adhered to their view of legitimacy as the sole endgame objective. Suicide or high risk bombing is considered by most of those that employ it as the poor man's nukes, so without nuclear strike capability for the counter-terrorists and their allies, the terrorism lacks the important dimension of last resort. The last resort aspect of nuclear strike is missing from the counter-terrorist side too. CS:GO may sell better by glossing over these particular characteristics of asymmetric warfare and such was left out deliberately. There may be some benefit to adding these features in from an educational and anti-propaganda point of view.


Thare are many ways to approache this. One approach to start would be to try to describe the problem using a formalism closer to reinforcement learning.

  • Output:

Aiming in any shooter type game, as I recall, involves moving the mouse. So the output of your aimbot has two dimentions. Depending on the required accuracy, you can consider these two dimentions continous, with a limited range, or if you consider each pixel as a integer, you might be able to discretize your action space. (I assume mouse XY coordinates should be input to the game, not increments)

  • Input:

You definetly need screen information. You can take the whole screen as input to a CNN, similarly to DeepQLearning for Atari.

  • Reward function

This might be tricky since your rewards need to be as dense as possible, however, the only feedback you get from the game is that someone was shot. It might be ebough but this will definetly increase your training time.

  • Training data / Environemnt:

Your environment for training is the game itseld. Using a curriculum learning approach would probably make the training process more efficient.

You can also try an imitation learning approach, since I assume you are happy to provide expert training examples (in this case probably headshots in the game environment).

You can read more about how to apply reinforcement learning for games here. The Unity ML-Agents Library also includes sample tracking problems and their solutions.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.