Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Duda Existencial con UNITY --> MYSQL

Iniciado por Kvashir, Enero 15, 2017, 02:20:32 PM

Tema anterior - Siguiente tema
Buenas otra vez !!, estoy haciendo un proyecto en UNITY y tengo de momento, el registro de usuarios solo,(funciona todo, incluso programe para mandar un correo y recuperar contraseña)
 
para eso instale un debian en un note-book y cree un dominio en no-ip (tengo ip dinámica) el tema es que desde el juego me conecto a la base de datos usando solamente C# (todos los manuales, video-tutoriales y demás lo enseñan usando PHP ).
 
Con C# en un futuro cuando quiera usar la DDBB para otras cosas que no sean "el registro de usuario" me dará muchas mas ventajas que usar php (podre crear DATASETs, para liberar consultas a la base de datos por ejemplo y no saturar el servidor ni la conexión misma, mandar lo justo y necesario al servidor para que sea mas eficiente, quizás también ahorrarme el uso de socket).
 
Otra cosa que estoy planteándome es buscar mas info para hacer un SOCKET pero OJO! un socket para el servidor (debian) en modo consola, y que el juego en unity se comunique con el socket (me parece que sería mas eficiente que hacer el dataset, depende para que claro).
 
De todas formas, si, lo se, estoy usando un notebook para hacer eso, no quiero quemarlo! es solo para testear.
 
tengo claro que se tiene que optimizar mucho la informacion que quiero mandar al servidor para que tenga un buen rendimiento.
 
Mi pregunta és:
 
Porque casi todo el mundo usa php para hacer eso? rinde mas todo desde codigo C# no? 
 
con la version gratuita de unity hay limitaciones de jugadores online pero solo usando socket, no? 
 
 
 
PD: se como se hacen los sockets en C# y como implementarlos en unity, mi pregunta no es esa. 

Creo que te refieres al PHP de la parte del server... Es para facilitar la comunicación de respuesta... Podrías hacer un programa en el server con c# pero tendrías que tener "escuchas" y emisores en cambio con PHP mandas la consulta y la recibes en una misma linea  

No se si todo el mundo o la gran mayoria usa php para "eso", yo como tu también uso C# y sockets, pero puedo suponer que porque los tutoriales estan de esa forma. Pero si buscas de manera mas general y no te limitas a los videotutoriales, puedes encontrar de formas distinta.
 
Hasta donde tengo entendido las limitaciones del unity son cuando usas sus componentes de Networking, y el servidor que unity les brinda  a los usuarios para usar, en el caso de usar sockets tu armas todo el tema del Cliente-Servidor desde cero así que no deberías tener problema con el numero de usuarios mas que el de tu equipo como servidor pueda darte

Si te decodifican el juego y tienes la contraseña de la db en el código, ya sabes lo que pasa.

Cita de: leocub58 date=1484504659Si te decodifican el juego y tienes la contraseña de la db en el código, ya sabes lo que pasa.
   


eh leido mucho sobre el tema y creo que es mas fácil robar un archivo php de un servidor que descompilar una aplicación.
 
lo que si que es cierto que sería mas seguro un socket por eso mismo que el tenerlo en la app,
 
 

@Kvashir todo es segun para que lo quieras usar, PHP se ejecuta en el servidor, esto quiere decir que tu servidor web lo ejecuta y a ti solo te envia codigo HTML, sabiendo esto hay que decir que PHP se esta quedando atras y otros como HTML5 y JS le ganan terreno, junto a ASP.Net de microsoft.
 
C# es un lenguaje fuera del dominio web y creas tu aplicacion con el y necesitas el plugin de MySql u otro para conectarte a tu DB, esto quiere decir que todo lo que crees con C# sera cliente.
 
En versiones anteriores de unity la gente usaba sockets para el multiplayer, ahora ya no. Unity implemento Unet que es bastante rapido, pero al principio es costoso de aprender, te dejo un hilo para que le eches un ojo: https://forum.unity3d.com/threads/unity-5-unet-multiplayer-tutorials-making-a-basic-survival-co-op.325692/
 
Para el uso de sockets: tienes que usar los namespaces:
 

using System.Net;
using System.Net.Sockets;


byte[] bytes = new byte[1024];//Este sera nuestro buffer.
        // Este es un ejemplo de conexion socket
        try {
            // Estableces el Endpoint remoto del socket.
            IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName())
            IPAddress ipAddress = ipHostInfo.AddressList[];
            IPEndPoint remoteEP = new IPEndPoint(ipAddress,1994); //1994 es el Puerto
            // Creamos el socket.
            Socket sender = new Socket(AddressFamily.InterNetwork,
                SocketType.Stream, ProtocolType.Tcp );
            // Conectamos el socket al Endpoint
            try {
                sender.Connect(remoteEP);
                Console.WriteLine("Socket conectado a: {0}",
                    sender.RemoteEndPoint.ToString());
                // Codificamos los datos en el buffer.
                byte[] msg = Encoding.ASCII.GetBytes("This is a test<EOF>");
                // Enviamos los datos.
                int bytesSent = sender.Send(msg);
                // Recivimos respuesta de Endpoint.
                int bytesRec = sender.Receive(bytes);
                Console.WriteLine("Prueba de escucha: {0}",
                    Encoding.ASCII.GetString(bytes,,bytesRec));
                // Cerramos el socket.
                sender.Shutdown(SocketShutdown.Both);
                sender.Close();
            } catch (ArgumentNullException ane) {//Errores posibles.
                Console.WriteLine("ArgumentNullException : {0}",ane.ToString());
            } catch (SocketException se) {
                Console.WriteLine("SocketException : {0}",se.ToString());
            } catch (Exception e) {
                Console.WriteLine("Unexpected exception : {0}", e.ToString());
            }
        } catch (Exception e) {
            Console.WriteLine( e.ToString());
        }

 
Un saludo, espero te sea de ayuda, de todas formas sobre sockets tienes mil informaciones en la web, es lo mismo usarlos en C#.net que es Unity.

····>Desarrollando un videojuegos online-arcade para Android.


····>Programador en:C,C#,VB.net,PHP,HTML5,SQL,JS,Ruby.


····>Trabajando en: Desarrollo de paginas web y bushistudios.


                    ๑۩۞۩๑_(▀▄)KINGTRASE(▄▀)_๑۩۞۩๑ 



Etiquetas: