Code Monkey home page Code Monkey logo

iav-movimiento's Introduction

IAV - Base para la Práctica 1

Note

Incluir un aviso como este si se han realizado cambios significativos en la documentación con respecto a la revisión anterior.

Autores

  • Nombre completo (Usuario GitHub)
  • Nombre completo (Usuario GitHub)
  • Nombre completo (Usuario GitHub)

Propuesta

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.)

Punto de partida

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)

Diseño de la solución

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...

diagram

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.

Pruebas y métricas

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)

Ampliaciones

Se han realizado las siguientes ampliaciones

  • Los obstáculos del escenario se colocan...

Producción

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

Licencia

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).

Referencias

Los recursos de terceros utilizados son de uso público.

iav-movimiento's People

Contributors

federicopeinado avatar narratechlabs avatar

Watchers

 avatar

iav-movimiento's Issues

La rotación no parece funcionar bien, cuando un comportamiento de dirección devuelve una cierta aceleración angular en grados/segundo

A la hora de programar Alineamiento (una clase importante en Millington porque es la base de algunas otras), no parece que Agente responda bien cuando le damos aceleración angular (el personaje rota a gran velocidad y sin mucho control)... hay que investigar si hay algún error en el código por la manera en que se le asigna el torque (¿estamos teniendo en cuenta que la aceleración angular no es más que un valor real positivo o negativo que representa los grados por segundo en un sentido o en otro que hay que cambiar la orientación del agente?), o si simplemente es un problema de inercia (aunque tengamos Llegada Angular, funciona igual que Llegada Lineal: lo único que hacemos a lo sumo es decelerar hasta imprimir una aceleración de cero pero NO estamos proponiendo aceleraciones negativas, ojo).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.