<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Dev Diary — Ingress</title>
        <link>https://community.ingress.com/en/</link>
        <pubDate>Thu, 28 Mar 2024 20:53:59 +0000</pubDate>
        <language>en</language>
            <description>Dev Diary — Ingress</description>
    <atom:link href="https://community.ingress.com/en/discussions/tagged/dev-diary/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>Dev Diary: Dronenet</title>
        <link>https://community.ingress.com/en/discussion/11057/dev-diary-dronenet</link>
        <pubDate>Sat, 06 Jun 2020 00:01:21 +0000</pubDate>
        <category>Ingress Insights</category>
        <dc:creator>NianticBrian</dc:creator>
        <guid isPermaLink="false">11057@/en/discussions</guid>
        <description><![CDATA[<p>We originally teased the concept of the Dronenet in the Niantic Project ARG before Ingress released in Nov 2012. Eagle-eyed Agents may recall Drone Footage of California City, CA that led back to Roland Jarvis, or videos shared by Ben Jackland. Dronenet Canisters were also dead dropped for Campus Agents in New York, SF, LA, and Austin, which included Closed Beta invites and passcodes for gear.</p><div data-embedjson="{&quot;url&quot;:&quot;https:\/\/us.v-cdn.net\/6031689\/uploads\/0PHBLTDS0VNJ\/img-1814.jpg&quot;,&quot;name&quot;:&quot;IMG_1814.jpg&quot;,&quot;type&quot;:&quot;image\/jpeg&quot;,&quot;size&quot;:79427,&quot;width&quot;:1000,&quot;height&quot;:462,&quot;displaySize&quot;:&quot;large&quot;,&quot;float&quot;:&quot;none&quot;,&quot;embedType&quot;:&quot;image&quot;}">
    <div>
        <a href="https://community.ingress.com/en/home/leaving?allowTrusted=1&amp;target=https%3A%2F%2Fus.v-cdn.net%2F6031689%2Fuploads%2F0PHBLTDS0VNJ%2Fimg-1814.jpg" rel="nofollow noopener ugc" target="_blank">
            <img src="https://us.v-cdn.net/6031689/uploads/0PHBLTDS0VNJ/img-1814.jpg" alt="IMG_1814.jpg" height="462" width="1000" data-display-size="large" data-float="none" data-type="image/jpeg" data-embed-type="image" srcset="https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=10/https://us.v-cdn.net/6031689/uploads/0PHBLTDS0VNJ/img-1814.jpg 10w, https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=300/https://us.v-cdn.net/6031689/uploads/0PHBLTDS0VNJ/img-1814.jpg 300w, https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=800/https://us.v-cdn.net/6031689/uploads/0PHBLTDS0VNJ/img-1814.jpg 800w, https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=1200/https://us.v-cdn.net/6031689/uploads/0PHBLTDS0VNJ/img-1814.jpg 1200w, https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=1600/https://us.v-cdn.net/6031689/uploads/0PHBLTDS0VNJ/img-1814.jpg 1600w, https://us.v-cdn.net/6031689/uploads/0PHBLTDS0VNJ/img-1814.jpg" /></a>
    </div>
</div>
<p>We’re releasing Dronenet now in Ingress 2.48 as a “Mark I” so we can hear early feedback from Agents to help us shape the direction of how the feature may evolve over time. We’ll launch and iterate. In the next Ingress update, we have the first Dronenet improvements already scheduled, like a visible cooldown timer to make it easier to see the time remaining before your Drone is ready to move. We're especially eager to experiment with different ways to play using Dronenet to explore an area, from Portal to Portal. </p><p>Dronenet allows Agents to deploy Drone Mark I to any neutral, friendly, or enemy Portal within view on the map screen. Agents can hack a Target Portal for items once per Drone flight, and the Drone can move once every 60 minutes. It can’t be used to retrieve a Portal Key or take any other action. It does count as a Drone hack towards Sojourner, but it can't be used to complete a mission or as a proxy for event attendance — these will continue to require your physical participation.</p><p>For more info on how to access Dronenet and deploy Drone Mark I, please see <a href="https://community.ingress.com/en/home/leaving?allowTrusted=1&amp;target=https%3A%2F%2Fniantic.helpshift.com%2Fa%2Fingress%2F%3Fp%3Dweb%26s%3Dtop-articles%26f%3Dhow-do-i-deploy-drone-mark-i%26l%3Den" rel="nofollow noopener ugc">our Help Center article</a>.</p><p>The specific functionality of Mark I is intentional as a Mark I starting point. There are several different ways Mark I might be used by Agents: Agents may compete for Furthest Drone Flight (the furthest distance traveled hopping from Portal to Portal from the initial Start Portal), or use Drone Mark I to help farm L8 gear and practice Glyph hacking. But there are many possible paths a new Mark II or Mark III Drone could take, and we’d love to hear your feedback and suggestions.</p><p>At its core, Ingress will continue to enable outdoor adventures with friends, and our intention with Dronenet is to help give Agents even more ways to play. You can access Dronenet today in Ingress 2.48 by tapping the Main Menu button, then selecting Dronenet. We're working to deliver the Mark I to all Agents now so if you aren't yet seeing Dronenet in the Main Menu, stay tuned.</p>]]>
        </description>
    </item>
    <item>
        <title>Dev Diary: Powered by Niantic Lightship, coming soon</title>
        <link>https://community.ingress.com/en/discussion/16932/dev-diary-powered-by-niantic-lightship-coming-soon</link>
        <pubDate>Mon, 11 Oct 2021 19:31:20 +0000</pubDate>
        <category>Ingress Insights</category>
        <dc:creator>NianticBrian</dc:creator>
        <guid isPermaLink="false">16932@/en/discussions</guid>
        <description><![CDATA[<p>tl;dr: Ingress is powered by Niantic Lightship, and Adventure Sync and Portal Scan Meshing are coming soon.</p><p>We've been working to move Ingress onto the Niantic Lightship platform leading up to Ingress Year 9 on Nov 15. To date, we’ve shipped many Lightship features, including Portal Scanning with feature point visualization, the Niantic Profile, the Niantic Chat Closed Beta with Niantic Friends, and daily syncs of accepted Portals from Niantic Wayfarer. But there’s another Lightship feature that Agents have also asked for, especially after we added the Kinetic Capsule to the Ingress Scanner.</p><p>Adventure Sync is coming soon. It connects with Google Fit or Apple HealthKit to record your walking distance even if the Ingress Scanner isn’t open. If you choose to turn it on, then your walking distance will be tallied in the background and applied towards your Trekker medal and Kinetic Capsule Programs. When enabled, it should improve our accuracy of how we record your walking distance.</p><p>Please note that Adventure Sync is optional and can be turned on or off at any time. Kinetic Capsule Programs will continue to be limited to a max 40 km traveled per day. And recording walking distance in the background versus requiring Ingress to be in the foreground with your screen on should help improve battery usage.</p><p>Additionally, we’re adding Lightship ARDK’s Real-Time Mapping to enable Portal Scan Meshing. Like Adventure Sync, Meshing is also an optional feature, and it allows Agents to better see what has and hasn’t been scanned during a Portal Scan. We’ll start with a shortlist of supported Android and iOS devices, then expand this list over time. Crowdsourcing Portal Scans allows our Lightship Team to build a 3D map of the Portal Network that can be used to make future augmented reality (AR) features in Ingress more realistic. </p><div data-embedjson="{&quot;url&quot;:&quot;https:\/\/us.v-cdn.net\/6031689\/uploads\/1UM1L0YH986O\/portal-scan-meshing2.gif&quot;,&quot;name&quot;:&quot;portal-scan-meshing2.gif&quot;,&quot;type&quot;:&quot;image\/gif&quot;,&quot;size&quot;:43193770,&quot;width&quot;:600,&quot;height&quot;:1299,&quot;displaySize&quot;:&quot;small&quot;,&quot;float&quot;:&quot;none&quot;,&quot;embedType&quot;:&quot;image&quot;}">
    <div>
        <a href="https://community.ingress.com/en/home/leaving?allowTrusted=1&amp;target=https%3A%2F%2Fus.v-cdn.net%2F6031689%2Fuploads%2F1UM1L0YH986O%2Fportal-scan-meshing2.gif" rel="nofollow noopener ugc" target="_blank">
            <img src="https://us.v-cdn.net/6031689/uploads/1UM1L0YH986O/portal-scan-meshing2.gif" alt="portal-scan-meshing2.gif" height="1299" width="600" data-display-size="small" data-float="none" data-type="image/gif" data-embed-type="image" srcset="https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=10/https://us.v-cdn.net/6031689/uploads/1UM1L0YH986O/portal-scan-meshing2.gif 10w, https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=300/https://us.v-cdn.net/6031689/uploads/1UM1L0YH986O/portal-scan-meshing2.gif 300w, https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=800/https://us.v-cdn.net/6031689/uploads/1UM1L0YH986O/portal-scan-meshing2.gif 800w, https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=1200/https://us.v-cdn.net/6031689/uploads/1UM1L0YH986O/portal-scan-meshing2.gif 1200w, https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=1600/https://us.v-cdn.net/6031689/uploads/1UM1L0YH986O/portal-scan-meshing2.gif 1600w, https://us.v-cdn.net/6031689/uploads/1UM1L0YH986O/portal-scan-meshing2.gif" /></a>
    </div>
</div>
<p>By working with our Lightship Team, we’re able to scale our team’s efforts and focus on growing the global Agent community. We've got more planned for Year 9 and beyond, so stay tuned and hack the planet.</p><p>— Brian and the Ingress Team</p>]]>
        </description>
    </item>
    <item>
        <title>Dev Diary: Player Portal History</title>
        <link>https://community.ingress.com/en/discussion/15850/dev-diary-player-portal-history</link>
        <pubDate>Fri, 09 Jul 2021 23:45:02 +0000</pubDate>
        <category>Ingress Insights</category>
        <dc:creator>NianticThia</dc:creator>
        <guid isPermaLink="false">15850@/en/discussions</guid>
        <description><![CDATA[<p>Hi everyone - I'm excited to share insight into the <a href="https://community.ingress.com/en/discussion/13571/ingress-2-65-1-release-notes#latest" rel="nofollow noopener ugc">Player Portal History</a> that was added back in February.</p><p>This entry of the Dev Diary was provided by <a data-username="ofer2" data-userid="30640" rel="nofollow" href="https://community.ingress.com/en/profile/ofer2">@ofer2</a> , Senior Software Engineer.</p><p>===========================</p><p>Hi everyone, my name is Ofer and I was the Feature Lead for Portal History. With this Dev Diary entry, I wanted to give you all a bit of insight into the development process for this feature.</p><p>Competition, exploration, and social are three major aspects to Ingress. When I worked on Battle Beacons, I got into the competitive aspect. But with COVID and staying at home, this was put on the backburner. After being stuck indoors for so long, I was really looking to lean into the exploration aspect of the game. The main problem here, for me, was that I love exploration, but I need a goal and I need to see progress towards completing that goal. Therefore, like many of you, I wanted to be able to see the portals I had been to and go to new ones until I CAPTURED THEM ALL!</p><p>The opportunity to dig into this arose last year when there was a call for ideas for a team-wide hackathon. Our pitch was to add code to the server to track all the Portals you’ve captured and show it to you on the app’s Map Screen. In this proof of concept, this wouldn’t include previously-captured Portals because that was a whole other can of worms, which would definitely not be doable within the scope of a hackathon. </p><p>The main challenge with this limited feature was that we needed to mix spatial data with Agent-specific data. Normally, when you make a query for entities on the map, all of that data is the same for everyone. Therefore, the code responsible for doing that query has no idea which Agent is the one that is asking for the data. Secondly, we needed a way to ask for that Agent’s specific data in an area without having to look through all the data.</p><p>The basic plan was to create an entity (a storage container for data) that was keyed by player ID and S2 cell ID. An S2 cell is a way of dividing the world into chunks and labeling it. You can read more about it here if you are interested: <a href="https://community.ingress.com/en/home/leaving?allowTrusted=1&amp;target=https%3A%2F%2Fs2geometry.io%2Fdevguide%2Fs2cell_hierarchy.html" rel="nofollow noopener ugc">https://s2geometry.io/devguide/s2cell_hierarchy.html</a>. Then, when you query for entities on the map, we would route that through a new interface which also looks up the player data using the S2 cell and “mixes” it in to the Portal information on the way out.</p><p>With this plan in mind, I recruited Andrew, another engineer on the server team, who was interested in the feature and set off to work. At the end of the hackathon, we all presented our projects and I had the honor of presenting my team’s:</p><div data-embedjson="{&quot;url&quot;:&quot;https:\/\/us.v-cdn.net\/6031689\/uploads\/GBHD2GO7T7XD\/portal-history.jpg&quot;,&quot;name&quot;:&quot;portal_history.jpg&quot;,&quot;type&quot;:&quot;image\/jpeg&quot;,&quot;size&quot;:578862,&quot;width&quot;:1275,&quot;height&quot;:1127,&quot;displaySize&quot;:&quot;large&quot;,&quot;float&quot;:&quot;none&quot;,&quot;embedType&quot;:&quot;image&quot;}">
    <div>
        <a href="https://community.ingress.com/en/home/leaving?allowTrusted=1&amp;target=https%3A%2F%2Fus.v-cdn.net%2F6031689%2Fuploads%2FGBHD2GO7T7XD%2Fportal-history.jpg" rel="nofollow noopener ugc" target="_blank">
            <img src="https://us.v-cdn.net/6031689/uploads/GBHD2GO7T7XD/portal-history.jpg" alt="portal_history.jpg" height="1127" width="1275" data-display-size="large" data-float="none" data-type="image/jpeg" data-embed-type="image" srcset="https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=10/https://us.v-cdn.net/6031689/uploads/GBHD2GO7T7XD/portal-history.jpg 10w, https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=300/https://us.v-cdn.net/6031689/uploads/GBHD2GO7T7XD/portal-history.jpg 300w, https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=800/https://us.v-cdn.net/6031689/uploads/GBHD2GO7T7XD/portal-history.jpg 800w, https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=1200/https://us.v-cdn.net/6031689/uploads/GBHD2GO7T7XD/portal-history.jpg 1200w, https://us.v-cdn.net/cdn-cgi/image/fit=scale-down, width=1600/https://us.v-cdn.net/6031689/uploads/GBHD2GO7T7XD/portal-history.jpg 1600w, https://us.v-cdn.net/6031689/uploads/GBHD2GO7T7XD/portal-history.jpg" /></a>
    </div>
</div>
<p>We used red dots at the bases of Portals and only showed unique Portal captures here, but programmer art aside, I think we made a really awesome feature, and wanted to work towards building a real version for production.</p><p>After the hackathon concluded, we returned to our normally scheduled work, but the team saw the results and the opportunity to bring to life a feature that Agents have been asking for for years. Brian, however, wanted the whole enchilada: prior Portal History included together with all Agent history from the beginning of the game AND to top it all off, he wanted it on the Intel Map, too.</p><p>Brian tasked the Engineering team with getting this feature out. Fortunately, we had a strong foundation with our hackathon project. Alas, it turned out to have a few kinks: returning Agent-specific data for every Portal is often unnecessary as the data hasn't changed since the last time you interacted with the Portal. To tackle this, we return the player data as a completely different piece of data from Portal data, and then put it together on the client. Unfortunately, the Intel Map doesn’t have real-time updates like the client does (it refreshes all data), so it still had to have the player data attached to the Portal.</p><p>The second major part of this was pre-populating the data with the entire history of Ingress gameplay. When we initially looked into this, we saw that the records storing actions that Agents have taken have a field for the entity. This field is <a href="https://community.ingress.com/en/home/leaving?allowTrusted=1&amp;target=https%3A%2F%2Fcomputersciencewiki.org%2Findex.php%2FHashing" rel="nofollow noopener ugc">hashed</a>, meaning that we would have to reverse the hash to find out the actual entity that the record corresponds to. In order to do this, we created a process that would go through every single Portal ID and hash it so that we could use that hash to compare against the Agents’. Then we would go through each Agent’s records and find all the Portals they’ve visited and captured, and write that data to the structures that the client will query. After we finished writing this, we ran it in the dev environment and it wrote out the results to the datastore.</p><p>When we checked our results, they didn’t match the Portals we expected. It turns out that we made a mistake when examining the code that wrote out the tracking records. The function takes in a string which it calls ID, hashes it, and writes it to that field. The thing we missed was that this function wasn’t called in the case of visiting and capturing Portals. We instead called a different function first, which combined the ID of the Agent with the ID of the Portal. This means that the single list of hashes that we made before wouldn't work. We had to recreate the list from scratch for each individual Agent.</p><p>The cost for doing that process once was high, though reasonable; but multiply that for every Agent and the end-to-end process wasn’t feasible. The team put our heads down and went to work trying to reduce the cost. After some diligent effort and time optimizing the pipeline, we succeeded in reducing the cost significantly. One of the optimizations that helped us to do this was by making the flow run on a single machine per player instead of spreading it out to multiple machines. This involved some creative ways of reducing the size of the data that each machine would need to have in order to generate the results. Then, by specifically choosing to run the optimized backfill for Agents Level 3 and higher, we managed to get the cost into a reasonable range. The cost reduction of the engineering team here allowed us to give this feature to all Level 3 Agents and higher without making it a paid feature.</p><p>At this point, we had a working client and server, but we needed a clear way of displaying all of this data. We came up with a clever concept of “Layers.” This enabled us to only show Agents the information that they care about. The Art team took this on and came up with an initial concept, which everyone was so excited to try out. The first iteration was hard to read, so we continued to test different designs. The Art team quickly took that feedback from the team and from Vanguards, and increased the size of each Portal History ring and added spacing to the Portal, which made the rings easier to see at different zoom levels.</p><p>We have iterated quite a bit on this feature from the hackathon to during development before the launch all the way to development after launch as well. There were some additions that we knew players would want (e.g. invert on the intel map) but even without that, we knew that players would really enjoy this feature, so we elected to ship the core feature and then continue to iterate after launch. This iterative design process enables us to draw feedback from Agents and our teammates, and help guide the direction of the Ingress roadmap.</p><p>Player portal history was always something that we wanted to put on the roadmap as it was one of the top requested features from players, so we found a creative way to get it out to players. We’ve since expanded the Layers button to include Drones so Agents can see more activity going on around them. We hope to continue to make further enhancements in the future!</p>]]>
        </description>
    </item>
   </channel>
</rss>
