Skip to content

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
Clone this wiki locally