last changes for the 3rd iteration

master
Chris Cromer 7 months ago
parent 7662877695
commit 4002a3d5c4
Signed by: cromer
GPG Key ID: FA91071797BEEEC2
  1. BIN
      Informe.pdf
  2. 1
      latexmkrc
  3. 15
      sections/marco_teorico/desarrollo_videojuegos/game_ia.tex
  4. 6
      sections/marco_teorico/desarrollo_videojuegos/llvm.tex
  5. 16
      sections/marco_teorico/desarrollo_videojuegos/motor.tex

BIN
Informe.pdf (Stored with Git LFS)

Binary file not shown.

@ -0,0 +1 @@
$ENV{'TZ'}='America/Santiago';

@ -1,5 +1,5 @@
\subsubsection{Game I.A.}
Para la toma de decisiones de la Inteligencia Artificial, se va a utilizar un lenguaje propio inspirado en Prolog. El Prolog es un lenguaje declarativo y lógico. \cite{Logic-Programming}
El lenguaje responsable que se encargará de la toma de decisiones por parte de la Inteligencia Artificial será de carácter propio e inspirado en Prolog, un lenguaje declarativo y lógico. \cite{Logic-Programming}
\begin{figure}[H]
\centering
@ -8,11 +8,14 @@ Para la toma de decisiones de la Inteligencia Artificial, se va a utilizar un le
\label{fig:prolog_logic_functional}
\end{figure}
Cuando se trata de programación funcional, la idea principal es ver cómo se puede resolver un problema. Eso se hace de forma de paso por paso para resolver el problema. En programación lógico se usa un base de conocimiento para hacer preguntas y recibir respuestas que se utilizaran para resolver el problema. \cite{Prolog-Tutorial}
Al hablar de programación funcional, la idea principal es que todos los elementos sean funciones y estos sean capaces de poder ejecutarse de manera secuencial, por lo cual se utiliza la lógica paso por paso para resolver el problema.
El lenguaje tipo Prolog debe tener 3 elementos importantes para funcionar.
Por otro lado, la programación lógica utiliza una base de conocimiento para hacer preguntas y recibir respuestas que se utilizarán para resolver el problema. \cite{Prolog-Tutorial}
El lenguaje tipo Prolog debe tener 3 elementos importantes para funcionar:
\begin{enumerate}
\item \textbf{Hechos:} Son datos verdaderos. Por ejemplo ''el español es una idioma''.
\item \textbf{Reglas:} Son cláusulas condicionales que conectan los hechos. Por ejemplo ''si vives en Chile hablas el español''.
\item \textbf{Preguntas:} Son necesarias para tener una respuesta de la base de conocimiento. Por ejemplo ''¿El español es una idioma?''.
\item \textbf{Hechos:} Son datos verdaderos, como por ejemplo ''el español es una idioma''.
\item \textbf{Reglas:} Son cláusulas condicionales que conectan los hechos. Un ejemplo es: ''si vives en Chile hablas el español''.
\item \textbf{Preguntas:} Son necesarias para tener una respuesta por parte de la base de conocimiento. Un ejemplo sería ''¿El español es una idioma?''.
\end{enumerate}

@ -1,5 +1,5 @@
\subsubsubsection{Lenguaje de Programación Compilado}
El proyecto LLVM es un conjunto de tecnologías de compilador y toolchain, lo cual permite crear un lenguaje propio de programación. \cite{LLVM-Cookbook}
El proyecto LLVM es un conjunto de tecnologías de compilador y toolchain, el cual permite crear un lenguaje propio de programación. \cite{LLVM-Cookbook}
\begin{figure}[H]
\centering
@ -8,7 +8,7 @@ El proyecto LLVM es un conjunto de tecnologías de compilador y toolchain, lo cu
\label{fig:llvm}
\end{figure}
El LLVM consiste de varios sub-proyectos, pero el que será utilizado principalmente es LLVM Core.
LLVM consiste de varios sub-proyectos, pero el que será utilizado principalmente es ''LLVM Core''.
Este sub-proyecto contiene un optimizador y generador de código, siendo este último llamado LLVM Intermediate Representation(LLVM IR). La funcionalidad es similar a una Virtual Machine de bytecode que es portátil y se puede correr en cualquier sistema que posee el LLVM.
Otro aspecto importante de LLVM es que se puede utilizar el LLVM IR que fue generado para después compilarlo a lenguaje máquina para la arquitectura computacional que se desee. Luego, el código objeto generado se puede utilizar con un linker para crear librerías y binarios, lo que tendrá importancia al querer integrar el código que compila nuestra compilador en el motor Godot.
Otro aspecto importante de LLVM es que se puede utilizar el LLVM IR, que fue generado anteriormente y así compilarlo a lenguaje máquina para la arquitectura computacional que se desee. Luego, el código objeto generado se puede utilizar con un linker para crear librerías y binarios, lo que tendrá importancia al querer integrar el código que compila nuestra compilador en el motor Godot.

@ -1,6 +1,6 @@
\subsubsection{Motor de Videojuego}
El motor de videojuego tiene una alta importancia en el desarrollo de videojuegos, ya que es responsable de proveer facilidad en utilizar gráficos, sonidos, física, redes y varios otros aspectos que ayudan en el desarrollo de un videojuego.
El motor que se utilizará se llama Godot. \cite{Desarrollo-de-Videojuegos,Game-Mechanics,Godot-Projects}
\subsubsection{Motor de Videojuegos}
El motor de videojuegos es, en pocas palabras, un conjunto de rutinas de programación que tiene como objetivo proveer facilidad en la utilización de elementos gráficos, sonidos, físicas, redes y varios otros aspectos que ayudan en el desarrollo de un videojuego.
El motor que se utilizará en este proyecto tiene por nombre ''Godot''. \cite{Desarrollo-de-Videojuegos,Game-Mechanics,Godot-Projects}
\begin{figure}[H]
\centering
@ -9,11 +9,11 @@ El motor que se utilizará se llama Godot. \cite{Desarrollo-de-Videojuegos,Game-
\label{fig:godot_engine}
\end{figure}
El motor Godot tiene gran valor en el desarrollo del proyecto, principalmente por su capacidad para implementar arte de píxel, en comparación con motores similares como Unity o Unreal porque en Godot las distancias entre los elementos es medido en píxeles mientras que los otros motores utilizan metros, lo que facilita en gran medida la eficacia al trabajar en juegos 2D, que usualmente para este género de videojuegos se usan píxeles y no metros.
El motor Godot tiene un gran valor en el desarrollo del proyecto, principalmente por su capacidad para implementar arte de píxel, en comparación con motores similares como Unity o Unreal, porque en Godot las distancias entre los elementos es medido en píxeles mientras que otros motores utilizan metros, lo que facilita en gran medida la eficacia al trabajar en juegos 2D, que usualmente para este género de videojuegos se usan píxeles y no metros.
Otro factor importante es que Godot posee un elemento llamado GDNative. GDNative es una API que permite usar lenguajes de programación como C, C++ o Rust que son lenguajes que compilan el código a lenguaje máquina. \cite{Godot-24-Hours}
Otro factor importante es que Godot posee un elemento llamado ''GDNative''. GDNative es una API que permite usar lenguajes de programación como C, C++ o Rust, siendo estos capaces de compilar código a lenguaje máquina. Lo anterior posee especial importancia para el proyecto, puesto que permite implementar otro lenguaje de programación que hará interacción con GDNative. \cite{Godot-24-Hours}
Tiene especial importancia para el proyecto ya que permite implementar otro lenguaje de programación que hará interacción con GDNative. Por otro lado también permite que la Inteligencia Artificial tome decisiones con mayor rapidez dado que el código objeto de máquina se ejecuta más velozmente que un lenguaje interpretado o que se compila a bytecode como se puede notar en los siguientes gráficos que compara GDScript(lenguaje interpretado similar a Python), C\# y C++.
También la API permite que la Inteligencia Artificial tome decisiones con mayor rapidez dado que el código objeto de máquina se ejecuta con mayor velocidad que un lenguaje interpretado o que se compila a bytecode, como se puede notar en los siguientes gráficos que comparan GDScript(lenguaje interpretado similar a Python), C\# y C++.
\begin{figure}[H]
\centering
@ -22,7 +22,7 @@ Tiene especial importancia para el proyecto ya que permite implementar otro leng
\label{fig:godot_gdnative_comparison}
\end{figure}
En el caso de generación de datos voxel, hay un aumento de 8,846.43\% en su rendimiento comparando GDNative con GDScript y un aumento de 651.07\% comparando GDNative con C\#.
En el caso de generación de datos voxel, existe un aumento de 8,846.43\% en su rendimiento comparando GDNative con GDScript y un aumento de 651.07\% comparando GDNative con C\#.
\begin{figure}[H]
\centering
@ -31,4 +31,4 @@ En el caso de generación de datos voxel, hay un aumento de 8,846.43\% en su ren
\label{fig:godot_gdnative_comparison2}
\end{figure}
En la prueba de generación de mallas el GDNative tiene un aumento de 651.07\% en su rendimiento comparando con C\#.
En la prueba de generación de mallas, GDNative tiene un aumento de 651.07\% en su rendimiento comparado con C\#.
Loading…
Cancel
Save