Go Engine es un motor gráfico multiplataforma para poder utilizar como base a la hora de realizar videojuegos. El nombre proviene de la orientación del proyecto (GameObject Engine), basado en entidades y componentes.
En este proyecto, trataremos de implementar un motor de videojuegos multiplataforma (Windows, Linux y Mac) que será utilizado como API por los usuarios para realizar sus propios videojuegos. El sistema dispondrá de una simple interfaz gráfica que permitirá a los usuarios trabajar de una forma más cómoda e intuitiva. Dentro de las especificaciones del motor, podemos mencionar las siguientes:
- Gráficos 3D con OpenGL
- Sonido 3D con OpenAL (u otras)
- Capacidad de red (networking)
- Motor físico con Bullet Engine
- Interfaz gráfica de usuario sencilla (o GUI)
Para ello, se usará un paradigma del tipo orientado a objetos, en este caso, orientado a objetos y componentes (véase éste enlace ).
Además, se desarrollarán una serie de sistemas que trabajarán con dichos objetos (como mostrarlos por pantalla, actualizar su posición, etc).
Se definirán 3 partes en el proyecto bien claras y definidas:
- Engine: Parte principal del motor (llámese kernel, núcleo, etc), conteniendo las definiciones de los objetos de juego, componentes y sistemas.
- Usuario: Apartado en el que irá el código del usuario.
- Editor: Interfaz gráfica para que el usuario pueda trabajar cómodamente.
C++ implementado en Mingw (principalmente), GCC o cualquier compilador libre de C++
- OpenGL32 (Gráficos)
- SOIL (Carga de imágenes)
- Glew32 (Extensión de gráficos)
- OpenAL (Sonido)
- ASSIMP 3.0.1270 (Modelos 3D, etc)
- GLM (Matemática de gráficos 3D)
- SDL2
- SDL_image 2.0
- SDL_mixer 2.0
- SDL_ttf 2.0
-- Sin usar
- SDL_net 2.0
-- Sin usar
- Qt (Interfaz gráfica del editor)
-- Sin usar
- Bullet Engine (Física)
-- Sin usar
La página de documentación del proyecto puede encontrarse en la carpeta "/doc" del repositorio, o bien accediendo a http://wikiti.github.io/go-engine.
El usuario debe programar en el directorio user/, que será usado para compilar el proyecto en conjunto.
En un futuro, se hará que el motor gráfico sea un ejecutable, y los ficheros del usuario sean unas librerías dll (shared libs), que será una solución algo mas limpia, pero más problemática.
Para construir el proyecto, se utilizará la herramienta CMake para el preparado de las dependencias y la compilación (módulos cmake Find<módulo>.cmake).
Simplemente, basta con usar la herramienta cmake dentro del directorio build/, junto con la toolchain deseada, y luego ejecutar la herramienta make.
> cd build/
> cmake .. -G "<Toolchain aquí>"
... Corregir errores, relanzar cmake, etc.
> make
Y se generá el ejecutable goengine, que deberá ser ejecutado:
> cd ..
> ./build/goengine
Básicamente, el ejecutable se debe lanzar desde la carpeta raíz del proyecto, si no, no encontrará los archivos en la carpeta data/. Por comodidad, se puede copiar el ejecutable a la carpeta raíz, o crear una carpeta bin y poner el ejecutable dentro, además de crear un acceso directo para ejecutarlo desde la raíz.
Para saber la lista de toolchains disponibles, basta con usar:
> cmake --help
Por defecto, si no se usa la opción -G, se usará la toolchain predeterminada.
Recomiendo commpilar el proyecto en Windows, con MiNGW Makefiles
Nota: MSYS Makefiles para Windows dará problemas, ya que no enlazará correctamente la librería libSDL2main.a.
Este proyecto ha sido desarrollado, en conjunto, por:
Avatar | Nombre | Nickname | Correo electrónico |
Daniel Herzog Cruz | Wikiti | wikiti.doghound@gmail.com |
- Página VIII CUSL: http://www.concursosoftwarelibre.org/1314/proyectos/20
- Blog Wordpress: http://goengine.wordpress.com/
- Página en ZehnGames: http://www.zehngames.com/comunidad/tema/wip-motor-grafico-multiplataforma-go-engine/