Want to create interactive content? It’s easy in Genially!
Party Hard
jasonx_09
Created on November 15, 2023
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Vaporwave presentation
View
Women's Presentation
View
Geniaflix Presentation
View
Shadow Presentation
View
Newspaper Presentation
View
Memories Presentation
View
Zen Presentation
Transcript
START
PARTY HARD
Lanzado el 25/08/2015
Party hard, desarrollado por Pinokl Games y publicado por tinyBuild Games, es un juego de corte independiente y planteamiento muy sorprendente.
Lanzamiento
2016
2016
2015
2015
2016
01
ARGUMENTO
Premisa
de party Hard
La historia de Party Hard sigue a un protagonista que, cansado del ruido y disturbio causado por las fiestas vecinas, decide tomar medidas drásticas para poner fin a la algarabía. El personaje se embarca en una serie de fiestas nocturnas con el objetivo de eliminar a los asistentes de manera silenciosa y sigilosa. A medida que avanza el juego, se revelan capas adicionales de la historia, incluyendo motivaciones más profundas y desarrollos inesperados.
02
JUGABILIDAD
¿Cómo se juega?
Objetivo principal del juego
Aumento de Dificultad
Puntuación
03
DESARROLLO
Motor Gráfico
UNITY
La versión original de Party Hard, lanzada en 2015, utilizó el motor gráfico Unity. Este motor gráfico es un motor de desarrollo multiplataforma que se utiliza para crear juegos de una amplia gama de géneros. Unity es conocido por su facilidad de uso y su capacidad para crear juegos con gráficos de alta calidad.
PROGRAMACIÓN
C++
Fue creado con el lenguaje de programación C++. C + + es un lenguaje de programación general-propósito que se utiliza para crear una amplia gama de aplicaciones, incluyendo juegos.
06
ANÁLISIS DE GAMEPLAY
GAMEPLAY
ANáLISIS PROFUNDO
Escenarios y Misiones
Interaccion con el entorno
Estrategia y Sigilo
Data
Data
Data
Variedad en Objetivosx
Uso creativo de Objetos
Planificación de Asesinatos
Sigilo Social
Elementos de Juego de Fiesta
Cambios en la Jugabilidad
+INFO
+INFO
+INFO
GAMEPLAY
ANáLISIS PROFUNDO
Personalización y Progresión
Narrativa Integrada
Desafíos y Obstáculos
Data
Data
Data
Guardias de Seguridad y Policia
Desbloqueo de Personajes y Objetos
Motivación del Personaje:
Impacto en las Decisiones:
Progresión Dificultad-Ajustada
Interferencias Externas
+INFO
+INFO
+INFO
08
PERSONAJES
Personajes
Personaje Principal
El ninja
El carnicero
El Poli
La niña
El que quiere dormir
El que quiere dormir
Personajes
Personajes Secundarios
Seguridad
Específicos
Paramedicos y Clean
Policía y Fuerzas
Asistentes
09
CÓMO SE RESUELVE EN UNITY
3 MECÁNICAS TÉCNICAS
Asesinar
Morir
Caminar
Personaje/Character
Transform
Contruir al personaje
Sprite renderer
Primero se debe de armar al personaje principal, el cual se llama Darius. El cual se va a componer por:
Animator
rigidbody2D
Capsule collider
AUDIOSOURCE
SCRIPTS
Script de Personaje
Variables
Void Start
estaVivo
Se obtiene la referencia del animator y efectos sonoros
int score=0; private bool estaVivo = true; private animator myAnimation; private Efectos Sonoros misSonidos;
Va a verificar si el jugador esta vivo para poder realizar las acciones.
+INFO
+INFO
+INFO
Script de Personaje
Morir
Switch
Case
Switch (forma): La expresión switch toma un valor (en este caso, el valor de forma)
(public Void) y parametrizado con forma de morir
Evalúa su igualdad con cada case que se enumera a continuación.
+INFO
+INFO
+INFO
Script Controlador Jugador
Logica del movimiento del personaje sobre el eje x y el eje y.
+INFO
Variables
+INFO
Void START
+INFO
VOID UPDATE
+INFO
MOVIMIENTO HORIZONTAL
+INFO
MOVIMIENTO VERTICAL
ARMA
Weapon
Transform
Sprite renderer
Box Collider
Script Weapon
Script de Arma/Weapon
OnTriggerEnter2D
Private void OnTriggerEnter2D(Collider2D collision)
+INFO
¡GRACIAS POR SU ATENCION!
Planificar la estructurade tu comunicación.
Planificar la estructurade tu comunicación.
Void Start
void Start() { miCuerpo = GetComponent<Rigidbody2D>(); miAnimador = GetComponent<Animator>(); misSonidos = GetComponent<EfectosSonoros>(); miPersonaje = GetComponent<Personaje>(); }
Void Start
private void Start() { myAnimation = GetComponent<Animator>(); mySounds = GetComponent<SoundEffects>(); }
Switch
public void morir(formaDeMorir forma) { // Llamada al método específico de la forma de morir switch (forma) { case formaDeMorir.Asesinato: manejarMuertePorAsesinato(); break; case FormaDeMorir.AtrapadoPorPolicia: manejarAtrapadoPorPolicia(); break; } }
Planificar la estructurade tu comunicación.
Establecer un flujo através del contenido.
Establecer un flujo a través del contenido.
Estrategia y Sigilo
Jerarquizarla y darle peso visual a lo principal.
Definir mensajes secundarios con interactividad.
Establecer un flujo a través del contenido.
CONDICIONAR MOV VERTICAL
if (puedoMoverme && movVertical > 0) { // Mover hacia arriba miCuerpo.velocity = new Vector3(0f, velocidadCaminar, 0f); } else if (puedoMoverme && movVertical < 0) { // Mover hacia abajo miCuerpo.velocity = new Vector3(0f, -velocidadCaminar, 0f); } else { // Detener el movimiento vertical si no hay entrada miCuerpo.velocity = new Vector3(0f, 0f, 0f); } } }
Escenarios y Misiones
Definir mensajes secundarios con interactividad.
Establecer un flujo a través del contenido.
Variables
public class ControladorJugador : MonoBehaviour { public float velocidadCaminar = 5f; private Rigidbody2D miCuerpo; private Animator miAnimador; private EfectosSonoros misSonidos; private Personaje miPersonaje; }
Void Update
void Update() { bool puedoMoverme = miPersonaje.estaVivo() && !miPersonaje.bloqueado; float velVert = miCuerpo.velocity.y; float moviHorizontal = Input.GetAxis("Horizontal"); float movVertical = Input.GetAxis("Vertical");
Variables
int score = 0; private bool estaVivo = true; private animator myAnimation; private SoundEffects mySounds;
Narrativa Integrada
Jerarquizarla y darle peso visual a lo principal.
Definir mensajes secundarios con interactividad.
Jerarquizarla y darle peso visual a lo principal.
CONDICIONAR MOV HORIZONTAL
if (puedoMoverme && moviHorizontal > 0) { transform.rotation = Quaternion.Euler(0f, 0f, 0f); miCuerpo.velocity = new Vector3(velocidadCaminar, 0f, 0f); } else if (puedoMoverme && moviHorizontal < 0) { transform.rotation = Quaternion.Euler(0f, 180f, 0f); miCuerpo.velocity = new Vector3(-velocidadCaminar, 0f, 0f); } else { miCuerpo.velocity = new Vector3(0f, velVert, 0f); }
Medir los resultados.
Medir los resultados.
Case
private void manejarMuertePorAsesinato() { // Lógica específica para muerte por asesinato, como cambiar animaciones, reproducir sonidos, etc. animator.SetTrigger("MuerteAsesinato"); soundEffects.ReproducirSonidoMuerte(FormaDeMorir.Asesinato); } private void manejarAtrapadoPorPolicia() { // Lógica específica para ser atrapado por la policía animator.SetTrigger("MuerteAtrapado"); soundEffects.reproducirSonidoMuerte(FormaDeMorir.AtrapadoPorPolicia); }
OnTriggerEnter2D
Public class Arma : MonoBehaviour { private void OnTriggerEnter2D(Collider2D other) { // Verificar si el objeto con el que colisiona el arma es un NPC if (other.CompareTag("NPC")) { // Obtener el componente del Personaje NPC npc = other.GetComponent<Personaje>(); // Verificar si el componente NPC es válido if (npc != null) { // Llamar a la función de muerte por asesinato del NPC npc.morir(manejarMuertePorAsesinato()) } } } }
Medir los resultados.
Desafíos y Obstáculos
Morir
public void morir(FormaDeMorir forma) { switch (forma) { case formaDeMorir.Asesinato: manejarMuertePorAsesinato(); break; case formaDeMorir.AtrapadoPorPolicia: manejarAtrapadoPorPolicia(); break; } } private void manejarMuertePorAsesinato() { // Lógica específica para muerte por asesinato, como cambiar animaciones, reproducir sonidos, etc. animator.SetTrigger("MuerteAsesinato"); soundEffects.reproducirSonidoMuerte(FormaDeMorir.Asesinato); }
Interacción con el Contorno
estaVivo
private bool estaVivo = true; void Update() { if (estaVivo) {} } void morir() { estaVivo = false; finDeJuego(); }
Personalización y Progresión