Игра где на одной сцене могут находится более одного игрока.
Предисловие
spoilerАвторизация происходит по такому принципу.
При авторизации, на сервере генерируется 2 ключа md5 сгенерированных случайным образом, далее при каждом запросе они проверяются, если пользователь вышел из игры то при следующем входе они снова генерируются, так будет отдаваться информации конкретному пользователю, и возможности взлома так же не будет.
Сам бой
Во время боя для обоих (или более) пользователей создается временная таблица где будут записываться и синхронизироваться действия, каждые 5 сек отправляются данные на сервер о произошедшем на сцене от игрока хоста (причем этот тот кто находится онлайн), остальным отправляется все происходящее.
При каждой проверке код будет вглядеть так
<?php
if(empty($_POST['Key1']) || empty($_POST['Key2']) || empty($_POST['ServerKey'])) exit();
$key1=$mysqli->real_escape_string(strval($_POST['Key1']));
$key2=$mysqli->real_escape_string(strval($_POST['Key2']));
if($mysqli->real_escape_string(strval($_POST['ServerKey']))!="oiervu3h498gh41hg[0h3b2%#$@#134t3") exit();
$mysqli=new mysqli('localhost','root','.................','table');
if(!$mysqli) die('Error Connect: '.mysql_error());
$r=$mysqli->query("SELECT `id` FROM `users` WHERE `key1`='".$key1."' AND `key2`='".$key2."' LIMIT 1");
if(mysqli_num_rows($r)!=1){
mysqli_free_result($r);
$mysqli->close();
exit();
}
# Если ключи совпадают то вытягивать нужные данные и возвращать
$mysqli->close();
exit();
?>
Нету таких ключей бб...
Собственно вопрос - много где читаю что на прямую такие обращения вредны, что нужен какой-то сервер посредник что-ли, или же что использовать связку PHP+MYSQL плохая затея, мол взломать нечего делать.
Хотя тот пример что я выше привел я думал не получится обойти, как можно подобрать 2 постоянно генерирующихся ключа + серверный ключ который непосредственно в коде будет вшит?
Другой вопрос - не будет ли проблем с тем что это будет написано на PHP, некоторые пишут что это с большим онлайном (причем у некоторый большой онлайн это 500+) повесит сервер, мол лучше на C#...
Многие так же писали что "не нужно выдумывать велосипед, в unity для этого все уже есть", но на сколько я знаю там особо много в онлайн не получится (для бесплатной версии), да и это сторонний софт, а то свой сервер...
В общем давайте обсудим данную тему кому не лень... :)