SlideShare una empresa de Scribd logo
1 de 69
Pre-entrega Programación
Orientada a objetos
- Fredy Muriel
- Daniela Atencia
- Jhon Mayuza
Backlog
Actividad Semana Esfuerzo
x Definir historia, lluvia de ideas Semana 1 3
x Definir nombre y logo de la empresa Semana 1 2
x Definir nombre y logo del juego Semana 1 2
x Diseño de personajes y escenarios Semana 2 4
x Definir mecánicas e iniciar programación de
enemigos
Semana 2 4
x Ilustraciones de torres Semana 3 3
x Ilustración de efectos Semana 4 3
Ilustración de enemigos Semana 5 3
Ilustración de dragón Semana 5 3
Backlog
Actividad Semana Esfuerzo
x Ilustración escenarios Semana 6 2
Animación enemigos Semana 7 3
x Pantallas game over y victoria Semana 8 4
x Movimiento de oleadas Semana 7 4
x Posicionamiento de torres Semana 9 4
x Disparos Semana 9 4
Barra de vida Semana 10 3
x Pantalla de inicio (menú) Semana 7 3
Daño Semana 11 3
Aumento de dificultad Semana 12 4
Backlog
Actividad Semana Esfuerzo
Sistema de puntos Semana 12 3
Audio, fx Semana 13 4
Primeras pruebas Semana 14 3
Correcciones finales Semana 15 3
Pruebas finales Semana 17 4
Semana 1
-Crear grupo.
-Iniciar backlog.
-Crear nombre del juego y nombre del
estudio.
-Definir algunas mecánicas del juego.
-Lluvia de ideas.
-Contexto y narrativa del juego.
-Concepto y primeros bocetos de los
Personajes (incompleto).
-Boceto de mecánica.
-Búsqueda de Referencias.
Primer diseño logo del equipo
Update logo del estudio
Logo del juego
Update #2 logo del estudio
Referencias
kingdom rush
Referencias
Dragon’s awaken
Contexto
En el reino de Fardia, Drak, un imponente, colosal y temido dragón, ha caído víctima
de una nefasta maldición, y a pesar que esta no sea lo suficientemente poderosa para
acabar con su vida, lo ha dejado debilitado, noticia que se esparce como el fuego
alrededor de todas las comarcas.
Mercenarios, clanes guerreros, cazarrecompensas, caballeros e incluso saqueadores,
todos se preparan para sacar provecho de la vulnerabilidad del dragón, ya sea para
echar mano de su cabeza, o su tesoro.
Ante la inminente llegada de ejércitos enteros, dispuestos a todo para saciar su codicia
humana, el dragón deberá, con ayuda de otras bestias y enemigos de los avariciosos
humanos, proteger su santuario y a si mismo.
Escenario
Drak, ahora resguardado en su santuario, dentro de lo más profundo de una cueva en
las montañas de Fardia, se prepara para defenderse de la arremetida humana con toda
la fuerza que aún le queda, para su suerte, múltiples grupos de criaturas de la montaña
se ofrecen a ayudarle.
Resguardado tras sistemas de cuevas construidos por el mismo, deberá planear una
estrategia para resistir la arremetida humana hasta que haya recobrado sus fuerzas.
Semana 2
-Narrativa.
-Personajes y sus funciones.
-Empezar bocetos de personajes.
-Cambio de nombre de la empresa y
de nombre de juego.
-Ver vídeos de referencia.
-empezar bocetos de torres.
-empezar oleadas de enemigos.
Unidades (Aliadas)
Criaturas, bestias y monstruos de los bosques, acudiendo a la batalla ya sea por la
defensa del dragón, o simplemente por la oportunidad de matar humanos.
Torres
Puestos establecidos estratégicamente por el dragón para ubicar grupos de aliados, con
el fin de tener ventaja sobre el atacante. Se dividen en dos categorías, a Distancia y
Cuerpo a Cuerpo.
Torres a Distancia
Puestos ubicados para atacar al enemigo desde lejos, ubicados principalmente para dar
apoyo a las torres cuerpo a cuerpo.
Se tendrá a disposición de dos torres de este tipo: Duendes y Ogros
Duendes
Criaturas débiles en general, pero maestros de la arquería, por sí solos no representan
una amenaza real para sus adversarios, pero son rápidos, y pueden ayudar
enormemente a frenar enemigos ágiles, a su vez que apoyar a las tropas cuerpo a
cuerpo.
Pros: Alta Precisión, Disparos Rápidos, Sangrado en enemigos.
Contras: Daño Bajo, Débil ante grupos grandes de enemigos.
Ogros
Criaturas grandes y fuertes, pueden lanzar proyectiles grandes contra sus enemigos,
desde rocas gigantes hasta bolas de fuego, son imprecisos a la hora de lanzar, por lo
que son más adecuados para enfrentar a grupos grandes de enemigos.
Pros: Daño de área, capaz de dañar múltiples enemigos.
Contras: Poca Precisión, Velocidad de lanzamiento lenta..
Torres Cuerpo a Cuerpo
Unidades de choque que se enfrentaran al enemigo cara a cara, con el propósito de
frenar su avance.
Unidad Principal: Nigromante: Conjurador y practicante de las artes oscuras, capaz de
invocar múltiples aliados en el combate.
Las unidades de cuerpo a cuerpo disponibles son, el Espíritu Oscuro, el Esqueleto, y el
Defensor Despertado.
Espíritu Oscuro
Alma estancada en el reino de los mortales, proveída una forma física con la que puede
dañar y ser dañada. La débil estructura de su cuerpo le hace vulnerable si es atacado
directamente.
Pros: Fácil y rápida obtención, abundante.
Contras: Daño y Salud Mediocres.
Esqueleto
Restos de seres humanos consumidos, reanimados mediante magia, frágiles ante
ataques físicos, pero luchadores natos, pueden encargarse de detener e incluso acabar
con adversarios por si mismos.
Pros: Daño Excelente.
Contras: Salud Baja.
Defensor Despertado
Restos zombificados de guerreros ancestrales, caídos dentro de la cueva, y
pertenecientes a una legión ya olvidada. Incapaces de causar mucho daño, pero
increíblemente resistentes a ataques físicos, pueden contener a grupos de enemigos
durante luchas prolongadas, sin embargo, necesitarán la ayuda de otras unidades para
poder derrotarlos.
Pros: Salud Excelente, puede frenar múltiples enemigos.
Contras: Daño Mediocre, escasos.
Unidades (Enemigas)
Humanos invadiendo la guarida de Drak, su codicia y sed de sangre les impulsa a
través de las adversidades.
Entre ellos podemos encontrar: Campesinos, Caballeros, Sacerdotes, Piqueros,
Saqueadores, Ladrones, y el rival definitivo del dragón, el Héroe.
Campesino
Trabajador de la tierra y los cultivos, obligado por un rey lejano a participar en el
asalto a la cueva del dragón, no poseen ninguna ventaja a parte de su numerosa
cantidad.
Pros: Cantidad.
Contras: Salud, Daño y Velocidad mediocres.
Caballero
Guerrero miembro de un ejército humano, enviado por el rey a dar caza al dragón, a
pesar de ser más rápidos y fuertes que los campesinos, no poseen otras habilidades
destacadas.
Pros: Armadura (Alta resistencia contra ataques a distancia).
Contras: Salud mediocre, Daño y Velocidad promedio.
Sacerdote
Miembro de un grupo que sigue las enseñanzas de su profeta, enviado a dar apoyo a
aquellos que le están dando caza al demonio alado.
Pros: Curar Unidades Cercanas y a sí mismo.
Contras: Velocidad y Salud promedio, daño mediocre, no puede usar sus poderes
mientras es atacado directamente.
Piquero
Rama de los caballeros especializada en la defensa, y en el combate cuerpo a cuerpo,
sin embargo, los asaltos rápidos no son su punto fuerte.
Pros: Extremadamente Peligrosos a corta distancia.
Contras: Velocidad Pésima.
Saqueador
Bandido humano atraído al asalto únicamente por el tesoro, guerrero sediento de
sangre, dispuesto a cualquier cosa con tal de conseguir su tesoro.
Pros: INMUNE a ataques a distancia, Salud y daño altos.
Contras: Velocidad baja.
Ladrón
Bandido humano en búsqueda de tesoros que robar durante el asalto, ágil como
ningún otro y capaz de evadir a otros guerreros, intentara buscar el momento preciso
para escabullirse entre la batalla.
Pros: INMUNE a ataques cuerpo a cuerpo, velocidad Excelente.
Contras: Salud mediocre, vulnerable a torres básicas debido a su falta de armadura.
Héroe
Guerrero anónimo cuyas leyendas le anteceden, no se sabe
mucho de él, más que la muerte lo acompaña a donde vaya. No
desperdiciara su oportunidad de enfrentarse a su oponente más
glorioso hasta ahora.
Pros: Daño y Salud Extremos, capaz de inhabilitar torres,
potencia unidades cercanas, su llegada al santuario causara la
derrota inmediata.
Contras: Velocidad baja.
Semana 3
- Definir caminos, aún sin digitalizar.
- Definir torres, ya digitalizadas.
- Avances en la programación respecto a las oleadas y el shooting.
-Primeros bocetos de cómo irían los caminos.
-Mejoras de torres.
-Intentar oleadas.
Estos son modelos de torres
usadas y a implementar
Semana 4
-Animaciones de explosiones.
-Programación de la torre, aun sin funcionar bien.
- Pruebas de programación en torres y enemigos.
- Estudio del sistema de oleadas.
- Programación del movimiento de unidades mediante waypoints.
Ejemplos de animaciones a
implementar
Semana 5
-Código de creación de torres.
-Código de daño (con errores)
Semana 5. Código de spawn de balas
Semana 6
-Código de Bullet.
- Código de Bullet Spawner.
- Código de movimiento de enemigos. (en progreso)
- Código de torre (Spawn de proyectiles)
-menú
Semana 6, código de enemigo
Semana 7
-código y correcciones.
-reciclar las unidades para que no crearan una sobrecarga en la memoria.
-Código de salud (para daño de personajes)
Semana 7, código de salud
Semana 8
-Prueba de funcionalidad de las oleadas (que siguieran el camino)
-Prueba de funcionalidad de los disparos.
Semana 8, código de bala
Semana 9
-Nueva ruta.
-Vídeos y compresión del código.
-Preparación para la pre entrega.
Semana 9, código de ruta
Semana 10
-Prueba de menú y seguimiento de camino.
-Mejora del seguimiento.
-Preparación para la pre entrega.
Semana 10, clase spawn de bala
Semana 10, clase oleada
Semana 10, clase enemigo
Semana 10, clase salud
Semana 10, clase Bala
Semana 10, clase menú
Códigos implementados en
el momento:
Enemigo
public class Enemigo: MonoBehaviour
{
public float velocidad;
private Waypoints wpoints; // Permite asignarle los Waypoints respectivos del camino a recorrer.
private Vector3 posicion_inicial; // Guarda su posición de inicio.
private int contador; // Necesario para el funcionamiento del movimiento.
void Start()
{
posicion_inicial = this.transform.position; // Establece la posición actual.
wpoints = GameObject.FindGameObjectWithTag("Waypoints").GetComponent<Waypoints>(); //Detecta todos los Waypoints que
pertenecen a una ruta.
}
void Update()
{
transform.position = Vector3.MoveTowards(transform.position, wpoints.waypoints[contador].position, velocidad * Time.deltaTime); //
Le da movimiento a la unidad a través del camino.
if(Vector3.Distance(transform.position, wpoints.waypoints[contador].position) < 0.1f)
{
contador++; //Cuando se encuentra extremadamente cerca de su objetivo, el contador aumenta, haciendo que cambie su rumbo al
próximo waypoint.
}
if (GameObject.FindGameObjectsWithTag("WP1").Length == contador)
{
contador = 0;
this.transform.position = posicion_inicial ; //Regresa a la unidad a su posición de inicio y reinicia su contador.
}
//test muerte
if (GetComponent<Salud>().salud < 0) { velocidad = 0; } // Inmoviliza a la unidad, será reemplazado en el futuro por una animación
de muerte.
//fin de test muerte
}
void OnTriggerEnter(Collider otro)
{
if (otro.gameObject.tag == "Bala")
{
Destroy(otro.gameObject); // Destruye las balas cuando es impactado por ellas.
}
}
}
Bala
public class Bala : MonoBehaviour
{
private GameObject objetivo; // El objeto al que la bala se dirigira, asignado por la torre.
private float velocidad = 5; // La rapidez de la bala.
void Update()
{
Vector3 direccion; // Le indica la dirección de su objetivo.
if (objetivo != null) // Mantiene la bala activa mientras su objetivo lo esté.
{
direccion = objetivo.transform.position - this.transform.position; // Mueve la bala hacia su objetivo.
this.transform.position += velocidad * direccion * Time.deltaTime; // Maneja la velocidad de la bala.
}
}
public void ActivarBala(Torre torre)
{
objetivo = torre.Enemigo; // Usado por la torre para asignar un objetivo a la bala.
}
}
Pooling Enemigos
public class PoolingEnemigos : MonoBehaviour
{
public static ArrayList unidades = new ArrayList(); // Arreglo de enemigos
void Start()
{
GameObject unidad = GameObject.Find("Test Enemigo"); //Busca el enemigo a asignar.
GameObject temp; // Guarda la unidad que permitirá la aparición de las demás.
Vector3 incremento = new Vector3(-2, 0); // Establece la distancia a la que cada copia aparecerá.
Vector3 posicion_actual = unidad.transform.position; // Guarda la posición del original.
for(int i = 0; i < 10; i++) // Establece i como la cantidad de enemigos a aparecer.
{
temp = (GameObject)Instantiate(unidad,posicion_actual + incremento,Quaternion.identity); // Hace aparecer a las copias del
enemigo.
posicion_actual = temp.transform.position; // Actualiza la posición de la última copia generada.
unidades.Add(temp); // Agrega las unidades creadas al arreglo.
}
}
}
Waypoints
public class Waypoints : MonoBehaviour
{
public Transform[] waypoints; // Funciona como un array que permite modificar las rutas fácilmente desde el editor.
}
Torre
public class Torre : MonoBehaviour
{
private GameObject enemigo; // Guarda el objetivo actual de la torre.
private bool esta_activa; // Maneja el estado de la torre.
private float distancia_umbral = 10f; // Es la distancia a la que un enemigo debe estar para que la torre se active.
public float retraso_disparo = 0f; // Usado para controlar la cadencia de disparo de la torre.
void Update()
{
retraso_disparo -= Time.deltaTime; // Reduce el contador para permitir un próximo disparo.
Enemigo = BuscarEnemigoCercano();
if (Enemigo != null && retraso_disparo <= 0)
{
Disparar(); // Sólo dispara si hay enemigos en su rango y si el enfriamiento de su último disparo ha pasado.
}
}
void Disparar()
{
GameObject obj = (GameObject)Instantiate(GameObject.Find("Bala"), this.transform.position, Quaternion.identity); // Permite acceso
al Prefab de Bala del editor.
Bala bala = obj.GetComponent<Bala>(); //Da acceso al código de la bala.
bala.ActivarBala(this); // Activa la bala.
retraso_disparo = 0.3f; //Reactiva el contador, causando un tiempo de espera para el próximo disparo.
}
GameObject BuscarEnemigoCercano()
{
ArrayList enemigos = PoolingEnemigos.unidades; // Detecta al grupo de enemigos, se sospecha genera problemas para detectar al
primero y al ultimo.
GameObject temp; // Crea un espacio temporal para guardar el objetivo.
foreach (object item in enemigos)
{
temp = (GameObject)item; // Rastrea específicamente los enemigos pertenecientes al arreglo, probablemente cree inconvenientes
al agregar mas variantes de enemigo.
if (Vector3.Distance(temp.transform.position, this.transform.position) < distancia_umbral && temp.GetComponent<Salud>().salud >
0)
{
return temp; // Detecta al enemigo en el rango de la torre, y evita detectar enemigos que ya hayan sido derrotados.
}
}
return null; // Si no encuentra enemigos, no regresará nada, haciendo que la torre tampoco haga nada.
}
public GameObject Enemigo
{
get => enemigo; set => enemigo = value;
}
public bool Esta_activa
{
get => esta_activa; set => esta_activa = value;
}
}
Salud
public class Salud : MonoBehaviour
{
public int salud = 20; // Establece la salud de la unidad.
public float retraso_muerte = 5f; // Genera un retraso antes de la desaparición de la unidad, actualmente sin ser usado, será
reemplazado por la animación de muerte.
void OnTriggerEnter(Collider collider)
{
if (collider.gameObject.CompareTag("Bala"))
{
salud -= 2; // Reduce la vida de la unidad al ser impactado por una bala.
}
}
void Update()
{
if (salud <= 0)
{
retraso_muerte -= Time.deltaTime; // Activa el contador de muerte, será empleado por la animación de muerte.
}
if (retraso_muerte <= 0)
{
//Destroy(this.gameObject); Intento de desaparición de las unidades derrotadas, genera errores, desactivado hasta encontrar una
solución o alternativa.
}
}
}
Video
Pre entrega PDOO

Más contenido relacionado

La actualidad más candente (7)

Como comprar desde libros antiguos npc
Como comprar desde libros antiguos npcComo comprar desde libros antiguos npc
Como comprar desde libros antiguos npc
 
Ciudadano
CiudadanoCiudadano
Ciudadano
 
Warframe
WarframeWarframe
Warframe
 
Habilidades PokéMon
Habilidades PokéMonHabilidades PokéMon
Habilidades PokéMon
 
70
7070
70
 
Destiny
DestinyDestiny
Destiny
 
World of Warcraft
World of WarcraftWorld of Warcraft
World of Warcraft
 

Similar a Pre entrega PDOO (20)

Pre entrega PDOO
Pre entrega PDOOPre entrega PDOO
Pre entrega PDOO
 
Dot a
Dot aDot a
Dot a
 
Heroes De Dota
Heroes De DotaHeroes De Dota
Heroes De Dota
 
Presentación1
Presentación1Presentación1
Presentación1
 
Presentación1
Presentación1Presentación1
Presentación1
 
Guia de dota
Guia de dotaGuia de dota
Guia de dota
 
Guia completa de Mu online
Guia completa de Mu onlineGuia completa de Mu online
Guia completa de Mu online
 
Final juego PDOO
Final juego PDOOFinal juego PDOO
Final juego PDOO
 
Dofus
DofusDofus
Dofus
 
Presentación final PDOO
Presentación final PDOOPresentación final PDOO
Presentación final PDOO
 
megazord_1652629445656.pdf
megazord_1652629445656.pdfmegazord_1652629445656.pdf
megazord_1652629445656.pdf
 
Blade- The Edge of Darkness
Blade- The Edge of DarknessBlade- The Edge of Darkness
Blade- The Edge of Darkness
 
Nuevo documento de microsoft word (2)
Nuevo documento de microsoft word (2)Nuevo documento de microsoft word (2)
Nuevo documento de microsoft word (2)
 
Destiny
DestinyDestiny
Destiny
 
Guia del buen support
Guia del buen supportGuia del buen support
Guia del buen support
 
Castillo choque tutorial - obtener dispositivo de compromisou000du000d
Castillo choque tutorial - obtener dispositivo de compromisou000du000dCastillo choque tutorial - obtener dispositivo de compromisou000du000d
Castillo choque tutorial - obtener dispositivo de compromisou000du000d
 
Guia McM por mirim
Guia McM por mirimGuia McM por mirim
Guia McM por mirim
 
clash of clans
clash of clansclash of clans
clash of clans
 
clash of clans
clash of clansclash of clans
clash of clans
 
clash of clans
clash of clansclash of clans
clash of clans
 

Más de DanielaAtencia

Más de DanielaAtencia (6)

Final Tower Defense
Final Tower DefenseFinal Tower Defense
Final Tower Defense
 
Entrega final - PDOO - Tower defense
Entrega final - PDOO - Tower defenseEntrega final - PDOO - Tower defense
Entrega final - PDOO - Tower defense
 
Backlog - PDOO
Backlog - PDOO Backlog - PDOO
Backlog - PDOO
 
History tower
History towerHistory tower
History tower
 
Pitch
PitchPitch
Pitch
 
Pitch
PitchPitch
Pitch
 

Último

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 

Último (19)

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 

Pre entrega PDOO

  • 1. Pre-entrega Programación Orientada a objetos - Fredy Muriel - Daniela Atencia - Jhon Mayuza
  • 2. Backlog Actividad Semana Esfuerzo x Definir historia, lluvia de ideas Semana 1 3 x Definir nombre y logo de la empresa Semana 1 2 x Definir nombre y logo del juego Semana 1 2 x Diseño de personajes y escenarios Semana 2 4 x Definir mecánicas e iniciar programación de enemigos Semana 2 4 x Ilustraciones de torres Semana 3 3 x Ilustración de efectos Semana 4 3 Ilustración de enemigos Semana 5 3 Ilustración de dragón Semana 5 3
  • 3. Backlog Actividad Semana Esfuerzo x Ilustración escenarios Semana 6 2 Animación enemigos Semana 7 3 x Pantallas game over y victoria Semana 8 4 x Movimiento de oleadas Semana 7 4 x Posicionamiento de torres Semana 9 4 x Disparos Semana 9 4 Barra de vida Semana 10 3 x Pantalla de inicio (menú) Semana 7 3 Daño Semana 11 3 Aumento de dificultad Semana 12 4
  • 4. Backlog Actividad Semana Esfuerzo Sistema de puntos Semana 12 3 Audio, fx Semana 13 4 Primeras pruebas Semana 14 3 Correcciones finales Semana 15 3 Pruebas finales Semana 17 4
  • 5. Semana 1 -Crear grupo. -Iniciar backlog. -Crear nombre del juego y nombre del estudio. -Definir algunas mecánicas del juego. -Lluvia de ideas. -Contexto y narrativa del juego. -Concepto y primeros bocetos de los Personajes (incompleto). -Boceto de mecánica. -Búsqueda de Referencias.
  • 6. Primer diseño logo del equipo
  • 7. Update logo del estudio
  • 9. Update #2 logo del estudio
  • 12. Contexto En el reino de Fardia, Drak, un imponente, colosal y temido dragón, ha caído víctima de una nefasta maldición, y a pesar que esta no sea lo suficientemente poderosa para acabar con su vida, lo ha dejado debilitado, noticia que se esparce como el fuego alrededor de todas las comarcas. Mercenarios, clanes guerreros, cazarrecompensas, caballeros e incluso saqueadores, todos se preparan para sacar provecho de la vulnerabilidad del dragón, ya sea para echar mano de su cabeza, o su tesoro. Ante la inminente llegada de ejércitos enteros, dispuestos a todo para saciar su codicia humana, el dragón deberá, con ayuda de otras bestias y enemigos de los avariciosos humanos, proteger su santuario y a si mismo.
  • 13. Escenario Drak, ahora resguardado en su santuario, dentro de lo más profundo de una cueva en las montañas de Fardia, se prepara para defenderse de la arremetida humana con toda la fuerza que aún le queda, para su suerte, múltiples grupos de criaturas de la montaña se ofrecen a ayudarle. Resguardado tras sistemas de cuevas construidos por el mismo, deberá planear una estrategia para resistir la arremetida humana hasta que haya recobrado sus fuerzas.
  • 14. Semana 2 -Narrativa. -Personajes y sus funciones. -Empezar bocetos de personajes. -Cambio de nombre de la empresa y de nombre de juego. -Ver vídeos de referencia. -empezar bocetos de torres. -empezar oleadas de enemigos.
  • 15. Unidades (Aliadas) Criaturas, bestias y monstruos de los bosques, acudiendo a la batalla ya sea por la defensa del dragón, o simplemente por la oportunidad de matar humanos.
  • 16. Torres Puestos establecidos estratégicamente por el dragón para ubicar grupos de aliados, con el fin de tener ventaja sobre el atacante. Se dividen en dos categorías, a Distancia y Cuerpo a Cuerpo.
  • 17. Torres a Distancia Puestos ubicados para atacar al enemigo desde lejos, ubicados principalmente para dar apoyo a las torres cuerpo a cuerpo. Se tendrá a disposición de dos torres de este tipo: Duendes y Ogros
  • 18. Duendes Criaturas débiles en general, pero maestros de la arquería, por sí solos no representan una amenaza real para sus adversarios, pero son rápidos, y pueden ayudar enormemente a frenar enemigos ágiles, a su vez que apoyar a las tropas cuerpo a cuerpo. Pros: Alta Precisión, Disparos Rápidos, Sangrado en enemigos. Contras: Daño Bajo, Débil ante grupos grandes de enemigos.
  • 19. Ogros Criaturas grandes y fuertes, pueden lanzar proyectiles grandes contra sus enemigos, desde rocas gigantes hasta bolas de fuego, son imprecisos a la hora de lanzar, por lo que son más adecuados para enfrentar a grupos grandes de enemigos. Pros: Daño de área, capaz de dañar múltiples enemigos. Contras: Poca Precisión, Velocidad de lanzamiento lenta..
  • 20. Torres Cuerpo a Cuerpo Unidades de choque que se enfrentaran al enemigo cara a cara, con el propósito de frenar su avance. Unidad Principal: Nigromante: Conjurador y practicante de las artes oscuras, capaz de invocar múltiples aliados en el combate. Las unidades de cuerpo a cuerpo disponibles son, el Espíritu Oscuro, el Esqueleto, y el Defensor Despertado.
  • 21. Espíritu Oscuro Alma estancada en el reino de los mortales, proveída una forma física con la que puede dañar y ser dañada. La débil estructura de su cuerpo le hace vulnerable si es atacado directamente. Pros: Fácil y rápida obtención, abundante. Contras: Daño y Salud Mediocres.
  • 22. Esqueleto Restos de seres humanos consumidos, reanimados mediante magia, frágiles ante ataques físicos, pero luchadores natos, pueden encargarse de detener e incluso acabar con adversarios por si mismos. Pros: Daño Excelente. Contras: Salud Baja.
  • 23. Defensor Despertado Restos zombificados de guerreros ancestrales, caídos dentro de la cueva, y pertenecientes a una legión ya olvidada. Incapaces de causar mucho daño, pero increíblemente resistentes a ataques físicos, pueden contener a grupos de enemigos durante luchas prolongadas, sin embargo, necesitarán la ayuda de otras unidades para poder derrotarlos. Pros: Salud Excelente, puede frenar múltiples enemigos. Contras: Daño Mediocre, escasos.
  • 24. Unidades (Enemigas) Humanos invadiendo la guarida de Drak, su codicia y sed de sangre les impulsa a través de las adversidades. Entre ellos podemos encontrar: Campesinos, Caballeros, Sacerdotes, Piqueros, Saqueadores, Ladrones, y el rival definitivo del dragón, el Héroe.
  • 25. Campesino Trabajador de la tierra y los cultivos, obligado por un rey lejano a participar en el asalto a la cueva del dragón, no poseen ninguna ventaja a parte de su numerosa cantidad. Pros: Cantidad. Contras: Salud, Daño y Velocidad mediocres.
  • 26. Caballero Guerrero miembro de un ejército humano, enviado por el rey a dar caza al dragón, a pesar de ser más rápidos y fuertes que los campesinos, no poseen otras habilidades destacadas. Pros: Armadura (Alta resistencia contra ataques a distancia). Contras: Salud mediocre, Daño y Velocidad promedio.
  • 27. Sacerdote Miembro de un grupo que sigue las enseñanzas de su profeta, enviado a dar apoyo a aquellos que le están dando caza al demonio alado. Pros: Curar Unidades Cercanas y a sí mismo. Contras: Velocidad y Salud promedio, daño mediocre, no puede usar sus poderes mientras es atacado directamente.
  • 28. Piquero Rama de los caballeros especializada en la defensa, y en el combate cuerpo a cuerpo, sin embargo, los asaltos rápidos no son su punto fuerte. Pros: Extremadamente Peligrosos a corta distancia. Contras: Velocidad Pésima.
  • 29. Saqueador Bandido humano atraído al asalto únicamente por el tesoro, guerrero sediento de sangre, dispuesto a cualquier cosa con tal de conseguir su tesoro. Pros: INMUNE a ataques a distancia, Salud y daño altos. Contras: Velocidad baja.
  • 30. Ladrón Bandido humano en búsqueda de tesoros que robar durante el asalto, ágil como ningún otro y capaz de evadir a otros guerreros, intentara buscar el momento preciso para escabullirse entre la batalla. Pros: INMUNE a ataques cuerpo a cuerpo, velocidad Excelente. Contras: Salud mediocre, vulnerable a torres básicas debido a su falta de armadura.
  • 31. Héroe Guerrero anónimo cuyas leyendas le anteceden, no se sabe mucho de él, más que la muerte lo acompaña a donde vaya. No desperdiciara su oportunidad de enfrentarse a su oponente más glorioso hasta ahora. Pros: Daño y Salud Extremos, capaz de inhabilitar torres, potencia unidades cercanas, su llegada al santuario causara la derrota inmediata. Contras: Velocidad baja.
  • 32. Semana 3 - Definir caminos, aún sin digitalizar. - Definir torres, ya digitalizadas. - Avances en la programación respecto a las oleadas y el shooting. -Primeros bocetos de cómo irían los caminos. -Mejoras de torres. -Intentar oleadas.
  • 33. Estos son modelos de torres usadas y a implementar
  • 34. Semana 4 -Animaciones de explosiones. -Programación de la torre, aun sin funcionar bien. - Pruebas de programación en torres y enemigos. - Estudio del sistema de oleadas. - Programación del movimiento de unidades mediante waypoints.
  • 35. Ejemplos de animaciones a implementar
  • 36. Semana 5 -Código de creación de torres. -Código de daño (con errores)
  • 37. Semana 5. Código de spawn de balas
  • 38. Semana 6 -Código de Bullet. - Código de Bullet Spawner. - Código de movimiento de enemigos. (en progreso) - Código de torre (Spawn de proyectiles) -menú
  • 39. Semana 6, código de enemigo
  • 40. Semana 7 -código y correcciones. -reciclar las unidades para que no crearan una sobrecarga en la memoria. -Código de salud (para daño de personajes)
  • 41. Semana 7, código de salud
  • 42. Semana 8 -Prueba de funcionalidad de las oleadas (que siguieran el camino) -Prueba de funcionalidad de los disparos.
  • 43. Semana 8, código de bala
  • 44. Semana 9 -Nueva ruta. -Vídeos y compresión del código. -Preparación para la pre entrega.
  • 45. Semana 9, código de ruta
  • 46. Semana 10 -Prueba de menú y seguimiento de camino. -Mejora del seguimiento. -Preparación para la pre entrega.
  • 47. Semana 10, clase spawn de bala
  • 49. Semana 10, clase enemigo
  • 55. public class Enemigo: MonoBehaviour { public float velocidad; private Waypoints wpoints; // Permite asignarle los Waypoints respectivos del camino a recorrer. private Vector3 posicion_inicial; // Guarda su posición de inicio. private int contador; // Necesario para el funcionamiento del movimiento. void Start() { posicion_inicial = this.transform.position; // Establece la posición actual. wpoints = GameObject.FindGameObjectWithTag("Waypoints").GetComponent<Waypoints>(); //Detecta todos los Waypoints que pertenecen a una ruta. }
  • 56. void Update() { transform.position = Vector3.MoveTowards(transform.position, wpoints.waypoints[contador].position, velocidad * Time.deltaTime); // Le da movimiento a la unidad a través del camino. if(Vector3.Distance(transform.position, wpoints.waypoints[contador].position) < 0.1f) { contador++; //Cuando se encuentra extremadamente cerca de su objetivo, el contador aumenta, haciendo que cambie su rumbo al próximo waypoint. } if (GameObject.FindGameObjectsWithTag("WP1").Length == contador) { contador = 0; this.transform.position = posicion_inicial ; //Regresa a la unidad a su posición de inicio y reinicia su contador. } //test muerte if (GetComponent<Salud>().salud < 0) { velocidad = 0; } // Inmoviliza a la unidad, será reemplazado en el futuro por una animación de muerte. //fin de test muerte } void OnTriggerEnter(Collider otro) { if (otro.gameObject.tag == "Bala") { Destroy(otro.gameObject); // Destruye las balas cuando es impactado por ellas. } } }
  • 57. Bala
  • 58. public class Bala : MonoBehaviour { private GameObject objetivo; // El objeto al que la bala se dirigira, asignado por la torre. private float velocidad = 5; // La rapidez de la bala. void Update() { Vector3 direccion; // Le indica la dirección de su objetivo. if (objetivo != null) // Mantiene la bala activa mientras su objetivo lo esté. { direccion = objetivo.transform.position - this.transform.position; // Mueve la bala hacia su objetivo. this.transform.position += velocidad * direccion * Time.deltaTime; // Maneja la velocidad de la bala. } } public void ActivarBala(Torre torre) { objetivo = torre.Enemigo; // Usado por la torre para asignar un objetivo a la bala. } }
  • 60. public class PoolingEnemigos : MonoBehaviour { public static ArrayList unidades = new ArrayList(); // Arreglo de enemigos void Start() { GameObject unidad = GameObject.Find("Test Enemigo"); //Busca el enemigo a asignar. GameObject temp; // Guarda la unidad que permitirá la aparición de las demás. Vector3 incremento = new Vector3(-2, 0); // Establece la distancia a la que cada copia aparecerá. Vector3 posicion_actual = unidad.transform.position; // Guarda la posición del original. for(int i = 0; i < 10; i++) // Establece i como la cantidad de enemigos a aparecer. { temp = (GameObject)Instantiate(unidad,posicion_actual + incremento,Quaternion.identity); // Hace aparecer a las copias del enemigo. posicion_actual = temp.transform.position; // Actualiza la posición de la última copia generada. unidades.Add(temp); // Agrega las unidades creadas al arreglo. } } }
  • 62. public class Waypoints : MonoBehaviour { public Transform[] waypoints; // Funciona como un array que permite modificar las rutas fácilmente desde el editor. }
  • 63. Torre
  • 64. public class Torre : MonoBehaviour { private GameObject enemigo; // Guarda el objetivo actual de la torre. private bool esta_activa; // Maneja el estado de la torre. private float distancia_umbral = 10f; // Es la distancia a la que un enemigo debe estar para que la torre se active. public float retraso_disparo = 0f; // Usado para controlar la cadencia de disparo de la torre. void Update() { retraso_disparo -= Time.deltaTime; // Reduce el contador para permitir un próximo disparo. Enemigo = BuscarEnemigoCercano(); if (Enemigo != null && retraso_disparo <= 0) { Disparar(); // Sólo dispara si hay enemigos en su rango y si el enfriamiento de su último disparo ha pasado. } } void Disparar() { GameObject obj = (GameObject)Instantiate(GameObject.Find("Bala"), this.transform.position, Quaternion.identity); // Permite acceso al Prefab de Bala del editor. Bala bala = obj.GetComponent<Bala>(); //Da acceso al código de la bala. bala.ActivarBala(this); // Activa la bala. retraso_disparo = 0.3f; //Reactiva el contador, causando un tiempo de espera para el próximo disparo. }
  • 65. GameObject BuscarEnemigoCercano() { ArrayList enemigos = PoolingEnemigos.unidades; // Detecta al grupo de enemigos, se sospecha genera problemas para detectar al primero y al ultimo. GameObject temp; // Crea un espacio temporal para guardar el objetivo. foreach (object item in enemigos) { temp = (GameObject)item; // Rastrea específicamente los enemigos pertenecientes al arreglo, probablemente cree inconvenientes al agregar mas variantes de enemigo. if (Vector3.Distance(temp.transform.position, this.transform.position) < distancia_umbral && temp.GetComponent<Salud>().salud > 0) { return temp; // Detecta al enemigo en el rango de la torre, y evita detectar enemigos que ya hayan sido derrotados. } } return null; // Si no encuentra enemigos, no regresará nada, haciendo que la torre tampoco haga nada. } public GameObject Enemigo { get => enemigo; set => enemigo = value; } public bool Esta_activa { get => esta_activa; set => esta_activa = value; } }
  • 66. Salud
  • 67. public class Salud : MonoBehaviour { public int salud = 20; // Establece la salud de la unidad. public float retraso_muerte = 5f; // Genera un retraso antes de la desaparición de la unidad, actualmente sin ser usado, será reemplazado por la animación de muerte. void OnTriggerEnter(Collider collider) { if (collider.gameObject.CompareTag("Bala")) { salud -= 2; // Reduce la vida de la unidad al ser impactado por una bala. } } void Update() { if (salud <= 0) { retraso_muerte -= Time.deltaTime; // Activa el contador de muerte, será empleado por la animación de muerte. } if (retraso_muerte <= 0) { //Destroy(this.gameObject); Intento de desaparición de las unidades derrotadas, genera errores, desactivado hasta encontrar una solución o alternativa. } } }
  • 68. Video