PaintRush

En esta sección se atenderán las dudas relacionadas con sistemas de gestión de la calidad, procedimientos, buenas prácticas, normas y todo lo relacionado con aseguramiento de la calidad

Moderator: julianmartinez16

User avatar
juandavid03
Posts: 38
Joined: Mon Jan 22, 2018 11:24 am

Re: PaintRush (Jueves 22, febrero)

Post by juandavid03 » Thu Feb 22, 2018 10:02 pm

Planeación sprint 3:
- Programar el sistema de puntos. (3 puntos)
- Programar el sistema de compras de la tienda. (4 puntos)
- Pulir sistemas ya implementados (movimiento, obstáculos, colisiones, etc.) (3 puntos)

¿Que se ha hecho?
- Se implemento el sistema de raycast para desactivar obstáculos.
- Se implemento el sistema de forma que cada rayo reconoce un objeto especifico.

Muestra de ambos:
Image

Burndown Chart Sprint 2 (Final):
Image

¿Que problemas hubo?
- Poco tiempo de desarrollo debido a complicaciones en otro negocio.
Juan David Espinosa Ochoa
Gestión de Calidad de Software
Ingeniería en diseño de entretenimiento Digital

User avatar
juandavid03
Posts: 38
Joined: Mon Jan 22, 2018 11:24 am

Re: PaintRush (Lunes 26, Febrero)

Post by juandavid03 » Mon Feb 26, 2018 9:42 pm

Avances Sprint:
¿Que se ha hecho?
- Se implemento el sistema de puntaje (sube el puntaje dependiendo del tiempo, y baja la velocidad de ganancia si se golpea)

Muestra:
Image

Burndown Chart Sprint 3(Avance):
Image

¿Que se hará?
- Iniciar el sistema de compras de la tienda.
- Corregir el checklist programación.
- Realizar el script para la verificación del checklist.

¿Que problemas hubo?
- Poco tiempo de desarrollo debido a complicaciones en otro negocio.
Juan David Espinosa Ochoa
Gestión de Calidad de Software
Ingeniería en diseño de entretenimiento Digital

User avatar
juandavid03
Posts: 38
Joined: Mon Jan 22, 2018 11:24 am

Re: PaintRush (Jueves 1, Marzo)

Post by juandavid03 » Fri Mar 02, 2018 9:31 am

Planeación sprint 4:
- Continuar investigación e implementación de la tienda. (4 puntos)
- Definir e iniciar las mejoras que se venderán. (4 puntos)

¿Que se hizo?
- Pulir unos sistemas (correcciones y limpieza de codigo, etc)
- Investigar sobre la implementación de la tienda.

Referencias que se estan investigando:
- https://unity3d.com/es/learn/tutorials ... -game-shop
-https://www.youtube.com/watch?v=G_I6GxGIB_Y

Burndown Chart Sprint 3(Final):
Image

¿Que se hará?
-Planeación de nuevo sprint arriba.

¿Que problemas hubo?
- Varios problemas mecánicos con el carro por lo que estuve ocupado en talleres.
Juan David Espinosa Ochoa
Gestión de Calidad de Software
Ingeniería en diseño de entretenimiento Digital

User avatar
juandavid03
Posts: 38
Joined: Mon Jan 22, 2018 11:24 am

Re: PaintRush (Lunes 5, marzo)

Post by juandavid03 » Mon Mar 05, 2018 8:25 pm

¿Que se ha hecho?
-Se definieron que mejores se implementaran y en que orden se iran implementando.
-Se plantearon bocetos de diseños para estas mejoras (en UI y dentro del juego, en el personaje).

Muestra:
Image
Image
Image
Image

Burndown Chart Sprint 4 (avance):
Image

¿Que se hará?
- Se iniciara el primer intento del sistema de compras de la tienda.

¿Que problemas hubo?}
- Lumbago me tiene incapacitado desde el domingo y estuve en eso un par de dias sin poder trabajar mucho
Juan David Espinosa Ochoa
Gestión de Calidad de Software
Ingeniería en diseño de entretenimiento Digital

User avatar
juandavid03
Posts: 38
Joined: Mon Jan 22, 2018 11:24 am

Re: PaintRush (jueves 8, marzo)

Post by juandavid03 » Fri Mar 09, 2018 6:25 am

Planeacion sprint 5
- Implementación de las mejoras planeadas (5 puntos)
- Implementación de las compras en el juego (4 puntos)

¿Que se ha hecho?
- Se programo el sistema de guardada de puntos (dinero para tienda).
- Se programo el sistema de compra de mejoras de la tienda.

Muestra:
Image

Muestras de codigo:
GameManager Class:

Code: Select all

using UnityEngine;

public class GameManager : MonoBehaviour
{

    private MenuManager manager;

	// Use this for initialization
	void Start ()
    {
        manager = GameObject.Find("MenuManager").GetComponent<MenuManager>();
    }
	
	// Update is called once per frame
	void Update ()
    {
        if (Personaje.Instance.Health == 0)
        {
            Time.timeScale = 0;
            Perder();
        }
	}

    private void Perder()
    {
        Personaje.Instance.isPaused = true;
        var currentAvailablePoints = PlayerPrefs.GetFloat("AvailablePoints");
        PlayerPrefs.SetFloat("SesionPoints", Personaje.Instance.Points);
        PlayerPrefs.SetFloat("AvailablePoints", currentAvailablePoints+ Personaje.Instance.Points);
        manager.LoadScene("EndgameInfoScreen");
    }
}
StoreManager Class:

Code: Select all

using UnityEngine.UI;
using UnityEngine;

public class StoreManager : MonoBehaviour
{

    public Text textPuntosDisponibles;
    public Text testText;
    private float testPoints = 5;
	// Use this for initialization
	void Start ()
    {
        testText.text = "No has comprado nada";
	}
	
	// Update is called once per frame
	void Update ()
    {
       var points = PlayerPrefs.GetFloat("AvailablePoints");
        textPuntosDisponibles.text = "Puntos Disponibles: " + points.ToString();
	}

    public void testSetPref()
    {
        var currentAvailablePoints = PlayerPrefs.GetFloat("AvailablePoints");
        PlayerPrefs.SetFloat("AvailablePoints", currentAvailablePoints+testPoints);
    }

    public void ResetPref()
    {
        PlayerPrefs.SetFloat("AvailablePoints", 0);
    }

    public void Comprar(Upgrade upgrade)
    {
        var currentAvailablePoints = PlayerPrefs.GetFloat("AvailablePoints");
        if (currentAvailablePoints > upgrade.Cost)
        {
            testText.text = upgrade.UpgradeName;
            PlayerPrefs.SetFloat("AvailablePoints", currentAvailablePoints - upgrade.Cost);
        }
        else
        {
            testText.text = "No tienes puntos para esto";
        }
    }
}
Personaje Class:

Code: Select all

using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(Rigidbody2D))]
public class Personaje : MonoBehaviour
{
    private static Personaje instance = null;

    // Game Instance Singleton
    public static Personaje Instance
    {
        get
        {
            return instance;
        }
    }

    private void Awake()
    {
        // if the singleton hasn't been initialized yet
        if (instance != null && instance != this)
        {
            Destroy(this.gameObject);
        }

        instance = this;
    }
    //private GameObject personaje;

    private Rigidbody2D rbody;

    public float force;

    [SerializeField]
    private int health = 1;

    [SerializeField]
    private float timeHealth = 5;

    private int layerMask = 8;
    private int layerMaskTest = 9;
    private float points = 0;

    public bool isPaused = false;

    public Text textPoints;

    public float Points
    {
        get
        {
            return points;
        }
        set
        {
            points = value;
        }
    }

    public int Health
    {
        get
        {
            return health;
        }
        set
        {
            health = value;
        }
    }

    public bool IsPaused
    {
        get
        {
            return isPaused;
        }
        set
        {
            isPaused = value;
        }
    }
    // Use this for initialization
    void Start ()
    {
        
        rbody = this.gameObject.GetComponent<Rigidbody2D>();
        textPoints = GameObject.Find("textPoints").GetComponent<Text>();
       
    }
	
	// Update is called once per frame
	void Update ()
    {
        //Todas las funcionalidades del update, van dentro de este if, para qu funcione cuando no estan pausadas.
        if (!isPaused)
        {
            timeHealth -= Time.deltaTime;
            var vel = new Vector2(1, rbody.velocity.y);
            rbody.velocity = vel.normalized * force;
            ActualizarPuntaje();
            Debug.Log("Health: " + Health);
            if (timeHealth < 0)
            {
                timeHealth = 10;
                if (Health < 3)
                {
                    health++;
                }
            }

            if (Input.GetKeyDown(KeyCode.Alpha1))
            {

                LanzarRayo("circle");
            }
            if (Input.GetKeyDown(KeyCode.Alpha2))
            {

                LanzarRayo("polygon");
            }
            if (Input.GetKeyDown(KeyCode.Alpha3))
            {

                LanzarRayo("square");
            }
            if (Input.GetKeyDown(KeyCode.Alpha4))
            {

                LanzarRayo("triangle");
            }
        }
        else if (isPaused)
        {
            rbody.velocity = Vector2.zero;
        }
	}

    public void RecieveDamage()
    {
        Health = Health - 1;    
    }

    public void LanzarRayo(string forma)
    {
        Debug.LogWarning("Forma: " + forma);
        switch (forma)
        {
            
            case "circle":
                {
                    RaycastHit2D hit = Physics2D.Raycast(this.transform.position, Vector2.right, Mathf.Infinity);
                    if (hit)
                    {
                        
                        if (hit.collider.gameObject.CompareTag("ObstacleCircle"))
                        {
                            Debug.Log("Desactive el circulito");
                            hit.collider.gameObject.GetComponent<Obstaculo>().IsActive = false;
                        }
                    }
                    break;
                }
            case "polygon":
                {
                    RaycastHit2D hit = Physics2D.Raycast(this.transform.position, Vector2.right, Mathf.Infinity);
                    if (hit)
                    {
                        if (hit.collider.gameObject.tag == "ObstaclePolygon")
                        {
                            Debug.Log("Desactive el poligono");
                            hit.collider.gameObject.GetComponent<Obstaculo>().IsActive = false;
                        }
                    }
                    break;
                }
            case "square":
                {
                    RaycastHit2D hit = Physics2D.Raycast(this.transform.position, Vector2.right, Mathf.Infinity, layerMask);
                    if (hit)
                    {
                  
                        if (hit.collider.gameObject.tag == "ObstacleSquare")
                        {
                            Debug.Log("Desactive el square");
                            hit.collider.gameObject.GetComponent<Obstaculo>().IsActive = false;
                        }
                    }
                    break;
                }
            case "triangle":
                {
                    RaycastHit2D hit = Physics2D.Raycast(this.transform.position, Vector2.right, Mathf.Infinity, layerMask);
                    if (hit)
                    {
                     
                        if (hit.collider.gameObject.tag == "ObstacleTriangle")
                        {
                            Debug.Log("Desactive el triangle");
                            hit.collider.gameObject.GetComponent<Obstaculo>().IsActive = false;
                        }
                    }
                    break;
                }
        }
    }

    public void ActualizarPuntaje()
    {
        if (Health == 3)
            Points += 3;
        if (Health == 2)
            Points += 2;
        if (Health == 1)
            Points += 1 ;
        textPoints.text = "Puntos: " + Points.ToString();
    }
}
Burndown Chart sprint 4 (Final):
Image

¿Que problemas hubo?
- Incapacidad por lumbago, incapacidad para pasar largos tiempos en el computador gracias a esto.
Juan David Espinosa Ochoa
Gestión de Calidad de Software
Ingeniería en diseño de entretenimiento Digital

User avatar
juandavid03
Posts: 38
Joined: Mon Jan 22, 2018 11:24 am

Re: PaintRush (Lunes 12, Marzo)

Post by juandavid03 » Tue Mar 13, 2018 1:12 am

¿Que se ha hecho?
- Se implemento el sistema de compras de la tienda y un sistema de "inventario" para que la persona pueda acceder a lo que compra en la tienda dentro del juego. (subida de pruebas, GIF y codigo, mañana).

Burndown chart (avance):
Image

¿Que se hara?
- Implementar las mejoras dentro del juego.

¿Que problemas hubo?
- Poco tiempo de desarrollo el fin de semana por compromisos previos.
Juan David Espinosa Ochoa
Gestión de Calidad de Software
Ingeniería en diseño de entretenimiento Digital

User avatar
juandavid03
Posts: 38
Joined: Mon Jan 22, 2018 11:24 am

Re: PaintRush (Jueves 15, marzo)

Post by juandavid03 » Fri Mar 16, 2018 12:59 am

Planeación del sprint 6:
- Organizar checklists, codigos y diagramas (3 puntos).
-Investigar sobre implementación de las mejoras (2 puntos).
-realizar una primera implementación de las mejoras (4 puntos).

¿Que se ha hecho?
-Se investigo sobre el patrón decorator para la aplicación de las mejoras compradas.

Burndown Chart (Final):
Image
(Problemas explicados abajos, no se pudo realizar la implementacion de las mejoras por eso entonces no se cumplio en la totalidad el objetivo).

Fuentes siendo estudiadas:
-https://danielggarcia.wordpress.com/201 ... decorator/
-https://www.genbetadev.com/metodologias ... -decorator

¿Que se hara?
-Planeación arriba.

¿Que problemas hubo?
-Mucho que hacer en otro negocio, por lo que hubo muy poco tiempo de desarrollo.
-Poco conocimiento sobre la aplicación optima de este tipo de sistemas y del patron decorador.
Juan David Espinosa Ochoa
Gestión de Calidad de Software
Ingeniería en diseño de entretenimiento Digital

User avatar
juandavid03
Posts: 38
Joined: Mon Jan 22, 2018 11:24 am

Re: PaintRush (Lunes 20, Marzo)

Post by juandavid03 » Tue Mar 20, 2018 10:25 pm

¿Que se ha hecho?
- Investigar sobre la implementación de scriptable objects para upgrades.

Burndown chart:
Image

¿Que se hara?
-Implementar las mejoras,

¿Que problemas hubo?
-Puente en una finca sin el computador.
Juan David Espinosa Ochoa
Gestión de Calidad de Software
Ingeniería en diseño de entretenimiento Digital

User avatar
juandavid03
Posts: 38
Joined: Mon Jan 22, 2018 11:24 am

Links para Revision de codigo #2.

Post by juandavid03 » Thu Mar 22, 2018 10:11 am

Juan David Espinosa Ochoa
Gestión de Calidad de Software
Ingeniería en diseño de entretenimiento Digital

User avatar
juandavid03
Posts: 38
Joined: Mon Jan 22, 2018 11:24 am

Re: PaintRush (Jueves 22, marzo)

Post by juandavid03 » Thu Mar 22, 2018 2:36 pm

¿Que se ha hecho?
- Se actualizaron y organizaron los checklists y diagramas.
Muestra Checklists y diagramas:
https://docs.google.com/document/d/1xN7 ... sp=sharing

- Se realizo una primera aproximación al sistema de upgrades (falta distribuir mejor las tareas entre upgrade, personaje y los upgrades especificos).
Muestra upgrades:
Image

Burndown Chart:
Image

¿Que se hara?
- Planeación de Sprint mañana (despues de discutir horarios con el diseñador).

¿Que problemas hubo?
- Poco conocimiento de ciertos patrones (decorador).
- Poco tiempo para desarrollo hasta el miercoles en la tarde.
Juan David Espinosa Ochoa
Gestión de Calidad de Software
Ingeniería en diseño de entretenimiento Digital

Post Reply