-
Notifications
You must be signed in to change notification settings - Fork 2
Propuesta nueva BD
Victor Ramirez de la Corte edited this page Oct 3, 2017
·
3 revisions
Antes de ver todo, comentar un ejemplo para que se entienda todo lo que está puesto.
ModelExample:
- field1 # commentary or description
- field2 [choices, ...]
- field3 (description, ManyToMany/OneToOne/OneToMany to ModelX)
relations_with_others_models [owner_games, member_games]
-- Model function
Django User:
Player(User):
- user
- position
- player_type
- confirm_code
- extra
- playing
relations [owner_games, member_games]
-- set_playing: cambiar al juego que estamos jugando y resetea la posición
-- is_member(game)
-- is_owner(game)
Meeting (conexiones entre jugadores):
- player1
- player2
- status [seen, step1, step2, waiting, connected]
- secret
relations [games]
-- get_meetings(game)
Clues:
- name
- desc
- solution
- clue_type
- extra
- depends
- child_clues
relations [games]
-- get_clues(game)
Preferences:
- name
- desc
- vision_distance
- metting_distance
- auto_assign_clue
Game:
- start_datetime # Si no se añade fecha de inicio, se pondrá la actual y empezará a estar activo el juego
- end_datetime # Si es None, quiere decir que siempre estará activo
- place # Si no tiene lugar, el juego será jugable desde cualquier parte (habría que autogenerar pistas en base al jugador)
- price (suscriptions)
- owners
- preferences (Preferences table, OneToOne)
- meetings (conexiones entre players, ManyToMany a Meeting)
- clues (pistas, OneToMany, un juego tendrá varias pistas, pero una pista solo pertenecerá a un juego)
- members (miembros del juego apuntados, ManyToMany a Player)
-- get_status_meeting(player1, player2)
-- have_owner(player)
-- have_member(player)
-- get_meetings
-- get_clues
OwnerClues (pistas conseguidas por el jugador):
- player (puede ser un player cualquiera)
- clue
- game_id (solo por mejorar la búsqueda, ponerlo como index) (tener en cuenta si borramos un
juego??)
- initial (bool) IMPORTANTE, si es initial, esta pista no podrá ser compartida, ROLES
- shareable (si comparte o no esa pista). Asi puede existir el rol de Game Master, tu decides cuando dar la pista
- status [lost, solved]
- created
TemplateGame:
- Un sistema de plantillas donde tener juegos predefinidos:
-- Juego tipo 1
-- Juego tipo ...
-- Juego vacio (haber creado un juego basado en una plantilla antes)
Requisitos:
- Leaderboards:
- Completo: pistas conseguidas / usuario
- Por evento: pistas conseguidas / usuario
- Con pistas principales podemos permitir diferentes roles
- Con dependencias de pistas podemos permitir ver unas pistas si y otras no
- Ver en el mapa jugadores cercanos y ya visitados (Game.members.filter(near or meetings_player1=tu) (veremos a otros jugadores si nos conectamos con ellos???)
- Ver todas las pistas conseguidas por un jugador en un juego concreto
- ¿Permitir que un jugador marque una pista como shareable, para compartirla con otro * jugador?
- Si un Player type player, tiene un Metting status=connected con otro Player type player, no se pedirá QR y se compartirán las pistas shareables.
- Todas las pistas shareables se compartiran siempre y cuando las dependencias estén cumplidas (excepto en los Player type Player)
- Aparición automática de jugadores cercanos (juego sin place)
- Comprobar posiciones de jugadores de un evento y crear players con posiciones cercanas
- Añadir intento de resolución de pista y temporizador para poder resolver de nuevo
- API para cambiar la posición de un player IA