Unity vs Gamemaker, ¿cuál escoger?

Hoy vamos a hablar de las diferencias entre dos plataformas que son bastante conocidas en el mercado: Gamemaker y Unity, así como los puntos claves que al final mueven la balanza hacia la elección de uno u otro.

Gamemaker vs Unity

Gamemaker

Podéis probarlo descargándolo desde la página oficial: https://www.yoyogames.com/gamemaker

  • Es muy simple hacer un juego sencillo en la plataforma.
  • Es excelente para juegos en 2D, pero para juegos en 3D es muchísimo más limitado y ya hay que hacer trucos.
  • Tiene un montón de funciones predefinidas que te solucionan las cosas. En caso contrario te permite introducir código para hacer funciones más personalizadas.

Unity

Una de las plataformas de creación de juegos mejores, aquí tenéis el link: https://unity3d.com/es

  • Es más complicado comenzar, pero para juegos grandes es mucho mejor que gamemaker.
  • Es excelente para programación en 3D, pero para juegos en 2D el paquete resultante puede ser demasiado pesado.
  • Te da mucha más libertad puesto que gran parte de la programación se acabará haciendo en C#.
  • Tiene una comunidad mucho más grande que gamemaker.

En cuanto a precio… pues los dos tienen una versión gratuita, pero si quieres exportarlo a iOS, android,… ya toca pagar bastante en los dos casos (más en el caso de Unity).

Actualización (2017/01/16): Parece que actualmente exportar un proyecto Unity a dispositivo móvil ya es gratuito, en caso de que las ganancias sean menores a 100000 euros por ejercicio fiscal (link). @Pablo ¡Gracias!

Conclusión final

En definitiva, en el caso de que quieras ponerte con una de las plataformas yo te recomendaría que pensaras exactamente cómo de grande va a ser el juego, el tipo de este y cuantos programadores estarán trabajando en él. Cuanto más pequeño sea el proyecto (y en 2D), más posibilidades hay de que Gamemaker sea la opción.

En tu caso, ¿cuál has escogido y por qué?

Cómo mostrar los registros realizados hace menos de 24 horas en mysql

El problema con el que me enfrentaba era la necesidad de obtener todos los registros que se habían generado hacía más de 24 horas que cumplían unos parámetros.

Para ello utilizaremos principalmente 3 métodos que permite mysql:

  • NOW() Nos da el datetime de ese mismo momento
  • TIMEDIFF(a,b) Nos da la diferencia de datetimes entre dos variables.
  • HOUR Transforma en horas un datetime

El resultado obtenido es la siguiente sql:

SELECT * FROM user u WHERE HOUR(TIMEDIFF(NOW(), u.last_activity)) <=24

Con ello en mi caso obtenemos a todos los usuarios que han tenido actividad en las últimas 24 horas.

Pasos a realizar en toda web

En este post procederé a indicar pasos que es necesario realizar en todas las webs para que sean óptimas.

1 – Indicar las etiquetas title y meta de la página.

Las etiquetas a meter serían:

  • Title: Aquí se indicará el título de la página en cuestión.
  • Meta “description” :
  • Meta “keywords”: Este hoy en día se comenta que no es necesario.
  • Meta “robots”: En el se indica si se quiere que los robots continúen indexando páginas, o no.
  • Meta “content-type”:
  • Meta “content-language”: Se indica el idioma que se utiliza en la página IMPORTANTE: No se recomienda su uso (ver w3).

2 – Inclusión en directorios como:

  • Google: http://www.google.com/intl/es/submit_content.html
  • Bing: http://www.bing.com/toolbox/submit-site-url
  • Dmoz: http://www.dmoz.org/World/Espa%C3%B1ol/

3 – Compresión Gzip. Esto se puede hacer mediante la inclusión del htaccess si el servidor lo permite. Esta opción es totalmente recomendable puesto que reducirá el peso de lo que se le mande al usuario.

Puedes comprobar si lo está haciendo o no en esta web: http://www.whatsmyip.org/http-compression-test/

4 – Ir a la página del w3c para comprobar que no hay errores críticos y que se intentan solucionar las advertencias.

5 – Acceder mediante el navegador Google Chrome a la página, abrir la consola, pulsar la pestaña de Audits y realizar una auditoría del sitio, intentando eliminar todos los puntos que indique (evidentemente los rojos serán mucho más críticos).

6 – En caso de que haya vídeos y audios…. ¿están comprimidos lo máximo posible sin que la calidad se vea comprometida?
 

Phonegap – Ventajas e inconvenientes

Después de estar trabajando mas de un año con phonegap me he decidido a escribir acerca de las cosas favorables y desfavorables que le veo.

Problemas del phonegap:

  • No está orientado a las aplicaciones con múltiples idiomas. En mi caso tuve que poner todas las traducciones en un fichero js y dependiendo del idioma del navegador de usuario incluir una u otra traducción en cada punto.
  • Va un poco lento. Como sabéis phonegap realmente lo que hace es abrir el navegador (aunque no veas que sea el navegador) e imbuir las páginas html. El problema aquí es que va a ir tan lento como una vaya tu navegador. Y además de eso, a veces se ve que las transiciones se hacen pesadas.
  • Hasta ahora he estado trabajando con la versión 2.9, pero ya han sacado la 3, y hay muchos plugins que ya no son válidos. Por poner un ejemplo tenía un plugin que me permitía enviar notificaciones a través del Google Cloud Messaging (GCM), pero en el momento en que actualice la versión de phonegap ya no valdrá (se llamaba de una forma que está deprecated en nuevas actualizaciones).

 

Aspectos favorables:

  • El mismo código vale para crear una aplicación android e iOS (exceptuando características especiales como Notificaciones,…).
  • No es necesario aprender java ni objetive-c, simplemente saber html y js.
  • Es lo mejor para aplicaciones que sean ligeras/pequeñas.
  • Se pueden hacer muchísimas cosas (ver el post de “Phonegap, ejemplos de código y posibilidades“)

Yii – Esquema de trabajo para crear una aplicación

Los pasos recomendables a seguir son los siguientes:

  1. Crear la estructura básica de directorios. Para ello se usa la herramienta yiic.
  2. Configurar la aplicación modificando el fichero de configuración de la aplicación (www/protected/config/main.php y www/protected/config/console.php). Puede que sea necesario escribir algunos componentes de la aplicación (como por ejemplo el componente de usuario).
  3. Crear un modelo por cada uno de los tipos de datos que se van a manejar. Utilizar la herramienta Gii para generar automáticamente esas clases para cada una de las tablas que interesen.
  4. Crear un controlador para cada uno de los tipos de peticiones de usuario.Como clasificar las peticiones de usuario depende en el requerimiento actual. En general, si un modelo necesita ser accedido por usuarios, tiene que tener su correspondiente controlador.
  5. Implementar actiones (en los controladores) y sus correspondientes vistas.
  6. Configurar los filtros de acción necesarios en las clases de los controladores.
  7. Crear temas si se requiere esa funcionalidad.
  8. Crear mensajes de traducción di la internacionalización es requerida.
  9. Estudiar los datos y las vistas que pueden ser cacheados y aplicar las técnicas de cacheado apropiadas.
  10. Habilitar la extensión APC, deshabilitar el modo debug, optimizar la base de datos, minimizar los ficheros js y css.
  11. ¡¡Paso a producción!!

Yii: Flujo de tareas

Últimamente hemos estado hablando bastante del framework yii, pero nunca he explicado cual es el flujo de tareas de este, aquí os lo dejaré visualmente y os lo explico:

Flujo de tareas que hay en el yii

  1. Un usuario realiza una llamada a una url que puede ser http://www.yises.com/index.php?r=user/show&id=5 y el servidor web realiza la ejecución del script de inicio index.php.
  2. El script de entrada creará una instancia de la clase Application y la ejecuta.
  3. Application obtendrá la información de las petición del usuario (en este caso r=user/show&id=5).
  4. La aplicación mediante la ayuda del urlManager indicará qué controlador tiene que ejecutar(UserController), y más concretamente qué función de dicho controlador (showAction). .
  5. La aplicación creará una instancia del controlador pedido (como hemos dicho, en este caso UserController) y se crearán los filtros asociados a ese controlador (¿es necesario ser administrador? ¿es necesario haber cumplido una serie de pautas? ).
  6. La acción leerá el modelo User cuyo ID  de la base de datos es en este caso 5.
  7. La acción determina la vista, en este caso show. Le pasará los datos del modelo que se han obtenido.
  8. La vista tomará y desplegará los atributos del modelo User.
  9. La vista ejecuta los widgets necesarios.
  10. El resultado de todo ello será incluido dentro de un diseño (layout) que será utilizado por varias páginas (en el por ejemplo se le podrá meter la cabecera, el footer,…).
  11. La acción completa la vista realizada y se la manda al usuario, que podrá visualizarla ya en su navegador.

Espero que os haya resultado útil, al menos para mi, el pararme y ver cuál era exactamente el flujo me ha aclarado varias cosas.

(Imagen tomada de esta página)

Descarga de Página de registro con captcha incorporado en PHP

Hoy os traigo una descarga muy interesante, y es que muchas veces he necesitado una página de registro con captcha incorporado, y en todas las ocasiones me ha tocado hacerla de 0.

Básicamente será un registro de 4 campos que tendrán que ser rellenos, y un captcha que podrá ser refrescado y que el usuario tendrá que rellenar. Sólo se realizará el registro completo en el caso de estar rellenos todos los campos (son campos requeridos), el login sea único y el texto del captcha es el correcto.

Para instalarlo necesitas seguir los siguiente pasos:
1 – Crear tu tabla:
CREATE TABLE IF NOT EXISTS `users` (
`id_user` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`login` varchar(100) NOT NULL,
`password` varchar(100) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id_user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

2 – Descomprimir el siguiente zip donde se quieras.

3 – Modificar en el archivo index.php la línea conectar(‘HOST’, ‘USUARIOBBDD’, ‘PASSWORDBBDD’, ‘BBDD’); y modificarlo por los valores en cuestión.

4 – Comprobar que todo funciona!! (que debería!)

Aquí os dejo también unas capturas de pantalla y de nuevo, el link al archivo descargable.

RegisterFormWithCaptcha

RegisterFormWithCaptchaOk

He utilizado para este post dos elementos:

Como obligar a que el navegador cargue css/js/imágenes sin utilizar la caché

Me he encontrado hoy con el siguiente problema:

Tenía que modificar unos css para un cliente y resulta que una vez modificados y subidos contacta conmigo y me comenta que el no lo ve bien. Le explico que tiene que eliminar la caché y cómo debe hacerlo, cosa que ejecuta y le funciona (para gran alivio mío). Pero entonces me hace la siguiente pregunta:

¿Y qué sucede si un cliente ve esto de forma errónea porque tiene los archivos antiguos en caché? ¿cómo se podría solucionar para no obligarle a que refresque la caché?

Ahí me dejó helado….. y tras pensar un rato conseguimos elaborar la solución siguiente:

<link rel=”stylesheet” type=”text/css” href=”/css/estilos.css?id=001” />

Consiste en añadir un parámetro al link. NO TENDRÁ NINGÚN EFECTO sobre los estilos, pero hará que el navegador decida volver a cargar ese css. Recordar que tendréis que modificarlo para que vuelva a descargar el browser el css con id=002, con id=003,…..

Vídeos de introducción a la programación para Windows Phone 7

Si estas planteandote empezar a desarrollar aplicaciones para Windows Phone 7 es posible que te interese consultar los videos que adjuntamos. En ellos se presentan las herramientas de desarrollo para crear aplicaciones en Silverlight o XNA para WP7, las cuales, como podrás comprobar, tienen herramientas que están optimizadas para que el desarrollo sea fácil e intuitivo. Aparte de estos vídeos encontraremos toda la información, tutoriales y soporte necesario en Microsoft Development Network

Introducción a Silverlight

Introducción a XNA

Vía WP7 CONNECT