Shared publicly  - 
#ingress is a Contact Sport!

Everybody knows that Google doesn't get social at all. Then, suddenly, there is #ingress . Superficially it is a war game played on a virtual map that is overlaid over the real world. In order to play, you have to go places in the real world, and perform actions close to Portals.

Three months into the game, you'll realize that there is just about nothing that you can accomplish in this game alone.


As a beginner, you'll be surrounded by portals of an average level of 4 or 5. Doing anything with them will drain more than half the XM energy you can carry. So you need help - Sith leveling to the rescue (padawan.avi): Find yourself a high level player, have them tank those enemy portals for you, and level up by placing resonators. And learn to play properly on the side.

This will also quickly integrate you into the local community of players. You'll be at meetups, farming events, group raids and soon you are a mid- or highlevel player yourself, raising the next generation of players.

The rules support this: You cannot build portals your own level without help from others, and in order to build the really interesting high level stuff, 4 or 8 players of the highest level need to synch up and cooperate.

Squad lead and coordination on the ground

Ingress is a war game, and soon you'll realize military structures forming in those groups of cooperating players: A group of 4 fills one car nicely, but will need to perform accurately out in the field if it wants to take any number of portals at speed. Someone in the group will be squadron leader for that night, and assign cardinal directions for resonator placement, call out taking and farming times and direct the group locally.

Group coordination and proper squad lead makes a group about 1.5 times more effective in terms of AP/h. It does wonders for inventory, though: A coordinated group with a good squad lead that performs an integrated take-and-farm strategy will still earn 1.5 times the AP/h an uncoordinated group will make, but it will keep its inventory at least level, if not making surplus on the taking.

A group of 8 cannot fit a single car legally in many countries without a bus drivers license. So two drivers need to coordinate: travel separately, strike jointly.


Often that group will set up a Teamspeak server, and have an operator at a desktop client at home, with proper network access and the intel map running. The operator will have the birds eye view of the entire city, know about this group and all other groups active, point out attractive targets, and generally provide the necessary intel for useful strategy. Ops also keeps its teams mobile, knowing about traffic jams, public transport schedules and other useful details to keep the groups warm, fed and caffeinated.

Playing with an Operator changes the game fundamentally - in Berlin, it made our teams about two times more effective in terms of AP/h, because no time is wasted by ineffcient travel between locations any more, high revenue targets will never escape the birds eye view of Ops, and two teams will never accidentally compete for ressources in a single location.

For farming, Ops is even more important: In the times of the Octocalypse and Operators on both sides, no farm of L6+ will live long, anywhere. So when a team goes out and erects a farm, all players of your faction need to know this now and go there to farm while it lasts. Because the opposing operator will have that farm flagged as surely as your own, and will send a takedown team there ASAP. So expect it to go down within the hour, within minutes if it is L8 and the Octocalypse is still in its early stages in your hometown.


Ingress is an incredibly bad gaming experience, and during the Beta, it has gone from annoying to partially unplayable.

That is in part because the game is based on a fatally flawed assumption: That you actually make an enjoyable gaming experience based on eventual consistency logic and queues. A lot of problems the game has had have their likely root cause is this: Multihack and cooldown lag bug, resonator loss with simultaneous resonator placement even when working only assigned cardinal directions, lazarus resonators (a grey portal suddenly coming back to opposing color with one or two almost energyless resonators), indestructible links and ghost fields, stuck XMP and similar problems.

There is little we can do about this - it is Niantic here that has to do the hard thing and rebuild the foundation of their game without interrupting play. But Niantic is somewhat oblivious to the problem, excarbating the problems the game has with concurrency even when calling out challenges.

But with the eventually consistent imprecise updating natur of the game, any strategic and tactical gameplay in any remotely concurrent situation such as a challenge is useless, and direct interaction between factions cannot become any more complex wargaming than two monkey tribes hurling feces at each other. This aspect of Ingress gaming is locked to us until Niantic realizes that and fixes the root cause.

The other part of the Nonfun is the lack of local status and leaderboards. The demographic of Ingress being geeks and hackers, this is something that has been fixed months ago, albeit illegally due to the Terms Of Service the game has: A large number of tools have been built locally.

Map Extensions

EIM is an improvement of the Intel map that can give local MU stats as opposed to global MU stats, and also helps Ops tremendously in spotting high revenue targets and planning large fields.

Intel Portals is a simple mod of the map that replaces portal level colors with actual numbers, and can also upload the Javascript downloaded from the intel map servers to any URL of your chosing, allowing casual and unspottable harvesting of map data for an Ops desk.

Total Conversion is a complete rewrite of the Intel map and is slowly starting to integrate all other maps extensions, in a nicely maintainable and useable way. It is the tool of choice for any Ops desk.

Crawlers, Notifiers and Stats

Any faction in any city I have ever played also has crawlers running that feed large databases or even Hadoop crunchers in the backend, keeping local leaderboards and statistics for everybody - this does wonders for motivation, and of course is also useful to spot trends with the opposition.

Some are based on Couchbase or other JS capable databases, others are filtering data into relational systems and then work with these structures.

And finally there are several efforts underway of reversing the heavily obfuscated game APK itself for client utilities or a total conversion - there exists at least one tool that logs into the game as the client, downloads inventory and does things with the list of keys and a map, also pushing inventory stats to an Ops server for key swap, field planning and for Inventory Control at the players discretion ("Did I make a minus on this Raid? Why? Which part of my tactics needs improvement?").

Support tools for player coordination and Ops support are popular as well. A typical field device is running the TeamSpeak Beta, Glympse or Enlatitude or another realtime GPS position tracker.

There is a lot of gain for Google here, and also huge potential lost:

In the playing circles I have had contact with, Ingress is pushing Google tool use a lot - playsers migrate quickly from anon use of the search to Google plus for closed communities, using Google plus Events including party mode for documentation, turn on Latitude and location history in an attempt to coordinate better and document their travels, to Google Drive and Google Docs use in order to share files and documentation with their teammates. 

Ingress would be the tool to promote Google Coordinate as a service to potential customers, but Google is ignoring that option.

So while, according to the Niantic people, Ingress has been built with no hidden agenda and just fun in mind, it has become a huge driver to advanced Google services adoption among players.

Some Berlin stats

ingress@localhost[ingress]> select count(*) as num_portals from portal_static;
| num_portals |
|        1196 |

ingress@localhost[ingress]>  select p_faction
    ->        , min_level
    ->        , count(p_name) 
    ->     from 
    ->     ( 
    ->         select p_faction
    ->              , p_name
    ->              , max(ph_lvl) as min_level 
    ->           from portal_history 
    ->          where ph_action = 'reso_deployed' 
    ->       group by p_faction, p_name 
    ->       order by p_faction, min_level 
    ->     ) as x 
    -> group by p_faction, min_level;
| p_faction | min_level | count(p_name) |
| e         |         1 |           245 |
| e         |         2 |            53 |
| e         |         3 |            80 |
| e         |         4 |            57 |
| e         |         5 |            48 |
| e         |         6 |            35 |
| e         |         7 |            25 |
| e         |         8 |            15 |
| r         |         1 |           240 |
| r         |         2 |            36 |
| r         |         3 |            68 |
| r         |         4 |            51 |
| r         |         5 |            49 |
| r         |         6 |            41 |
| r         |         7 |            24 |
| r         |         8 |            15 |

Playing for AP

Since not all AP actions are showing up in the logs, the numbers here are low boundary estimates. The real numbers appear to be 50% higher on the average than what can be gathered from the log.

ingress@localhost[ingress]> select date_format(ph_happened_at, '%Y%m%d') as d
  , sum(action_score.a_score) as visible_ap 
from portal_history join action_score 
    on portal_history.ph_action = action_score.a_action 
where p_name = 'Ixotopp' 
group by d;
| d        | visible_ap |
| 20121118 |   1500 |
| 20121123 |  41100 |
| 20121129 |  15359 |
| 20121130 |   5088 |
| 20121202 |  14667 |
| 20121207 |  11312 |
| 20121208 | 105947 |
| 20121209 |  72809 |
| 20121216 |  14324 |
| 20121217 |   2501 |
| 20121218 |  28096 |
| 20121219 |  80040 |
| 20121220 |    313 |
| 20121221 |   6450 |
| 20121222 |   4750 |
| 20121224 |  86868 |
| 20121225 |  12200 |
| 20121226 |    225 |
| 20121227 |   6626 |
| 20121230 |  77420 |
| 20130101 |   7100 |
| 20130102 | 132321 |
| 20130124 |  60267 |
| 20130127 |    600 |
| 20130130 |   5475 |
| 20130202 |  27321 |
| 20130214 |    525 |

#ingress   #ingressreport  +Brandon Badger +Anne Beuttenmüller +Brian Rose 
Kristian Köhntopp's profile photoMartin T's profile photoOlaf Weijers's profile photoAtis Lezdiņš (FUHA)'s profile photo
Is in the headline. Competitive Ingress is a social (military) game.
The Android Client has some problems, too. My Samsung Galaxy 2 sometimes shuts simply down every 15 minutes of Ingress playing. The UI is crowded, you can't mute the background sound and you can't control when the app actually closes. 
Yes, "Beta" is a pretty optimistic label.

Also, I did not cover the operational foobar on Niantics side. Inventory has been a problem from the start - thanks, Infinitely Redeemable Coces and Multihack, and the Popchips and Zipcar fuckups excarbated that problem, with the Zipcar foobar being completely unnecessary.

The XMP position miscalculation also was no fun at all.

I am not playing any more, see the AP report at the end of my article. But despite all the bugs and problems, it has been a lot of fun on the way.
So I hack the portals in my neighbourhood when I'm around and wait for Ingress to become playable :-)
+Kristian Köhntopp I remember a guy (he was about 2.02m) standing in my room, taking a look at WoW and saying "I recognize a time sink when i see one" ;-). Any guess who that was?
Wäre ich Google, ich würde ein Spiel bauen, dass die Leute mit ihren Smartphones dorthin schickt, wo mir noch Sensordaten wie z.B. vom Wifi-Sniffen fehlen. Moment...
+Robert Schröder Gut versteckt, danke. Leider kann ich trotzdem keinen Podcast anschalten ohne dass der Client sich unkontrollierbar ausloggt...
+Torsten Kleinz Android ist ein Linux ohne Swap und auf Geräten mit begrenztem Speicher. Android beendet daher Prozesse im Hintergrund, wann immer es will.

Damit Ingress nicht beendet wird, muß es also 

- als Service statt als Prozeß implementiert sein oder
- auf einem Gerät mit ausreichend viel RAM ablaufen.

Einer der zahllosen Vorteile des vielgehaßten Nexus 4 ist ja "2G RAM".
I find it quite remarkable, how balanced (almost) the R. vs. E. player amount in each level is.
+Torsten Kleinz Das Android-SDK sieht vor, dass eine App ihren Zustand abspeichert, bevor das Betriebssystem sie beendet. Das implementieren aber viele Entwickler nicht.
Hi, welche APK kann die Invengory lesen? 
Kristian, I really enjoy reading your extensive writeups about ingress. Thank you for putting up with many hours of research and writing for our enlightenment! :-)
I'm curious about the "Intel Portals" mod - it's name looks too broad for google search. I have already hacked IITC to do something similar, but simple non-intrusive plugin would be nice to look at.
Add a comment...