motor rpg cristóbal troncoso. objetivos una persona que no sepa programar pueda crear su propio...
TRANSCRIPT
Motor RPG
Cristóbal Troncoso
Objetivos
Una persona que no sepa programar pueda crear su propio juego de rol a través de editores de niveles y editores de eventos.
Separar programación de diseño de juego.
Para lograr esto…
Las ‘pantallas’, eventos, ubicación de objetos, mapa, salidas disponibles, diálogos, etc. NO pueden estar programados en el engine.
Idear un sistema consistente para que un usuario pueda agregar todas estas cosas sin tocar el código.
Código flexible a modificaciones.
Desafíos de programación
Crear un programa capaz de desplegar un entorno gráfico navegable.Python 2.6 / IDLEPyGame 2.9Photoshop / Paint Notepad
Herramientas
Python: Lenguaje de programación interpretado (no requiere compilador).
PyGame: Librería para asistir en la creación de juegos o entornos gráficos en Python.
Paint/Photoshop: Gráficos.Notepad:
Desafíos de programación
Mover y controlar a un personajeEl personaje interactúa con el entorno
dispuesto por el usuario no ingeniero…Agilidad en despliegue gráficoDetección de colisionesNavegación por escenariosDespliegue de objetos (muros, arbustos)
Agilidad en despliegue gráfico
Técnica DirtyRectDirtyRect almacena en una lista los objetos
que se están moviendo.Permite actualizar solo el objeto en
movimiento en vez de el escenario completo.
Útil para juegos sin scrolling.
Detección de colisiones
Detectar cuando un objeto choca con otro, y tomar la acción correspondiente.
Un problema encontrado
Personaje recorre el mundo con un step de 3px (ejemplo)
Choca con un objetoIf choque=1 y usuario sigue avanzando,
retroceda en dirección contraria al avance.
If choque=1 y usuario no avanza, ¿hacia donde debe retroceder el personaje?
Personaje: Bagar
Colisiones con Bagar
Despliegue de escenario
Objeto NivelHandler detecta en que escenario se pretende estar. Ejemplo: “Escenario_1”
Recorre la carpeta Escenario_1 en busca de archivos de configuración.Salidas posibles a otros escenariosObjetos “chocables” Imagen de fondo Items para recolección
Despliegue de escenario
NivelHandler toma todas las salidas posibles e items a desplegar, los convierte a objetos de la clase correspondiente y los hace presentes para el juego y personaje.
Al pasar a otro escenario, se “resetean” las listas de objetos para dar paso a los objetos del próximo escenario.
Navegación por escenario
Si el personaje colisiona con un borde o un “portal” en medio del escenario actual, debe pasar al siguiente escenario.
Salidas del nivel
Despliegue de objetos
Despliegue de objetos mejor explicado con la demostración
UML
CRC
Nombre de Clase: ACTOR
Responsabilidades: Dibujar objeto Borrar objeto Mover objeto
Superclases: Object
Subclases: Bloque, Item, Avatar
Colaboradores Librería PyGame
CRC
Nombre de Clase: AVATAR
Responsabilidades: Detectar colisiones Definir bordes de personaje Escuchar teclado para control de personaje
Superclases: ACTOR
Subclases: Ninguna
Colaboradores Librería PyGame