Conocimientos

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.


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

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/
2013 - ESAT (Escuela de Arte y Tecnología de Valencia).  Seminario de NLKEngine.
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/
2005 - Universidad JAUME I - 5ª Jornada de I. Gráfica y Videojuegos. Retrospectiva en el sector. De amateur a profesional.