Страница 2 из 5

Re: Создание игрового сервера

СообщениеДобавлено: 25 авг 2013, 19:33
Golandez
Node.js+ Socket.IO

Re: Создание игрового сервера

СообщениеДобавлено: 27 авг 2013, 22:23
Sality
Что такое по сути своей сервер? Это модуль отправки принятия пакетов. И модуль (пул) потоков. Все. Далее идет разбор пакетов по вашему личному протоколу и реализация игры. То есть сам движок сервера пишется за неделю, а если уже писали, то за пару дней. Все остальное это реализация игры, а она может быть ооооочень сложной, так что вы не путайте ядро сервера от игры. Тутор писать нет смысла, так как само ядро уже написано и переписано миллион раз.

Если вы хотите научится сами, берите самую простую игру и пишите к ней сервер. Потом вторую игру, ну а дальше вы сами все поймете как действовать дальше.

Re: Создание игрового сервера

СообщениеДобавлено: 02 сен 2013, 12:10
v.bykovskij
Может подскажет кто где есть простые примеры со связкой unity+node.js, уже неделю мучаюсь(
п.с помелу уже нашёл, но не смог запустить [curved_hands]

Re: Создание игрового сервера

СообщениеДобавлено: 02 сен 2013, 21:22
Golandez
https://github.com/NetEase/UnitySocketIO раздел API, скачайте библиотеку, посмотрите, код довольно таки понятный, библиотека с пасхалкой(не даст по дефолту прочесть эвент на клиентской стороне). К node.js установите модуль socket.io. Шлются/ принимаются как мессаги, так и эвенты.

Re: Создание игрового сервера

СообщениеДобавлено: 03 сен 2013, 11:59
v.bykovskij
да её я уже видел, пытался сделать по примеру

Синтаксис:
Используется csharp
Client client = new Client(url);

client.Opened += SocketOpened;
client.Message += SocketMessage;
client.SocketConnectionClosed += SocketConnectionClosed;
client.Message +=SocketError;

client.Connect();

private void SocketOpened(object sender, MessageEventArgs e) {
    //invoke when socket opened
}
 


но в итоге юнити ругается почти на все переменные + эта библиотека не компилируется под веб плеер(

Re: Создание игрового сервера

СообщениеДобавлено: 03 сен 2013, 12:33
seaman
Пространство имен подключили?

Re: Создание игрового сервера

СообщениеДобавлено: 03 сен 2013, 14:43
Golandez
Кроме ddl- ok в проект нужно положить папку со всеми скриптами из архива. Подключить пространство имен SocketIOClient и SocketIOClient.Messages

Re: Создание игрового сервера

СообщениеДобавлено: 04 сен 2013, 07:19
v.bykovskij
Весь код

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using SocketIOClient;
using SocketIOClient.Messages;
       
public class clients : MonoBehaviour {

        // Use this for initialization
        void Start () {
                Client client = new Client("http://192.168.1.1/");             
                client.Opened += SocketOpened;
                client.Message += SocketMessage;
                client.SocketConnectionClosed += SocketConnectionClosed;
                client.Message +=SocketError;          
                client.Connect();      
        }      
        private void SocketOpened(object sender, MessageEventArgs e) {
                  //invoke when socket opened
        }      
        // Update is called once per frame
        void Update () {       
        }
}
 

Re: Создание игрового сервера

СообщениеДобавлено: 04 сен 2013, 09:04
Golandez
Покажите содержание в вашем проекте папки Plugins и пака скриптов, который шел вместе с библиотекой.

Re: Создание игрового сервера

СообщениеДобавлено: 05 сен 2013, 06:09
v.bykovskij
я создаю пустой проект, поэтому мусор не должен был мешать.. может конечно ошибка спряталась в текущей сборке SocketIO

Re: Создание игрового сервера

СообщениеДобавлено: 05 сен 2013, 06:10
v.bykovskij
хотя скорее всего в моих руках [curved_hands] =_)

Re: Создание игрового сервера

СообщениеДобавлено: 05 сен 2013, 09:05
Golandez
Найдите отличия со своим кодом и почитайте о сущности событий и подписке на них.
Синтаксис:
Используется csharp
public class clients : MonoBehaviour
{
        Client client;
        static string socketUrl = "http://127.0.0.1:7000";
       
        void Start ()
        {                              
                client = new Client (socketUrl);
                client.Message += SocketMessage;
                client.Opened += SocketOpened;      
                client.Connect ();
        }
               
        void SocketOpened (object obj, EventArgs messag)
        {      
        }
       
        void SocketMessage (object obj, MessageEventArgs e)
        {
        }
}

Re: Создание игрового сервера

СообщениеДобавлено: 11 окт 2013, 12:06
craw1er
Golandez писал(а):https://github.com/NetEase/UnitySocketIO раздел API, скачайте библиотеку, посмотрите, код довольно таки понятный, библиотека с пасхалкой(не даст по дефолту прочесть эвент на клиентской стороне). К node.js установите модуль socket.io. Шлются/ принимаются как мессаги, так и эвенты.


А как можно прочесть и отправить эвент на клиентской стороне в UnitySocketIO?

client.Emit( "test", "test" ); - сервер никак не реагирует на такую отправку клиентом.

Если получать эвенты на стороне клиента, то e.Message.Event = null
Но в e.Message.MessageText можно получить текст сообщения, но его нужно парсить как-то самому: {"name":"message","args":[{"text":"6793","nick":"457"}]}

Re: Создание игрового сервера

СообщениеДобавлено: 02 ноя 2013, 08:00
craw1er
Вобщем помимо того, что не работает эмит и прием ивентов на стороне клиента в UnitySocketIO есть серьезный косяк с большой нагрузкой на CPU.

Re: Создание игрового сервера

СообщениеДобавлено: 02 ноя 2013, 10:19
Golandez
Эмит и эвенты работают, на CPU нагрузки нет(я такого у себя не ловил). Давайте разберем проблему на тестовом примере.