Programación C/C++
Son los lenguajes a los que hemos dedicado más tiempo.
Tanto en el desarrollo de videojuegos (ver sección videojuegos publicados),
aplicaciones y herramientas. Como en el desarrollo de un motor multiplataforma para
crear videojuegos y aplicaciones con lenguaje script nativo.
Programación Android
En la parte de programación del motor multiplataforma se trabajó tanto en el wrapper JAVA como en la conexión C++ del mismo usando NDK. Integramos una gran cantidad de módulos y dimos soporte a: touch, archivos, audio, gráficos, red, bluetooth, sensores, agenda, notificaciones, alarmas, sistemas de publicidad, etc.
Programación iOS
Del mismo modo se creó la integración en iOS usando ObjectiveC. Toda esta parte hace uso de gráficos (OpenGLES/ES2), audio, red, archivos, system dialogs, acelerómetro, touchscreen, gamecenter, alarmas, etc. en general nos obligó a conocer la gran mayoría de librerías de este sistema operativo. También integramos diferentes sistemas de publicidad tanto intersticial como de banners.
Programación DirectX/OpenGL/OpenGLES
Gracias a la integración del motor en multiples plataformas y sistemas, conocemos muy bien estas librerías para la gestión de gráficos 2D/3D. Tanto en Windows, como en Linux, iOS, Android, Raspberry y otros mini-ordenadores.
Shaders GLSL y HLSL
En la parte de dirección tecnológica llevada a cabo durante
estos años, se han programado shaders para el motor multiplataforma y en especial durante
la etapa de desarrollo de proyecto AKIRE.
También se han llegado a crear shaders 2D para la demo
de algún videojuego.
Programación MAX
SCRIPT
En distintos proyectos de videojuegos se ha usado este
lenguaje script para programar procesos sistemáticos, aburridos de procesar y
que permitían ahorrar tiempo a los grafistas, por supuesto, también con la finalidad de
exportar datos.
Programación MAX SDK
Plugin de exportación de escenarios, mallas, animación y
otro tipo de archivos usados en un motor de desarrollo de videojuegos.
ActionScript 2.0 y
3.0
En la época de moda del Flash también programamos algunos
juegos y entornos más complejos como una ciudad virtual con chat, donde podías
navegar con tu avatar en un mundo isométrico 3D (Netwizzy OURChat).
Aplicaciones
Desarrolladas con el motor multiplataforma y en otros lenguajes como JAVA, C#, Borland C++ o Delphi, usando diferentes
librerías para la gestión de UI, como iOS, Android y C++. Hemos creado aplicaciones para gestión de Peluquerías (Pelux), gestión de
facturación (Factux), TPV, control de almacenes, editores gráficos, editores de
programación visual, editores de música, entornos de programación, editor de
efectos visuales y partículas, etc.
Programación Online /
Redes
Librería script para desarrollo de juegos online. Servidor JAVA que atendía los servicios requeridos para este sistema. Cliente y Servidor de videojuego MMO en el que estuvimos varios años, junto a otras herramientas como edición de mundos tanto a nivel de diseño
como a nivel de jugabilidad y GameMaster. Tenemos conocimientos de programación TCP/UDP a bajo nivel y experiencia en el desarrollo de protocolos de red.
Programación Web/AJAX/CSS/PHP/HTML5
Hemos programado web desde cero usando HTML. Se han creado multitud de web-services en PHP para dar soporte a aplicaciones móviles y páginas web. Hemos creado un transcompilador que convierte código script de nuestro motor a HTML5 y hace que nos permita programar de forma orientada a objetos usando javascript además de hacer compatible el motor bajo este sistema. También hemos desarrollado webs a partir de plantillas online o de terceros y hemos agregado toda la programación y conectividad con bases de datos. Resumiendo, que en este punto también podemos enfocar cualquier tipo de proyecto.
Programación ActiveX/GeckoSDK
Se desarrolló un plugin web que permitía lanzar aplicaciones
desarrolladas con el motor multiplataforma. Usando HTML se configuraba el plugin y se le
indicaba un archivo PAK ubicado en un servidor. El plugin descargaba el
contenido en local y lanzaba el motor mostrándolo como objeto Web.
Porting de juegos
para móviles MIP1.0
Hace ya unos años que realizamos el porting de juegos
realizados para móviles Nokia o de gama superior a móviles con tecnología J2ME
(Java) y MIDP1.0. El porting de estos juegos consistía en utilizar las librerías/SDKs
nativas para sacar el mayor aprovechamiento a los gráficos y música de los
móviles destino. Había que revisar código de tercero, adaptarlo y mantener la
jugabilidad al 100% a la vez que el rendimiento fuese óptimo.
Programación a nivel
ensamblador para Z80/R800/MOS6510
Aunque nos iniciamos en el BASIC y los MSX, desde nuestra
época de estudiantes, con los PC, ya programamos a bajo nivel con MSDOS y para
los procesadores 80x86. Unos años más tarde, con motivo del desarrollo de juegos
en plataformas retro como los MSX, Spectrum o Amstrad surgió la necesidad de
profundizar en el lenguaje ensamblador de algunos procesadores. Al que hemos dedicado más tiempo es al Z80. Hemos creado preprocesadores,
compiladores, linkers propios para interpretar nuestro propio lenguaje de
programación script de alto nivel. También herramientas para tratar código binario
generado por compiladores como el SDCC y poder tener auto-gestión de bancos de
memoria y así programar cartuchos MegaROM MSX.
VideoConsolas
Hemos coordinado dos proyectos para la consola Wii. Uno de
mucho presupuesto con UBISoft detrás, el Imagina Fashion Idol y otro para la
tienda Wii. También hemos llegado a adaptar el motor multiplataforma a Wii, aunque nunca
hemos llegado a publicar ningún videojuego para esta plataforma con ese motor.
Del mismo modo hemos programado con los SDK de PlayStation2 (con el que
presentamos a la distribuidora PROEIN la demo del juego CastleHunters), PlayStationPortable (con
el que llegamos a poder ejecutar juegos del motor multiplataforma) y PlayStation3.
UE4
Durante varios años trabajando en el MMO tanto parte cliente como servidor,
como herramientas para diseñadores de mundo y GameMaster. Inicialmente la parte cliente fue desarrollada en el motor multiplataforma y finalmente en UE4. En UE4 programamos en C++ toda la lógica de los personajes,
así como el montaje de actores para la escena. En Blueprints teníamos la
gestión de las animaciones, la lógica de los efectos visuales, la configuración
de partículas y la configuración de los escenarios. Tuvimos que crear el
sistema de red externo a UE4 para tener diversas conexiones activas a los
diferentes servidores, gestionar todo el protocolo desde C++ y poder habilitar
funcionalidades de los sockets como el NODELAY. Para el interface (sin gráficos
finales) teníamos una mezcla entre C++ y UMG, creando la base desde C++ para
realizar fácilmente capturas y modificación sobre datos y usando la parte del
editor solo para la edición de los controles y la representación en pantalla.
Electrónica
Nuestro afán por seguir aprendiendo y querer converger nuestros conocimientos de programación en el lado del hardware nos ha llevado también a que estemos de pleno
en el desarrollo de dispositivos electrónicos. Hemos creado cartuchos para
sistemas retro, placas para comunicar SBCs (como la RASPBERRY o la ORANGEPI)
con slots para cartuchos, mandos de juegos, interfaces IO externas y también
hemos programado diferentes microcontroladores, con I2C, SPI y GPIO
directamente.
Con nuestros conocimientos en el manejo de herramientas como
KiCad para el diseño de circuitos, creamos las placas a nuestro gusto vamos
inventando todo aquello que nos hace falta para dar solución a nuestras ideas y las de terceros.
Robótica
En paralelo con nuestros conocimientos en
programación y electrónica, hemos y estamos avanzando en el control de robots y
drones comerciales para interactuar con ellos y aprender las tecnologías
necesarias para su manejo, como Bluetooth, Infrarrojos y Radiofrecuencia.
SCADA
Hemos creado y estamos trabajando en un sistema para
controlar diferentes tipos de PLCs que se ubican en plantas de generación de
energía solar remotas (una instalada en un hotel rural y otra en un pueblo del
interior de Castellón). Estos PLCs contemplan inversores, generadores y
analizadores de diferentes marcas. La idea es disponer de un DataLogging y
control centralizado que permita un uso óptimo de la gestión energética de la planta. En este caso todo con programación PHP, Python bajo
sistema LINUX.
Diseño
Como programadores de videojuegos y al haber coordinado equipos
de grafismo y diseño tanto a nivel de jugabilidad como de concept art, nos ha
sido necesario aprender y manejar distintas herramientas como el 3DStudioMAX,
AdobePS, InDesign, Flash, etc. También herramientas de audio, video y por
supuesto herramientas para elaboración de documentación, presentación de
proyectos, etc. Con todo el boom de la impresión 3D y por la necesidad de
convertir en realidad ciertos diseños e ideas de proyectos, también hemos
profundizado en el manejo de herramientas de Diseño 3D y CAD.
Programación en Emulación
Ya en la universidad estuvimos trabajando en un emulador de Super Nintendo que por aquella época se consolidó como el más rápido del mundo. Por aquel entonces, estuvimos ayudando en la parte de emulación del chip SPC encargado de gestionar el audio. Más tarde, debido a nuestra pasión por los sistemas MSX, aprendimos y emulamos todas las generaciones. Recientemente, como esto de la emulación nos gustó, hemos introducido a nuestro sistema de emulación otros sistemas como el ZX16, ZX48, Z128, AMSTRAD CPC464 y COMMODORE 64.
Hemos participado en algunos concursos de programación de
videojuegos retro:
2014, Primer premio en el concurso internacional de
videojuegos para MSX (MSXDev) con el juego "Pretty Kingdom"
2008, Concursando en MSXDev con MR. Mole
2007, Mejor banda sonora en el concurso de remakes del CED con el juego “Cobra’s Arc”.
2006, Primer premio en el concurso internacional de videojuegos para MSX (MSXDev) con el juego "The Monster Hunter"
2006, Nominado a la mejor tecnología gráfica con el juego "Dracula Twins" en los premios Desarrollador_ES (Campus Party)
2008, Concursando en MSXDev con MR. Mole
2007, Mejor banda sonora en el concurso de remakes del CED con el juego “Cobra’s Arc”.
2006, Primer premio en el concurso internacional de videojuegos para MSX (MSXDev) con el juego "The Monster Hunter"
2006, Nominado a la mejor tecnología gráfica con el juego "Dracula Twins" en los premios Desarrollador_ES (Campus Party)
Coloquios, Charlas y Cursos
2014 - VINALAB. Taller "Introducción a
NLKEngine"
2013 - ESPAITEC-UJI. Charla/Taller "Introducción
a NLKEngine" http://espaitec.uji.es/51188.610009_es/El-desarrollo-de-videojuegos-llega-a-espaitec/
2013 - GAMESIS. Ponencia sobre el NLKEngine en
Vinarós.
http://gamesis.vinalab.eu/
http://gamesis.vinalab.eu/
2013 - ESAT (Escuela de Arte y Tecnología de Valencia). Seminario de NLKEngine.
http://www.esat.es/detalle_noticia_esat.php?id=55
http://www.esat.es/detalle_noticia_esat.php?id=55
2007 - Universidad JAUME I - 7ª Jornada de I. Gráfica y Videojuegos. Mesa redonda con el título “¿Qué puede ofrecer la universidad a las
empresas de videojuegos?“.
http://www.noticiasjuegos.com/2007/07/03/resumen-7%C2%AA-jornada-de-i-grafica-y-videojuegos/
http://www.noticiasjuegos.com/2007/07/03/resumen-7%C2%AA-jornada-de-i-grafica-y-videojuegos/
2005 - Universidad JAUME I - 5ª Jornada de I. Gráfica y Videojuegos. Retrospectiva en el sector. De
amateur a profesional.