Code Monkey home page Code Monkey logo

planetside-2-api-tracker's Introduction

Planetside 2 API Tracker

Welcome to the Planetside 2 API Tracker an unofficial collection of Planetside 2 resources and API issues compiled by the discord community. This repositories focus is to act as a place for members of the community to share resources that are for or from the Planetside ceneus, and can be found in the following sub directories.

Census & Census Patches

Full static census collection copies for versioning. As well as manually crafted census patches, for missing census data.

Maps

A collection if in-game map lods 0-3 quality. Useful in conjunction with the API for the creation of web maps or overlays.

Titles

Full tracking of all current titles, how and when they are awarded and if they're still achievable.

Weapons

Community created sanctions list for all weapons, intended for use in unifying community sites/bots to use a single list for stat calculations.

Issues

Issues are used for tracking of known census issues, as well as updates to the weapons sanctions. Labels are split for Rest API, Streaming API, and Features. Found something not on the list? Or request an update to the sanctions? Open an issue or PR to start a discussion.

Community API Services

A collection of sites, applications and repositories that use the planetside 2 API.

Census libraries

Community API services repositories

planetside-2-api-tracker's People

Contributors

brakenium avatar carlst99 avatar cooltrain7 avatar cramsan avatar dbrennand avatar fredkilbourn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

planetside-2-api-tracker's Issues

Expose Bastion Fleet Carriers into the API

Explose the Bastion Fleet Carriers in greater deapth into the API. Possible inclusions could be:

  • Send Events for Spawning/Despawning (With possible fields being, NpcID, OutfitID, ZoneID, FactionID, WorldID, TimeStamp)
  • Send Events for HardPoint Destruction (With Possible fields being, an NpcID,Timestamp)

This or other ways of being able to track:

  • When a bastion spawns, and who owns it, what continent is it on.
  • When a bastion loses a hardpoint (So its health can be tracked)
  • When a bastion despawns, who owned it, what continent was it on and if it was killed/despawned (Use of OtherID?)

`"worlds": [ "all" ]` appears to be broken on world-level event subscriptions

It appears that world-level events are not working reliably if you subscribe with "worlds": [ "all" ], instead you must subscribe with "worlds":["1","9","10","11","13","17","18","19","25","1000","1001"].

I tested several variations and further testing is needed, but here are results from testing on http://census.daybreakgames.com/ps2-websocket.html:

/*** RECEIVES FacilityControl AND PlayerFacilityCapture ***/

{
	"service": "event",
	"action": "subscribe",
	"characters": [
		"all"
	],
	"eventNames": [
		"PlayerFacilityCapture",
		"FacilityControl"
	],
	"logicalAndCharactersWithWorlds": false,
	"worlds": [
		"1",
		"9",
		"10",
		"11",
		"13",
		"17",
		"18",
		"19",
		"25",
		"1000",
		"1001"
	]
}

{
	"service": "event",
	"action": "subscribe",
	"characters": [
		"all"
	],
	"eventNames": [
		"PlayerFacilityCapture",
		"FacilityControl"
	],
	"logicalAndCharactersWithWorlds": true,
	"worlds": [
		"1",
		"9",
		"10",
		"11",
		"13",
		"17",
		"18",
		"19",
		"25",
		"1000",
		"1001"
	]
}

/*** ONLY RECEIVES FacilityControl ***/

{
	"service": "event",
	"action": "subscribe",
	"eventNames": [
		"FacilityControl",
		"PlayerFacilityCapture"
	],
	"worlds": [
		"1",
		"9",
		"10",
		"11",
		"13",
		"17",
		"18",
		"19",
		"25",
		"1000",
		"1001"
	]
}

{
	"service": "event",
	"action": "subscribe",
	"eventNames": [
		"PlayerFacilityCapture",
		"FacilityControl"
	],
	"logicalAndCharactersWithWorlds": false,
	"worlds": [
		"1",
		"9",
		"10",
		"11",
		"13",
		"17",
		"18",
		"19",
		"25",
		"1000",
		"1001"
	]
}

{
	"service": "event",
	"action": "subscribe",
	"eventNames": [
		"PlayerFacilityCapture",
		"FacilityControl"
	],
	"logicalAndCharactersWithWorlds": true,
	"worlds": [
		"1",
		"9",
		"10",
		"11",
		"13",
		"17",
		"18",
		"19",
		"25",
		"1000",
		"1001"
	]
}

/*** ONLY RECEIVES PlayerFacilityCapture ***/
{
	"service": "event",
	"action": "subscribe",
	"characters": [
		"all"
	],
	"eventNames": [
		"PlayerFacilityCapture",
		"FacilityControl"
	],
	"logicalAndCharactersWithWorlds": false,
	"worlds": [
		"all"
	]
}

/*** RECEIVES NO EVENTS ***/

{
	"service": "event",
	"action": "subscribe",
	"eventNames": [
		"FacilityControl",
		"PlayerFacilityCapture"
	],
	"worlds": [
		"all"
	]
}

{
	"service": "event",
	"action": "subscribe",
	"eventNames": [
		"PlayerFacilityCapture",
		"FacilityControl"
	],
	"logicalAndCharactersWithWorlds": false,
	"worlds": [
		"all"
	]
}

{
	"service": "event",
	"action": "subscribe",
	"eventNames": [
		"PlayerFacilityCapture",
		"FacilityControl"
	],
	"logicalAndCharactersWithWorlds": true,
	"worlds": [
		"all"
	]
}

NSO Specific Issues

NSO Issues Megathread

A compliation of know NSO based issues also combining older issues from #4 and #6.

NSO Current Faction (Streaming)

Its not currently possible to know what the current faction is for a NSO players events. Death events are the prime example of this. Without knowing the current team_id all NSO -> NSO kills are teamkills.
This issue was resolved as of 2022/8/27 with the release of attacker_team_id and team_id in to payload death events.

Missing Loadouts (Census)

NSO loadout entries missing from the /loadout collection. Leonhard mapped them to the following values:

loadout_id profile_id faction_id code_name
28 190 4 NSO Infiltrator
29 191 4 NSO Light Assault
30 192 4 NSO Medic
31 193 4 NSO Engineer
32 194 4 NSO Heavy Assault
45 252 4 NSO MAX

This issue was resolved as of 2023/2/09 with the collections update in the Love Letter update.

NSO Characters not included in collections (Census)

All NSO characters are not included inside the /characters_item collection. This will return an empty array.

This issue was resolved as of 2022/9/23 with an update

NSO Missing Weapons (Census) (Part of the missing _Intergrations Data)

Most new weapons used by NSO added as part of _Intergrations are still missing from the items/weapons collections. A community collection mapping item_id to its name can be found here.

A simple way to test missing data for example is this link to the NS Scorpion which has been missing from items (and other collections) since it was added, as we know the ID from our sanction tracking we can see that its data is missing

This issue was resolved as of 2023/2/09 with the collections update in the Love Letter update.

NSO Directives Missing (Census) (Part of the missing _Intergrations Data)

All new directives added for NSO chracters are currently missing from the /directive_tree collection. Making it very difficult to calculate players directive scores.

Global servers collection issues

From the Global Server Collection for PS2 we've seen the following issues:

  • During server maintenance last_reported_state reports as low. The desired behaviour would be for it to report down. Or have another maintenance flag within this collection for each item.
  • Soltech is missing.

On the 02/02/2021 Emerald was the only server to go down for maintenance. Due to the nature of it being a single server being taken offline, there was no way* to detect this through the API.

*While the Worlds Collection does report on a per server bases, and did show Emerald as locked during the time it has proved in the past to be a very unreliable method of detecting per server maintenance/down time. As in the past the collection would rapidly switch between locked/online on a per server basis changing minute to minute, leaving it untrustworthy.

Document item_ids from the _Integration update and add to sanction list

Here's what I've seen so far, looking for input for anyone who's figured any of them out, please comment below if you know and I'll try and update this comment as I get feedback:

Item ID,Item Category,Item Name
6009860,??DERVISH/0??,DV-22 Raycaster
6009861,??DERVISH/0??,DV-22T Lightweaver
6009927,??DERVISH/0??,DV-XE
6009928,??DERVISH/0??,DV-21 Lotus
6009991,??DERVISH/0??,DV-LAT Pixie
6009992,??DERVISH/0??,DV-XAT

Non-existent `facility_id`/`map_region` emitted under `FacilityControl` events during continent locks

Minor issue of annoyance, but I have the following facilities that are referenced by FacilityControl events during continent locks.

I cannot find any definition or reference to these facilities from any official or unofficial data source, and it would be nice to either have them added so they can be looked up, or stopped from emitting via the streaming API.

List of missing facilities:

//{##} indicates facility_id
Map region missing: Amerish — {400127}
Map region missing: Indar — {253}
Map region missing: Oshur — {400389}
Map region missing: Oshur — {400408}

Listening with the following subscription:

{
  eventNames: [ 'FacilityControl', 'ContinentUnlock', 'ContinentLock' ],
  logicalAndCharactersWithWorlds: false,
  worlds: [ '13', '17', '1', '10' ]
}

Example events:

//these have been read into my own object types, but should be clear enough
{
  facility_id: 400389,
  outfit_id: null,
  old_faction_id: 2,
  new_faction_id: 1,
  duration_held: 65586,
  event_name: 'FacilityControl',
  timestamp: 2022-02-20T15:30:27.000Z,
  world_id: 13,
  zone_id: 344,
  zone_id_base: 344,
  zone_id_instance: null
}
{
  facility_id: 400408,
  outfit_id: null,
  old_faction_id: 2,
  new_faction_id: 1,
  duration_held: 65586,
  event_name: 'FacilityControl',
  timestamp: 2022-02-20T15:30:27.000Z,
  world_id: 13,
  zone_id: 344,
  zone_id_base: 344,
  zone_id_instance: null
}

ContinentUnlock responses missing

ContinentUnlock events don't get sent when a continent unlocks and have been missing for years.
The corresponding ContinentLock events are fine and healthy though.

Possible typo single_character_by_id on friends resolve

The collection single_character_by_id can resolve friends, however the friends_list property that is added will always return an empty array. This is probably due to that friends_list is whitelisted but the joined collection(characters_friend) uses friend_list.

Need final review of new Weapons directory layout and readme files

@cooltrain7 Now that the last unsanctioned weapons are finally merged into the community list, I've reorganized the directory structure a little and updated the readme files.

Can you please:

  • Let me know if the structure and readmes look ok?
  • Let me know if the sanction list file names are a good format to you or if we should change/organize at all?

Allow direct query of continent locked/unlocked status

Right now, one can only directly check continent lock/unlock status by checking ownership of all 3 warpgates on that respective continent. Unfortunately, this isn't even guaranteed in the cases of DBG staff manually locking or unlocking continents or doing zone restarts; the continents can reach a state where they are locked in-game but warpgate ownership is not consistent. You can sometimes track this via streaming API events but that isn't always simple or 100% either.

I propose a world_zone collection (or something similar) which you can lookup world + zone ids and see information like:

  • If the continent is currently locked or unlocked
  • If locked, who owns it

Ongoing Issue: Census Collections Offline (2021/8/25)

The Issue:

A range of 22 (static?) collections was spotted offline at 19:00 UTC on 2021/8/25.
All of the following collections return a {"error":"No data found."} object.
The missing collections are the following:

directive
directive_tier
directive_tree
directive_tree_category
effect
effect_type
fire_mode_2
fire_mode_to_projectile
fire_mode_type
objective
objective_set_to_objective
objective_type
player_state
player_state_group_2
projectile
projectile_flight_type
resist_type
reward
reward_group_to_reward
reward_set_to_reward_group
reward_type
target_type

What service does this effect?

Census Collections

Extra Information?

Leonhard created the following json showing the missing collections and the fields within them:
Collections.txt

Map tiles endpoint

Currently the community has to scape map tiles out of the game's assets in order to generate LODs required for rendering map tiles. As of recent years since transition to .pak2 files, this has become obsecenly difficult.

We would like to see an endpoint (similar to the item images assets) which exposes each map at various LODs. This should be possible already as the game has approx 3 LODs as part of it's map, it should just be a matter of exporting those and exposing via the API.

There will need to be some sort of process added when the map gets update to export the new tiles, or this would get out of date rather quickly.

Issue Roundup: Love Letter Update

After the recent Love Letter Update to live we recived an update to the static collections (internally the design data) on the 9th.
In an attempt to track anything that slipped through the cracks the following issues still have missing or possibly incorrect data.

Zone/Map Region

/zone now has info for nexus, extinction, desolation. Its on the to-do list to add the relevant data to /map_hex and map_region.

NSO loadout entries missing

The NSO classes are missing from the ps2/loadout collection.

I did some testing comparing kill loadout IDs with weapons fire modes and profiles; this is the data that's missing:

loadout_id profile_id faction_id code_name
28 190 4 NSO Infiltrator
29 191 4 NSO Light Assault
30 192 4 NSO Medic
31 193 4 NSO Engineer
32 194 4 NSO Heavy Assault
45 252 4 NSO MAX

ECONNRESET responses from Census

Occasionally, Census REST responds with nonsence or a ECONNRESET (also known as a peer connection reset). In my very detailed monitoring, I've calculated on average this happens is ~50 a day.

When it does happen, it appears to happen for multiple requets being made to a particular endpoint, or all at once. In example, it behaves in the following ways:

  1. Requests go through as normal
  2. The issue occurs
  3. All requests on all endpoints respond with ECONNRESET for ~2 minutes
  4. Requests return back to normal until it happens again.

It acts like it's being rate limited. However in having chats with Alvin (API maintainer) my serviceid hasn't hit such limits.

DBG staff are struggling to figure out when this occurs, even after providing them very detailed metrics (such as below). All times are in UTC.

For context, my application uses the NodeJS Axios library, but after extensive googling I could find nothing to support evidence that the package has any issues of this manner. This is purely connection issue on the Census side.

Screenshot 2021-02-03 at 20 56 35

Bushwhacker title

Little update for the titles.csv:

You can get the Bushwhacker title, by destroying plants in the new containment sites on Esamir near B point, about 100 iirc.
Then interact with the big plant at the B point entry, and it will give you the title after some dialogues

Good luck for fitting that into the table D:

Expose current Faction of NSO

There is currently no way to tell what faction an NSO is on through the API. This makes differentiating teamkills from regular kills impossible with NSO players when processing the Death events sent through the Streaming API.

A solution would be exposing a current_faction_id key in the payloads sent for for Death events that can be used to see if an NSO killer was on the same faction as their victim. For any other factions, this field would be equal to their regular faction.

PS4 Census Issues

These are the issues we have ran into when working on Auraxis Bot for supporting PS4.

character Collection

* the prestige_level field is not resolved for PS4 characters. The current work around is to check the items the character has unlocked and find if they have unlocked an ASP title.

Fixed

outfit Collection

  • c:resolve=rank does not show the outfit ranks and ordinals of PS4 outfits mostly like caused by the next issue

outfit_rank Collection

This collection doesn't work at all for any PS4 outfits. The fix we use for not being able to access PS4 outfit ranks is to hard code the values. As far as I'm aware PS4 outfits can't change their ranks which means every outfit should have the same rank and structure.

Possible incorrect other_id field for GainExperience_experience_id_56

The payload for GainExperience_experience_id_56 (Squad spawn) may be incorrect, with the other_id field containing the same information as the character_id field.

Example:

amount: "10"
character_id: "5428061686721181409"
event_name: "GainExperience"
experience_id: "56"
loadout_id: "13"
other_id: "5428061686721181409"
timestamp: "1600802045"
world_id: "13"

I would expect the other_id field to contain the NPC ID of the NPC that provided the spawn, such as a sunderer spawn event:

amount: "5"
character_id: "5429038329433132081"
event_name: "GainExperience"
experience_id: "233"
loadout_id: "29"
other_id: "17217290434"
timestamp: "1600801687"
world_id: "13"
zone_id: "4"

The other events that provide spawns (construction spawns, sunderer spawns and galaxy spawns) all follow this same format, with the NPC ID in the other_id field. Having the NPC ID is useful when used with events such as router destroy, and sunderer destroy, as the other_id field in those events contain the NPC ID of the NPC that was destroyed. Only exp ID 56 (squad spawns) does not follow this format, making me believe it is an error.

As an example of what is possible when the NPC ID is used, I can track when a router is spawned (by listening to ItemAdded events), when a router is first used as a spawn, and when that router was destroyed. I can do something similar with sunderers, tracking when that NPC ID first shows up and when it's destroyed by matching the NPC ID field. I cannot do this with squad beacons, which is a real bummer.

Achievement entries missing

The Following list of achievement/IDs are missing from the achievements collection.

Missing IDs
93629
93630
93631
93632
93637
93638
93639
93640
93641
93642
93643
93644

Updated as of 2023/02/14

Census Stream subscription being altered

I didn’t see an issue for this and I am not sure if it is already addressed, but for completeness sake ayway.

When you have an active connection to the websocket it can randomly happen that you stop receiving some events. From what we found, sending an empty subscription when this happens reveals that the subscription has actually been altered. There is really no pattern, sometimes you will be fine for a long time and other times it will happen really fast.

Sanctions: Assign sanction for Seeker HLX

Seeker HLX was recently added, need to come to a consensus on how it should be sanctioned.

Overall sanction list, for reference: https://github.com/cooltrain7/Planetside-2-API-Tracker/blob/master/Weapons/sanction-list.csv

Points of comparison, for discussion:

  • All the crossbows are currently none
  • All the archers are currently infantry
  • All the battle rifles are currently infantry
  • Most infantry weapons that do explosive damage are currently none
  • All heavy weapons (including thumpers) are currently none

Desolation facility data missing

None of the desolation facilities seem to be included in map-specific collections like ps2/map_region.

The following table came up in the API Discord channel a while ago (this is provided for-the-record, I have not tested or validated these at all).

Name facility_id region_id
Northern Warpgate 400278 18215
South Western Warpgate 400279 18216
South Eastern Warpgate 400280 18217
Relic A 400284 18221
Relic B 400285 18222
Relic C 400287 18224
Relic D 400288 18225
Relic E 400289 18226
Relic F 400290 18227
Relic G 400291 18228
Relic H 400292 18229
Relic I 400293 18230

TR missing ItemAdded events that VS and NC get

When pulling a router on VS and NC, there is an ItemAdded event sent. When on TR, this ItemAdded event is never seen in the API.

Example message:{"payload":{"character_id":"5429053570964493729","context":"GenericTerminalTransaction","event_name":"ItemAdded","item_count":"1","item_id":"6003552","timestamp":"1614552570","world_id":"19","zone_id":"8"},"service":"event","type":"serviceMessage"}

Steps to recreate:

  1. Subscribe to ItemAdded for a character about to pull a router on NC or VS. When pulled, an event like the example above will be sent
  2. Subscribe to ItemAdded for a character on TR about to pull a router. When pulled, no event like the example above is sent

Other things tried:

  • Listen to all ItemAdded for all character in the server the TR character is on. No event for the TR; NC and VS get the event
  • Listen to all ItemAdded for all characters across all server. No event for the TR; NC and VS get the event
  • Listen to only ItemAdded for the character using a matching world_id. No event for TR; NC and VS get the event
  • Listen to only ItemAdded for the character without giving a world_id. No event for TR; NC and VS get the event

Ongoing Issue: Census Collections Offline (2021/9/15)

The Issue:

A range of 22 (static?) collections was spotted offline at 19:46 UTC on 2021/9/15.
All of the following collections return a {"error":"No data found."} object.
The missing collections are the following:

See issue #94 matching all the same collections.

What service does this effect?

Census Collections

Extra Information?

Matching #94 in information.

Kills made by non-weapon types breakdown (e.g. Wrelstorm)

I would like to see a seperation of the kill events for World deaths. In this instance in particular, being flung to your death by Orbital Strikes is rather hard to calculate, you have to depend on recieving a War Asset Orbital Strike weapon kill, then add some logic in your application to wait ~15 seconds for any subsequent weapon_id = 0 events.

There are also no way to determine kills by the Esamir storm.

Weapon ID could still be 0 (or not), but if we add some sort of type_id to this, e.g. 0 = gravity (plunged self to death) 1 = gravity caused by OS, 2 = Esamir storm, 3 = death by shattered warpgate, etc.

Discussion: Format for sanction list keys/labels + what to use in machine version

This community review list I started is using slightly different labels from DA, should we port back to match them or keep the new?

Also, should we use the old single letter DA category IDs for the machine version, or just keep the full names we're using now? Or, use a new single letter based on the newer names in use?

DA Keys/Labels:

N I G T P S H
No Sanction Infantry Secondary Tank Piloting Sniping Shotgun

https://github.com/cooltrain7/Planetside-2-API-Tracker/blob/master/Weapons/sanction-list.csv
https://github.com/cooltrain7/Planetside-2-API-Tracker/blob/master/Weapons/sanction-list-machine.csv

Ongoing Issue: Emerald Stream Offline (2021/9/29)

The Issue:

After todays maintaince for ps2, no events are being send/received for the emerald(17) server since the downtime. The stream reports itself as online.

What service does this effect?

Stream API - Emerald stream

Extra Information?

None

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.