gamedig / node-gamedig

Query game servers and not only! Node.JS/Deno/Bun or Bash (via the CLI).
https://www.npmjs.com/package/gamedig
MIT License
613 stars 145 forks source link

Battebit Remastered Support #530

Open JesseUCAVed opened 10 months ago

JesseUCAVed commented 10 months ago

It would be great if the game Battlebit Remastered was added to the supported games list. I currently have to use the BattleMetrics API for pulling info, which isn't ideal when this fantastic library/plugin exists. :)

podrivo commented 10 months ago

Hey @JesseUCAVed!

Do you have an IP:PORT so we can test? I wasn't able to find server IPs on BattleMetrics.

JesseUCAVed commented 10 months ago

Hey,

First time with this Github thing so not sure if replying to this e-mail works.

IP for my server is 104.128.50.35 and I know one of the ports(primary) is 29993 and I think the other is 29994 or 29992. I can verify the last two later for sure.

Thanks

On Fri, Feb 2, 2024, 7:59 AM Pedro Ivo Hudson @.***> wrote:

Hey @JesseUCAVed https://github.com/JesseUCAVed!

Do you have an IP:PORT so we can test? I wasn't able to find server IPs on BattleMetrics https://www.battlemetrics.com/servers/battlebit.

— Reply to this email directly, view it on GitHub https://github.com/gamedig/node-gamedig/issues/530#issuecomment-1924051727, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZBVEOA3CJAIRGLCIMSJGCLYRT5LJAVCNFSM6AAAAABCVG3KXGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMRUGA2TCNZSG4 . You are receiving this because you were mentioned.Message ID: @.***>

podrivo commented 10 months ago

Thank you!

I've tried running the attempt protocol tool in these IPs and PORTs, but it failed on all protocols. We might need more info about how to query BatteBit Remastered servers.

JesseUCAVed commented 10 months ago

There is the API endpoint port of 29295, but that's more for management I believe. Game port is definitely 29993. I'm just trying to remember if it had a seperate query port. I know Battlemetrics somehow pulls all the data, but they always have some magical way of doing that and pulling more than Steam generally allows.

On Fri, Feb 2, 2024 at 8:54 AM Pedro Ivo Hudson @.***> wrote:

Thank you!

I've tried running the attempt protocol tool in these IPs and PORTs, but it failed on all protocols. We might need more info about how to query BatteBit Remastered servers.

— Reply to this email directly, view it on GitHub https://github.com/gamedig/node-gamedig/issues/530#issuecomment-1924152993, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZBVEOBJYXYPHBTVE2S5YJ3YRUDZPAVCNFSM6AAAAABCVG3KXGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMRUGE2TEOJZGM . You are receiving this because you were mentioned.Message ID: @.***>

podrivo commented 9 months ago

Tested with the IP 104.128.50.35 on ports 29295 and 29993, but no luck... :(

Found this other server list, but no IPs again. https://bbspy.net/ Server info might be via RCON.

podrivo commented 9 months ago

Found a public API that queries all servers: https://publicapi.battlebit.cloud/Servers/GetServerList Again, no IPs on this list.

@JesseUCAVed Can you find your server in the link above?

JesseUCAVed commented 9 months ago

My Battlebit server was listed before I added RCON. Battlebit doesn't natively have RCON so for battlemetrics it's "hacked" in so for that other site to be retrieving it, it has to be public somewhere. 🤔

On Sun, Feb 4, 2024, 6:59 PM Pedro Ivo Hudson @.***> wrote:

Tested with the IP 104.128.50.35 on ports 29295 and 29993, but no luck... :(

Found this other server list, but no IPs again. https://bbspy.net/ Server info might be via RCON.

— Reply to this email directly, view it on GitHub https://github.com/gamedig/node-gamedig/issues/530#issuecomment-1926090530, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZBVEOFP2MMURZWJ4CGQ5MDYSA4HXAVCNFSM6AAAAABCVG3KXGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMRWGA4TANJTGA . You are receiving this because you were mentioned.Message ID: @.***>

JesseUCAVed commented 9 months ago

I will look shortly after dinner.

On Sun, Feb 4, 2024, 7:00 PM Pedro Ivo Hudson @.***> wrote:

Found a public API that queries all servers: https://publicapi.battlebit.cloud/Servers/GetServerList Again, no IPs on this list.

@JesseUCAVed https://github.com/JesseUCAVed Can you find your server in the link above?

— Reply to this email directly, view it on GitHub https://github.com/gamedig/node-gamedig/issues/530#issuecomment-1926091854, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZBVEOHU7PPK3ZK7T2CIQE3YSA4NJAVCNFSM6AAAAABCVG3KXGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMRWGA4TCOBVGQ . You are receiving this because you were mentioned.Message ID: @.***>

podrivo commented 9 months ago

Yeah, server info might be coming from the public API. I haven't checked everything, but I bet it's the same info in BattleMetrics, this server list and the public API.

JesseUCAVed commented 9 months ago

Yeah my server is in that list automatically and pulling the same data that Battlemetrics does.

On Sun, Feb 4, 2024 at 7:05 PM Pedro Ivo Hudson @.***> wrote:

Yeah, server info might be coming from the public API. I haven't checked everything, but I bet it's the same info in BattleMetrics https://www.battlemetrics.com/servers/battlebit, this server list https://bbspy.net/ and the public API https://publicapi.battlebit.cloud/Servers/GetServerList.

— Reply to this email directly, view it on GitHub https://github.com/gamedig/node-gamedig/issues/530#issuecomment-1926096002, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZBVEOG4FPFSWN6N6BOWO33YSA46ZAVCNFSM6AAAAABCVG3KXGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMRWGA4TMMBQGI . You are receiving this because you were mentioned.Message ID: @.***>

JesseUCAVed commented 9 months ago

If you and anyone else involved in the development/addition of Battlebit wants you can join our Discord to communicate with myself/my clan dev easier. https://discord.gg/rsclan

Just le me know if you do so I can grant you access to a channel for this discussion.

On Sun, Feb 4, 2024 at 7:57 PM Jolly Roger Pilot Car Service Height Pole-Steer @.***> wrote:

Yeah my server is in that list automatically and pulling the same data that Battlemetrics does.

On Sun, Feb 4, 2024 at 7:05 PM Pedro Ivo Hudson @.***> wrote:

Yeah, server info might be coming from the public API. I haven't checked everything, but I bet it's the same info in BattleMetrics https://www.battlemetrics.com/servers/battlebit, this server list https://bbspy.net/ and the public API https://publicapi.battlebit.cloud/Servers/GetServerList.

— Reply to this email directly, view it on GitHub https://github.com/gamedig/node-gamedig/issues/530#issuecomment-1926096002, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZBVEOG4FPFSWN6N6BOWO33YSA46ZAVCNFSM6AAAAABCVG3KXGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMRWGA4TMMBQGI . You are receiving this because you were mentioned.Message ID: @.***>

podrivo commented 9 months ago

Nice! So we have a public API that queries all servers: https://publicapi.battlebit.cloud/Servers/GetServerList But no IP or PORT to have a direct connection to a specific server.

I'm not sure how to implement this, but maybe instead of an IP:PORT we could pass a NAME that will filter the object got from the public API?

Something like:

const url = 'https://publicapi.battlebit.cloud/Servers/GetServerList'
const searchName = 'Frontline'

fetch(url)
  .then(response => response.json())
  .then(data => {
    const filteredResults = data.filter(item => item.Name.includes(searchName))
    console.log(filteredResults)
  })
  .catch(error => console.error('Error fetching data:', error))
[
    {
        "Name": "#10 [E4GL] | Frontline | discord.gg/E4GL",
        "Map": "Wakistan",
        "MapSize": "Ultra",
        "Gamemode": "FRONTLINE",
        "Region": "Europe_Central",
        "Players": 0,
        "QueuePlayers": 0,
        "MaxPlayers": 254,
        "Hz": 120,
        "DayNight": "Day",
        "IsOfficial": false,
        "HasPassword": false,
        "AntiCheat": "EAC",
        "Build": "Production 2.2.5 Hotfix"
    },
    {
        "Name": " [01][Clã BR] SemChorar.com [Frontline 24/7]",
        "Map": "SandySunset",
        "MapSize": "Ultra",
        "Gamemode": "FRONTLINE",
        "Region": "Brazil_Central",
        "Players": 120,
        "QueuePlayers": 2,
        "MaxPlayers": 254,
        "Hz": 144,
        "DayNight": "Day",
        "IsOfficial": false,
        "HasPassword": false,
        "AntiCheat": "EAC",
        "Build": "Production 2.2.5 Hotfix"
    }
]
JesseUCAVed commented 9 months ago

That's a crazy bit of info to have without an ip to narrow it lol

On Sun, Feb 4, 2024 at 8:37 PM Pedro Ivo Hudson @.***> wrote:

Nice! So we have a public API that queries all servers: https://publicapi.battlebit.cloud/Servers/GetServerList But no IP or PORT to have a direct connection to a specific server.

I'm not sure how to implement this, but maybe instead of an IP:PORT we could pass a NAME that will filter the object got from the public API?

Something like:

const url = 'https://publicapi.battlebit.cloud/Servers/GetServerList' const searchName = 'Frontline'

fetch(url) .then(response => response.json()) .then(data => { const filteredResults = data.filter(item => item.Name.includes(searchName)) console.log(filteredResults) }) .catch(error => console.error('Error fetching data:', error))

[ { "Name": "#10 [E4GL] | Frontline | discord.gg/E4GL", "Map": "Wakistan", "MapSize": "Ultra", "Gamemode": "FRONTLINE", "Region": "Europe_Central", "Players": 0, "QueuePlayers": 0, "MaxPlayers": 254, "Hz": 120, "DayNight": "Day", "IsOfficial": false, "HasPassword": false, "AntiCheat": "EAC", "Build": "Production 2.2.5 Hotfix" }, { "Name": " [01][Clã BR] SemChorar.com [Frontline 24/7]", "Map": "SandySunset", "MapSize": "Ultra", "Gamemode": "FRONTLINE", "Region": "Brazil_Central", "Players": 120, "QueuePlayers": 2, "MaxPlayers": 254, "Hz": 144, "DayNight": "Day", "IsOfficial": false, "HasPassword": false, "AntiCheat": "EAC", "Build": "Production 2.2.5 Hotfix" } ]

— Reply to this email directly, view it on GitHub https://github.com/gamedig/node-gamedig/issues/530#issuecomment-1926174862, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZBVEOFFLPY6RUG5XMTH2SDYSBHXDAVCNFSM6AAAAABCVG3KXGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMRWGE3TIOBWGI . You are receiving this because you were mentioned.Message ID: @.***>

livingflore commented 9 months ago

Nice! So we have a public API that queries all servers: https://publicapi.battlebit.cloud/Servers/GetServerList But no IP or PORT to have a direct connection to a specific server.

I'm not sure how to implement this, but maybe instead of an IP:PORT we could pass a NAME that will filter the object got from the public API?

Something like: ...

hi, BBR staff here we do not have any query for servers except this public method unfortunately i will consult with Oki (lead dev) if we could add some kind of public server identifier to make it easier, but can't provide exact ETA of it (likely after upcoming update)

JesseUCAVed commented 9 months ago

Best bet is to just add an ip and port identifier to the public json. :)

On Sun, Feb 11, 2024 at 8:56 AM livingflore @.***> wrote:

Nice! So we have a public API that queries all servers: https://publicapi.battlebit.cloud/Servers/GetServerList But no IP or PORT to have a direct connection to a specific server.

I'm not sure how to implement this, but maybe instead of an IP:PORT we could pass a NAME that will filter the object got from the public API?

Something like:

const url = 'https://publicapi.battlebit.cloud/Servers/GetServerList' const searchName = 'Frontline'

fetch(url) .then(response => response.json()) .then(data => { const filteredResults = data.filter(item => item.Name.includes(searchName)) console.log(filteredResults) }) .catch(error => console.error('Error fetching data:', error))

[ { "Name": "#10 [E4GL] | Frontline | discord.gg/E4GL", "Map": "Wakistan", "MapSize": "Ultra", "Gamemode": "FRONTLINE", "Region": "Europe_Central", "Players": 0, "QueuePlayers": 0, "MaxPlayers": 254, "Hz": 120, "DayNight": "Day", "IsOfficial": false, "HasPassword": false, "AntiCheat": "EAC", "Build": "Production 2.2.5 Hotfix" }, { "Name": " [01][Clã BR] SemChorar.com [Frontline 24/7]", "Map": "SandySunset", "MapSize": "Ultra", "Gamemode": "FRONTLINE", "Region": "Brazil_Central", "Players": 120, "QueuePlayers": 2, "MaxPlayers": 254, "Hz": 144, "DayNight": "Day", "IsOfficial": false, "HasPassword": false, "AntiCheat": "EAC", "Build": "Production 2.2.5 Hotfix" } ]

hi, BBR staff here we do not have any query for servers except this public method unfortunately i will consult with Oki (lead dev) if we could add some kind of public server identifier to make it easier, but can't provide exact ETA of it (likely after upcoming update)

— Reply to this email directly, view it on GitHub https://github.com/gamedig/node-gamedig/issues/530#issuecomment-1937792850, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZBVEOCL7MCXJJTBYTRRAPDYTDSZRAVCNFSM6AAAAABCVG3KXGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMZXG44TEOBVGA . You are receiving this because you were mentioned.Message ID: @.***>

podrivo commented 9 months ago

Hey @livingflore. Thanks for joining the conversation! (:

Best bet is to just add an ip and port identifier to the public json. :)

Yes, this might do the trick! 👍

CosminPerRam commented 9 months ago

@livingflore Thank you for considering this, very happy to see a game dev being involved around here (:

Please consider adding query capabilities to your dedicated servers, although services (like the one you provide) are great, they dont guarantee that it will stay up forever, whereas dedicated servers will (as in the sens that you query them directly).

As I see that BBR is made in Unity, please consider integrating Valve's A2S Protocol, as its very widely used and we already provide support for it, although its quite old, it does its job greatly. I know that Unity tries to encourage SQP, we dont have it implemented yet but we are looking into it.

xCausxn commented 4 months ago

They could also look to add a one way hash of the ip:port, should keep it somewhat secure while also allowing easy querying.

CosminPerRam commented 4 months ago

Hey @livingflore, any updates?

livingflore commented 4 months ago

Hey @livingflore, any updates?

unfortunately not, Oki is too busy with the update, but i'm def keeping this in my list