World of Goo Online APIs

10 replies [Last post]
Joined: 07/05/2011

Recently I used Console Debugger and find out maybe all of those World of Goo Online APIs. All World of Goo does is fetch a url and get the result.
Following are the APIs.

Don't open them with your browser casually because it WORKS!

Get Player Key: (click connect in the World of Goo Corporation)

https://worldofgoo.com/wogbuddy2.php?hwkey={hwkey}&name={name}&op=GetPlayerKey&version={version}

hwkey: Seems to be some kind of code for checking. Anyway mine is this one: 93540be1cc0a8c61e6ea0f0f3a4b9d47.
name: No doubt, it's your player name.
version: The version of your World of Goo. For example, mine is 1.40win (1%2e40win).

Result: A player id (described later), An online player key (also described later), your player name, and your country code (determined by your IP address).

Example

POST:
https://worldofgoo.com/wogbuddy2.php?hwkey=93540be1cc0a8c61e6ea0f0f3a4b9d47&name=Mygod%20Data%20Fetcher&op=GetPlayerKey&version=1%2e40win

Response:

<?xml version="1.0" encoding="UTF-8"?>
<WogResponse op="GetPlayerKey" result="OK" message="created player Mygod Data Fetcher id 7488097">
    <playerkey>df97bc13a9a8d0a02e1939055181f9dd</playerkey>
    <name>Mygod Data Fetcher</name>
    <countryCode>CN</countryCode>
</WogResponse>

Set level statistics: (submit: World of Goo LEADERBOARD of EXCELLENCE)

https://worldofgoo.com/wogbuddy2.php?balls={balls}&levelid={levelid}&moves={moves}&op=SetLevelStats&playerkey={playerkey}&time={time}&version={version}
balls: Goo balls collected in this level.
levelid: The id of your level, or the directory name of your level.
moves: Moves used in this level.
playerkey: Online player key. It is stored in your profile and get from the server by using the one above.
time: Seconds used in this level.

Result: Nothing useful, only a message: recorded levelstat for player {name}, levelid {levelid}

Example

POST:
https://worldofgoo.com/wogbuddy2.php?balls=4&levelid=GoingUp&moves=3&op=SetLevelStats&playerkey=a647df2dd93935fab47ee234693e7740&time=5&version=1%2e40win

Response:

<?xml version="1.0" encoding="UTF-8"?>
<WogResponse op="SetLevelStats" result="OK" message="recorded levelstat for player tmp, levelid GoingUp"/>

Submit your tower:

https://worldofgoo.com/wogbuddy2.php?ballCount={ballCount}&ballCountAttached={ballCountAttached}&height={height}&op=SetWogcStat&playerkey={playerkey}&version={version}

ballCount: Goo balls you have collected, for example 1300, but not 300 which is the upper limit of World of Goo Corporation.
ballCountAttached: Goo balls you have used to build a tower in World of Goo Corporation.
height: The height of your tower.

Result: Your rank!

Example

POST:
https://worldofgoo.com/wogbuddy2.php?ballCount=23&ballCountAttached=3&height=2%2e0&op=SetWogcStat&playerkey=a647df2dd93935fab47ee234693e7740&version=1%2e40win

Response:

<?xml version="1.0" encoding="UTF-8"?>
<WogResponse op="SetWogcStat" result="OK" message="">
    <rank>5519948</rank>
</WogResponse>

Get other players' statistics:

https://worldofgoo.com/wogbuddy2.php?height={height}&op=GetWogcStats&playerkey={playerkey}&version={version}

Result: Other players' statistics.
player_id: The id of the player. Maybe 6000000 means you are the 6000000th player in World of Goo!
player_name: The name of the player.
heightMax: The max height of the tower you have uploaded.
countryCode: Your country code.
timeCreated: The time of you click connect in the World of Goo Corporation. Time zone: -7:00
timeModified: The time of the tower was uploaded.

Example

POST:
https://worldofgoo.com/wogbuddy2.php?height=0&op=GetWogcStats&playerkey=a647df2dd93935fab47ee234693e7740&version=1%2e40win

Response:

<?xml version="1.0" encoding="UTF-8"?>
<WogResponse op="GetWogcStats" result="OK" message="">
    <HighTowerStats>
        <HighTowerStat player_id="7488208" player_name="dy" height="10.5" heightMax="10.5" ballCount="275" ballCountAttached="83" countryCode="CN" timeCreated="2012-08-21 20:35:43" timeModified="2012-08-21 21:25:18"/>
        <HighTowerStat player_id="7486684" player_name="L" height="12.8" heightMax="20.9" ballCount="718" ballCountAttached="153" countryCode="IR" timeCreated="2012-08-21 07:14:57" timeModified="2012-08-21 21:25:13"/>
        <HighTowerStat player_id="7328975" player_name="Surmak" height="15.2" heightMax="29.4" ballCount="1757" ballCountAttached="278" countryCode="US" timeCreated="2012-07-12 21:32:08" timeModified="2012-08-21 21:25:11"/>
        <HighTowerStat player_id="7177384" player_name="" height="6" heightMax="13.5" ballCount="375" ballCountAttached="107" countryCode="CN" timeCreated="2012-06-01 19:06:08" timeModified="2012-08-21 21:25:01"/>
        <HighTowerStat player_id="6150690" player_name="12" height="8.2" heightMax="12.4" ballCount="369" ballCountAttached="69" countryCode="RU" timeCreated="2011-10-04 21:05:56" timeModified="2012-08-21 21:24:46"/>
        <HighTowerStat player_id="7487539" player_name="santiago" height="12" heightMax="12" ballCount="183" ballCountAttached="60" countryCode="CO" timeCreated="2012-08-21 14:36:21" timeModified="2012-08-21 21:24:25"/>
        <HighTowerStat player_id="7488354" player_name="RK" height="6.4" heightMax="7.1" ballCount="74" ballCountAttached="23" countryCode="CN" timeCreated="2012-08-21 21:19:57" timeModified="2012-08-21 21:24:22"/>
        <HighTowerStat player_id="7488323" player_name="12" height="10.4" heightMax="10.4" ballCount="182" ballCountAttached="46" countryCode="RU" timeCreated="2012-08-21 21:10:43" timeModified="2012-08-21 21:24:20"/>
    </HighTowerStats>
</WogResponse>

P.S. It seems worldofgoo.com isn't stable so sometimes you will get a empty response.

EDIT: Just figured what hwkey is. Tongue

Joined: 08/06/2010

Awesome!

Now this gives me an idea. When David gets the leaderboards working, sometime after the new version of Drupal is out, what it we hexed the executable to replace worldofgoo.com/wogbuddy2 with goofans.com/leaderboards and set it up to record level data?

Another Planet finally has an official release! Download chapters 1 through 3 here! Thank you for waiting so long while I kept starting over.

Joined: 09/01/2009

Wow, cool. Good job decoding all those. Smile

Do you think that the "Get other players' statistics" section is for showing other people's towers in World of Goo? It'd also be cool if you had some kind of communications monitor running on your computer (like Wireshark does in Linux) so you can see when World of Goo is polling all of this. Smile

Joined: 07/05/2011

Thanks. By the way, how do you unshell the program?

Joined: 09/01/2009

Sorry, unshell what program? What are you talking about?

Joined: 07/05/2011

MOM4Evr wrote:
Sorry, unshell what program? What are you talking about?
Unshell World of Goo. It seems my World of Goo is shelled.

Joined: 08/06/2010

Shelled? As in, another program is launching it indirectly?

Another Planet finally has an official release! Download chapters 1 through 3 here! Thank you for waiting so long while I kept starting over.

Joined: 07/05/2011

Albino Pokey wrote:
Shelled? As in, another program is launching it indirectly?
It seems so, I guess there is another program decrypt the program and run it in the memory.

Joined: 11/04/2008

Good job. Actually I reverse-engineered this a couple of years ago (yes, by hex editing the exe to post to my server!) in preparation for us hosting the leaderboards. There's a fully functional wogbuddy2.php on our server; unfortunately 2D Boy lost interest so the live game never got pointed at us.

Joined: 07/05/2011

Oh, forget what I said then.
By the way, davidc, do you know how playerkey and hwkey work?

Joined: 08/06/2010

I'm unlocking this thread because Mygod has new information.

Another Planet finally has an official release! Download chapters 1 through 3 here! Thank you for waiting so long while I kept starting over.