From ab6e9064d2415f68a7d146d7884bfcf34f935795 Mon Sep 17 00:00:00 2001 From: mmorrison Date: Thu, 7 Feb 2019 00:37:33 -0600 Subject: [PATCH] More release dates and readme cleanup --- README.md | 201 +++++++++++++++++++++----------------------- games.txt | 153 ++++++++++++++++----------------- lib/GameResolver.js | 44 +++++++--- 3 files changed, 202 insertions(+), 196 deletions(-) diff --git a/README.md b/README.md index b3bbd47..93f16d1 100644 --- a/README.md +++ b/README.md @@ -85,8 +85,6 @@ Games List | `aoe2` | Age of Empires 2 (1999) | `alienarena` | Alien Arena (2004) | `alienswarm` | Alien Swarm (2010) -| `arkse` | Ark: Survival Evolved (2017) -| `atlas` | Atlas (2018) | `avp2` | Aliens versus Predator 2 (2001) | `avp2010` | Aliens vs. Predator (2010) | `americasarmy` | America's Army (2002) @@ -94,57 +92,63 @@ Games List | `americasarmy3` | America's Army 3 (2009) | `americasarmypg` | America's Army: Proving Grounds (2015) | `arcasimracing` | Arca Sim Racing (2008) -| `arma` | ARMA: Armed Assault (2007) +| `arkse` | Ark: Survival Evolved (2017) | `arma2` | ARMA 2 (2009) | `arma2oa` | ARMA 2: Operation Arrowhead (2010) +| `arma3` | ARMA 3 (2013) +| `arma` | ARMA: Armed Assault (2007) | `armacwa` | ARMA: Cold War Assault (2011) | `armar` | ARMA: Resistance (2011) -| `arma3` | ARMA 3 (2013) | `armagetron` | Armagetron Advanced (2001) +| `atlas` | Atlas (2018) | `baldursgate` | Baldur's Gate (1998) | `bat1944` | Battalion 1944 (2018) | `bf1942` | Battlefield 1942 (2002) -| `bfv` | Battlefield Vietnam (2004) | `bf2` | Battlefield 2 (2005) | `bf2142` | Battlefield 2142 (2006) -| `bfbc2` | Battlefield: Bad Company 2 (2010) | `bf3` | Battlefield 3 (2011) | `bf4` | Battlefield 4 (2013) | `bfh` | Battlefield Hardline (2015) +| `bfv` | Battlefield Vietnam (2004) +| `bfbc2` | Battlefield: Bad Company 2 (2010) | `breach` | Breach (2011) | `breed` | Breed (2004) | `brink` | Brink (2011) | `buildandshoot` | Build and Shoot / Ace of Spades Classic (2012) | `cod` | Call of Duty (2003) -| `coduo` | Call of Duty: United Offensive (2004) | `cod2` | Call of Duty 2 (2005) | `cod3` | Call of Duty 3 (2006) | `cod4` | Call of Duty 4: Modern Warfare (2007) -| `codwaw` | Call of Duty: World at War (2008) | `codmw2` | Call of Duty: Modern Warfare 2 (2009) | `codmw3` | Call of Duty: Modern Warfare 3 (2011) +| `coduo` | Call of Duty: United Offensive (2004) +| `codwaw` | Call of Duty: World at War (2008) | `callofjuarez` | Call of Juarez (2006) | `chaser` | Chaser (2003) | `chrome` | Chrome (2003) | `codenameeagle` | Codename Eagle (2000) -| `commandos3` | Commandos 3: Destination Berlin (2003) | `cacrenegade` | Command and Conquer: Renegade (2002) +| `commandos3` | Commandos 3: Destination Berlin (2003) | `conanexiles` | Conan Exiles (2018) | `contactjack` | Contract J.A.C.K. (2003) | `cs15` | Counter-Strike 1.5 (2002) | `cs16` | Counter-Strike 1.6 (2003) | `cs2d` | Counter-Strike: 2D (2004) | `cscz` | Counter-Strike: Condition Zero (2004) -| `css` | Counter-Strike: Source (2004) | `csgo` | Counter-Strike: Global Offensive (2012) | [Notes](#csgo) +| `css` | Counter-Strike: Source (2004) | `crossracing` | Cross Racing Championship Extreme 2005 (2005) | `crysis` | Crysis (2007) -| `crysiswars` | Crysis Wars (2008) | `crysis2` | Crysis 2 (2011) +| `crysiswars` | Crysis Wars (2008) | `daikatana` | Daikatana (2000) +| `dnl` | Dark and Light (2017) | `dmomam` | Dark Messiah of Might and Magic (2006) | `darkesthour` | Darkest Hour: Europe '44-'45 (2008) -| `dayz` | DayZ (2018) | [Notes](#dayz) +| `dod` | Day of Defeat (2003) +| `dods` | Day of Defeat: Source (2005) +| `doi` | Day of Infamy (2017) +| `dayz` | DayZ (2018) | `dayzmod` | DayZ Mod (2013) | `deadlydozenpt` | Deadly Dozen: Pacific Theater (2002) | `dh2005` | Deer Hunter 2005 (2004) @@ -153,94 +157,85 @@ Games List | `devastation` | Devastation (2003) | `dinodday` | Dino D-Day (2011) | `dirttrackracing2` | Dirt Track Racing 2 (2002) -| `dnl` | Dark and Light (2017) -| `dod` | Day of Defeat (2003) -| `dods` | Day of Defeat: Source (2005) -| `doi` | Day of Infamy (2017) | `doom3` | Doom 3 (2004) | `dota2` | Dota 2 (2013) | `drakan` | Drakan: Order of the Flame (1999) | `etqw` | Enemy Territory: Quake Wars (2007) | `fear` | F.E.A.R. (2005) -| `f12002` | Formula One 2002 (2002) | `f1c9902` | F1 Challenge '99-'02 (2002) | `farcry` | Far Cry (2004) | `farcry2` | Far Cry 2 (2008) +| `f12002` | Formula One 2002 (2002) | `fortressforever` | Fortress Forever (2007) -| `flashpoint` | Operation Flashpoint: Cold War Crisis (2001) +| `ffow` | Frontlines: Fuel of War (2008) +| `garrysmod` | Garry's Mod (2004) +| `geneshift`
`mutantfactions` | Geneshift (2017) +| `giantscitizenkabuto` | Giants: Citizen Kabuto (2000) +| `globaloperations` | Global Operations (2002) +| `ges` | GoldenEye: Source (2010) +| `gore` | Gore: Ultimate Soldier (2002) +| `fivem` | Grand Theft Auto V - FiveM (2013) +| `mtasa` | Grand Theft Auto: San Andreas - Multi Theft Auto (2004) +| `mtavc` | Grand Theft Auto: Vice City - Multi Theft Auto (2002) +| `gunmanchronicles` | Gunman Chronicles (2000) +| `hl2dm` | Half-Life 2: Deathmatch (2004) +| `hldm` | Half-Life Deathmatch (1998) +| `hldms` | Half-Life Deathmatch: Source (2005) +| `halo` | Halo (2003) +| `halo2` | Halo 2 (2007) +| `heretic2` | Heretic II (1998) +| `hexen2` | Hexen II (1997) +| `had2` | Hidden & Dangerous 2 (2003) +| `homefront` | Homefront (2011) +| `homeworld2` | Homeworld 2 (2003) +| `hurtworld` | Hurtworld (2015) +| `igi2` | I.G.I.-2: Covert Strike (2003) +| `il2` | IL-2 Sturmovik (2001) +| `insurgency` | Insurgency (2014) +| `insurgencysandstorm` | Insurgency: Sandstorm (2018) +| `ironstorm` | Iron Storm (2002) +| `jamesbondnightfire` | James Bond 007: Nightfire (2002) +| `jc2mp` | Just Cause 2 - Multiplayer (2010) +| `kspdmp` | Kerbal Space Program - DMP Multiplayer (2015) +| `killingfloor` | Killing Floor (2009) +| `killingfloor2` | Killing Floor 2 (2016) +| `kingpin` | Kingpin: Life of Crime (1999) +| `kisspc` | Kiss: Psycho Circus: The Nightmare Child (2000) +| `kzmod` | Kreedz Climbing (2017) +| `left4dead` | Left 4 Dead (2008) +| `left4dead2` | Left 4 Dead 2 (2009) +| `m2mp` | Mafia II - Multiplayer (2010) +| `m2o` | Mafia II - Online (2010) +| `moh2010` | Medal of Honor (2010) +| `mohab` | Medal of Honor: Airborne (2007) +| `mohaa` | Medal of Honor: Allied Assault (2002) +| `mohbt` | Medal of Honor: Allied Assault Breakthrough (2003) +| `mohsh` | Medal of Honor: Allied Assault Spearhead (2002) +| `mohpa` | Medal of Honor: Pacific Assault (2004) +| `mohwf` | Medal of Honor: Warfighter (2012) +| `medievalengineers` | Medieval Engineers (2015) +| `minecraft`
`minecraftping` | Minecraft (2009) | [Notes](#minecraft) +| `minecraftpe`
`minecraftbe` | Minecraft: Bedrock Edition (2011) +| `mnc` | Monday Night Combat (2011) +| `mumble` | Mumble - GTmurmur Plugin (2005) | [Notes](#mumble) +| `mumbleping` | Mumble - Lightweight (2005) | [Notes](#mumble) +| `nascarthunder2004` | NASCAR Thunder 2004 (2003) +| `ns` | Natural Selection (2002) +| `ns2` | Natural Selection 2 (2012) +| `nfshp2` | Need for Speed: Hot Pursuit 2 (2002) +| `nab` | Nerf Arena Blast (1999) +| `netpanzer` | netPanzer (2002) +| `nwn` | Neverwinter Nights (2002) +| `nwn2` | Neverwinter Nights 2 (2006) +| `nexuiz` | Nexuiz (2005) +| `nitrofamily` | Nitro Family (2004) +| `nmrih` | No More Room in Hell (2011) +| `nolf2` | No One Lives Forever 2: A Spy in H.A.R.M.'s Way (2002) +| `nucleardawn` | Nuclear Dawn (2011) +| `openarena` | OpenArena (2005) +| `openttd` | OpenTTD (2004) +| `operationflashpoint`
`flashpoint` | Operation Flashpoint: Cold War Crisis (2001) | `flashpointresistance` | Operation Flashpoint: Resistance (2002) -| `ffow` | Frontlines: Fuel of War -| `fivem` | FiveM -| `garrysmod` | Garry's Mod -| `graw` | Ghost Recon: Advanced Warfighter -| `graw2` | Ghost Recon: Advanced Warfighter 2 -| `giantscitizenkabuto` | Giants: Citizen Kabuto -| `globaloperations` | Global Operations -| `geneshift` | Geneshift -| `ges` | GoldenEye: Source -| `gore` | Gore -| `gunmanchronicles` | Gunman Chronicles -| `hldm` | Half-Life 1 Deathmatch -| `hl2dm` | Half-Life 2 Deathmatch -| `halo` | Halo -| `halo2` | Halo 2 -| `heretic2` | Heretic 2 -| `hexen2` | Hexen 2 -| `hidden` | The Hidden: Source -| `had2` | Hidden and Dangerous 2 -| `homefront` | Homefront -| `homeworld2` | Homeworld 2 -| `hurtworld` | Hurtworld -| `igi2` | IGI-2: Covert Strike -| `il2` | IL-2 Sturmovik -| `insurgency` | Insurgency -| `insurgencysandstorm` | Insurgency: Sandstorm -| `ironstorm` | Iron Storm -| `jamesbondnightfire` | James Bond: Nightfire -| `jc2mp` | Just Cause 2 Multiplayer -| `killingfloor` | Killing Floor -| `killingfloor2` | Killing Floor 2 -| `kingpin` | Kingpin: Life of Crime -| `kisspc` | KISS Psycho Circus -| `kspdmp` | DMP - KSP Multiplayer -| `kzmod` | KzMod -| `left4dead` | Left 4 Dead -| `left4dead2` | Left 4 Dead 2 -| `m2mp` | Mafia 2 Multiplayer -| `m2o` | Mafia 2 Online -| `medievalengineers` | Medieval Engineers -| `mohaa` | Medal of Honor: Allied Assault -| `mohpa` | Medal of Honor: Pacific Assault -| `mohab` | Medal of Honor: Airborne -| `mohsh` | Medal of Honor: Spearhead -| `mohbt` | Medal of Honor: Breakthrough -| `moh2010` | Medal of Honor 2010 -| `mohwf` | Medal of Honor: Warfighter -| `minecraft` | Minecraft | [Notes](#minecraft) -| `minecraftpe` | Minecraft: Pocket Edition -| `mnc` | Monday Night Combat -| `mtavc` | Multi Theft Auto: Vice City -| `mtasa` | Multi Theft Auto: San Andreas -| `mumble` | Mumble (Requires GTmurmur plugin) | [Notes](#mumble) -| `mumbleping` | Mumble (Lightweight) | [Notes](#mumble) -| `mutantfactions` | Mutant Factions -| `nascarthunder2004` | Nascar Thunder 2004 -| `netpanzer` | netPanzer -| `nmrih` | No More Room in Hell -| `ns` | Natural Selection -| `ns2` | Natural Selection 2 -| `nfshp2` | Need for Speed: Hot Pursuit 2 -| `nab` | Nerf Arena Blast -| `nwn` | Neverwinter Nights -| `nwn2` | Neverwinter Nights 2 -| `nexuiz` | Nexuiz -| `nitrofamily` | Nitro Family -| `nolf` | No One Lives Forever -| `nolf2` | No One Lives Forever 2 -| `nucleardawn` | Nuclear Dawn -| `openarena` | OpenArena -| `openttd` | OpenTTD -| `operationflashpoint` | Operation Flashpoint | `painkiller` | Painkiller | `postal2` | Postal 2 | `prey` | Prey @@ -256,8 +251,8 @@ Games List | `rallisportchallenge` | RalliSport Challenge | `rallymasters` | Rally Masters | `redorchestra` | Red Orchestra -| `redorchestraost` | Red Orchestra: Ostfront 41-45 | `redorchestra2` | Red Orchestra 2 +| `redorchestraost` | Red Orchestra: Ostfront 41-45 | `redline` | Redline | `rtcw` | Return to Castle Wolfenstein | `rfactor` | rFactor @@ -265,12 +260,11 @@ Games List | `riseofnations` | Rise of Nations | `rune` | Rune | `rust` | Rust +| `stalker` | S.T.A.L.K.E.R. | `samp` | San Andreas Multiplayer -| `spaceengineers` | Space Engineers | `ss` | Serious Sam | `ss2` | Serious Sam 2 | `shatteredhorizon` | Shattered Horizon -| `ship` | The Ship | `shogo` | Shogo | `shootmania` | Shootmania | [Notes](#nadeo-shootmania--trackmania--etc) | `sin` | SiN @@ -278,7 +272,7 @@ Games List | `soldat` | Soldat | `sof` | Soldier of Fortune | `sof2` | Soldier of Fortune 2 -| `stalker` | S.T.A.L.K.E.R. +| `spaceengineers` | Space Engineers | `stbc` | Star Trek: Bridge Commander | `stvef` | Star Trek: Voyager - Elite Force | `stvef2` | Star Trek: Voyager - Elite Force 2 @@ -291,18 +285,23 @@ Games List | `starmade` | StarMade | `starsiege` | Starsiege (2009) | `suicidesurvival` | Suicide Survival -| `swat4` | SWAT 4 | `svencoop` | Sven Coop +| `swat4` | SWAT 4 | `synergy` | Synergy | `tacticalops` | Tactical Ops | `takeonhelicopters` | Take On Helicopters (2011) | `teamfactor` | Team Factor -| `tfc` | Team Fortress Classic | `tf2` | Team Fortress 2 +| `tfc` | Team Fortress Classic | `teamspeak2` | Teamspeak 2 | `teamspeak3` | Teamspeak 3 | [Notes](#teamspeak3) | `terminus` | Terminus -| `terraria` | Terraria | [Notes](#terraria) +| `terraria`
`tshock` | Terraria - TShock (2011) | [Notes](#terraria) +| `hidden` | The Hidden (2005) +| `nolf` | The Operative: No One Lives Forever (2000) +| `ship` | The Ship +| `graw` | Tom Clancy's Ghost Recon Advanced Warfighter (2006) +| `graw2` | Tom Clancy's Ghost Recon Advanced Warfighter 2 (2007) | `thps3` | Tony Hawk's Pro Skater 3 | `thps4` | Tony Hawk's Pro Skater 4 | `thu2` | Tony Hawk's Underground 2 @@ -316,15 +315,15 @@ Games List | `turok2` | Turok 2 | `universalcombat` | Universal Combat | `unreal` | Unreal -| `unturned` | unturned | `ut` | Unreal Tournament | `ut2003` | Unreal Tournament 2003 | `ut2004` | Unreal Tournament 2004 | `ut3` | Unreal Tournament 3 +| `unturned` | unturned | `urbanterror` | Urban Terror | `v8supercar` | V8 Supercar Challenge -| `vcmp` | Vice City Multiplayer | `ventrilo` | Ventrilo +| `vcmp` | Vice City Multiplayer | `vietcong` | Vietcong | `vietcong2` | Vietcong 2 | `warsow` | Warsow @@ -422,10 +421,6 @@ Games with Additional Notes To receive a full player list response from CS:GO servers, the server must have set the cvar: host_players_show 2 -### DayZ -DayZ uses a query port that is separate from its main game port. The query port is usually -the game port PLUS 24714 or 24715. You may need to pass this query port into GameDig instead. - ### Mumble For full query results from Mumble, you must be running the [GTmurmur plugin](http://www.gametracker.com/downloads/gtmurmurplugin.php). diff --git a/games.txt b/games.txt index ebdeeea..6d9c60f 100644 --- a/games.txt +++ b/games.txt @@ -8,8 +8,6 @@ alienswarm|Alien Swarm (2010)|valve|port=27015 arkse|Ark: Survival Evolved (2017)|valve|port=7777,port_query=27015 atlas|Atlas (2018)|valve|port=5761,port_query_offset=51800 avp2|Aliens versus Predator 2 (2001)|gamespy1|port=27888 -# avp2010 doesn't really... have a default port or query port -# both port and port_query should be specified when used avp2010|Aliens vs. Predator (2010)|valve|port=27015 americasarmy|America's Army (2002)|gamespy2|port=1716,port_query_offset=1 @@ -78,7 +76,7 @@ crysis2|Crysis 2 (2011)|gamespy3|port=64000 daikatana|Daikatana (2000)|quake2|port=27982,port_query_offset=10 dmomam|Dark Messiah of Might and Magic (2006)|valve|port=27015 darkesthour|Darkest Hour: Europe '44-'45 (2008)|unreal2|port=7757,port_query_offset=1 -dayz|DayZ (2018)|valve|port=2302,port_query_offset=24714|doc_notes=dayz +dayz|DayZ (2018)|valve|port=2302,port_query_offset=24714 dayzmod|DayZ Mod (2013)|valve|port=2302,port_query_offset=1 deadlydozenpt|Deadly Dozen: Pacific Theater (2002)|gamespy1|port_query=25300 dh2005|Deer Hunter 2005 (2004)|gamespy2|port=23459,port_query=34567 @@ -101,85 +99,82 @@ f1c9902|F1 Challenge '99-'02 (2002)|gamespy1|port_query=34397 farcry|Far Cry (2004)|ase|port=49001,port_query_offset=123 farcry2|Far Cry 2 (2008)|ase|port_query=14001 fortressforever|Fortress Forever (2007)|valve|port=27015 -flashpoint|Operation Flashpoint: Cold War Crisis (2001)|gamespy1|port=2302,port_query_offset=1 +operationflashpoint,flashpoint|Operation Flashpoint: Cold War Crisis (2001)|gamespy1|port=2302,port_query_offset=1 flashpointresistance|Operation Flashpoint: Resistance (2002)|gamespy1|port=2302,port_query_offset=1 -ffow|Frontlines: Fuel of War|ffow|port=5476,port_query_offset=2 -fivem|FiveM|fivem|port=30120 -garrysmod|Garry's Mod|valve|port=27015 -graw|Ghost Recon: Advanced Warfighter|gamespy2|port_query=15250 -graw2|Ghost Recon: Advanced Warfighter 2|gamespy2|port_query=16250 -giantscitizenkabuto|Giants: Citizen Kabuto|gamespy1|port_query=8911 -globaloperations|Global Operations|gamespy1|port_query=28672 -geneshift|Geneshift|geneshift|port=11235 -ges|GoldenEye: Source|valve|port=27015 -gore|Gore|gamespy1|port=27777,port_query_offset=1 -gunmanchronicles|Gunman Chronicles|valve|port=27015 -hldm|Half-Life 1 Deathmatch|valve|port=27015 -hl2dm|Half-Life 2 Deathmatch|valve|port=27015 -halo|Halo|gamespy2|port=2302 -halo2|Halo 2|gamespy2|port=2302 -heretic2|Heretic 2|gamespy1|port=27900,port_query_offset=1 -hexen2|Hexen 2|hexen2|port=26900,port_query_offset=50 -hidden|The Hidden: Source|valve|port=27015 -had2|Hidden and Dangerous 2|gamespy1|port=11001,port_query_offset=3 -homefront|Homefront|valve|port=27015 -homeworld2|Homeworld 2|gamespy1|port_query=6500 -hurtworld|Hurtworld|valve|port=12871,port_query=12881 -igi2|IGI-2: Covert Strike|gamespy1|port_query=26001 -il2|IL-2 Sturmovik|gamespy1|port_query=21000 -insurgency|Insurgency|valve|port=27015 -insurgencysandstorm|Insurgency: Sandstorm|valve|port=27015,port_query_offset=1 -ironstorm|Iron Storm|gamespy1|port_query=3505 -jamesbondnightfire|James Bond: Nightfire|gamespy1|port_query=6550 -jc2mp|Just Cause 2 Multiplayer|jc2mp|port=7777 -killingfloor|Killing Floor|killingfloor|port=7707,port_query_offset=1 -killingfloor2|Killing Floor 2|valve|port=7777,port_query=27015 -kingpin|Kingpin: Life of Crime|gamespy1|port=31510,port_query_offset=-10 -kisspc|KISS Psycho Circus|gamespy1|port=7777,port_query_offset=1 -kspdmp|DMP - KSP Multiplayer|kspdmp|port=6702,port_query_offset=1 -kzmod|KzMod|valve|port=27015 -left4dead|Left 4 Dead|valve|port=27015 -left4dead2|Left 4 Dead 2|valve|port=27015 -m2mp|Mafia 2 Multiplayer|mafia2mp|port=27016,port_query_offset=1 -m2o|Mafia 2 Online|mafia2online|port=27015,port_query_offset=1 -medievalengineers|Medieval Engineers|valve|port=27015 +ffow|Frontlines: Fuel of War (2008)|ffow|port=5476,port_query_offset=2 +fivem|Grand Theft Auto V - FiveM (2013)|fivem|port=30120 +garrysmod|Garry's Mod (2004)|valve|port=27015 +graw|Tom Clancy's Ghost Recon Advanced Warfighter (2006)|gamespy2|port_query=15250 +graw2|Tom Clancy's Ghost Recon Advanced Warfighter 2 (2007)|gamespy2|port_query=16250 +giantscitizenkabuto|Giants: Citizen Kabuto (2000)|gamespy1|port_query=8911 +globaloperations|Global Operations (2002)|gamespy1|port_query=28672 +geneshift,mutantfactions|Geneshift (2017)|geneshift|port=11235 +ges|GoldenEye: Source (2010)|valve|port=27015 +gore|Gore: Ultimate Soldier (2002)|gamespy1|port=27777,port_query_offset=1 +gunmanchronicles|Gunman Chronicles (2000)|valve|port=27015 +hldm|Half-Life Deathmatch (1998)|valve|port=27015 +hldms|Half-Life Deathmatch: Source (2005)|valve|port=27015 +hl2dm|Half-Life 2: Deathmatch (2004)|valve|port=27015 +halo|Halo (2003)|gamespy2|port=2302 +halo2|Halo 2 (2007)|gamespy2|port=2302 +heretic2|Heretic II (1998)|gamespy1|port=27900,port_query_offset=1 +hexen2|Hexen II (1997)|hexen2|port=26900,port_query_offset=50 +hidden|The Hidden (2005)|valve|port=27015 +had2|Hidden & Dangerous 2 (2003)|gamespy1|port=11001,port_query_offset=3 +homefront|Homefront (2011)|valve|port=27015 +homeworld2|Homeworld 2 (2003)|gamespy1|port_query=6500 +hurtworld|Hurtworld (2015)|valve|port=12871,port_query=12881 +igi2|I.G.I.-2: Covert Strike (2003)|gamespy1|port_query=26001 +il2|IL-2 Sturmovik (2001)|gamespy1|port_query=21000 +insurgency|Insurgency (2014)|valve|port=27015 +insurgencysandstorm|Insurgency: Sandstorm (2018)|valve|port=27015,port_query_offset=1 +ironstorm|Iron Storm (2002)|gamespy1|port_query=3505 +jamesbondnightfire|James Bond 007: Nightfire (2002)|gamespy1|port_query=6550 +jc2mp|Just Cause 2 - Multiplayer (2010)|jc2mp|port=7777 +killingfloor|Killing Floor (2009)|killingfloor|port=7707,port_query_offset=1 +killingfloor2|Killing Floor 2 (2016)|valve|port=7777,port_query=27015 +kingpin|Kingpin: Life of Crime (1999)|gamespy1|port=31510,port_query_offset=-10 +kisspc|Kiss: Psycho Circus: The Nightmare Child (2000)|gamespy1|port=7777,port_query_offset=1 +kspdmp|Kerbal Space Program - DMP Multiplayer (2015)|kspdmp|port=6702,port_query_offset=1 +kzmod|Kreedz Climbing (2017)|valve|port=27015 +left4dead|Left 4 Dead (2008)|valve|port=27015 +left4dead2|Left 4 Dead 2 (2009)|valve|port=27015 +m2mp|Mafia II - Multiplayer (2010)|mafia2mp|port=27016,port_query_offset=1 +m2o|Mafia II - Online (2010)|mafia2online|port=27015,port_query_offset=1 +medievalengineers|Medieval Engineers (2015)|valve|port=27015 -mohaa|Medal of Honor: Allied Assault|gamespy1|port=12203,port_query_offset=97 -mohpa|Medal of Honor: Pacific Assault|gamespy1|port=13203,port_query_offset=97 -mohab|Medal of Honor: Airborne|gamespy1|port=12203,port_query_offset=97 -mohsh|Medal of Honor: Spearhead|gamespy1|port=12203,port_query_offset=97 -mohbt|Medal of Honor: Breakthrough|gamespy1|port=12203,port_query_offset=97 -moh2010|Medal of Honor 2010|battlefield|port=7673,port_query=48888 -mohwf|Medal of Honor: Warfighter|battlefield|port=25200,port_query_offset=22000 +mohaa|Medal of Honor: Allied Assault (2002)|gamespy1|port=12203,port_query_offset=97 +mohsh|Medal of Honor: Allied Assault Spearhead (2002)|gamespy1|port=12203,port_query_offset=97 +mohbt|Medal of Honor: Allied Assault Breakthrough (2003)|gamespy1|port=12203,port_query_offset=97 +mohpa|Medal of Honor: Pacific Assault (2004)|gamespy1|port=13203,port_query_offset=97 +mohab|Medal of Honor: Airborne (2007)|gamespy1|port=12203,port_query_offset=97 +moh2010|Medal of Honor (2010)|battlefield|port=7673,port_query=48888 +mohwf|Medal of Honor: Warfighter (2012)|battlefield|port=25200,port_query_offset=22000 -minecraft|Minecraft|minecraft|port=25565|doc_notes=minecraft -# Legacy name -minecraftping||minecraft|port=25565|doc_notes=minecraft +minecraft,minecraftping|Minecraft (2009)|minecraft|port=25565|doc_notes=minecraft -minecraftpe|Minecraft: Pocket Edition|gamespy3|port=19132,maxAttempts=2 -mnc|Monday Night Combat|valve|port=7777,port_query=27016 -mtavc|Multi Theft Auto: Vice City|ase|port=22003,port_query_offset=123 -mtasa|Multi Theft Auto: San Andreas|ase|port=22003,port_query_offset=123 -mumble|Mumble (Requires GTmurmur plugin)|mumble|port=64738,port_query=27800|doc_notes=mumble -mumbleping|Mumble (Lightweight)|mumbleping|port=64738|doc_notes=mumble -mutantfactions|Mutant Factions|geneshift|port=11235 -nascarthunder2004|Nascar Thunder 2004|gamespy2|port_query=13333 -netpanzer|netPanzer|gamespy1|port=3030 -nmrih|No More Room in Hell|valve|port=27015 -ns|Natural Selection|valve|port=27015 -ns2|Natural Selection 2|valve|port_query_offset=1 -nfshp2|Need for Speed: Hot Pursuit 2|gamespy1|port_query=61220 -nab|Nerf Arena Blast|gamespy1|port=4444,port_query_offset=1 -nwn|Neverwinter Nights|gamespy2|port_query=5121 -nwn2|Neverwinter Nights 2|gamespy2|port=5121,port_query=6500 -nexuiz|Nexuiz|quake3|port_query=26000 -nitrofamily|Nitro Family|gamespy1|port_query=25601 -nolf|No One Lives Forever|gamespy1|port_query=27888 -nolf2|No One Lives Forever 2|gamespy1|port_query=27890 -nucleardawn|Nuclear Dawn|valve|port=27015 -openarena|OpenArena|quake3|port_query=27960 -openttd|OpenTTD|openttd|port=3979 -operationflashpoint|Operation Flashpoint|gamespy1|port=2234,port_query_offset=1 +minecraftpe,minecraftbe|Minecraft: Bedrock Edition (2011)|gamespy3|port=19132,maxAttempts=2 +mnc|Monday Night Combat (2011)|valve|port=7777,port_query=27016 +mtavc|Grand Theft Auto: Vice City - Multi Theft Auto (2002)|ase|port=22003,port_query_offset=123 +mtasa|Grand Theft Auto: San Andreas - Multi Theft Auto (2004)|ase|port=22003,port_query_offset=123 +mumble|Mumble - GTmurmur Plugin (2005)|mumble|port=64738,port_query=27800|doc_notes=mumble +mumbleping|Mumble - Lightweight (2005)|mumbleping|port=64738|doc_notes=mumble +nascarthunder2004|NASCAR Thunder 2004 (2003)|gamespy2|port_query=13333 +netpanzer|netPanzer (2002)|gamespy1|port=3030 +nmrih|No More Room in Hell (2011)|valve|port=27015 +ns|Natural Selection (2002)|valve|port=27015 +ns2|Natural Selection 2 (2012)|valve|port_query_offset=1 +nfshp2|Need for Speed: Hot Pursuit 2 (2002)|gamespy1|port_query=61220 +nab|Nerf Arena Blast (1999)|gamespy1|port=4444,port_query_offset=1 +nwn|Neverwinter Nights (2002)|gamespy2|port_query=5121 +nwn2|Neverwinter Nights 2 (2006)|gamespy2|port=5121,port_query=6500 +nexuiz|Nexuiz (2005)|quake3|port_query=26000 +nitrofamily|Nitro Family (2004)|gamespy1|port_query=25601 +nolf|The Operative: No One Lives Forever (2000)|gamespy1|port_query=27888 +nolf2|No One Lives Forever 2: A Spy in H.A.R.M.'s Way (2002)|gamespy1|port_query=27890 +nucleardawn|Nuclear Dawn (2011)|valve|port=27015 +openarena|OpenArena (2005)|quake3|port_query=27960 +openttd|OpenTTD (2004)|openttd|port=3979 painkiller|Painkiller|ase|port=3455,port_query_offset=123 postal2|Postal 2|gamespy1|port=7777,port_query_offset=1 prey|Prey|doom3|port=27719 @@ -248,7 +243,7 @@ tf2|Team Fortress 2|valve|port=27015 teamspeak2|Teamspeak 2|teamspeak2|port=8767 teamspeak3|Teamspeak 3|teamspeak3|port=9987|doc_notes=teamspeak3 terminus|Terminus|gamespy1|port_query=12286 -terraria|Terraria|terraria|port=7777,port_query_offset=101|doc_notes=terraria +terraria,tshock|Terraria - TShock (2011)|terraria|port=7777,port_query_offset=101|doc_notes=terraria thps3|Tony Hawk's Pro Skater 3|gamespy1|port_query=6500 thps4|Tony Hawk's Pro Skater 4|gamespy1|port_query=6500 thu2|Tony Hawk's Underground 2|gamespy1|port_query=5153 diff --git a/lib/GameResolver.js b/lib/GameResolver.js index 882f0d0..219cb6e 100644 --- a/lib/GameResolver.js +++ b/lib/GameResolver.js @@ -3,7 +3,9 @@ const Path = require('path'), class GameResolver { constructor() { - this.games = this._readGames(); + const loaded = this._readGames(); + this.gamesByKey = loaded.gamesByKey; + this.games = loaded.games; } lookup(type) { @@ -15,7 +17,7 @@ class GameResolver { }; } - const game = this.games.get(type); + const game = this.gamesByKey.get(type); if(!game) throw Error('Invalid game: '+type); return game.options; } @@ -24,11 +26,15 @@ class GameResolver { let out = ''; out += '| GameDig Type ID | Name | Notes\n'; out += '|---|---|---\n'; - for(const [key,game] of this.games.entries()) { - if (!game.pretty) { - continue; - } - out += "| " + ("`"+key+"`").padEnd(10, " ") + " " + + const sorted = this.games + .filter(game => game.pretty) + .sort((a,b) => { + return a.pretty.localeCompare(b.pretty); + }); + for(const game of sorted) { + let keysOut = game.keys.map(key => '`'+key+'`').join('
'); + out += "| " + keysOut.padEnd(10, " ") + " " + "| " + game.pretty; if(game.extra.doc_notes) out += " | [Notes](#"+game.extra.doc_notes+")"; @@ -40,7 +46,9 @@ class GameResolver { _readGames() { const gamesFile = Path.normalize(__dirname+'/../games.txt'); const lines = fs.readFileSync(gamesFile,'utf8').split('\n'); - const games = new Map(); + + const gamesByKey = new Map(); + const games = []; for (let line of lines) { // strip comments @@ -50,17 +58,25 @@ class GameResolver { if(!line) continue; const split = line.split('|'); - const gameId = split[0].trim(); + const keys = split[0].trim().split(','); + const name = split[1].trim(); const options = this._parseList(split[3]); options.protocol = split[2].trim(); + const extra = this._parseList(split[4]); - games.set(gameId, { - pretty: split[1].trim(), + const game = { + keys: keys, + pretty: name, options: options, - extra: this._parseList(split[4]) - }); + extra: extra + }; + + for (const key of keys) { + gamesByKey.set(key, game); + } + games.push(game); } - return games; + return { gamesByKey, games }; } _parseList(str) {