|
Unity Мультиплатформенный инструмент для разработки игр |
27.04.2013, 00:00
|
#1051
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
На майл ру хостинге приложений 29-го числа отключат эту возможность.
|
(Offline)
|
|
27.04.2013, 17:45
|
#1052
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Вы были правы, захостился на hostinger.ru.
Там оказалось действительно всё просто.
Начал разбираться и немного запутался.
Решил попробовать Photon Cloud. Но чтото не понимаю, если каждый загрузившийся - отдельный клиент.
То не понимаю, что, можно будет вообще без сервера работать?
И тогда что, каждый клиент сам будет делать проверки и иметь доступ к базам данных?
Мне кажется, или это действительно читерство будет плодит?
__________________
|
(Offline)
|
|
27.04.2013, 19:50
|
#1053
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Фак по Юнити.
В клауде читерство значительно легче чем с отдельным сервером. Однако все же что-то можно сделать. Все равно нужно какой-то сервер для хранения пользователей, вложенных денег, достижений и т.п. Это может быть MySQL на обычном хостинге. Хотя при приличном числе пользователей, конечно, платном. Логин и все операции покупки/продажи/экипировки и т.п. делаем только на сервере в php скриптах и храним в том самом MySQL. Тем самым читерство будет только непосредственно в сражениях и т.п. При желании можно и там его слегка ограничить - время от времени посылать на SQL сервер в php скрипт запросы по проверке текущего оснащения и если не совпадает - банить.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.04.2013, 21:02
|
#1054
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Логин и все операции покупки/продажи/экипировки и т.п. делаем только на сервере в php скриптах и храним в том самом MySQL.
|
Ну я так и предполагал, чтобы хранить всё на sql.
А вот операции зачем хранить не понял. Я думал хранить только саму экипировку, деньги и т.п.
Просто я боюсь того, что клиент при подключении к базе может перехватить запрос sql. И натворить в этой базе всё что угодно (Или не сможет?)
А правильно ли я понял, что обращение к базе из приложения будет производиться через php-запросы, которые будут общаться с БД?
__________________
|
(Offline)
|
|
27.04.2013, 22:54
|
#1055
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Фак по Юнити.
А вот операции зачем хранить не понял.
|
В том смысле, что деньги на клиенте только для отображения - сколько их. А сама операция покупки, проверка хватает ли денег и т.п. - на сервере.
клиент при подключении к базе может перехватить запрос sql
|
Это как? Запрос делает php скрипт на сервере. Как клиент может его перехватить. Другое дело, что есть такая штука - инжекция в sql запрос. С ней можно "натворить в этой базе всё что угодно". Чтобы избежать,- нужно это предусматривать. Как - лучше спросить тут на форуме php. Там специалисты подскажут.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
28.04.2013, 17:25
|
#1056
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Сделал я первый тест с фотоном - пишет состояние связи, количество игроков.
Скомпилировал екзешник, ну и решил два раза его открыть.
Когда открыл, получилось что они вообще друг о друге не знают. Хотя по сути лобби то один.
Не подскажите что можно сделать чтобы на одной машине тестить несколько игроков?
__________________
|
(Offline)
|
|
28.04.2013, 20:51
|
#1057
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
На одном создать комнату, на втором в нее войти
|
(Offline)
|
|
28.04.2013, 21:34
|
#1058
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Но как я понял в лобби должно отображаться общее число игроков через PlayerList. В скрине расписал, посмотрите пожалуйста и пните в нужном направлении.
Оказывается PhotonNetwork.PlayerList().Lenght не показывается сколько игроковв лобби, а показывает сколько в комнате
Исходник. Пинайте, очень нужно! (Я как садо-маза - больше пинков - приятнее)
using System; using UnityEngine; using System.Collections;
public class ConnectToMS : Photon.MonoBehaviour { public string connectState = ""; public Rect connectStateRect, lobbyPanelRect; public int countInRoom;
void Awake() { PhotonNetwork.player.name = "Player num-"+ (PhotonNetwork.playerList.Length).ToString(); } void Start () { PhotonNetwork.ConnectUsingSettings("v0.1"); countInRoom = PhotonNetwork.playerList.Length; }
void OnConnectToMaster() { print ("Client connected to Master Server"); } void Update () { connectState = PhotonNetwork.connectionStateDetailed.ToString(); connectStateRect = new Rect(5f,5f,connectState.Length*8f,21f); lobbyPanelRect = new Rect(50f,50f,300f,400f); countInRoom = PhotonNetwork.playerList.Length; }
void OnGUI() { GUI.Label(connectStateRect, connectState); Rect tempRect = new Rect(150f,5f,100f,21f); GUI.Label(tempRect, PhotonNetwork.player.name); if (PhotonNetwork.connectionStateDetailed == PeerState.JoinedLobby) { RoomInfo[] roomList = PhotonNetwork.GetRoomList(); tempRect = new Rect(5f,30f,50f,21f); GUI.Label(tempRect, countInRoom.ToString()); GUILayout.BeginArea(lobbyPanelRect); for (int roomNumber=0; roomNumber<roomList.Length; roomNumber++) { GUILayout.BeginHorizontal(); GUILayout.TextArea(roomList[roomNumber].name); GUILayout.TextArea(roomList[roomNumber].playerCount.ToString()); GUILayout.Button("Connect"); GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(); if (GUILayout.Button("Create a new room")) {CreateNewRoom();} GUILayout.EndHorizontal(); GUILayout.EndArea(); } } void CreateNewRoom() { } }
__________________
|
(Offline)
|
|
28.04.2013, 21:59
|
#1059
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
PhotonNetwork.countOfPlayers - число игроков в сети
PhotonNetwork.countOfPlayersOnMaster - число игроков в лобби
PhotonNetwork.countOfRooms - число комнат
PhotonNetwork.playerList - список игроков в текущей комнате
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.04.2013, 16:46
|
#1060
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Помогите плиз. Опять упёрся. Не могу задать пользовательские настройки комнаты
Здесь я создаю комнату
void CreateNewRoom() { string[] roomPropNames = new string[1]; roomPropNames[0] = "The map"; byte mapInRoom = 5; Hashtable roomProps = new Hashtable(); roomProps.Add((byte)0 , mapInRoom);
PhotonNetwork.CreateRoom(("Room", true, true, 12, roomProps, roomPropNames); }
Далее, поключившись к комнате пытаюсь посматреть этот параметр
void OnGUI() { //ЕСЛИ В КОМНАТЕ if (PhotonNetwork.connectionStateDetailed == PeerState.Joined) { GUILayout.BeginArea(lobbyPanelRect); GUILayout.Label("Map: "+PhotonNetwork.room.customProperties[0]); //Здесь считываю GUILayout.EndArea(); } }
У меня вообще ничего не приходит - даже ноль.
__________________
|
(Offline)
|
|
29.04.2013, 16:56
|
#1061
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Я создаю комнату примерно вот так сейчас:
PhotonNetwork.CreateRoom(roomName, true, true, levelInfo.maxPlayers.Value, new Hashtable { { "L", /* индекс выбранного уровня */ }, { "F", /* френдли фаер */ }, { "V", /* версия (хз зачем)) */}, { "MI", /* минимальный уровень игрока */}, { "MA", /* максимальный уровень игрока */}, }, new[] { "L", "F", "V", "MI", "MA" } );
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.04.2013, 17:09
|
#1062
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Всё равно не показывает. Значит значит создавал параметры правильно.
Может я не правильно их считываю?
GUILayout.Label("Map: "+PhotonNetwork.room.customProperties[0]); GUILayout.Label("prop 1: "+PhotonNetwork.room.customProperties[1]); GUILayout.Label("prop 2: "+PhotonNetwork.room.customProperties[2]);
__________________
|
(Offline)
|
|
29.04.2013, 17:22
|
#1063
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Конечно не правильно, ключ байт, а ты считываешь int
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.04.2013, 18:03
|
#1064
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Спасибо большое Андрюх!
А в твоём варианте получается надо вызывать через string.
Для инета мне кажется не лучший вариант.
Может лучше описать enum
public enum roomProp {level, friendlyFire, version, minLevel, maxLevel}
А затем делать так:
PhotonNetwork.CreateRoom(roomName, true, true, levelInfo.maxPlayers.Value, new Hashtable { { roomProp.level, /* индекс выбранного уровня */ }, { roomProp.friendlyFire, /* френдли фаер */ }, { roomProp.version, /* версия (хз зачем)) */}, { roomProp.minLevel, /* минимальный уровень игрока */}, { roomProp.maxLevel, /* максимальный уровень игрока */}, }, new[] { //а это я как понял описание параметров для лобби "индекс выбранного уровня", "френдли фаер", "версия (хз зачем))", "минимальный уровень игрока", "максимальный уровень игрока" } );
и так же считывать
PhotonNetwork.room.customProperties[roomProp.level]
__________________
|
(Offline)
|
|
29.04.2013, 18:06
|
#1065
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Когда займусь оптимизацией проекта - обязательно что-то сделаю с этим)
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:55.
|