Open adrixp opened 10 years ago
En cuanto a la IU creo que la propia Ia IA tendría que ser quien la llamase con el mismo método que has puesto en la API, como hace AlienInvasion. Porque no se si vuestra idea es que también lo llame la plataforma.
- AlientInvation no tiene parte ia que se tiene que ejecutar en el server, por eso solo con llamar al Game.initialize(...) ya se ejecuta el juego y despues de acabar la partida haces una rpc al server a una de la funciones definidas en Meteor.methods({}) para comunicar la puntuación del jugador.
- Pero en el caso de Clarcassonne, tenemos una parte que es IA, que esta en el server y parte de IU esta en el lado del cliente, no hay manera alguna(si la hay yo la desconozco) hacer una rpc desde el server al cliente para ejecutar y comunicar a la IU que partida tiene que jugar. Por eso propongo que se lo comunique plataforma que se esta ejecutando en la parte del cliente y tiene posibilidad de hacer llamadas a funciones declaradas en UI.
- P.S. Los ficheros que están en la carpeta client se cargan en el browser, pero los fichero de la carpeta server no se cargan para el cliente, eso hace imposible comunicación entre IU e IA. Solo por medio de Meteor.methods desde cliente al server(que es como PL ejecutaria IA, pasandole el party_id). Pero no se pueden hacer llamadas del server al cliente, no es posible deferenciar entre los todos los cliente a quien hacer la llamada y a quien no.
Y la base de datos de las partidas nosotros teníamos pensado tener 2 tablas en vez de una: Matches: _id nombre movimientos terminada ...
Info_matches: id matchid user_id puntuación ...
- Me parece que esta forma como lo tenéis vosotros es demasiado relacional, intentáis guardar cada hecho de la realidad en nueva tabla y relacionando las tablas para tener el panorama completo. Pero en mongoDB no hace falta eso, aqui en un campo se pueden guardar mas de un valor. Prefiero tenerlo todo en el mismo sitio y no tan esparcido.
- Lo del info_matches nosotros tenemos una coleccion que es parecida que se llama Ranking, ahi guardamos las puntuaciones que saca cada usuario en cada uno de los juegos, pero es una cosa muy propia de cada plataforma, prefiero que los de IA me rellenen el campo de
puntuaciones:[{user:11, puntos:0002}]
y que cada plataforma luego los trate como sea, en nuestro caso procesando ese campo y me tiendo a cada usuario en el Ranking, y vosotros en info_marches, si guardas puntuación que ha sacado cada uno de los jugadores durante la partida la puedes volver a consultar muy facil en historias de las partidas del jugador.- Los de IA tendrán que ir guardando los puntos que tiene cada uno de los jugadores durante la partida, asi que ellos aprovecharían esa estructura para ellos.
- La gente de IA e IU tendrán que hacer menos consultas en DB, sera mejor para el server(menos búsquedas en HDD) y para ellos.
Salu2
Como tenemos que ponernos de acuerdo ambas plataformas para que iu e ia obengan y almacenen datos en la base de datos que le proporcionamos. Aqui van nuestras sugerencias:
-En cuanto a las llamadas para IA, nos parece correcto que tengamos que pasarles la id de la partida y que a partir de ella obtengan los nombres de usuarios y fecha de nacimiento. Si a ellos les parece bien por mi está zanjado.
-En cuanto a la IU creo que la propia Ia IA tendría que ser quien la llamase con el mismo método que has puesto en la API, como hace AlienInvasion. Porque no se si vuestra idea es que también lo llame la plataforma.
-Y la base de datos de las partidas nosotros teníamos pensado tener 2 tablas en vez de una:
Matches _id nombre movimientos terminada ...
Info_matches: _id match_id user_id puntuacion ...
Buscando en info_matches, puedes obtener todos los user_id de cada partida (y de ahi el username y la fecha_nac) y con match_id puedes obtener los movimientos y demas información de la partida.
De esta manera la búsqueda se facilita ya que no hay tantos arrays, y tiene mejor escalabilidad a la hora de almacenar otros tipos de datos. Yo al principio había pensado dejarlo todo en una tabla como teneis vosotros pero en mi grupo pensaron hacerla de esta manera y la verdad que yo la veo bastante bien.
Por lo demás me parece que está todo bien explicado y fácil para su uso.