Note
Incluir un aviso como este si se han realizado cambios significativos en la documentación con respecto a la revisión anterior.
- Nombre completo (Usuario GitHub)
- Nombre completo (Usuario GitHub)
- Nombre completo (Usuario GitHub)
Este proyecto es una práctica de la asignatura de Inteligencia Artificial para Videojuegos del Grado en Desarrollo de Videojuegos de la UCM, cuyo enunciado original es este: Plaga de Ratas.
Esta práctica consiste en... (Explicación breve de que el avatar del jugador será el flautista, que hay ratas con un cierto comportamiento, etc.)
Se parte de un proyecto base de Unity 2022.3.5f1 proporcionado por el profesor y disponible en este repositorio: IAV-Movimiento
Consiste en... (Explicación detallada de las clases y los métodos ya implementados)
Lo que vamos a realizar para resolver esta práctica es...
El pseudocódigo del algoritmo de llegada utilizado es:
class Arrive:
character: Kinematic
target: Kinematic
maxAcceleration: float
maxSpeed: float
# The radius for arriving at the target.
targetRadius: float
# The radius for beginning to slow down.
slowRadius: float
# The time over which to achieve target speed.
timeToTarget: float = 0.1
function getSteering() -> SteeringOutput:
result = new SteeringOutput()
# Get the direction to the target.
direction = target.position - character.position
distance = direction.length()
# Check if we are there, return no steering.
if distance < targetRadius:
return null
# If we are outside the slowRadius, then move at max speed.
if distance > slowRadius:
targetSpeed = maxSpeed
# Otherwise calculate a scaled speed.
else:
targetSpeed = maxSpeed * distance / slowRadius
# The target velocity combines speed and direction.
targetVelocity = direction
targetVelocity.normalize()
targetVelocity *= targetSpeed
# Acceleration tries to get to the target velocity.
result.linear = targetVelocity - character.velocity
result.linear /= timeToTarget
# Check if the acceleration is too fast.
if result.linear.length() > maxAcceleration:
result.linear.normalize()
result.linear *= maxAcceleration
result.angular = 0
return result
El pseudocódigo del algoritmo de movimiento de huida es...
También es posible mostrar diagramas...
Mejor que insertando imágenes, se puede usar Mermaid:
stateDiagram
[*] --> Inicio
Inicio --> Juego : Pulsar 'Jugar'
Juego --> Muerte : Tocado por el Enemigo
Juego --> Victoria : Coger el Ladrillo Dorado
Muerte --> Inicio
Victoria --> Inicio
Para dibujar espacios de coordenadas 2D con puntos y vectores, se podría incrustar una imagen de Google Draw, o intentar incrustarlo en el repositorio también con Mermaid.
Plan de pruebas dividido por características (C1, C2 y C3 serían las 3 pruebas que se han realizado de la característica C)
Se han realizado las siguientes ampliaciones
- Los obstáculos del escenario se colocan...
Las tareas se han realizado y el esfuerzo ha sido repartido entre los autores. Esto se podrá documentar en una tabla como esta o usando la pestaña de Proyectos de GitHub.
Estado | Tarea | Fecha |
---|---|---|
✔ | Diseño: Primer borrador | 2-12-2022 |
✔ | Característica A: Nosequé | 11-12-2022 |
✔ | Característica B: Nosecuentos | 12-12-2022 |
... | ||
OPCIONAL | ||
✔ | Generador pseudoaleatorio | 3-12-2022 |
❌ | Menú | 3-12-2022 |
❌ | HUD | 12-12-2022 |
A, B y C, autores de la documentación, código y recursos de este trabajo, concedemos permiso permanente a los profesores de la Facultad de Informática de la Universidad Complutense de Madrid para utilizar nuestro material, con sus comentarios y evaluaciones, con fines educativos o de investigación; ya sea para obtener datos agregados de forma anónima como para utilizarlo total o parcialmente reconociendo expresamente nuestra autoría.
Una vez superada con éxito la asignatura se prevee publicar todo en abierto (la documentación con licencia Creative Commons Attribution 4.0 International (CC BY 4.0) y el código con licencia GNU Lesser General Public License 3.0).
Los recursos de terceros utilizados son de uso público.
- AI for Games, Ian Millington.
- Kaykit Medieval Builder Pack
- Kaykit Dungeon
- Kaykit Animations