Gemix Photon

Extensiones oficiales y no para expander el lenguaje Gemix.

Re: GemixPhoton

Postby SimulatorOne » Fri Nov 03, 2017 12:08 pm

Si, falto poner un limite de jugadores, que de pueden unirse, aun asi tenia la chapuza de programar, que si la variable global si sobre pasa el max_jug, se auto desconectaria de la sesion, dando un mensaje del motivo.

Programar el pateo kick de un jugador realmente no es dificil, sencillamente el quien haga de gamemaster, escribiviendo un comando de texto o un boton especial,
Pues envia una señal a un jugador en concreto, asi de forma automatica obligaria la desconexion de la sesoion, mas un mensaje del motivo.el resto de jugadores omiten ese mesaje clave, ya que no cuencide el numero de jugador de destino.
Asi de sencillo.

Buscar partidas dentro del mismo servidor appid, estaria muy bueno, es importante.
Nombre, numero de jugadores y limite de jugadores y posible contraseña...

Lo que no veo necesario, es lo otros 2;
+ Unirse a partida X
+ Unirse a partida aleatoria
Ya que se puede programar a mano. Una vez conocido las partidas existentes, podemos elegir una, o a random...
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

Re: GemixPhoton

Postby SimulatorOne » Fri Nov 03, 2017 11:47 pm

Esta noche me pondre a programar, caracteristicas que faltan en el modulo photon, se pueden programar y simular el comportamiento, de estas:

-al crear una partida nueva(no existente), siempre sera el jugador1, este puede establecer unas normas de la sala(lobby), puede: limitar numero de jugadores, poner contraseña de acceso, patear algun jugador si desea, copiar erencia de privilegios al proximo jugador en caso de retirada de jugador 1, opcion de partida persintante con jugador1, si jugador 1 se marcha, todos los jugadores se marchan de la sala tambien.

-si la partida ya existe, se unira...si, pero si el jugador 1 establecio unas normas, que antes he establecido.
El jugador unido(2,3,4..) en la partida debe comprobar esas normas nuevas y respetarlas obligaroriamente, si respeta max jugadores, introducir la contraseña de la sala(si tiene), y tener encuenta las normas de la sala, que el jugador 1 (quien creo la sala) ha establecido.

Con esto se logra programar salas seguras, privadas y unas normativas basicas de sala.
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

Re: GemixPhoton

Postby Nowy » Fri Nov 03, 2017 11:57 pm

El problema que veo y que me imagino se podra solucionar, mas que el lag ya que para mi no es tanto( he visto juegos con mucho mas lag), es el tema de hackeos. Es decir: por ejemplo simu crea ese juego en el que entra uno y tiene privilegios para expulsar, pero que pasa si el segundo que entra, entra con un cliente modificado que ignora los kicks? o en un juego si en vez de avanzar x+=1; tiene en su cliente x+=2; como se controla eso ?. No tengo mucha idea de hacking pero creo que con un editor hexadecimal se puede editar el .exe y hacer este tipo de cambios.
User avatar
Nowy
 
Posts: 597
Joined: Sat Oct 04, 2008 11:14 am
Location: Tenerife

Re: GemixPhoton

Postby SimulatorOne » Sat Nov 04, 2017 1:37 am

por un lado esta el fichero codificado .gbc , dentro esta el codigo fuente compilado.

Un ejecutable en ejecucion, en memoria podria ser hakeado en tiempo real con programas tipo CheatEngine...similares...

Otra cosa es snifar o inyectar los paquetes enviados y recibidos, informacion online de la partida.
software como Wireshark se pueden analizar que paquetes son recibidos e enviados, en que formato, protocolo, IP del servidor...etc.

Cictec te podria responder que tan seguro son los codigos de gemix .gbc, y de parte del modulo de Photon: coldev.
Ya no se nada mas sobre hacking sobre Gemix.
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

Re: GemixPhoton

Postby erkosone » Sat Nov 04, 2017 2:39 am

Gemix es tan hackeable como cualquier otro programa. Y la librería poton pues tanto de lo mismo. Hay técnicas para evitar esto que no son tan fáciles de implementar pero realmente se puede y puedes evitar que te hagan un cliente modificado. Solo tienes que hacer que la comunicación sea encriptada y con pwd dinámico. En tiempo real es un poco royo descifrar todos los paquetes al recibirlos y encriptarlos al enviarlos si no lo hace directamente la librería. Pero por poder se puede. Aunque.. quien va a querer hackear te un juego?
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: GemixPhoton

Postby coldev » Sat Nov 04, 2017 7:38 pm

Si ya entendemos la preocupación, la gente no juega online , juegos donde hay muchos tramposos(auto apuntar, munición infinita, disparar detrás de paredes,etc)

+ GemixPhoton permite encriptar paquetes enviados en la red
+ en el caso de motores de trampas como CheatEngine, gemix puede encriptar las variables, estructuras, etc en memoria
en la próxima beta se incluirá funciones de hashes que permitirán obtener/almacenar datos encriptados en memoria..



imprimir el puntaje
write( ....., ,, , , , , ... , photon_get_hashtableINT("score"));

modificar el puntaje

photon_set_hashtableINT("score", photon_get_hashtableINT("score") + 120 );

asi tambien se evitaria hackear inventarios...
coldev
 
Posts: 49
Joined: Tue Mar 24, 2009 6:56 pm

Re: GemixPhoton

Postby SimulatorOne » Sat Nov 04, 2017 9:30 pm

He estado trabajando en la Version 2, que he tenido que restructurar gran parte del codigo.

Ahora trabaja en 3 hilos de paquetes de envio y recepcion, de forma independiente, con su STRUCT + el tamaño de sizeof:
Source Code (Gemix) [ Download ] [ Hide ]
  • //--------mensajes de chat---------------
  •         size_pkg_ch;//tamaño del paquete a enviar y recibir! =sizeof(struct);
  •         STRUCT chat;//Mensajes de chat
  •                 string msg[top_car];//textos enviados/recividos por chat
  •         END
  •        
  •         //--------comandos sistema-----------------
  •         size_pkg_cm;//tamaño del paquete a enviar y recibir! =sizeof(struct);
  •         STRUCT systm;//mensajes de sistema, entre jugadores
  •                 string cmd[top_cmd];//comandos de sistema...
  •         END
  •        
  •         //--------Normas de sala-----------------
  •         size_pkg_ns;//tamaño del paquete a enviar y recibir! =sizeof(struct);
  •         STRUCT Normas_sala;//datos para jugadores
  •                 BYTE ADMIN;//numero de jugador sera ADMIN.
  •                 BYTE max_players;//MAX_JUGADORES(0-1=NO HAY DATOS, NO RECIVIDOS)
  •                 string passwrd[11];//SALA PRIVADA CON CONTRASEÑA, ="" vacia/ninguna/libre
  •                 BYTE NO_JUG1;//FALSE=SALIMOS TODOS, SI JUGADOR X SALE DE LA SALA! // TRUE= Se mantiene la Sala, sera el Jug2 ADMIN.
  •         END
  •  


Este chat, tiene estas caracteristicas nuevas:
-El Jugador 1, establece unas normas de la Sala:
> Max_jugadores maximos permitidos.
> Contraseña para entrar en el chat (Opcional, puede estar sin contraseña), los jugadores 2 o mas... deberan introducir la contraseña para entrar en el chat.
> Numero de jugador como ADMIN de la sala, puede ser pasado a otro jugador, en caso de que el jugador 1 se marcha, Los derechos de ADMIN se pasan al siguient el jugador online.
> Norma de que si el Jugador ADMIN (normalmente el jugador 1) se Marcha de la sala; TODOS los jugadores se marchan de la sala obligatoriamente (Opcional)
- Patear un jugador online[Comando sistema]; Solo el Jugador ADmin (normalmente el jugador 1), puede ejecutar este comando: S:KICK-2 (expulsa al jugador 2), S:KICK-4 (jugador 4 expulsado).

Ademas añadi algunos textos de diagnostico, y algunos añadidos como chatlog de sistema.


Descubrí un bug, de comportamiento con esta variable global de lectura:
PHOTON_PLAYER_NUMBER

Siempre nos asigna el siguiente numero de jugador: 1,2,3...6,7.8....
Pero nunca nos asigna un numero de jugador LIBRE que anteriormente se marcho.
Si el jugador 1 se marcha, el jugador 2 tambien. Quedan libres: 1 y 2.
solo queda online jugador 3 y 4. Ocupados 3 y 4.
El siguiente jugador nuevo a unirse a la sala, la variable PHOTON_PLAYER_NUMBER, asignará el número 5 :n: :( .
debería asignar el numero 1, por que no hay un jugador online en ese puesto.
You do not have the required permissions to view the files attached to this post.
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

Re: GemixPhoton

Postby Nowy » Sun Nov 05, 2017 12:44 am

Erkosone pues cualquiera que quiera ganar la partida sin esfuerzo xD como pasa mucho.
Simu ahora solo te falta que el log se mantenga online.
User avatar
Nowy
 
Posts: 597
Joined: Sat Oct 04, 2008 11:14 am
Location: Tenerife

Re: GemixPhoton

Postby erkosone » Sun Nov 05, 2017 12:13 pm

Primero te tiene que interesar el juego xd.. es como comprar un cerrojo antes de poner una puerta quería decir.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: GemixPhoton

Postby SimulatorOne » Sun Nov 05, 2017 6:16 pm

Solucione temporalmente el comportamiento de la variable PHOTON_PLAYER_NUMBER, jugando con variables propias(mias) y gestionarlas el admin de la sala, quien tambien tiene las normas.
Cuando un jugador se une a una partida existente, el jugador 1 como admin, le asiganara un slot de jugador al nuevo, esto se lo envia un paquete de normas de sala + el numero de slot asignado para el nuevo jugador unido, asi se valida dentro de la sala.

Dentro de la structura de Normas de sala, cree un array de los slots de jugador disponibles maximos
Dentro se almacena la variable obtenida por PHOTON_PLAYER_NUMBER, para tener referencia tacnica hacia ese jugador, sin importar que numero sea...
Como ese variable global es automatico, es un numero incremental siempre, solo la almaceno para hacerme referencia a un jugador.

Slot N°3, referencia a jugador 3 en la sala, pero de parte de PHOTON_PLAYER_NUMBER es el numero 7 por ejemplo, para operar el envio y recepcion de paquetes de un determinado jugador.
Normas_sala.Slot[3]=7;

Esto lo administra el ADMIN de la sala, normalmente el jugador 1 quien crea la sala nueva, gestiona cuando entra un nuevo jugador y se desconecta.
Gestionando los Slots y envia la actualizacion(cambios) de las conexiones al resto de jugadores online).

Lo estoy manejando bien esto, me gusta.

Aun debo testear a fondo y solucionar algun bug, pero intento traer caracteristicas utiles;
Estas tengo pensados añadir...
-Historial de mensajes de chats enviados (estilo terminal, pulsando up, enviar un mensaje antiguo anterior).
-Filto de mensajes: solo chat, solo sistema, ambos.(con un boton muestra un chatlog de 3 maneras), realmente son en total 3 chatlog a la vez(solo se muestra 1 en pantalla).
-Enviar mensaje privado a un jugador, escriviendo: @<numero de jugador> mensaje...

Alguien sabe como programar un buffer de teclas mientras se escribe??
Mi sistema se limita y aveces no pilla las teclas rapidas, aun que vaya a 60fps, uso la vatiable global ASCII
:?:
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

PreviousNext

Return to Extensiones Gemix

Who is online

Users browsing this forum: No registered users and 4 guests