Noticias

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

Stream creacion juego cartas tipo HearthStone (programacion)

Iniciado por Eskema, Abril 26, 2018, 03:39:48 PM

Tema anterior - Siguiente tema
Cita de: francoe1 date=1525084532Genial - Es similar a lo que estoy haciendo yo, la diferencia es que la lógica la mantiene el servidor, ya que no contiene ninguna propiedad 3D, no utilizo photon, creo que es un servicio que se adapta a otro tipo de juegos, ya que estamos hablando de algo basado en turnos, con muy pocos paquetes en cada partida.
   
   
      Por lo demás, quizas comparta mi librería de Networking para que le peguen un OJO, está estable, y totalmente funcional es algunos proyectos, tiene algunas características que a mi gusto hacen que el desarrollo de un backend se super simple.
   
   
      La tienda para comprar cartas u otros objectos¿Con que servidor lo hacen? -
   
   
      La pregunta va por lo siguiente, vos inicias el juego y te conectas a un MasterServer, el master server tiene el servicio de sesión de usuarios, para realizar una compra, ¿no pasas por la sesión activa del master server?, veo que el interés por la seguridad no es un problema, pero pienso, seria muy facil de hackear si no se tiene un servicio de sesión activo. <---- hago hincapié en que en estos tipos de juegos los sobres de 5 cartas tiene un valor real U$D por lo que sería preocupante la clonación de sesione, imagino que utilizan un método de encriptación de punta a punta.
   


 
 
La logica en el server nos la saltamos porque creemos y confiamos en el player, deberiamos poner la logica en el server pero se penso que no era necesaria esa capa porque ya hemos validado la tirada. 
 
Validamos que el player 1 ha lanzado una carta y el server le ha dicho "carta ok, no esta trucada", entonces se la enviamos al player 2 via photon. Como decia alguien podria interceptar la llamada de photon y cambiar la carta... pero cuando el player 2 fuera a lanzar su carta (en el siguiente turno) se veria que no coincide y el juego se quedaria bloqueado/se cerraria, le explusariamos de la partida, etc.
 
El tema compras va por nuestro server tambien. Tu quieres comprar algo asi que vamos a la api de android o de ios (a sus sitema de IAPs) y sacamos el item y demas, Una vez comprado se valida la compra con nuestro server, en caso de fallo la compra se anula. 
 
En nuestro caso ademas las compras NO se hacen ingame, mientras juegas no se puede comprar nada, las cartas nuevas se compran en el menu, tras acabar la partida o antes de empezarla, con lo cual con el sistema de pagos de apple/android mas la validacion del server es mas que suficiente para saber que nadie te hackea, porque para eso la llamada al server la hace el cliente logeado previamente y validado, si algo no coincide porque han intentado cambiar el token de sesion el server le dice que "una mierda que te comas".
 
 
 
La unica parte como digo donde "flojeamos" con la seguridad es que el player 2 cuando recibe la carta no se valida, se da por hecho que viene la carta correcta, y aunque se hackee, la tirada se ejecutara, pero como luego al lanzar la carta que sea se vera que hay una inconsistencia pues... le sacaremos de la partida y lo marcaremos en el server como tramposo xD. Osea que le damos al jugador tramposo unos segundos en los que parece que todo esta ok y se cree que nos la ha colado, para luego en su tirada sacarlo de la partida por tramposo xD.
 
Como digo con este sistema nos ahorramos tanto el tener que validar las cosas tantas veces, no sera el mejor ni de lejos, pero hasta la fecha hackeos hemos tenido 0, intentos muchos xD

Cita de: Eskema date=1525087308 
   
   
      La logica en el server nos la saltamos porque creemos y confiamos en el player, deberiamos poner la logica en el server pero se penso que no era necesaria esa capa porque ya hemos validado la tirada. 
   
   
      Validamos que el player 1 ha lanzado una carta y el server le ha dicho "carta ok, no esta trucada", entonces se la enviamos al player 2 via photon. Como decia alguien podria interceptar la llamada de photon y cambiar la carta... pero cuando el player 2 fuera a lanzar su carta (en el siguiente turno) se veria que no coincide y el juego se quedaria bloqueado/se cerraria, le explusariamos de la partida, etc.
   
   
      El tema compras va por nuestro server tambien. Tu quieres comprar algo asi que vamos a la api de android o de ios (a sus sitema de IAPs) y sacamos el item y demas, Una vez comprado se valida la compra con nuestro server, en caso de fallo la compra se anula. 
   
   
      En nuestro caso ademas las compras NO se hacen ingame, mientras juegas no se puede comprar nada, las cartas nuevas se compran en el menu, tras acabar la partida o antes de empezarla, con lo cual con el sistema de pagos de apple/android mas la validacion del server es mas que suficiente para saber que nadie te hackea, porque para eso la llamada al server la hace el cliente logeado previamente y validado, si algo no coincide porque han intentado cambiar el token de sesion el server le dice que "una mierda que te comas".
   
   
       
   
   
      La unica parte como digo donde "flojeamos" con la seguridad es que el player 2 cuando recibe la carta no se valida, se da por hecho que viene la carta correcta, y aunque se hackee, la tirada se ejecutara, pero como luego al lanzar la carta que sea se vera que hay una inconsistencia pues... le sacaremos de la partida y lo marcaremos en el server como tramposo xD. Osea que le damos al jugador tramposo unos segundos en los que parece que todo esta ok y se cree que nos la ha colado, para luego en su tirada sacarlo de la partida por tramposo xD.
   
   
      Como digo con este sistema nos ahorramos tanto el tener que validar las cosas tantas veces, no sera el mejor ni de lejos, pero hasta la fecha hackeos hemos tenido 0, intentos muchos xD
   


Genial, quizas suena un poco "inseguro", pero viendolo desde ese punto puede que funcione y te ahorres cierto "USO" por parte del servidor, en mi caso, veo poco fiable que el jugador ejecutará la Lógica debido a algunos factores en el gameplay, pero me gusta la idea que implementaron, quizas haga unas pruebas de esa manera en otros juegos que tengo aún por desarrollar -
 
¿Como se llama el proyecto en el que estás trabajando actualmente?

Suena inseguro porque dejamos que el jugador se crea que nos ha hackeado en la jugada actual, cuando en la siguiente lo tiramos a la calle XD.
 
En nuestro caso como el heathstone hay poca logica, carta X quita X puntos de daño a carta Y, carta Y a su vez ejecuta trigger y daña a carta N y cura a carta B. Meter todo eso en el server era un poco coñazo la verdad.
 
Actualmente estoy en 2 proyectos personales (estoy en paro). Un top down shooter y uno de gestion de recursos

Etiquetas: