Доброй пятницы, Хабр!
Создание игр — трудоемкий процесс, но в нем нет магии и таинственности. Он не отличается от создания любого приложения, состоит из тех же шагов, и его возможно разделить на блоки, модули и этапы. Создание сетевой игры может увеличить время и стоимость разработки в несколько раз. Но сетевое взаимодействие приложений — это независимый модуль, разрабатываемый и тестируемый отдельно от самой игры. Именно о таком модуле мы сегодня поговорим. Представляем вам Samsung Chord SDK — бесплатный инструмент для простого и быстрого создания приложений по обмену файлами и сообщениями в реальном времени между устройствами в одной сети.
Samsung много сил вкладывает в развитие Android. Посетите ресурс для разработчиков — там вы обнаружите много полезных инструментов, и одним из них является Samsung Mobile SDK, о котором мы уже писали ранее. В следующих публикациях мы подробнее расскажем о каждом из прочих инструментов.
Samsung Chord SDK (произ. как рус. “коод”, англ. [kɔːd]; перев. связка, хорда, струна, аккорд) позволяет разрабатывать приложения для локального обмена информацией, не используя облако или без знания деталей сети.
Преимущества Chord:
● легкое обнаружение и установка соединения с устройствами рядом;
● взаимодействие в реальном времени с множеством устройств;
● быстрое peer-to-peer соединение без сервера;
● децентрализованная сеть, где участники могут подключать и отключаться в любое время налету.
Samsung Chord SDK v1.0 был выпущен в 25 апреля 2013, он поддерживает Android 4.0 (>= API level 14) — как arm, так и x86 архитектуры. И уже в сентябре 2013 Chord появился в составе Samsung Mobile SDK: был существенно переработан код (к сожалению, обратная совместимость не сохранена), добавлена поддержка шифрованных каналов. Очень полезно будет ознакомиться с FAQ.
Давайте в общих чертах рассмотрим как работает Samsung Chord SDK:
Устройства “device 1-N” подключены к сети одним из способов: Wi-Fi, AndroidAP или Wi-Fi Direct (описание ниже). На устройствах установлено приложение, которое содержит сервис, взаимодействующий с Chord и “activity” приложения. В свою очередь “game” посылает или получает сообщения от “activity”. Каждое из “device” является узлом. Передача сообщений возможна как конкретному узлу, так и каналу. Канал может быть публичным или приватным (более подробно здесь).
Чтобы продемонстрировать, как легко интегрировать Chord в любое игровое приложение, возьмем уже готовую игру Snake из образцов Android SDK: проект доступен на github.
Для начала необходимо установить Samsung Mobile SDK через Eclipse update. Создадим проект из примеров Snake. Далее необходимо скопировать файлы из “%android_path%/samsungmobilesdk/Samsung Mobile SDK/1.0.3/Libs/chord” папку libs нашего проекта и подключить их в Build path.
Далее приведен простой код, не нуждающийся в комментариях:
Отправить сообщения от других клиентов можно следующим образом (всем нодам публичного канала):
Chord позволяет создавать каналы (абстрактные), посредством которых происходит взаимодействие. Каналы могут быть как публичными, так и приватными.
Связь можно установить по Wi-Fi, используя следующие методы:
● INTERFACE_TYPE_WIFI — обычное подключение всех устройств к одной общей точке доступа Wi-Fi;
● INTERFACE_TYPE_WIFIAP — AndroidAP, точкой доступа является один из устройств Android;
● INTERFACE_TYPE_WIFIP2P — обычное соединение Wi-Fi Direct.
Можно предложить пользователю выбрать способ соединения или программно выбрать наиболее подходящий, например, так:
Весь код по подключению и созданию простой игровой механики можно найти в этом коммите, который обеспечивает самую необходимую интеграцию с Chord SDK. Рассмотрим ключевые моменты:
1. Добавлена страница для статуса игроков;
2. каждый управляет своей змейкой;
3. коллизия считается только со своим хвостом, другие игроки игнорируются;
4. змейка видит и есть только “свои” яблоки;
5. скорость змейки остается постоянной;
6. выигрывает тот, у кого змейка длиннее.
Небольшая демонстрация:
и скриншоты:
Также взгляните на пример от команды разработчиков Chord, доступный на странице проекта. В нем есть все необходимое, к тому же его можно использовать как отладочный инструмент.
Пиринговые оверлейные сети требуют много ресурсов, и поэтому встает вопрос о производительности. Взгляните на этот демонстрационный ролик:
Надеюсь, мы уже убедили вас, что Chord — довольно интересный инструмент. Что ещё можно сделать с ним и зачем это Samsung? Все просто: Samsung занимает более 47% Android-рынка (по данным open signal), поэтому кому еще, как не нашей компании, заботиться об экосистеме. Больше хороших приложений — больше довольных пользователей. Вы, как разработчик, можете получить больше новых пользователей и больше игровых сессий, если добавите своё приложение, использующее Samsung Chord SDK, в особый раздел “Play games” в предустановленном приложении “Group Play”, которое можно найти во всех современных телефонах Samsung на Android. Документацию можно найти здесь.
Если у вас появились вопросы или предложения, смело пишите на e-mail: dev.cis@partner.samsung.com.
Как мы уже писали, 13-14 декабря пройдет Apps4All Hackathon и, если у вас есть игра собственной разработки, вы можете попробовать сделать её сетевой с помощью Chord SDK и выиграть призы от Samsung.
Дерзайте и встретимся на хакатоне!
Создание игр — трудоемкий процесс, но в нем нет магии и таинственности. Он не отличается от создания любого приложения, состоит из тех же шагов, и его возможно разделить на блоки, модули и этапы. Создание сетевой игры может увеличить время и стоимость разработки в несколько раз. Но сетевое взаимодействие приложений — это независимый модуль, разрабатываемый и тестируемый отдельно от самой игры. Именно о таком модуле мы сегодня поговорим. Представляем вам Samsung Chord SDK — бесплатный инструмент для простого и быстрого создания приложений по обмену файлами и сообщениями в реальном времени между устройствами в одной сети.
Samsung много сил вкладывает в развитие Android. Посетите ресурс для разработчиков — там вы обнаружите много полезных инструментов, и одним из них является Samsung Mobile SDK, о котором мы уже писали ранее. В следующих публикациях мы подробнее расскажем о каждом из прочих инструментов.
Samsung Chord SDK (произ. как рус. “коод”, англ. [kɔːd]; перев. связка, хорда, струна, аккорд) позволяет разрабатывать приложения для локального обмена информацией, не используя облако или без знания деталей сети.
Преимущества Chord:
● легкое обнаружение и установка соединения с устройствами рядом;
● взаимодействие в реальном времени с множеством устройств;
● быстрое peer-to-peer соединение без сервера;
● децентрализованная сеть, где участники могут подключать и отключаться в любое время налету.
Samsung Chord SDK v1.0 был выпущен в 25 апреля 2013, он поддерживает Android 4.0 (>= API level 14) — как arm, так и x86 архитектуры. И уже в сентябре 2013 Chord появился в составе Samsung Mobile SDK: был существенно переработан код (к сожалению, обратная совместимость не сохранена), добавлена поддержка шифрованных каналов. Очень полезно будет ознакомиться с FAQ.
Давайте в общих чертах рассмотрим как работает Samsung Chord SDK:
Устройства “device 1-N” подключены к сети одним из способов: Wi-Fi, AndroidAP или Wi-Fi Direct (описание ниже). На устройствах установлено приложение, которое содержит сервис, взаимодействующий с Chord и “activity” приложения. В свою очередь “game” посылает или получает сообщения от “activity”. Каждое из “device” является узлом. Передача сообщений возможна как конкретному узлу, так и каналу. Канал может быть публичным или приватным (более подробно здесь).
Чтобы продемонстрировать, как легко интегрировать Chord в любое игровое приложение, возьмем уже готовую игру Snake из образцов Android SDK: проект доступен на github.
Для начала необходимо установить Samsung Mobile SDK через Eclipse update. Создадим проект из примеров Snake. Далее необходимо скопировать файлы из “%android_path%/samsungmobilesdk/Samsung Mobile SDK/1.0.3/Libs/chord” папку libs нашего проекта и подключить их в Build path.
Далее приведен простой код, не нуждающийся в комментариях:
...
@Override
public void onCreate(Bundle savedInstanceState) {
...
mChordManager = new SchordManager(getActivity());
List<Integer> infList = mChordManager.getAvailableInterfaceTypes();
if(infList.isEmpty()){
return;
}
int interfaceType = SchordManager.INTERFACE_TYPE_WIFI;
try {
mChordManager.start(interfaceType, mManagerListener);
mSelectedInterface = interfaceType;
Log.d(TAG, TAGClass +" start(" + getInterfaceName(interfaceType) + ")");
} catch (IllegalArgumentException e) {
Log.d(TAG, TAGClass +" Fail to start -" + e.getMessage());
} catch (InvalidInterfaceException e) {
Log.d(TAG, TAGClass +" There is no such a connection.");
} catch (Exception e) {
Log.d(TAG, TAGClass +" Fail to start -" + e.getMessage());
}
}
…
SchordManager.StatusListener mManagerListener = new SchordManager.StatusListener() {
@Override
public void onStarted(String nodeName, int reason) {
if (reason == STARTED_BY_USER) {
SchordChannel channel = mChordManager.joinChannel(CHORD_HELLO_TEST_CHANNEL, mChannelListener);
} else if (reason == STARTED_BY_RECONNECTION) {
// Re-start by network re-connection.
}
}
@Override
public void onStopped(int reason) {
if (STOPPED_BY_USER == reason) {
// Success to stop by calling stop() method
} else if (NETWORK_DISCONNECTED == reason) {
// Stopped by network disconnected
}
}
};
private SchordChannel.StatusListener mChannelListener = new SchordChannel.StatusListener() {
@Override
public void onNodeJoined(String fromNode, String fromChannel) {
//сообщаем другим игрокам о том, что мы готовы
}
@Override
public void onDataReceived(String node, String channel, String payloadType,
byte[][] payload) {
String message = new String(payload[0]);
//здесь управляем змейкой
}
…
//здесь опущены другие доступные методы
};
Отправить сообщения от других клиентов можно следующим образом (всем нодам публичного канала):
byte[][] payload = new byte[1][];
payload[0] = ”Hello, chord”.getBytes();
SchordChannel channel = mChordManager.getJoinedChannel(CHORD_HELLO_TEST_CHANNEL);
channel.sendDataToAll(CHORD_SAMPLE_MESSAGE_TYPE, payload);
Chord позволяет создавать каналы (абстрактные), посредством которых происходит взаимодействие. Каналы могут быть как публичными, так и приватными.
Связь можно установить по Wi-Fi, используя следующие методы:
● INTERFACE_TYPE_WIFI — обычное подключение всех устройств к одной общей точке доступа Wi-Fi;
● INTERFACE_TYPE_WIFIAP — AndroidAP, точкой доступа является один из устройств Android;
● INTERFACE_TYPE_WIFIP2P — обычное соединение Wi-Fi Direct.
Можно предложить пользователю выбрать способ соединения или программно выбрать наиболее подходящий, например, так:
int interfaceType = 0;
for (int interfaceValue : mChordManager.getAvailableInterfaceTypes()) {
if (interfaceValue == SchordManager.INTERFACE_TYPE_WIFI) {
interfaceType = SchordManager.INTERFACE_TYPE_WIFI;
break;
} else if (interfaceValue == SchordManager.INTERFACE_TYPE_WIFI_AP) {
interfaceType = SchordManager.INTERFACE_TYPE_WIFI_AP;
break;
} else if (interfaceValue == SchordManager.INTERFACE_TYPE_WIFI_P2P) {
interfaceType = SchordManager.INTERFACE_TYPE_WIFI_P2P;
break;
}
}
Весь код по подключению и созданию простой игровой механики можно найти в этом коммите, который обеспечивает самую необходимую интеграцию с Chord SDK. Рассмотрим ключевые моменты:
1. Добавлена страница для статуса игроков;
2. каждый управляет своей змейкой;
3. коллизия считается только со своим хвостом, другие игроки игнорируются;
4. змейка видит и есть только “свои” яблоки;
5. скорость змейки остается постоянной;
6. выигрывает тот, у кого змейка длиннее.
Небольшая демонстрация:
и скриншоты:
Также взгляните на пример от команды разработчиков Chord, доступный на странице проекта. В нем есть все необходимое, к тому же его можно использовать как отладочный инструмент.
Пиринговые оверлейные сети требуют много ресурсов, и поэтому встает вопрос о производительности. Взгляните на этот демонстрационный ролик:
Надеюсь, мы уже убедили вас, что Chord — довольно интересный инструмент. Что ещё можно сделать с ним и зачем это Samsung? Все просто: Samsung занимает более 47% Android-рынка (по данным open signal), поэтому кому еще, как не нашей компании, заботиться об экосистеме. Больше хороших приложений — больше довольных пользователей. Вы, как разработчик, можете получить больше новых пользователей и больше игровых сессий, если добавите своё приложение, использующее Samsung Chord SDK, в особый раздел “Play games” в предустановленном приложении “Group Play”, которое можно найти во всех современных телефонах Samsung на Android. Документацию можно найти здесь.
Если у вас появились вопросы или предложения, смело пишите на e-mail: dev.cis@partner.samsung.com.
Как мы уже писали, 13-14 декабря пройдет Apps4All Hackathon и, если у вас есть игра собственной разработки, вы можете попробовать сделать её сетевой с помощью Chord SDK и выиграть призы от Samsung.
Дерзайте и встретимся на хакатоне!