invbat

This is an old revision of the document!


Invisible Battlefields

Invisible Battlefields is a work-in-progress, collaborative, positioning-sensitive mobile game in which players battle against each other for the glory of their clan.

The battles always occurs in a pre-determined regions in specific time-frames. If the player physically crosses the region, he is eligible to participate in the next battle on this region, receiving a notification of such in his mobile device. Then, he has until the time of the battle to confirm his participation and choose which other clan he will attack. This information goes to the Core SDDL, and then is forwarded to the Game Service, which calculates the battle results for each player on the closing time of the Battle. After that, these results are stored so that the player can request them whenever they want.

A player has three attributes, Strength, Agility and Intelligence, in which the highest one (randomly choosed when the character is created) will be used in the battle outcome calculation. The battle itself works like a weighted rock-paper-scissor, in which the weight is the value of the attributes. In term of attributes, Strength beats Agility, Agility beats Intelligence, Intelligence beats Strength. The attribute in advantage receives a 2x multiplicand.

ex. Player 1 and 2 are battling. Player 1 attacks with 5 STR and Player 2 attacks with 8 AGI. STR beats AGI, so Player 1 has 2×5 = 10 of attack power and player 2 has 8 of attack power. Player 1 wins this battle.

The player can choose which clan he wants to belong during his registration. We use his email as primary key for his registration. We also store his Character Data, which contains his level, attributes and such.

As of writing, the Core SDDL itself checks the positions of each client sharing their lat-long localization data (upon request of the client) and then tries to match it with battle regions, but we intend to change this strategy on future updates so that the client will be the one handling it's one region matching (more details in the presentation linked below, available only in Portuguese).

The Android Client and the Core SDDL communicate in a simple Request ↔ Response paradigm. The clients can send data to the Core whenever they want (Requests), but the Core can only send data upon a previous data request from the client (Responses). That means the Core isn't capable, neither is it's responsibility, to hold specific client information (such as his UUID) or to send data to a specific player without a previous Request.

To try and play the game, you'll need a Android device with GPS enabled.

Download the Core Server project and the Android Client project.

git clone https://github.com/stockrt/InvisibleBattlefields.git

First you need to start the gateway and Core Server. You should change this local IP address to your own IP Address.

gateway 127.0.0.1 5500

Now you only need to open the InvisibleBattlefieldsSDDLCore project and run the Java Application on Eclipse, BattleCoreServer.java.

Since the actual Android Client wasn't entirely properly tested, we suggest you to run our Test Client, BattleCoreClient.java, to check the communications with the Server. It uses exactly the same listeners and communication strategy as the Android Client.

You just need to update you IP address onto the client file:

HelloCoreClient.java
public class BattleCoreClient implements NodeConnectionListener {
	private static String gatewayIP = "127.0.0.1"; //update with your IP address
        //.......
   }
}

Finally, if you want to try the Android Client, you need to open the InvisibleBattlefieldsClient project and generate a “apk” file to install on your device (you can also try to run the application directly on a android emulator, but it's not recommended).

Again, you have to update the IP Address that you'll be using on this specific file:

CommunicationTask.java
public class CommunicationTask extends AsyncTask<Void, byte[], Boolean> {
	private String ipAddress = "127.0.0.1"; //update with your IP address
        //.......
   }
}

And that's it, you should be able to run the game and communicate with the Core Server now. Since it's a work-in-progress, you probably won't be able to use all game functionalities as of writing.

  • André Mac Dowell: adowell@inf.puc-rio.br
  • Ivan Xavier Araújo de Lima: ilima@inf.puc-rio.br
  • Rogério Carvalho Schneider: rschneider@inf.puc-rio.br
  • invbat.1390925001.txt.gz
  • Last modified: 2017/07/21 02:51
  • (external edit)