Skip to content
Federico Alejo Marquez edited this page Oct 26, 2019 · 18 revisions

Welcome to the El-Regreso-del-Picaro wiki!

Decisiones del diseño

Se decidió que los puntos de comida del personaje, así como las demás estadísticas no pueden ser nunca negativas. Esto es para poder presentarlo mejor al jugador. Queda feo que la pantalla de muerte te diga que el personaje tenía -15 de vida.

Configuración de teclas, y control de inputs

Para el control del movimiento del personaje, no se va a usar (de momento) la función Input.GetAxis() porque controlar cuál fue la última entrada con múltiples teclas presionadas en el teclado es demasiado complejo.

Funciona mucho mejor controlar las teclas individualmente.

Para mejorar la compatibilidad del código a diferentes medios de entrada se configuraron 4 botones virtuales nuevos que se pueden mapear a joysticks, y facilitan la reconfiguración de los controles.

Eventualmente se planea añadir compatibilidad con los analógicos del joystick, pero de momento, se maneja con la cruceta.

Pautas de documentación del código

Todas las clases se estructuran como sigue:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/**
 * <summary>
 * Esta clase es un ejemplo.
 * </summary>
 * <remarks>
 * Los atributos y operaciones son ejemplos.
 * </remarks>
 */
public class ClaseEjemplo : MonoBehavior {
   // Constantes
   /// <value>Representa a una constante.</value>
   public static CONSTANTE;

   // Atributos
   /// <value>Representa a un atributo.</value>
   private string atributo;

   // Métodos
   public ClaseEjemplo (string atributo) 
   {
      this.atributo = atributo;
   }

   public string Atributo { get => atributo; set atributo = value }
   
   /**
    * <summary>
    * Este método devuelve una cadena que ingresa como parámetro. 
    * </summary>
    * <remarks>
    * Esta parte es opcional en los métodos.
    * </remarks>
    * <param name="parámetro">La cadena que se quiere devolver.</param>
    * <returns>Una cadena.</returns>
    */
   public string método (string parámetro) 
   {
      return parámetro;
   }

   ...

   void Start() 
   {

   }

   void Update() 
   {

   }
}
  • Imports y librerías: Se importan todas las librerías necesarias para el funcionamiento. Por defecto, las de Unity.
  • Clase: Las clases van documentadas, con una breve descripción de su propósito general.
  • Constantes: En esta parte se definen las constantes que se utilizan en el código. Son públicas para que sean accesibles desde el editor de Unity. Por la misma razón, no se colocan como static, o const. Los nombres se escriben en mayúsculas separadas por "_". Si hubiera enums asociados a la clase, se definen acá (nombre en CamelCase y valores con la notación de constantes).
  • Atributos: En esta parte se colocan todos los atributos de clase. Los mismos están definidos en la documentación del juego.
  • Métodos: Similar al anterior. En esta parte se colocan todos los métodos de clase. Los mismos están definidos en la documentación del juego. Los setters, los getters y el constructor son autogenerados con VisualStudio, y tienen el formato que se muestra en el ejemplo. Los métodos que no son getters, setters o el constructor se encuentrar documentados dentro del código.
  • Ciclos y funciones de Unity: Se colocan al final del código para que sean fáciles de encontrar.

Se muestra la documentación genérica del código, para tenerla a mano durante el desarrollo.

La etiqueta remarks se usa en cualquier momento cuando se considera necesario explayar alguna definición, o alguna cuestión relevante del diseño.

Estoy guardando los datos en binario para que sean más difíciles de modificar por el usuario. Para guardar algo en un archivo binario estoy usando un código que está guardado en la clase Persistencia, y las clases que se guardan tienen que tener lo siguiente:

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable()]
public class Ejemplo
{
    ...
}

Pautas del Testing

Similar al código, se documentan todas las clases y métodos de la misma manera.

Se prueba todo.

Las clases y el script de pruebas se llaman Test<NombreClase>.

Los test tienen el nombre Test<NombreDelMétodo>, o si es una prueba aparte tienen un nombre que los identifique adecuadamente.