Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - francoe1

#331
General (Antiguo) / Ayuda con tema de multijugador
Enero 22, 2018, 07:37:01 PM
Cita de: pioj date=1516645248@francoe1, tengo muy presente esa propuesta. Estoy buscando la forma de llevarla a cabo... 


Genial, gracias!! 
#332
General (Antiguo) / Ayuda con tema de multijugador
Enero 22, 2018, 06:20:15 PM
Cita de: J_L date=1516615463francoe1, he pinchado en tu blog y al final me he visto los 5 videos de sistema de armas. No me valen para nada pero tengo que decirte que eres muy bueno y explicas bien. Deberías hacer mas videos de estos para gente que empieza pq verdaderamente lo haces bien.
   


Gracias, no seguí metiendo información por temas de horario, nunca tenia tiempo, pero ahora tengo un material aceptable y una propuesta con @pioj que quedo en el aire, por lo pronto estoy viendo de que manera lo puedo compartir gratuitamente y obtener ganancias aceptables.
#333
¿Ambos objetos tienes collider y rigidbody?
#334
General (Antiguo) / Ayuda con tema de multijugador
Enero 22, 2018, 01:42:39 AM
Bien, entonces primero deberias definir bien la estructura del proyecto, la información requerida para la representación de los cliente, por ejemplo, si tienes 3 diferentes "Objectos de Jugadores con sus configuraciones" supongo que tienes de estos 3 prefabs, el error que se comete habitualmente es crear un Objecto Network Identity por cada una de las configuraciones, para que todos los clientes sincronicen el tipo de jugador que seleccionaste primero deberias establecer una regla de sincronización, es decir, cuando un cliente nuevo se conecta al servidor pasaría esto.
 


  1.    Cliente se conecta al servidor.


  2.    Servidor envía información los diferentes setup de player template con sus configuraciones, esto puede ser en JSON. 
       


    1.          {Id: 1, ObjectPrefab: "Player/PlayerA", AttackTime:1, AttackDamage:10}
            

    2.    



  3.    El cliente interpreta la información recibida y muestra en pantalla las diferentes opciones.


  4.    El paso 2 y 3 se pueden obviar pero de esta manera evitas infracciones en la información.


  5.    El Cliente envía al servidor su selección -


  6.    El Servidor envía al cliente un conexión a la partida.


  7.    El Cliente se conecta.


  8.    El Servidor spawnea el Object del Cliente con todas sus configuraciones, seguido a esto, envía a todos los clientes la informaciones del cliente, para que estos puedan tener un instancia del mismo.


  9.    El Cliente confirma que tuvo éxito en la instancia y carga de recursos y el cliente le da el "Ok" para empezar a interactuar.


  10.    Desde aquí empieza la arquitectura del cliente/servidor propia del juego.


Tienes que recordar algo, la información dentro del cliente puede ser modificada a gusto, por lo cual tenes que asegurarte de que el cliente tenga siempre un información actualizada, es por esto que se crean múltiples backend para este trabajo -
 


  •    Servidor de recursos


  •    Servidor de datos


  •    Servidor de salas


  •    Servidor de partidas


  •    Servidor de sesiones


Entre todo estos servidores existen diferentes métodos de conexión, es por esto que UNET no sirve para trabajar debido a que compartimos el servidor con el cliente para que este pueda funcionar. Si el cliente HOST modifica la información entonces todos los clientes se verian afectados -
 
----------------------------
 
No es necesario utilizar NetworkManagerHud, ya que lo único que hace este mismo es utilizar funciones de NetworkManager, La función para iniciar el servidor es StartHost y para el cliente StartClient, luego tienes múltiples configuraciones para cada una -
 
En estos dias voy a compartir un tutorial básico sobre esto, en este momento no tengo tiempo para terminar de acomodar algunas secciones que no me gustaron mucho como están, pero de a poco iré liberando información obvio por UnitySpain y mi blog personal el cual ya cuenta con información sobre UNET 
 
http://unitydoc.blogspot.com.ar/
 
 
#335
General (Antiguo) / Ayuda con tema de multijugador
Enero 21, 2018, 11:30:56 PM
Cita de: ebenknot date=1516571334Necesitaria ayuda con una cosa que puede ser simple pero me esta costando algo de trabajo conseguirlo. Trabajando con el NetworkManager de Unet Tengo Creada una partida en la cual hay alojado un Client como server y un Client como player creados por defecto por Unet.¿Como sería el código necesario en C# para saber en la ejecucion del segundo cliente y posteriores clientes, si hay una partida creada con un serverclient en ella? ;Muchas gracias por toda la ayuda :)
   


Estas teniendo problemas de concepto, se me ocurre que estas intentando hacer un matchmaking pero te estas equivocando -
 
Dime que intentas hacer y te ayudo.
#336
General (Antiguo) / DB SQLite o externa (MySQL)?
Enero 20, 2018, 09:01:23 PM
Te estas equivocando en la terminologia, IU << no existe, seria IA o AI (Inteligencia artificial o Artifitial intelligence), por otro lado, creo y por lo redactado no entiendes muy bien la estructura de un modelo de datos relacional, me doy cuenta porque estás consultando sobre el limite de una "Base de datos", lo cual sería un grave error llegar a ese punto.
 
Cuando te refieres a mucha información pasamos a hablar de BIG DATA pero para estar en ese terreno nos falta muchísimo camino por delante, cualquier motor de DDBB que elijas te será de utilidad, podrias utilizar EF + SQL o crear un sistema de guardado basado en JSON, un modo de serialización personalizado o inclusive a través de XML.
 
En cuanto tu juego funcione de forma Offline, podrás dar el paso al online, pero sin ánimos de desilusionarte se va a complicar muchisimo que llegues al exito, debido a que se convierte en un estructura altamente compleja, con sin fin de teorías, problemas  y técnicas que requieren años de estudio y práctica -
 
Que te recomiendo, no pretendas realizar un proyecto tan ambicioso, prueba algo más simple, con sistemas de "Networking" mas básicos como Trades, Compras, etc.
 
En cuanto a la parte técnica, SQLite como cualquier otro motor de base de datos no tiene un limite, o si lo tienes estariamos hablando de 150 terabytes aproximadamente por lo cual no seria un limite para un juego, existen cierto límites atados al host como por ejemplo el fraccionamiento de información que puede hacer que la base de datos se haga cada vez más lenta, pero tambien hablamos de grandes cantidades de información.
 
Por otro lado, por lo general, el limite no es la base de datos sino el Hardware del cliente, por ejemplo un dispositivo android con 4GB ram un Snapdragon 8xx no puede estar trabajando con base de datos SQLite de mas de 20 Gb aprox, por que no cuenta con la memoria ram suficiente para ciertas tareas que se realizan en las consultas -
 
Imaginate que en el peor de los casos el diseño de tu cliente no tiene límites en una sentencia SELECT y superas los 30K registros entonces tendrias un problema grave, suponiendo que cada registro tiene por lo menos 5 columnas.
 
Mi punto de vista, no necesitas base de datos, con JSON podrias guardar toda la información que necesites, y tendrás muchísima más libertad en tipos de datos, por otro lado la modificación de la estructura no te seria un problema, si necesitas cambiar, borrar o agregar un dato no sería tanto problema como lo es con una base de datos, puedes crear relaciones, cargar parcialmente la información requerida y muchisimas cosas mas.
 
MySQL tampoco es una opción válida, dependes de compartir un servidor MySQL con tus clientes, lo que sería un total problema de seguridad - cualquier motor de base de datos SQL Server, MySQL PostgreSQL, etc, no deben tener una conexión al exterior, debido a que son los motores con mayor cantidad de exploit dando vueltas y son los más vulnerables, en 10 minutos que tu servidor este online podrias encontrarte con la DDBB encriptada, truncada, modificada etc... 
#337
General (Antiguo) / Ayuda con tema de multijugador
Enero 20, 2018, 02:34:50 AM
Mira, la diferencia entre una red LAN y WAN es amplia, pero en simples aspectos no tanto.
 
Primero, si intentas tener acceso a tu PC desde WAN osea desde otra PC que esta fuera de tu red LAN deberás contar con una IP pública,
 
¿Que es una IP pública?

Una IP es accesible desde cualquier punto del planeta, es nuestra puerta al mundo del internet, pero no lo veamos asi, tratemos de entender mas a fondo como funciona, primero tenemos que entender el modelo OSI para esto dejo un link a Wikipedia con una explicación perfecta Información.
 
Bien dado por entendido cómo se conectan los dispositivos y se transporta la información veamos los escenarios posibles y sus configuraciones.
 
Primero, un equipo de PC con un ISP que provee una IP publica (Dinamica/Estatica) -

El ISP llega a nuestra casa mediante un cable, el cual puede tener 2 configuraciones diferentes ADSL o Point To Point (PTP), ¿cuales son las diferencias?, si llega un conexión ADSL por lo general la administración de router queda en nuestras manos, de lo contrario, la administración queda en mano del servicio de ISP, la razón es simple, dentro de la antena PTP están las configuraciones de la empresa para establecer la conexión con la antena receptora y validar datos de usuarios, modelos, version, mac, ip. ETC.
 
¿Cual es el problema cuando tenemos un PTP? no poder configurar los puertos -
 
¿Como una PC se puede comunicar con otra a través de la RED? 

Solo voy a comentar sobre la capa de transporte IP, para enviar información de un dispositivo a otro debemos especificar su dirección IP y un puerto, supongamos que tenemos que entregar una carta en un Edificio, necesitamos saber la dirección de dicho edificio y el número de puerta, entendiendo podemos solucionar problemas a mas alto nivel, por ejemplo, si quieres que tus clientes puedan conectarse a tu aplicación primero deberias verificar si existe un conexión física entre ambos dispositivos, esto puede ser red LAN, Internet, etc, luego tienes que saber cual es el puerto en el que tu servidor está esperando conexiones o datagramas, una vez revelada esta información tendrias que verificar que el servidor se está ejecutando sobre la interfaz de red deseada, no es lo mismo home.z3nth10n.net:8080 | ::8080 | 192.168.1.100:8080, la primer opción solo seria valida dentro del mismo equipo el valor home.z3nth10n.net hace referencia al lookup (esto es genérico, pero puede ser alterado), la segunda opción sirve para que el puerto de escucha no esté atado a una interfaz si no que no importa porque interfaz reciba información la aplicación la podrá interpretar, por otro lado la tercer IP es un ejemplo de como comúnmente se vería un servicio corriendo por la interfaz de un equipo normal.
 
IP privada vs IP pública

Cuando nuestro equipo o servidor se encuentra detrás de un servidor DHCP (Parte de los servicios de un router) este brinda un IP diferente a la del router y se establece un ámbito de trabajo nuevo, lo que se denomina un rango nuevo, para nosotros hacer uso del internet el router nos provee una Puerta de acceso, esto sirve para decirle a la interfaz del dispositivo que toda la información saliente esta dirigida a esa dirección.
 
Entonces, un servidor DHCP nor provee una configuración que esta compuesta por la IP que va a utilizar el dispositivo + la IP de router y algunos valores extras que no tienen importancia en este punto.
 
De esta manera nosotros logramos tener salida al internet, pero estamos bloqueando la entrada del internet, nadie puede acceder a mi equipo si yo no le indico al router donde estoy, quien soy. ¿Como se hace esto? Redireccionamiento de puertos.
 
¿Redireccionamiento de puertos?

Si, cada dispositivo tiene un rango de puertos del 0 al 65535, esto quiere decir que detras de cada uno de esos puertos nosotros podriamos tener diferentes servicios corrientes, HTTP, FTP, SQLServer, GameServer, etc...

Pero estos servicios logicamente no pueden estar en el router, requieren de un equipo con los requerimientos necesarios para server utilizados, entonces vayamos a un ejemplo practico.
 
Supongamos que queremos jugar un CS 1.6, Tú vives en Brasil y yo en Argentina, yo entro a www.cualesmiip.com para saber que IP me estra siviendo mi ISP y te pido que realices un PING a dicha dirección, bien, tu entras a la consola de Windows y escribes el clásico comando.
 
ping 66.44.125.12
 
Ves que el resultado del PING es bueno, ¿Pero como se yo si es realmente una IP pública y que estás haciendo PING a mi router?, tengo dos opciones, la opcion animal, desconectar el router, si el PING deja de resolver entonces se trataba de mi router, otra opción es buscar la opcion dentro del router que evita que se le realice PING y volvemos a lo enunciado anteriormente, bueno, ahora sabemos que yo cuento con una IP pública y que de alguna manera extraña existe una relación fisica entre nuestros equipos.
 
Creo el server CS 1.6 y cuando voy a compartir la información del server me aparece 192.168.1.100:23500, claro esa IP es la que el router le brindo a mi equipo, lógicamente vos no tendrias conexión con la misma, pero yo puedo realizar un enlace mediando Redireccionamiento de puertos, decirte que mi IP pública más el puerto 23500 (O el que se configure) hace referencia al server de CS -
 
Para realizar esta configuración se debe entrar a las configuraciones del router, a la sección de Redireccionamiento de puertos, Port Forwarding o Trigger Port y configurar lo siguiente -
 
en el campo destino la IP del equipo que esta corriendo el servidor : 192.168.1.100

en el campo Wan Port el puerto que es capturado desde el internet

en el campo Lan Port el puerto que al que se va a enviar la información en este ejemplo 23500
 
También podemos realizar las misma configuraciones con rango de puertos, por ejemplo, 23500 al 23600 y todos esos puertos podrian referenciar a un solo puerto de la LAN.
 
 
 
Espero sea de ayuda, trate de explicarlo lo mas humanamente posible, si no entiendes algo pregunta no tengo problemas en responder.
#338
General (Antiguo) / Curva 2d 360 Grados coche
Enero 19, 2018, 11:18:38 PM
Cita de: brok date=1516400029Gracias ya lo hice y funciono no me había dado cuenta de eso.
   
   
      Respecto al video no me importa que se borre la próxima vez lo meteré en un zip y a sin se puede descargar bien.
   
   
      Porque a YT no quería subirlo.
   


La idea es que sea simple, yo por que tenia intenciones de ayudar descargue el video, pero no todo el mundo tiene ganas de descargar archivos, podes subirlo a YT en modo oculto y compartir el enlace al foro -
 
Suerte!
#339
Cita de: SebasT date=1516372962buenas,hoy quiero aportar un blog que me encontre se trata de un resumen de la api y de muchas clases de unity en español muy bueno para los que tienen poco o nulo conocimientos de ingles y quieren algo parecido a un manual en español
   
   
      http://unityscripts.blogspot.com.ar/
   


Gracias Seba, esto ya se compartio en el foro múltiples veces, la información data del 2011/12 por lo cual ya no tiene validez en un 50% - Te recomiendo ver la documentación de Unity desde la página oficial que esta muy bien explicada y parte de ella ya esta en español.
 
 
#340
General (Antiguo) / Curva 2d 360 Grados coche
Enero 18, 2018, 08:00:50 PM
¡Por favor! Los videos se deben subir a YT y compartirlo en el foro, estan llenando el foro de archivos basura que cuesta visualizar -
 
Podrias poner un trigger con tiempo, el trigger lo colocas en la punta del bucle y que este desactive el collider del inicio.
#341
Cita de: Alex Octavio date=1516289936Por favor yo tambien necesito proteger juegos a Unity algun progrma de pago que recomienden.
   
   
      Saludos.
   


¿Proteger?
 
Esto hilo es solo para crear un instalador, el instalador contempla múltiples tareas para que el juego funcione a la perfección en todos los cliente, pero este no protege nada -
 
Para la protección podrias utilizar un osfurcador de Assembly -
#342
General (Antiguo) / Ayuda con tema de multijugador
Enero 18, 2018, 06:25:09 PM
Claro, mira te explico el negocio.
 
Los Cloud Server como UNET y PHOTON te cobran por CCU (Conexiones activas) y por MPT/PPT (Paquetes por tiempo), por ejemplo un FPS de 100 clientes activos sería más caro que un juego basado en turno, por la cantidad de información requerida. Si bien UNET te va a resolver multiples problemas termina siendo bastante mas cara para producir que otros framework como RackNet, eNET, Udp Seguro, o Lite UDP estos dos ultimos te dejo el proyecto son los que he utilizado para múltiples trabajos y funcionan de maravilla.
 
https://github.com/andrewzk/Reliable-UDP
https://github.com/RevenantX/LiteNetLib
 
Bien la diferencia entre armar algo con un Framework gratuito o propio es que necesitarás un servidor para funcionar, y por simple lógica este debe contar con un IPS simétrico, Igual Subida que bajada, redundancia de servicio, si se corta 1 tener 2 o 3 de respaldos, redundancia eléctrica para mantener online el servidor mas de 2 horas, con estas características nuevamente el precio se va por las nubes, entonces que opción tenemos, VPS (Servidor virtual privado), este servicio lo proveen muchisimas entidades pero el mas recomendado es Google VPS este ofrece tarifas razonables, y cobra por, Subida, Bajada de internet y el uso del procesador, las ventajas sobre esto es que logicamente es virtualizado por ende el cambio de Memoria y Procesador se pueden realizar en caliente, estos brindan un IP pública y estática por lo que se puede utilizar para cualquier servicio, una WEB, un server FTP, y logicamente el propio servidor del juego, servidor REST y bundle... etc.
 
¿Cual es la ventaja más diferenciada en esta arquitectura?
 
El uso DDBB a antojo, una arquitectura Cliente/Servidor nativa, arquitectura del medio escalable, seguridad a más bajo nivel, tratado de la información con más detalle, precios relativamente más bajos que un Cloud Server -
 
¿Desventajas?
 
El doble o triple de trabajo, debug mas tediosos, nula documentación sobre lo requerido.
#343
General (Antiguo) / Ayuda con tema de multijugador
Enero 17, 2018, 07:17:05 PM
¿Que plataformas queres cubrir?
#344
General (Antiguo) / Ayuda con tema de multijugador
Enero 17, 2018, 05:08:01 PM
Primero, ¿Podrías programar Sockets?. Si es asi, entonces esto se podria hacer muy simple, pero logicamente tendria un costo mayor si pensas construir un Back-End que requiera de un VPS para funcionar.
 
Opción económica - si cuentas con un ISP que provee una IP publica dinamica podrias utilizarla para que los clientes se conecten a un Back-End instanciado en tu PC o VirtualPC, para solventar el problema de cambios de IP podrias usar servicios gratis como No-IP o de pago como DynDNS.
 
Ahora vamos a la estructura, si el juego es tan simple como slither.IO entonces te recomiendo una estructura simple - Primero deberias de pensar el modelo.
 
Server
 


  •    Clientes
       


    •          Nombre
            

    •       

    •          Posición
            

    •       

    •          Rotación
            

    •       

    •          Puntuación
            

    •    



Ahora deberias de empezar por programar un server con Socket UDP e implementar un servicio de mensajes seguros y no seguros.
 
 
#345
General (Antiguo) / Unity 2018.1
Enero 17, 2018, 04:58:07 PM
Cita de: Eskema date=1516160949Unity es lo peor para proyectos grandes o con mucha gente, unity nunca se pensó para equipos de mas de 2-3 personas. Y "gracias" a su sistema de componentes y el monobehaviour te deja hacer autenticas barbaridades en el codigo.
   
   
      De todas maneras unity no va a cambiar, tendrian que tirarlo todo a la basura y empezar de 0 para mejorarlo, y eso ni de broma va a pasar. Asi que para bien o para mal tenemos unity con sus pros y sus contras xD
   


Cuando hable de la estructura no me refería al trabajo cooperativo, si no a la estructura misma del motor, este deberia ser modular, y cada modulo debería de instalarse en un lugar aparte al proyecto general, los warning y errores de los plugins no deberian ser visibles.. es decir, yo realizo un plugin y lo comparto, vos tendrias que tener un gestor de plugins donde colocarlo y listo... 
 
Es un problema descargar un Assets para X tarea por ejemplo AssetBundleBrowser que es muy util pero tenemos que estar con los scripts en nuestro proyecto y es algo sumamente molesto -
 
Yo tengo un sistema modular de Plugins, y tengo ciertos plugins que me sirven para ADS, Google API, un transporte para un BackEnd, etc, estos no se ven en el proyecto en general, pero el Plugins si, pero al ser una DLL no es tan invasivo, lógicamente para que funcionen los iconos y demás, la DLL los busca en "%programfiles%/UnityPluginsManager/" ...
 
Lo de trabajo cooperativo Unity lo tiene bastante bien con las versiones premium, yo lo he utilizado y funciona de maravilla, al igual que cualquier otro trabajo cooperativo, por ejemplo VS y EF, pueden ser proyectos muy grandes con múltiples colaboradores y tener un forma muy simple de cooperar. De todos modos esto es relativo a cada uno...