How to create a cross-platform multiplayer game without internet access - android

I'm working on a cross-platform multiplayer game on android and ios.
I need to create a direct network connection between devices without a main server to be able to play without any internet access (e.g. in the metro).
I already tried this kind of game named "Skies of Glory" where the link between players were performed directly without internet access. Such as computer games, client players can see and connect on a game server created by one of players.
I was unable to find a "free" game framework able to provide this kind of network feature so I try to find out a standardized way to see host servers and etablish a communication without any user prompt thru a wireless connectivity (wifi or bluetooth). iOS and Android are separate worlds but most of network standards are supported by both platforms.
So how do it ?
I already excluded solutions:
Android's WIFI direct: not compatible with iOS and available on 4.x so it's too limited.
OSI's high level protocols because it suppose to be in the same managed network (so impossible in metro)
My leads
Turn one of the devices as a router but without user action.
Piconet technology if it's available on both OS.
If anybody have another idea ....
Thank you for your help

On iOS you could try using Bonjour http://en.wikipedia.org/wiki/Bonjour_(software) https://developer.apple.com/technologies/ios/networking.html but there is a reasonable amount of your own programming that would be needed to build what you need.
On Android you might be able to use zeroconf http://en.wikipedia.org/wiki/Zero_configuration_networking if you can find a suitable existing port or port it yourself using the NDK.

Related

Android to iOS AirDrop?

Out of curiosity... has anyone ever been able to integrate AirDrop functionality into an Android app?
I really don't care about receiving any information on the Android side, but am hoping I can send information to the iOS side from Android. I'm hoping to find someone with a more in-depth understanding of how it works and if it is physically possible. Also, any direction on whether Apple has proprietary use over the protocol (or if it is just the name and branding) would be awesome!
Trying to build a cross-platform app and getting pretty close, but this would just extremely convenient if it works out :)
Currently, it is not possible as AirDrop uses Bluetooth to create a peer-to-peer Wi-Fi network between the devices. Each device creates a firewall around the connection and files are sent encrypted, which actually makes it safer than transferring via email. AirDrop will automatically detect nearby supported devices, and the devices only need to be close enough to establish a good Wi-Fi connection, making it possible to share files across several rooms.
Some Android devices use a combination of Near Field Communications (NFC) and Bluetooth to share files. But both Bluetooth and NFC are relatively slow compared Wi-Fi, which makes sharing larger files using AirDrop much faster and more convenient.
Regarding protocol, I don't think Apple has made it public and as far as I know Apple they must have patented it. Since AirDrop uses Bluetooth as well, and Android and iPhone Bluetooth are not compatible. Hence, due to all these reasons, we did not see any Android app that can send data via AirDrop.

Multiper Connectivity Versus Play Game Services

I am currently developing an application that exchanges small chunks of data between iOS devices. Eventually, my plan is to release an Android version of the application. It seems as if it may be overkill to use Google Play Game Services on iOS for data exchange with Multipeer Connectivity available however it may be necessary to achieve multi-platform data exchange. Am I better off implementing completely separate iterations of the iOS and Android applications using Multipeer Connectivity and Google Game Services respectively or should I use Google Game Services for both? Also, it would be appreciated if someone could detail the performance differences between the two frameworks.
Multipeer is an iOS technology that allows for direct communication between nearby iOS devices. This can use Adhoc/Direct WiFi, Bluetooth or connect two devices which are on the same WiFi router.
Google Play Games Services allows for communication between devices across the internet.
The two technologies are not really comparable because they solve different problems. If you need communication across the internet on iOS, then perhaps you need to be evaluating Game Center instead of Multipeer. If you need local communication, then perhaps you should investigate Android's bluetooth and WiFi Direct capabilities.
There are more options than using MPC or GPGS. As Columbo said, you can use Bluetooth and WiFi Direct directly on Android. It's a long and bumpy way because it's not as stable on Android as it is on iOS. There are also other frameworks out there that try to mitigate the issues.
Disclaimer: I work for Uepaa, developing p2pkit for Android and iOS.

fast direct communication between ios and android

at the moment I'm planning to build an cross-plattform app (iOS/android) that streams music from one device to others without internet. Now I'm considering which network technology is best for this use case. By the way I'm sorry I didn't say hello to you, it disappears all the time.
Existing wifi network:
I don't wanna use this because I want my app to work everywhere.
Wifi-Direct:
Not supported by iOS (tell me if I'm wrong).
Bluetooth:
Here I've found kind of conflicting information.
Bluetooth 2.1 is supported by both iOS and android but iOS has its own protocols and doesn't support the common ones.
Bluetooth Low Energy provides a data rate that is too slow for high quality music streaming (1Mbit) and is supported by iOS but on the android side version 4.3 is required which suspends about half of all users.
What I'm not sure about is the "normal" (not LE) usage of Bluetooth 4.0. Does anyone have experience/information about this?
Creating a wifi hotspot:
This was my first idea and probably it's the best. But there are several issue:
Some carriers do not allow hotspots
It's not possible to create a hotspot without cell reception on the iPhone and some (I don't know which exactly) android devices.
It's not possible to create a hotspot without cellular data activated on an iPhone; I don't know what about android devices (Nexus 4: no problem, SGS3 mini: cellular data can be switched off after creating the hotspot)
-> that's a problem for those who don't have an internet unlimited plan or for those who don't want to share their internet connection (as this dissipates the high speed volume) but see the next point for that.
In order that everyone can use his own cellular data connection the wifi settings can be manually edited on iOS (remove router, DNS and search domains entries). Is there a way to do so on android as well? Is there way to automize this process?
https://apple.stackexchange.com/questions/173894/can-i-connect-to-wifi-but-still-use-cellular
Is there any way to create a wifi network programmatically (not just enable the normal wifi hotspot)?
SDKs/Frameworks like Open Garden or Alljyon looked promising at the beginning but:
Firechat (which is made by the Open Garden team) promises that iOS and android devices can chat locally without existing network but actually it didn't work for me with an iPhone 6 and SGS3 mini. However they don't want to publish their SDK. The only information I got is that it works over wifi-direct and bluetooth. If anyone has an idea how this could work, please tell me.
Alljoyn does not provide direct communications between iOS and android without an existing network. (Tell me if I'm wrong)
API's:
iOS multipeer connectivity does not support android
I hope anyone can help me.
Regards Nils
If you are talking about a TVBOX device with Android, you will need the ethernet cable connected in order to create a hotspot.
Another option that I have done is:
Create a service that runs on iPhone with an interfaz, do whatever you want on that interfaz, then send what ever you need to a webservice, then in Android, just pull that info from another App as a service, or just store it in an internal sqlite.
Good luck

Transfer data between iOS and Android via Bluetooth?

I've been reading up on how to transfer data between iOS devices over Bluetooth using GameKit. I'm not writing a game, per se, but do have a need to transfer a small amount of binary data between two devices. Between two iOS devices, this is easy enough. However, I was wondering if it is possible to transfer data between an iOS device and an Android device via the same mechanism.
Has anyone come across documentation/tutorial that would explain how to do this? Is it even technically possible? Or has Apple put in some sort of restriction that would prevent this?
The other option I discovered was Bonjour over Bluetooth. Would this be a more suitable option for this type of operation?
This question has been asked many times on this site and the definitive answer is: NO, you can't connect an Android phone to an iPhone over Bluetooth, and YES Apple has restrictions that prevent this.
Some possible alternatives:
Bonjour over WiFi, as you mentioned. However, I couldn't find a comprehensive tutorial for it.
Some internet based sync service, like Dropbox, Google Drive, Amazon S3. These usually have libraries for several platforms.
Direct TCP/IP communication over sockets. (How to write a small (socket) server in iOS)
Bluetooth Low Energy will be possible once the issues on the Android side are solved (Communicating between iOS and Android with Bluetooth LE)
Coolest alternative: use the Bump API. It has iOS and Android support and really easy to integrate. For small payloads this can be the most convenient solution.
Details on why you can't connect an arbitrary device to the iPhone. iOS allows only some bluetooth profiles to be used without the Made For iPhone (MFi) certification (HPF, A2DP, MAP...). The Serial Port Profile that you would require to implement the communication is bound to MFi membership. Membership to this program provides you to the MFi authentication module that has to be added to your hardware and takes care of authenticating the device towards the iPhone. Android phones don't have this module, so even though the physical connection may be possible to build up, the authentication step will fail. iPhone to iPhone communication is possible as both ends are able to authenticate themselves.
Maybe a bit delayed, but technologies have evolved since so there is certainly new info around which draws fresh light on the matter...
As iOS has yet to open up an API for WiFi Direct and Multipeer Connectivity is iOS only, I believe the best way to approach this is to use BLE, which is supported by both platforms (some better than others).
On iOS a device can act both as a BLE Central and BLE Peripheral at the same time, on Android the situation is more complex as not all devices support the BLE Peripheral state. Also the Android BLE stack is very unstable (to date).
If your use case is feature driven, I would suggest to look at Frameworks and Libraries that can achieve cross platform communication for you, without you needing to build it up from scratch.
For example: http://p2pkit.io or google nearby
Disclaimer: I work for Uepaa, developing p2pkit.io for Android and iOS.
You could use p2pkit, or the free solution it was based on: https://github.com/GitGarage. Doesn't work very well, and its a fixer-upper for sure, but its, well, free. Works for small amounts of data transfer right now.

Can android phones exchange application data directly through mobile networks?

i'm thinking of building an application which will requires communication between 2 android devices. I'm trying to establish a direct connections between 2 devices through the data plan (internet?).
Is it possible or i have to go through server?
You could probably use ZeroConf or if the devices are close together Bluetooth. What are you trying to do? It is highly probable someone has built something already that you can use, for example there are various companies offering multiplayer SDKs.

Categories

Resources