[ВОПРОС СНЯТ]Microsoft Visual Studio и Unity3d

Программирование на Юнити.

[ВОПРОС СНЯТ]Microsoft Visual Studio и Unity3d

Сообщение Berenold 05 сен 2011, 03:06

Доброго времени суток. Прошу прощение если не в тот раздел написал.

Есть вот такая идея - написать простенький авторитарный сервер в Microsoft Visual Studio используя Win формы и Utity библиотеки.

Unity3d
Создал новую сцену и на камеру кинул скрипт
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class Connect : MonoBehaviour
{
    public string connectToIP = "127.0.0.1";
    public int connectPort = 45678;

    // Смешанный GUI для сервера и клиента
    public void OnGUI()
    {
        if (Network.peerType == NetworkPeerType.Disconnected)
        {
            //Сейчас мы отключены и не являемся клиентом или хостом
            GUILayout.Label("Connection status: Disconnected");
            connectToIP = GUILayout.TextField(connectToIP, GUILayout.MinWidth(100));
            connectPort = int.Parse(GUILayout.TextField(connectPort.ToString()));
            GUILayout.BeginVertical();
            if (GUILayout.Button("Connect as client"))
            {
                // Подсоединяемся к "connectToIP" и "connectPort" как клиент
                // В данном случае игнорируем NAT
                Network.useNat = false;
                Network.Connect(connectToIP, connectPort);
            }
            if (GUILayout.Button("Start Server"))
            {
                // Создаем север с 32 клиентами используя порт "connectPort"
                // Так же игнорируем NAT
                Network.useNat = false;
                Network.InitializeServer(32, connectPort);
            }
            GUILayout.EndVertical();
        }
        else
        {
            //Мы имеем подключение(я)!
            if (Network.peerType == NetworkPeerType.Connecting)
            {
                // Статус - пдключение
                GUILayout.Label("Connection status: Connecting");
            }
            else if (Network.peerType == NetworkPeerType.Client)
            {
                // Статус - клиент
                GUILayout.Label("Connection status: Client!");
                GUILayout.Label("Ping to server: " + Network.GetAveragePing(Network.connections[0]));
            }
            else if (Network.peerType == NetworkPeerType.Server)
            {
                // Статус - сервер
                GUILayout.Label("Connection status: Server!");
                GUILayout.Label("Connections: " + Network.connections.Length);
                }
            }
            if (GUILayout.Button("Disconnect"))
            {
                Network.Disconnect(200);
            }
        }
    }
}
 

Простой скрипт на создание сервера или подключение к нему(M2H туториал).

Далее в Visual Studio создал Win forms applications. В References добавил библиотеки [unity 3D] UnityEngine.
вот код события нажатия кнопки
Синтаксис:
Используется csharp
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using UnityEngine;
using UnityEditor;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
    public string connectToIP = "127.0.0.1";
    public int connectPort = 45678;
   
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                UnityEngine.Network.InitializeServer(32, connectPort, false);
            }
            catch(Exception ex)
            {
                msg("Не удается запустить сервер по причине - " + ex);
            }
        }

        void msg(string message)
        {
            listBox1.Items.Add(message);
        }
    }
}
 


По нажатию кнопки выскакиевт эксепшен
An unhandled exception of type 'System.Security.SecurityException' occurred in System.Windows.Forms.dll

Additional information: Методы ECall должны быть упакованы в системном модуле.


Поиск по google этой ошибки ничем не помог.

Если кто сталкивался или знает как это исправить подскажите пожалуйста.
Заранее благодарен.
Последний раз редактировалось Berenold 05 сен 2011, 22:08, всего редактировалось 1 раз.
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: Microsoft Visual Studio и Unity3d

Сообщение gnoblin 05 сен 2011, 06:42

не получится
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Microsoft Visual Studio и Unity3d

Сообщение gnoblin 05 сен 2011, 06:43

Что подразумевается под авторитарным? :)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Microsoft Visual Studio и Unity3d

Сообщение Neodrop 05 сен 2011, 07:16

Это значит Vissarionovich.enabled = true;
Пардон, не удержался ;)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Microsoft Visual Studio и Unity3d

Сообщение Berenold 05 сен 2011, 07:24

Neodrop писал(а):Это значит Vissarionovich.enabled = true;
Пардон, не удержался ;)

Если это был сарказм то во первых он тут не уместен, а во вторых все равно его не понял))

gnoblin писал(а):Что подразумевается под авторитарным? :)

Все математические просчеты на нем. Например:
1. Запускаем игру и вводим логин и пароль(если все условия соблюдены происходит связь с серверов). Сервер обращается в БД если данные сошлись создает (условно)элемент массива типа Player(содержатся параметры игрока) и плееру передал индекс массива с его параметрами.
2. Игрок наживает стрельбу, летит пулька если сработало попадание по противнику - обращаемся к серверу, он смотрит наши статы и говорит всем, что мы попали по противнику на столько-то и т.д.

Все просчеты делает сервер. И сервер не является игроком.
gnoblin писал(а):не получится

Если можно дайте пожалуйста более подробное описание почему не получится. Подскажите тогда как мне выйти из ситуации. Мне очень не нравится то как организован клиент сервер(в клиенте должны быть классы и методы сервера, и наоборот). Так же интерфейс сервера должен быть полностью сделанный на Win формах(например вкладки выпадающие меню и т.д.), а не изобретать велосипед из двух доступных деталей в Unity.
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: Microsoft Visual Studio и Unity3d

Сообщение Neodrop 05 сен 2011, 07:28

А чем вас не устраивает RPC архитектура? Вы не пропустили ли в справке, RPCMode.Server ? :-?
Что вам мешает не повторять RPC Сервера на Клиенте?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Microsoft Visual Studio и Unity3d

Сообщение Berenold 05 сен 2011, 07:53

Neodrop писал(а):А чем вас не устраивает RPC архитектура? Вы не пропустили ли в справке, RPCMode.Server ? :-?
Что вам мешает не повторять RPC Сервера на Клиенте?

У меня не работала передача RPC (в классе клиента пришлось делать все те же методы что и на сервере дабы заработало) потому и говорю что это не гуд. И не устраивает возможности создания нормального интерфейса для управления сервером(сервер должен быть отдельным продуктом, а не чистым Unity 3D проектом ). Вот по тому и спрашиваю - как мне выйти из сложившийся ситуации. Больше всего мне не понятно почему не хочет работать
Синтаксис:
Используется csharp
UnityEngine.Network.InitializeServer(32, connectPort, false);
 

без среды Unity. По идее это ж простое создание сокетслушателя.
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: Microsoft Visual Studio и Unity3d

Сообщение Neodrop 05 сен 2011, 07:58

Так не бывает. RPC могут не работать только если вы сами что-то напороли с ними.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Microsoft Visual Studio и Unity3d

Сообщение Berenold 05 сен 2011, 08:23

Neodrop писал(а):Так не бывает. RPC могут не работать только если вы сами что-то напороли с ними.

Neodrop в одной из тем вы сами писали:-
не чего странного, архитектура юнити не подразумевает физического разделения на клиент - сервер, вы обязаны создавать (клиент-сервер) в одном проекте так как NetworkView должен иметь одинаковый ViewID, ибо в ручную установить ViewID нельзя,(можно только выделить через AllocateViewID) само сабой юнити требует отправки и получению RPC вызова в одном из скриптов на этом же ГО

А мне нужно разделить клиент и сервер.
Короче на сколько я понял, нужно брать и писать полностью все с нуля. Начиная от банального подключения к сокетслушателю до создания объектов и передачи данных между ними.
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: Microsoft Visual Studio и Unity3d

Сообщение Neodrop 05 сен 2011, 09:59

Ну да, но это нисколько не отменяет написанного выше. Синхронизируемые вещи - типа трансформов и пр. пишем в общем проекте. Потом создаём отдельную сцену для Сервера и в неё пишем код для сервера, вешая логику на объекты, которых в клиентских сценах просто не будет. Клиента собираем без сцены сервера. Уникальные серверные скрипты можно просто переместить в папку Editor или даже выкинуть из проекта, чтоб в сборку не втянулись.
Паранойя окончилась.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Microsoft Visual Studio и Unity3d

Сообщение gnoblin 05 сен 2011, 10:18

предлагаю взять Photon ).
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Microsoft Visual Studio и Unity3d

Сообщение Neodrop 05 сен 2011, 10:50

CrystalEngine ;)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Microsoft Visual Studio и Unity3d

Сообщение Berenold 05 сен 2011, 22:07

Neodrop писал(а):CrystalEngine ;)

200 баксов в месяц абон плата ни чего так потянет))

Насчет фотона я про него уже не раз читал ну как-то руки все не доходят пощупать чего там и как.

P.S. И все таки идея написание своего(пусть даже и кривого) сервера мне нравится больше. Так как знаний и опыта набирешся пока будешь писать.
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: [ВОПРОС СНЯТ]Microsoft Visual Studio и Unity3d

Сообщение gnoblin 05 сен 2011, 22:13

если цель - получить опыт и не сделать игру (или сделать нескоро), то ок :)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: [ВОПРОС СНЯТ]Microsoft Visual Studio и Unity3d

Сообщение Neodrop 06 сен 2011, 03:14

Чего "ок" ? На Кристалле у него за день забегают черти ;)
Мне оч нравится. Единственный минус - платный. Но не смертельно.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

След.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 5