PDA

Ver la Versión Completa : Programación Solución a Rollbacks



Chaito
31/01/2016, 15:49
Bueno supongo que sólo estoy adivinando, pero conocidos que perdieron cosas en los ultimos días por rollbacks fue porque estaban jugando en el momento que sucedió.

Supongo que el problema de base es que el personaje se persiste (Estan usando un mysql ahora no?) cuando uno desloguea. Eso tiene determinadas implicancias graves. Tengo entendido que si se cae el socket persiste todos los personajes antes de cerrarse pero si crashea estaría perdiendose información no persistida.

Hay varias soluciones para implementar al respecto... por ejemplo alguna persistencia mas rapida estilo cache de usuarios logueados sin necesidad de ir a la base directamente.

Creo igual, que con lo que procesa Argentum y con el poder de fierros que hay hoy en día la mejor solución es fuerza bruta. Persistir el char cada vez que el usuario haga algo "relevante", cambiar el estado. Se pueden definir puntos importantes, no da q cada vez q tires un dardo mágico persista (tal vez si ojo eh), pero supongo que será cosa de definir puntos de persistencia, por ejemplo, cambios de mapa, hablar con un npc, matar un npc, etc. Depende el nivel de Tx que desconozco, pero todas parecen soluciones aplicables para el volumen de Ao.

Espero sirva de algo :P Supongo que todo esto el staff lo debe barajar ya.

Wolf Rainer
31/01/2016, 17:54
Bueno supongo que sólo estoy adivinando, pero conocidos que perdieron cosas en los ultimos días por rollbacks fue porque estaban jugando en el momento que sucedió.

Supongo que el problema de base es que el personaje se persiste (Estan usando un mysql ahora no?) cuando uno desloguea. Eso tiene determinadas implicancias graves. Tengo entendido que si se cae el socket persiste todos los personajes antes de cerrarse pero si crashea estaría perdiendose información no persistida.

Hay varias soluciones para implementar al respecto... por ejemplo alguna persistencia mas rapida estilo cache de usuarios logueados sin necesidad de ir a la base directamente.

Creo igual, que con lo que procesa Argentum y con el poder de fierros que hay hoy en día la mejor solución es fuerza bruta. Persistir el char cada vez que el usuario haga algo "relevante", cambiar el estado. Se pueden definir puntos importantes, no da q cada vez q tires un dardo mágico persista (tal vez si ojo eh), pero supongo que será cosa de definir puntos de persistencia, por ejemplo, cambios de mapa, hablar con un npc, matar un npc, etc. Depende el nivel de Tx que desconozco, pero todas parecen soluciones aplicables para el volumen de Ao.

Espero sirva de algo :P Supongo que todo esto el staff lo debe barajar ya.

Negro volvé a redactarlo que no se entiende un choto lo que quisiste decir.

Lord Fers
31/01/2016, 18:16
Encima puras boludeces, andá al colegio o a la facultad y ponete a estudiar un poco. (de onda)

Saludos.

Matrofia
31/01/2016, 18:29
Encima puras boludeces, andá al colegio o a la facultad y ponete a estudiar un poco. (de onda) Saludos. Tenés que dedicarte a Motivación Profesional. En vez de bardear ¿no se puede "rescatar" nada de lo que puso el bueno hombre? Saludos.-

Chaito
31/01/2016, 22:08
Encima puras boludeces, andá al colegio o a la facultad y ponete a estudiar un poco. (de onda)

Saludos.

Gracias por bardear a alguien q propone una idea con el único ánimo de que sirva para algo. Esperó q tengas una mejor para proponer.

A los 27 años ya me da fiaca terminar el colegio la verdad.

Foby
31/01/2016, 23:08
Encima puras boludeces, andá al colegio o a la facultad y ponete a estudiar un poco. (de onda)

Saludos.

Te recomiendo, de onda, que si sos programador vuelvas a leer devuelta el post y rescates el problema que se esta planteando. Si no llegas a entender lo que pasa, de onda, te recomiendo que vuelvas a la escuela a aprender a leer porque sino te vas a cagar de hambre como programador o en cualquier laburo donde te hagan bajada de linea. (con la mejor onda).

La verdad que lo que se plantea no es ninguna boludez y es algo que serviria en un futuro. Aunque tengo entendido que no hay informacion persistida en objetos o que se mantenga backupeada en varios "checkpoints" (dejando de lado el worldsave que es un sistema antiquisimo y limitado) mas que que toda cosa comun que se usa normalmente para transmitir informacion (persistencia en memoria y de aplicacion).
Me refiero a que no se graba muchos estados de un CHAR para elegir un momento determinado y aplicar un rollback o una recuperacion de la informacion de ese Char o los datos del mundo. Eso posibilitaria elegir con mas precision como se quieren aplicar los rollback pero no funca asi lamentablemente.

Hay varios modelos que se pueden implementar para lo que vos planteas, pero hay que tener en cuenta que se necesitan mas recursos y la verdad es que todo esto deberia plantearse antes de empezar una version (es solo mi opinion aunque se puede llevar a cabo)...se necesitaria dinero y trabajo, o sea tiempo tambien. Es otro tipo de arquitectura a implementarse para que sea asi de funcional y la verdad es que una vez comenzado el juego, no me detendria en ese aspecto porque llevaria su tiempo implementarlo.

En sintesis, por lo que recuerdo no hay persistencia de CHARS , sino de todos los datos del juego en un determinado momento (Indiscriminadamente. Persistencia del objeto WORLD que tiene a todos los otros objetos adentro) y no veo conveniente insertar otro tipo de arquitectura en medio del lanzamiento de esta version. La idea esta buena? SI , porque el WorldSave que es lo que permite persistir los datos, no se ejecuta con tanta frecuencia y hoy en dia es algo que no se usaria como arquitectura para persistir objetos.

PD: Yo creo que para ser un juego completamente gratuito y hecho a pulmon esta yendo bastante bien (ojo, yo perdi bocha de exp y de items y algunas cosas que no se arreglan me joden todavia) y lo que podria ayudar a que se implementen estas cosas en un futuro, que harian de este juego algo mucho mas flexible y justo, seria ayudando con las donaciones ademas de plantear las cosas en el foro que es el verdadero motor del AO.

Saludos

skai
31/01/2016, 23:12
Encima puras boludeces, andá al colegio o a la facultad y ponete a estudiar un poco. (de onda)

Saludos.

y vos andá a dupear

Chaito
01/02/2016, 12:19
Te recomiendo, de onda, que si sos programador vuelvas a leer devuelta el post y rescates el problema que se esta planteando. Si no llegas a entender lo que pasa, de onda, te recomiendo que vuelvas a la escuela a aprender a leer porque sino te vas a cagar de hambre como programador o en cualquier laburo donde te hagan bajada de linea. (con la mejor onda).

La verdad que lo que se plantea no es ninguna boludez y es algo que serviria en un futuro. Aunque tengo entendido que no hay informacion persistida en objetos o que se mantenga backupeada en varios "checkpoints" (dejando de lado el worldsave que es un sistema antiquisimo y limitado) mas que que toda cosa comun que se usa normalmente para transmitir informacion (persistencia en memoria y de aplicacion).
Me refiero a que no se graba muchos estados de un CHAR para elegir un momento determinado y aplicar un rollback o una recuperacion de la informacion de ese Char o los datos del mundo. Eso posibilitaria elegir con mas precision como se quieren aplicar los rollback pero no funca asi lamentablemente.

Hay varios modelos que se pueden implementar para lo que vos planteas, pero hay que tener en cuenta que se necesitan mas recursos y la verdad es que todo esto deberia plantearse antes de empezar una version (es solo mi opinion aunque se puede llevar a cabo)...se necesitaria dinero y trabajo, o sea tiempo tambien. Es otro tipo de arquitectura a implementarse para que sea asi de funcional y la verdad es que una vez comenzado el juego, no me detendria en ese aspecto porque llevaria su tiempo implementarlo.

En sintesis, por lo que recuerdo no hay persistencia de CHARS , sino de todos los datos del juego en un determinado momento (Indiscriminadamente. Persistencia del objeto WORLD que tiene a todos los otros objetos adentro) y no veo conveniente insertar otro tipo de arquitectura en medio del lanzamiento de esta version. La idea esta buena? SI , porque el WorldSave que es lo que permite persistir los datos, no se ejecuta con tanta frecuencia y hoy en dia es algo que no se usaria como arquitectura para persistir objetos.

PD: Yo creo que para ser un juego completamente gratuito y hecho a pulmon esta yendo bastante bien (ojo, yo perdi bocha de exp y de items y algunas cosas que no se arreglan me joden todavia) y lo que podria ayudar a que se implementen estas cosas en un futuro, que harian de este juego algo mucho mas flexible y justo, seria ayudando con las donaciones ademas de plantear las cosas en el foro que es el verdadero motor del AO.

Saludos

Gracias por el aporte.

Estos programadores de juguete están por todos lados.

Desconozco como funciona en sí el Argentum y como maneja eso (como dije arriba, estaba adivinando), pero no solo persiste ese WORLD. Porque yo desloguié antes y no sufrí el rollback como un amigo q estaba logueado hacía muchas horas.

Está mal manejado y es algo relativamente fácil de solucionar. Podría hasta ser prioridad alta.

- - - Updated - - -


Negro volvé a redactarlo que no se entiende un choto lo que quisiste decir.

A ver si se entiende mejor:

Rollbacks se dan porque los guardados de personajes conectados son actualmente en Worldsaves y en el momento de desloguear.

Si el server crashea mal (muy distinto a si maneja un error y guarda todo antes de morirse) todos los que estén logueados perderán su progreso.

Eso es al menos lo que entiendo que sucedió por varios testimonios de gente cercana.

Soluciones:
-Manejar persistencia mas rapida al estilo cache por si pasa algo como esto, con una base pequeña y rápida solo para users conectados, sin ir a la base posta.
-Plantear más puntos de grabado (accesso a la base de datos) además de esos 2 que mencioné. A esto llamé fuerza bruta. Como por ejemplo, matar un NPC, cambiar de mapa.


Espero se entienda.
Saludos,

Hiux
01/02/2016, 14:11
Encima puras boludeces, andá al colegio o a la facultad y ponete a estudiar un poco. (de onda)

Saludos.

Menos dupeo y más colaboración (con la mejor eh).

Misery
01/02/2016, 14:47
Yo creo que tarde o temprano explota el servidor, de lo que sea, conozco una persona que tiró un proveedor de internet entero, así que todo es tirable. Yo usaría algo muy dinámico, "Memory Mapping", y te olvidás que el server se encargue de guardar chars y de muchas cosas más.