ENIGMA

From ENIGMA
Jump to navigation Jump to search

ENIGMA, el Aumento Extensible No-Interpretado de Game Maker (Extensible Non-Interpreted Game Maker Augmentation en inglés), es un entorno de desarrollo de videojuegos multiplataforma de código libre derivado del popular software Game Maker. Su intención es proveerte de una herramienta de creación de juegos de calidad, y un puente entre los lenguajes de programación de bajo y alto nivel. Puede ser usado a través de un IDE particular; su proyecto hermano LateralGM, o a través de una interfaz de línea de comandos. Similar a Game Maker, ENIGMA posee tanto un sistema de Arrastra y Suelta de fácil uso, así como su propio lenguaje de programación. Este lenguaje de programación conocido como EDL, es, esencialmente, una mezcla entre C++ y GML de Game Maker. Una parte del objetivo de ENIGMA es poseer compatibilidad con versiones anteriores de Game Maker, sirviendo para tales funciones como un compilador de Game Maker. Sin embargo, EDL ofrece muchas y poderosas características que simplemente no están presentes en el alternativo. Entre éstas se incluyen la habilidad de compilar DLLs y otros scripts de C/C++ directamente dentro del programa, y acceder a estilos, funciones y plantillas de C++. Aunque EDL adopta la baja exigencia del sintaxis de scripting de GML, el código introducido es de hecho re-codificado, y traducido en C++ válido. Esta compilación disminuye el tamaño y aumenta la performance del lenguaje en cantidades impresionantes, mientras que mantiene su simplicidad como por arte de magia.

Porqué utilizar ENIGMA en vez de Game Maker

ENIGMA busca ser tan compatible con Game Maker como sea posible. Puedes abrir y guardar archivos GM en LateralGM, e incluso compilarlos con ENIGMA. Cuando el set de funciones de ENIGMA esté finalizado, poseerá prácticamente todas las capacidades de Game Maker, además de lo siguiente:

  • Mejoras de velocidad desde un lenguaje interpretado a un lenguaje compilado (para un simple ciclo de código, estarías mirando un incremento de 1500%).
  • Portabilidad, poseyendo compatibilidad con varias plataformas y más opciones de sistema.
  • Mayor seguridad en la compilación. Sería increíblemente difícil decompilar de vuelta a C++, e imposible sustraer los comentarios y nombres de variables, de todas maneras.
  • Una reducción del tamaño de los proyectis (entre 40 y 93 por ciento, dependiendo de la platforma).
  • La habilidad de acceder a estilos, funciones y plantillas de C++.
  • La habilidad de compilar DLLs y otros scripts C/C++ directamente en el programa.
  • Mejoras en la depuración
    • Acceso a varias técnicas clásicas de depuración de C/C++ (en consola).
    • El uso de depuradores (gdb).
    • Acceso al código C++ resultante.
    • El Modo de diseño introducido de ENIGMA.
  • No hay YoYo Games por entre medio. Lo cual significa que:
    • Es completamente GRATIS.
    • Es de código abierto.
    • Posee arreglos de errores regulares.
    • Y los desarrolladores te prestan atención
  • Y muchas otras mejoras.

Porqué usar ENIGMA en vez de C++

ENIGMA ofrece beneficios mayores a partir del uso de C:

  • Un motor pre-establecido del que basar tus creaciones, y una interfaz simple que acepta código en C/C++.
  • Funciones de alto nivel, y variables con tipos de datos variantes. Matrices (arrays) sin riesgo de desbordamiento (overflow).
  • Los recursos están incluidos ya en el motor, no se requiere esfuerzo adicional para cargarlos.
  • Sintaxis de código cómoda y un sistema de escritura amigable. Los semicolons no son requeridos, las plantillas no requieren parámetros, y var puede representar arreglos o números.
  • Una mucha mayor facilidad de uso, especialmente para aquellos con poco conocimiento de programación, permitiéndote aprender la lógica de la programación bajo un motor de desarrollo de videojuegos práctico.

Sin embargo, se ha de comprender, obviamente, que los procesos que ENIGMA utiliza para manejar instancias y recursos podrían ser más lentos que un motor propio escrito en C++. Aún así, se ha puesto mucho cuidado en cada sistema, y al final, las diferencias podrían resultar insignificantes. De todas maneras, nuestro objetivo es que la simplicidad del sistema justifique esa ligera falta de velocidad. De todos modos, existirán opciones para futuras optimizaciones. Por ejemplo, el poder eliminar variables que se puedan considerar una pérdida de espacio.

A diferencia de en Game Maker, sí se podrán declarar tipos de variable (aunque no será un requerimiento). Desde short, double, string; e incluso constantes. Lo que sientas necesario para dejar un performance óptimo en tus juegos. De esta manera, podrás usar menos memoria declarando tus variables, pero también tendrás la flexibilidad de dejar variables dinámicas a las que puedas asignar varios tipos de datos, si lo prefieres.

Prueba

¿Quieres pruebas sobre la capacidad de ENIGMA? Prueba algunos de nuestros juegos: http://enigma-dev.org/edc/games.php?action=list

Nótese que la mayoría de estos juegos fueron hechos en Game Maker, ¡pero ENIGMA puede compilar juegos de Game Maker directamente, para que éstos se ejecuten más rápido! La gran parte de estos juegos también podrían correr aún más velozmente tomando ventaja de las características extra de ENIGMA, tales como el control sobre los mecanismos internos.

El equipo de ENIGMA

ENIGMA es desarrollado y mantenido por un creciente número de individuos.

Control de la Misión

Josh Ventura Comenzó el proyecto ENIGMA. Desarrollador primario; escribió la mayor parte de los sistemas principales, incluyendo los analizadores sintácticos.
IsmAvatar Comenzó el proyecto LateralGM. También escribió el código de XLib que permite que ENIGMA corra en Linux, un sistema de colisiones basado en BBox, y un sistema de redes basado en sockets Berkeley. Auspició una gran parte de los fondos para conseguir un servidor dedicado para el proyecto.
Goombert Trabaja en el núcleo del motor de juegos, autor de las extensiones Box2D y Bullet physics, también un diseñador de esta wiki y la ha documentado muchísimo, también el desarrollador primario de la recodificación en C++ de LateralGM. Robert es un desarrollador de las redes, gráficos, físicas y colisión de ENIGMA, y también puede hacer desarrollo de web e interfaz.

WYSIWYG

Josh Ventura Creador de JoshEdit, el componente de marcado de sintaxis utilizado en el scripting dentro de LateralGM.
IsmAvatar Fundador del proyecto LateralGM y desarrollador principal. También mantiene el repositorio actual.
Goombert Desarrollador principal de LateralGM y el fundador de su recodificación en C++.
Daniel Hrabovcak Fundador y desarrollador principal del proyecto NaturalGM, un IDE alternativo multiplataforma con capacidades más avanzadas y un acercamiento más abstracto.

Los Arquitectos

TGMG Escribió un gran número de ports de ENIGMA a diferentes sistemas operativos, incluyendo Android y iPhone. Ayudó a iniciar algunos recursos de juego, entre ellos los backgrounds.
Harijs Grīnbergs Completó el set de funciones de los sprites, la mayoría de las funciones de background, paths, surfaces, fbo y draw_text_*.
Polygone Administrador del foro y uno de los administradores principales de la wiki, envuelto activamente en el desarrollo de ENIGMA. Gusta de depurar/probar el sistema y contribuir hacia la compatibilidad total con GM. Pretende usar a ENIGMA en su plan para la dominación mundial.
Forthevin Ha arreglado numerosos errores de ENIGMA e implementado varios sistemas mayores, incluyendo la precisión de pixeles en las colisiones, y el sistema de partículas.

La Matrix

a2h Creador, diseñador, mánager y creador del sitio. Reclama ser capaz de soñar en código (aunque este hecho es muy puesto en duda).
Gary "MahFreenAmeh" Warman Administrador hermano, desarrollador web, conocedor de música, hacker d-luxe; listo para el trabajo en todo momento. Diseñó varios componentes del sitio que "tan sólo debían funcionar".
Zane "Obelisk" El dios del logo original de ENIGMA (una versión PNG del vector actual).
Mitch Trabaja en la comunidad ENIGMA (aquella con blogs y juegos). También hizo la versión original del sistema de seguimiento de errores.
Lasse "fede-lasse" Klarlund Diseñó un pack de recursos libre de uso para ENIGMA.
Owen "Zekian" Delahoy El sitio comunitario de ENIGMA antes mencionado, también corre por cuenta de Owen, quien amorosamente (?) exprime más bondad de éste.
Noodle Rediseñó la tercera iteración del diseño del sitio de ENIGMA. Este diseño, el cuarto, conserva solamente una cosa de su antecesor: el color del texto.
Sir Xemic/C-Ator9 Diseñó el ambigrama original de ENIGMA.
Juju Autor potencial del archivo de ayuda.

Desesperados

Dazappa Contribuyó un corregidor de sintaxis de e-YAML escrito en Java, para que IsmAvatar pudiera leer los archivos .ey de ENIGMA. También arregló algunos errores de LateralGM.
RetroX Contribuyó algunas cuantas funciones de movimiento y diseñó los paquetes de instalación de Linux.
Datzach Pasó por una fase de agregar funciones faltantes de GM, principalmente algunas relacionadas a Winapi.
r9k Autor del sistema de colisiones basado en polígonos de ENIGMA que está próximo a venir.
Dave Contribuyó el esqueleto del sistema de superficies (surface), así como un sistema de fuentes disfuncional, el cual escribió sin siquiera compilarlo una vez. Bastante impresionante.
Serprex Un programador brillante, que sabe todo lo que se necesita sobre optimización. Su sentido de motivación es deficiente, y ha roto un par de funciones (hecho que Josh siempre recordará), pero ha reescrito algunas funciones fundamentales.
Rusky El pobre sujeto que recibió torrentes de datos contra sí (si entiendes lo que quiero decir). Aunque terminó de editar tales torrentes, todavía hacer un gran resto (probablemente alguien más lo hará). Rusky se esfuerza en que los demás se mantengan en sus lugares.
Sir Xemic/C-Ator9 Graficó algunas funciones matemáticas de GML, incluyendo draw_ellipse, draw_roundrect, y make_color_hsv.
Lasse "fede-lasse" Klarlund Contribuyó algunas cuantas funciones de esto y aquello.
Cheeseboy cheeseboy (noun): Una gorda bola de queso que tortura lentamente a víctimas sin voluntad (josh), con sumisiones, hasta conseguir lo que quiere. Muchas veces ideal para probar los verificadores de sintaxis debido a sus horribles hábitos de codificación.
Todos los demás ¡Gracias por vuestra ayuda!
Languages Language: En.png English • Es.png español • It.png italiano