{
  "fetched_at": "2026-10-24T13:07:35Z",
  "source_url": "https://www.kaggle.com/competitions/google-football/data",
  "pages": [
    {
      "name": "data-description",
      "content": "<p>This page shows up underneath the data files. Here you describe what files you have provided and the format of each. There is no single format for this page that is appropriate for all competitons, but you should strive to describe as much as you can here. A little time spent describing the data here can save a lot of time answering questions later.</p>\r\n<p>Participants should be able to answer questions like these after reading the data description: What files do I need? What should I expect the data format to be? What am I predicting? What acroynms will I encounter?</p>\r\n<h2>File descriptions</h2>\r\n<ul>\r\n<li><strong>train.csv</strong> - the training set</li>\r\n<li><strong>test.csv</strong> - the test set</li>\r\n<li><strong>sampleSubmission.csv</strong> - a sample submission file in the correct format</li>\r\n<li><strong>metaData.csv</strong> - supplemental information about the data</li>\r\n<li>etc...</li>\r\n</ul>\r\n<h2>Data fields</h2>\r\n<ul>\r\n<li><strong>customer_id</strong> - an anonymous id unique to a given customer</li>\r\n<li><strong>movie_id</strong> - the id of a movie</li>\r\n<li><strong>movie_title</strong> - the title of a movie</li>\r\n<li>etc...</li>\r\n</ul>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "### COMPETITION TIMELINE\n\n<br>Start Date: September 28, 2020\n<br>Merger Deadline: November 23, 2020 11:59pm UTC \n<br>Entry Deadline: November 23, 2020 11:59pm UTC\n<br>Final Submission Deadline: **November 30, 2020 11:59pm UTC** \n\n<br>Final Games Played: December 1 - December 7, 2020\n<br>End Date: December 7, 2020 11:59pm\n\n<br>**COMPETITION TITLE**: Google Research Football\n<br>**COMPETITION SPONSOR**: Google Research\n<br>**COMPETITION SPONSOR ADDRESS**: 1600 Amphitheatre Parkway, CA 94043\n<br>**COMPETITION WEBSITE**: https://www.kaggle.com/c/google-football\n<br>**TOTAL PRIZES AVAILABLE**: $6000\n\nFirst Prize: $3000\n<br>Second Prize: $2000\n<br>Third Prize: $1000\n\n<p>In addition to the cash prizes above, each of the top three teams will also receive a unique experience with Manchester City F.C. (MCFC) which includes: <ul>\n<li>Tickets to attend a home match in the hospitality lounge</li>\n<li>Exclusive behind the scenes access and unique interactions with Manchester City’s football and data science experts.</li>\n</ul>\n</p>\n\n<p>Terms: \n<br>a) <i>Flights</i>: for each team, reimbursement of return flights to Manchester for up to two team members; up to a maximum cost of £250 per person (round-trip) if winners are based in Europe; or up to a maximum cost of £800 per person (round-trip) if winners are based outside Europe.\n<br>b) <i>Accommodation</i>. For each team, MCFC will pay for one night accommodation in a hotel (of MCFC's choice) in a Central\nManchester location.\n<br>c) <i>Behind-the-scenes workshop</i>. A half-day (3 hour) workshop with members of MCFC’s Data Science and Technology teams. For two people if this is conducted on-site, or for five people if this is conducted virtually. Access (Part 3). \n<br>d) <i>Behind-the-scenes tour</i>. A two hour behind-the-scenes tour of MCFC’s City Football Academy in Manchester, accompanied by a member of MCFC’s Data Science or Technology team.\n<br>e) <i>Tickets</i>: Two tickets to attend a future MCFC home match in a hospitality lounge (match and lounge at MCFC’s discretion). </p>\n\n\n**WINNERS LICENSE TYPE**: None\n\n**DATA ACCESS AND USE**: Competition-Use Only\n\nYour participation in this Competition is subject to the Kaggle’s Terms of Use, available at https://www.kaggle.com/terms, Kaggle’s Privacy Policy, available at https://www.kaggle.com/privacy, these competition rules, and any other terms, rules, or restrictions on the Competition Website (collectively, the “Rules”). You may not participate in the Competition it you do not follow the Rules.\n\n### COMPETITION PERIOD \nThe Competition will run from the date it was made available to the date it is no longer available (such duration the “Competition Period”). \n \n### ONE ACCOUNT PER PARTICIPANT\nYou must have a Kaggle.com account to participate in the Competition. You cannot have more than one Kaggle.com account and therefore you cannot participate in the Competition, by making Submissions or otherwise, via multiple Kaggle.com accounts.\n \n### NO PRIVATE SHARING OUTSIDE TEAMS\nPrivately sharing code or data outside of teams is not permitted. It's okay to share code or data if it is made available at no cost to all participants via the official Competition forums.  If you use data to develop and test your Submissions, you will ensure the data is available at no cost to all participants via the official competition forum. You will license any shared code under an Open Source Initiative-approved license (see www.opensource.org) that in no event limits commercial use of such code.\n \n### TEAMS\nMultiple individuals may collaborate as a team; however, you may only be a part of one team. You must register individually for the Competition before joining a Team. Team mergers can be performed by the team leader. You must confirm your Team membership to make it official by responding to the Team notification message sent to your Kaggle.com account. In order to merge, (i) the combined team may not exceed the maximum team size; (ii) the total number of Submissions made by all the participants and the team may not exceed the number of Submissions allowed per day multiplied by the number of days the Competition has been running; and (iii) the combined team must meet all the requirements of these Rules. \n \nAll rules apply to a team as they would apply to an individual. For example, a team may make not more than 5 Submissions per day. \n \n### TEAM LIMITS\nThe maximum team size is 3.\n \n### SUBMISSIONS\nTo be eligible for scoring and a position on the leaderboard, your submissions to the Competition (“Submissions”) must be made during the Competition Period, and in compliance with the Rules. Submissions may not be accepted or scored if they are in whole or part illegible, incomplete, damaged, altered, counterfeit, obtained through fraud, or late. \n \nYour Submission must be your own, original work such that you are the sole and exclusive owner and rights holder of the Submission, and that you have the right to make the Submission and grant all required licenses.\n \nIf open source code is used in the Submission, then you must only use open source code licensed under an Open Source Initiative-approved license (see www.opensource.org) that in no event limits commercial use of such code or model containing or depending on such code.\n \n### SUBMISSION LIMITS\nYou may submit a maximum of 5 Submissions per day.\n \n### SCORING AND LEADERBOARD\nYour Submissions will be scored based on their performance in an episode, and your performances in episodes will be aggregated to determine your position on the leaderboard, in each case as described in the evaluation documentation on the Competition Website. \n \n### ENVIRONMENTS & PUBLIC AVAILABILITY\nThis Competition makes use of Kaggle Environments. Additional rules related to the Environment(s) used in this Competition are available on the Competition Website. A replay of each episode of the competition, which includes the actions taken by your Submission in the episode, may be publicly available and downloadable.\n \n### NO INGRESS OR EGRESS \nDuring the evaluation of an episode your Submission may not pull in or use any information external to the Submission and Environment and may not send any information out. \n\n### DISQUALIFICATION\nKaggle may disqualify any participant from the Competition if Kaggle reasonably believes that the participant has attempted to undermine the legitimate operation of the Competition, for example, by cheating, violating the Rules, tampering with the submission process or any other part of the Competition or Competition Website, other unfair practices or abuses, or threatens or harasses any other participants or Kaggle. A disqualified participant may be removed from the Competition leaderboard, at Kaggle’s sole discretion.\n \n### RELEASE\nKaggle makes no guarantees regarding, and you hereby release Kaggle from any liability associated with, operation of the Competition Website, including, for example, connection to the Website and the collection, processing, scoring, or retention of any Submission.\n\n### CHANGES TO THE COMPETITION \nIf for any reason the Competition is not capable of running as planned, Kaggle may terminate, modify, or suspend the Competition. \n \n### CHANGES TO RULES\nKaggle may modify these Rules or any additional terms that apply to the Competition to, for example, reflect changes to the law or changes to the Kaggle Services. You should look at the Rules regularly. Kaggle will post notice of modifications to these Official Competition Rules on this page and will post notice of modified additional terms in the applicable service. Changes will not apply retroactively and will become effective no sooner than fourteen days after they are posted. However, changes addressing new functions for a service or changes made for legal reasons will be effective immediately. If you do not agree to the modified Rules or terms for a service, you should discontinue your use of the Competition and that service.\n\n### NOT AN OFFER OR CONTRACT OF EMPLOYMENT\nThe entry of a Submission or anything in these Rules is not an offer or contract of employment with Kaggle or any Kaggle affiliate. You acknowledge that you have submitted your Submission voluntarily and not in confidence or in trust. You acknowledge that no confidential, fiduciary, agency, employment or other similar relationship is created between you and Kaggle or any Kaggle affiliate by your acceptance of these Rules or your entry of your Submission.\n\n\n \n*****\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "Manchester City F.C. and Google Research are proud to present AI football competition using the [Google Research Football Environment](https://github.com/google-research/football).\n\n### A word from Manchester City F.C.\n\n<img title=”MCFC” src=\"https://storage.googleapis.com/kaggle-media/competitions/Research%20Football/Manchester%20City%20(1).png\" style=\"float: right; width: 200px\">\n\nBrian Prestidge, Director of Data Insights & Decision Technology at City Football Group, the owners of Manchester City F.C., sets out the challenge. “Football is a tough environment to perform in and an even tougher environment to learn in. Learning is all about harnessing failure, but failure in football is seldom accepted. Working with Google Research’s physics based football environment provides us with a new place to learn through simulation and offers us the capabilities to test tactical concepts and refine principles so that they are strong enough for a coach to stake their career on.”\n\n“We are therefore very pleased to be working with Google’s research team in creating this competition and are looking forward to the opportunity to support some of the most creative and successful competitors through funding and exclusive prizes. We hope to establish ongoing collaboration with the winners beyond this competition, and that it will provide us all with the platform to explore and establish fundamental principles of football tactics, thus improving our ability to perform and be successful on the pitch.”\n\nGreg Swimer, Chief Technology Officer at City Football Group added \"Technologies such as Machine Learning and Artificial Intelligence have huge future potential to enhance the understanding and enjoyment of football for players, coaches and fans.  We are delighted to be collaborating with Google's research team to help broaden the knowledge, talent, and innovation working in this exciting and transformational area\".\n \n### The Google Research football environment competition\n\nThe world gets a kick out of football (soccer in the United States). As the most popular sport on the planet, millions of fans enjoy watching Sergio Agüero, Raheem Sterling, and Kevin de Bruyne on the field. Football video games are less lively, but still immensely popular, and we wonder if AI agents would be able to play those properly.\n\nResearchers want to explore AI agents' ability to play in complex settings like football. The sport requires a balance of short-term control, learned concepts such as passing, and high-level strategy, which can be difficult to teach agents. A current environment exists to train and test agents, but other solutions may offer better results.\n\nThe teams at Google Research aspire to make discoveries that impact everyone. Essential to their approach is sharing research and tools to fuel progress in the field. Together with Manchester City F.C., Google Research has put forth this competition to get help in reaching their *goal*.\n\n![GRF](https://1.bp.blogspot.com/-tSPIa1HlNrg/XPqRavoz7lI/AAAAAAAAEMU/oGB2mmwSl_4TFVKN1NNCQD-qlDNZQr2VQCLcBGAs/s640/Screenshot%2B2019-06-05%2Bat%2B1.38.14%2BPM.png)\n\nIn this competition, you’ll create AI agents that can play football. Teams compete in “steps,” where agents react to a game state. Each agent in an 11 vs 11 game controls a single active player and takes actions to improve their team’s situation. As with a typical football game, you want your team to score more than the other side. You can optionally see your efforts rendered in a physics-based 3D football simulation.\n\nIf controlling 11 football players with code sounds difficult, don't be discouraged! You only need to control one player at a time (the one with the ball on offense, or the one closest to the ball on defense) and your code gets to pick from 1 of 19 possible actions. We have prepared a [getting started](https://www.kaggle.com/c/google-football/overview/getting-started) example to show you how simple a basic strategy can be. Before implementing your own strategy, however, you might want to learn more about [the Google Research football environment](https://github.com/google-research/football/), especially [observations provided to you by the environment and available actions](https://github.com/google-research/football/blob/master/gfootball/doc/observation.md). You can also [play the game yourself](https://github.com/google-research/football/#playing-the-game) on your computer locally to get better understanding of the environment's dynamics and explore different scenarios.\n\nIf successful, you'll help researchers explore the ability of AI agents to play in complex settings. This could offer new insights into the strategies of the world's most-watched sport. Additionally, this research could pave the way for a new generation of AI agents that can be trained to learn complex skills.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "Each day, your team is able to submit up to 5 agents (bots) to the competition. Each submission will play episodes (games) against other bots on the ladder that have a similar skill rating. Over time, skill ratings will go up with wins or down with losses. Every bot submitted will continue to play games until the end of the competition. On the leaderboard only your best scoring bot will be shown, but you can track the progress of all of your submissions on your Submissions page.\n\nEach Submission has an estimated Skill Rating which is modeled by a Gaussian N(μ,σ2) where μ is the estimated skill and σ represents our uncertainty of that estimate which will decrease over time.\n\nWhen you upload a Submission, we first play a Validation Episode where that Submission plays against a copy of itself to make sure it works properly. If the Episode fails, the Submission is marked as Error. Otherwise, we initialize the Submission with μ0=600 and it joins the pool of All Submissions for ongoing evaluation.\n\nWe repeatedly run Episodes from the pool of All Submissions and try to pick Submissions with similar ratings for fair matches. We aim to run ~8 Episodes a day per Submission with an additional slight rate increase for the newest-submitted Episodes to give you feedback faster.\n\nAfter an Episode finishes, we'll update the Rating estimate of both agents in that Episode. If one agent won, we'll increase its μ and decrease its opponent's μ -- if the result was a draw, then we'll move the two μ values closer towards their mean. The updates will have magnitude relative to the deviation from the expected result based on the previous μ values, and also relative to each Submission's uncertainty σ. We also reduce the σ terms relative to the amount of information gained by the result. The score by which your bot wins or loses an Episode does not affect the skill rating updates.\n\nAt the submission deadline, additional submissions will be locked. One additional week will be allotted to continue to run games. At the conclusion of this week, the leaderboard is final.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Timeline",
      "content": "* **November 23, 2020, 11:59pm UTC**&nbsp;-&nbsp;Entry deadline. You must accept the competition rules before this date in order to compete.\n\n* **November 23, 2020, 11:59pm UTC**&nbsp;-&nbsp;Team Merger deadline. This is the last day participants&nbsp;may join or merge teams.\n\n* **November 30, 2020, 11:59pm UTC**&nbsp;- Final submission deadline.\n\n* **December 1, 2020&nbsp;-&nbsp;December 8, 2020**&nbsp;- Final games are played.\n\n* **December 8, 2020**&nbsp;- Winners announced.\n\nThe competition organizers reserve the right to update the contest timeline if they deem it necessary.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Prizes",
      "content": "The top three teams will be awarded exclusive prizes from both Google and Manchester City Football Club:\n\n**Cash prizes**: \n- 1st: $3,000 \n- 2nd: $2,000\n- 3rd: $1,000\n\nEach of the top three teams will also receive **a unique experience with Manchester City F.C.**: \n - Tickets to attend a home match in the hospitality lounge;\n - Exclusive behind the scenes access and unique interactions with Manchester City’s football and data science experts.\n\nPlease see the [Rules](https://www.kaggle.com/c/google-football/rules) for more information\n\nNote, prizes involving in-person meeting or travels will be subject to COVID-19 restrictions.\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Google Football Rules",
      "content": "### Rules\n\nIn this competition you control a single player in 11-player teams. Rules are similar to the official football (soccer) rules - https://www.rulesofsport.com/sports/football.html, including offsides, yellow and red cards. There are, however, small differences:\n\n* Game consists of two halves, 45 minutes (1500 steps) each. Kick-off at the beginning of each half is done by a different team, but there is no sides swap (game is fully symmetrical).\n\n* Each agent controls a single player on the team. Controlled player is always the one in the  ball's possession or the one close to the ball when defending.\n\n* Teams do not switch sides during the game. Left/right sides are assigned randomly.\n\n* For convenience of agent's implementation, observations provided to the agent are always presented as if the agent controlled the left team. Environment applies appropriate conversions to both observations and actions. Game engine is fully symmetrical, so sides swapping does not affect the game in any way.\n\n* Non-cup scoring rules apply, i.e. the team which scored more goal wins; otherwise it is a draw.\n\n* There is no walkover applied when the number of players on the team goes below 7.\n\n* There are no substitute players.\n\n* There is no extra time applied.\n\n### Observations and Actions\n\nOn each turn, agent receives observations representing full state of the game, including current score, position of all players, their speed, and tired factor. Detailed format of observations is described here: https://github.com/google-research/football/blob/master/gfootball/doc/observation.md#raw-observations\n\nIn each turn, agent is supposed to generate one of 19 actions (numbered from 0 to 18) from the default action set: \nhttps://github.com/google-research/football/blob/master/gfootball/doc/observation.md#default-action-set. Returning an action outside of the action set results in agent's loss.\n\n### Game End\n\nGame ends after 3000 turns or when one of the agents has an error (either timeout, thrown exception, or invalid action returned). The agent who caused an error loses; the other wins. In case of no errors, the winning team is the one which scored more goals. Ranking is then updated according to the evaluation rules. Check out the evaluation tab for more details.\n\n### Source Code\n\nOur game rules are implemented in the following open source code:\nhttps://github.com/Kaggle/kaggle-environments/blob/master/kaggle_environments/envs/football/football.py\n\nJSON schema:\nhttps://github.com/Kaggle/kaggle-environments/blob/master/kaggle_environments/envs/football/football.json",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Getting Started",
      "content": "### TL;DR\nCreate `submission.py` with the following source and submit it.\n\n```\nfrom kaggle_environments.envs.football.helpers import *\n\n# @human_readable_agent wrapper modifies raw observations \n# provided by the environment:\n# https://github.com/google-research/football/blob/master/gfootball/doc/observation.md#raw-observations\n# into a form easier to work with by humans.\n# Following modifications are applied:\n# - Action, PlayerRole and GameMode enums are introduced.\n# - 'sticky_actions' are turned into a set of active actions (Action enum)\n#    see usage example below.\n# - 'game_mode' is turned into GameMode enum.\n# - 'designated' field is removed, as it always equals to 'active'\n#    when a single player is controlled on the team.\n# - 'left_team_roles'/'right_team_roles' are turned into PlayerRole enums.\n# - Action enum is to be returned by the agent function.\n@human_readable_agent\ndef agent(obs):\n    # Make sure player is running.\n    if Action.Sprint not in obs['sticky_actions']:\n        return Action.Sprint\n    # We always control left team (observations and actions\n    # are mirrored appropriately by the environment).\n    controlled_player_pos = obs['left_team'][obs['active']]\n    # Does the player we control have the ball?\n    if obs['ball_owned_player'] == obs['active'] and obs['ball_owned_team'] == 0:\n        # Shot if we are 'close' to the goal (based on 'x' coordinate).\n        if controlled_player_pos[0] > 0.5:\n            return Action.Shot\n        # Run towards the goal otherwise.\n        return Action.Right\n    else:\n        # Run towards the ball.\n        if obs['ball'][0] > controlled_player_pos[0] + 0.05:\n            return Action.Right\n        if obs['ball'][0] < controlled_player_pos[0] - 0.05:\n            return Action.Left\n        if obs['ball'][1] > controlled_player_pos[1] + 0.05:\n            return Action.Bottom\n        if obs['ball'][1] < controlled_player_pos[1] - 0.05:\n            return Action.Top\n        # Try to take over the ball if close to the ball.\n        return Action.Slide\n```\n\nTo give this agent a try in Kaggle Notebooks (an interactive online editor) you can use an example [Google Research Football Template Bot](https://www.kaggle.com/piotrstanczyk/gfootball-template-bot).\n\nOnce you have submitted your first bot, try making modifications to the code to improve it!",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Training RL Agents",
      "content": "Rule-based agent presented in Getting Started section is a good place to start, but things become more interesting with addition of Reinforcement Learning. For a quick example, you can have a look at the [GFootball - train SEED RL agent](https://www.kaggle.com/piotrstanczyk/gfootball-train-seed-rl-agent) notebook, which shows how to train a V-Trace agent using [SEED RL](https://github.com/google-research/seed_rl/).\n\nKaggle Notebook might not be sufficient to train a comprehensive agent for the competition. There are a number of other alternatives worth mentioning:\n\n* Use GPU-enabled Kaggle Notebooks to speed up the training process. Note that this makes sense when training the agent is more expensive than running the environment.\n\n* Running training locally on your workstation / server(s). For ways on how to start that, have a look at [Google Research Football GitHub repository](https://github.com/google-research/football/). You can find instructions on how to train example PPO agent [here](https://github.com/google-research/football/tree/511e6412808bbc334cc29e78ba01919dd59f7e19#training-agents-to-play-grf).\n\n* You can give [SEED RL](https://github.com/google-research/seed_rl/) a try. There is a nice [blog-post](https://sites.google.com/corp/view/rl-football/zpp) from Warsaw University students who conducted a research project using Google Research Football environment and SEED RL.\n\n* It is possible to train your agent using any other RL framework or implementing your own.\n\nDon't limit yourself to applying existing tools and methods. Try to invent better ways of training strong agents.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Free Cloud Credits",
      "content": "*10/19/20 UPDATE: The criteria below have been updated and a new round of coupons will be distributed*\n\nThe Google Research team has generously offered free Google Cloud credits to assist you in building your reinforcement learning models for this competition!\n\n- The First 100 individuals to meet the stated requirements are eligible to receive a coupon code for $1000 in GCP compute.\n\n- You MUST have made a submission to the Google Research Football Competition.\n\n- Your submission must rank higher than the benchmark on the competition called \"Superbia in Proelio\" - ranked approximately in the top third of the competition at the time of this writing.\n\n- You must not have received a coupon in the first round of coupon distribution for this competition.\n\n- Entries will only be accepted until October 30, 2020 at 11:59PM UTC or when the maximum number of coupons have been issued, whichever comes first.\n\n- You can expect your coupon code within five days of October 30, 2020 or after the maximum number of coupons have been claimed. \n\nIMPORTANT: You must be subscribed to Kaggle in order to receive coupon distribution updates from us. In case you are unsubscribed, you can re-subscribe by ensuring both of the following:\n\n- Find an old marketing email from us, find “Unsubscribe from our emails”, then click on “Resubscribe.”\n\n- Log in to Kaggle.com, then access \"My Account,\" and click “Edit” to make sure that Email Preferences check box is checked, then “Save.”\n\nClick [here](https://forms.gle/HU7rehBkQWRYKqieA) to apply for Google Cloud coupons.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}