ludica-squamata / mano-gift

Proyecto de engine para el juego, usando pygame.
0 stars 0 forks source link

Los mobs deberían poder empezar con objetos #156

Open danielrossyamitrano opened 3 years ago

danielrossyamitrano commented 3 years ago

Es algo que se me ocurrió mientras escribía sobre otro issue, pero eso. Los mbs deberían poder ser creados con objetos en su inventario porque si bien que los mobs empiecen o no con objetos es un tema de storyline más que del engine, el engine debería dar esa posibilidad.

danielrossyamitrano commented 3 years ago

Este problema tiene algo que ver con el cerrado issue #143, pero visto desde la perspectiva de los mobs que no son el héroe.

danielrossyamitrano commented 3 years ago

Este problema tiene algo que ver con el cerrado issue #143, pero visto desde la perspectiva de los mobs que no son el héroe.

La solución de ese issue fue crear una carpeta mobs/player y guardar en ella un archivo json con los datos del mob-player con el nombre que lleva el mob del player. Hacer lo mismo para todos los mobs "con atributos particulares" (como ser objetos, o nombre) sería solo trasladar el problema para otro lado. Se me ocurren dos soluciones:

  1. Eliminar la posiblidad de crear copias de los mobs en el mapa. Esto haría de cada mob.json un ser único, pero podría conflictuar, se me ocurre, con monstruos que casi siempre son todos iguales. Es decir, tendrían que ser necesariamente distintos en algo, y solo servirían para ocupar espacio si monstruo1.json, monstruo2.json y monstruo3.json tienen exactamente los mismos atributos y objetos.
  2. Definir clases de PNJ o monstruo en el código, e instanciar esas clases cuando figuren en el mapa. Esto sería un poco volver a las raices del engine (antes teníamos NPC y Enemy). De este modo no habría archivos mob.json excepto que fueran distintos a lo que figura por defecto en el engine (named NPCs, por ejemplo). Esta responsabilidad también podría trasladársele al modder. Después de todo, son SUS mobs; el engine pelado no tiene mobs, ni una historia que los incluya, después de todo.
danielrossyamitrano commented 3 years ago

Qué te parece la segunda opción @einacio ?

einacio commented 3 years ago

No veo la necesidad de hacer ningun cambio. Si el modder quiere usar multiples clases, o multiples archivos, es a su gusto.

El engine solo tiene que dar la posibilidad de tener mobs y alguna manera de cargarlos y persistirlos (si es necesario siquiera, si queres mantener la plata de un  comerciante el modder podria por ejemplo hacerlo con ModState), y como mucho uno especial controlable (aunque sigo pensando en la posibilidad que Controlable sea simplemente un IA que lea los controles para tomar decisiones, y como mucho el engine tiene solo una propiedad para "focused mob" para la camara).

7 jun. 2021 3:11:49 Daniel @.***>:

Qué te parece la segunda opción @einacio[https://github.com/einacio] ?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub[https://github.com/ludica-squamata/mano-gift/issues/156#issuecomment-855509666], or unsubscribe[https://github.com/notifications/unsubscribe-auth/AALWRIWGTUSTVJFTIV2IXGTTRQMFLANCNFSM42CDTHFA]. [data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAABHNCSVQICAgIfAhkiAAAACtJREFUeJztwQENAAAAwqD3T20ON6AAAAAAAAAAAAAAAAAAAAAAAAAAAD4MUUgAARy2AfAAAAAASUVORK5CYII=###24x24:true###][Imagen de rastreo][https://github.com/notifications/beacon/AALWRITQMQGWN3RZWOXFZWTTRQMFLA5CNFSM42CDTHFKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOGL7AVIQ.gif]

danielrossyamitrano commented 1 year ago

Este issue y el #155 podrían solventarse creando un json, fuera de los mobs, que funcione como un "inventory" global, una suerte de base de datos. Qué mob tiene qué objeto, de dónde lo sacó y desde cuándo lo tiene por ejemplo, son datos que entran en un solo lugar y no haría falta entonces tocar los archivos de datos de los mobs (que son instanciables). Podría haber un archivo de este tipo por archivo de guardado (con tan solo una referencia en el savefile original) y con eso bastaría para matar dos issues de un tiro.

danielrossyamitrano commented 1 year ago

Claro que también en este archivo de datos podrian incuirse datos del mob, como sus atributos y los sprites que lo componen (que tampoco son persistentes cuando son generados aleatoriamente) pero entonces ya no sería un archivo de objetos sino una base de datos conteniendo a todos los mobs (porqué no al héroe).

Algo así habíamos hecho con ciertos archivos de datos (agressive.json, creo que era), pero al final nos decantamos por los archivos de mob completos.

einacio commented 1 year ago

pues eso es basicamente un savefile, tenes que guardar suficiente informacion para poder cargar de vuelta el mundo.

con lo cual el save tendria una lista de mobs con sus stats y clase para instancia, su inventario, tal vez su posicion y direccion si son relevantes

On Tue, Nov 29, 2022 at 2:36 AM Daniel @.***> wrote:

Claro que también en este archivo de datos podrian incuirse datos del mob, como sus atributos y los sprites que lo componen (que tampoco son persistentes cuando son generados aleatoriamente) pero entonces ya no sería un archivo de objetos sino una base de datos conteniendo a todos los mobs (porqué no al héroe).

Algo así habíamos hecho con ciertos archivos de datos (agressive.json, creo que era), pero al final nos decantamos por los archivos de mob completos.

— Reply to this email directly, view it on GitHub https://github.com/ludica-squamata/mano-gift/issues/156#issuecomment-1329962578, or unsubscribe https://github.com/notifications/unsubscribe-auth/AALWRITWUWN7TKAYP7KYZH3WKVM3RANCNFSM42CDTHFA . You are receiving this because you were mentioned.Message ID: @.***>

danielrossyamitrano commented 1 year ago

Capaz es algo medio obsoleto a esta altura, pero leyendo este issue y otros relativos al savefile y al uso de bases de datos para almacenar esa info, se me ocurre usar el módulo csv. De esa forma podemos tener todos los datos en un solo archivo (cosa que me gustaría) que es fácil de tabular y que puede leerse por una persona de forma similar a json.

einacio commented 1 year ago

csv no es precisamente un formato pensado para guardar muchas informacion diferente en un solo lado

es informacion tabulada, o sea un monton de filas del mismo tipo de informacion. si podes considerar un csv por tipo de informacion (lista de mobs, inventarios, lista de cofres abiertos, etc)

si queres que despues sea un solo archivo, yo iria por simplemente un zip, y lo descomprimis en el momento, pero meter todo en un csv va a ser super incomodo y/o desperdiciar espacio (que a la larga es mas relevante que hace lento el uso)

On Tue, May 30, 2023 at 10:33 PM Daniel @.***> wrote:

Capaz es algo medio obsoleto a esta altura, pero leyendo este issue y otros relativos al savefile y al uso de bases de datos para almacenar esa info, se me ocurre usar el módulo csv. De esa forma podemos tener todos los datos en un solo archivo (cosa que me gustaría) que es fácil de tabular y que puede leerse por una persona de forma similar a json.

— Reply to this email directly, view it on GitHub https://github.com/ludica-squamata/mano-gift/issues/156#issuecomment-1569055758, or unsubscribe https://github.com/notifications/unsubscribe-auth/AALWRIWYGSMWB2TNVFCZB63XIZKP3ANCNFSM42CDTHFA . You are receiving this because you were mentioned.Message ID: @.***>

danielrossyamitrano commented 1 year ago

si podes considerar un csv por tipo de informacion (lista de mobs, inventarios, lista de cofres abiertos, etc)

Si, algo así estaba pensando. Cuando hice el pygpj, cada archivo csv tenia info diferente. Clases, dotes, habilidades armas, armaduras, etc. Eran todos archivos distintos

danielrossyamitrano commented 1 year ago

La diferencia esta en que en el pygpj esos csv eran info para leer, acá sería info a guardar.

Quiero decir, aquello era información estática. Acá sería información dinámica.