@Zimaell

Так ли плохо работать на прямую серверу и клиенту?

Игра где на одной сцене могут находится более одного игрока.
Предисловие
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 для этого все уже есть", но на сколько я знаю там особо много в онлайн не получится (для бесплатной версии), да и это сторонний софт, а то свой сервер...

В общем давайте обсудим данную тему кому не лень... :)
  • Вопрос задан
  • 315 просмотров
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos Куратор тега Разработка игр
Держать в БД реалтайм, да еще и в sql - это плохо.
Делать реалтайм крайне-крайне желательно на сокетах.
Насчет защиты - если запрос не подписан - то что мне мешает перехватить его и модифицировать? Все вот эти ключи если это просто часть запроса и никак не зависят ХОТЯ БЫ от содержимого запроса - то от них толку ноль.

Я бы НА ПЕРВОЕ ВРЕМЯ брал бы готовые решения, а не делал реалтаймовый велосипед. Выстрелит - перепишете.
Ответ написан
Комментировать
Собственно вопрос - много где читаю что на прямую такие обращения вредны
В чём именно вредность? Очень интересно.

Другой вопрос - не будет ли проблем с тем что это будет написано на PHP, некоторые пишут что это с большим онлайном (причем у некоторый большой онлайн это 500+) повесит сервер, мол лучше на C#...
Смотря как писать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы