Translate

lunes, 28 de abril de 2014

Videojuego Te Agarré x Ahi versión web


Prueba de unity

jueves, 24 de abril de 2014

Como migrar HTML y XHTML a HTML5

Introducción

En este pequeño tutorial les enseñaré como pasar su HTML y XHTML a HTML5, aunque muchas características les enseñaré como agregarlas después. Este tutorial es solamente sobre como modernizar su página antes de que descontinúen el soporte para HTML4 y XHTML.

Doctype


HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
XHTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
HTML 5
<!DOCTYPE html>

Etiqueta de documento

XHTML
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es" >
HTML5
<html lang="es" >

Codificación de caracteres

HTML
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
XHTML
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
HTML5
<meta charset="UTF-8" />

Scripts

HTML
<script src="miScript.js" type="text/javascript"></script>
HTML5
<script src="miScript.js"></script>

Hoja de estilos CSS

HTML
<link href="miHoja.css" rel="stylesheet" type="text/css" />
HTML5
<link href="miHoja.css" rel="stylesheet" />
Uso de comillas
HTML
<meta charset="UTF-8">
HTML5
<meta charset=UTF-8> 
<meta charset=’UTF-8’> 
<meta charset="UTF-8">
pero si un atributo tiene varios valores deberemos de usar comillas dobles
<div class="estilo1 estilo2">

Elementos sin etiqueta de cierre

HTML
<br /> 
<img src="imagen.png" />
HTML5
<br> 
<img src="imagen.png">

Uso de mayúsculas

HTML
<script src="miScript.js"></script>
HTML5
<SCRIPT src="miScript.js"></script> 
<script SRC="MIscript.JS"></SCRIPT> 
<sCriPt SrC="MiScript.js"></scRIpt>

Atributos booleanos

HTML
<input type="checkbox" checked="checked" name="checkedbox">
HTML5
<input type="checkbox" checked name="checkedbox">

Elementos opcionales

En HTML5 podemos omitir algunos elementos muy típicos
<!DOCTYPE HTML> 
<meta charset="UTF-8" /> 
<title>Mi primer documento HTML5 </title> 
<h1>Esto es HTML5</h1> 
<p>Mi contenido</p>

Elementos obsoletos

En HTML5 funcionan, pero ya no se deberían de usar
<frame><frameset> y <noframes> 

viernes, 18 de abril de 2014

Trucos para convertir UnityScript entre C#

Introducción

Muchos podrían preguntarse acerca de la necesidad de convertir su código a otro lenguaje, pero esta necesidad generalmente surge cuando tenemos que interactuar con código de otras personas, ya sea de colaboradores o debido a que agregamos algún plugin codificado en otro lenguaje.
Para este caso me limitaré a poner ejemplos, pero cualquier duda mencionada en los comentarios la trataré de explicar

Herramientas automáticas

Si bien nos pueden ayudar para aprender, no siempre son totalmente exaustivas en su implementación ( Es por esto que más adelante pondré ejemplos de como hacer las cosas que estos convertidores no pueden manejar )

Convertidor UnityScript a C#

http://www.m2h.nl/files/js_to_c.php

Convertidor C# a UnityScript

http://florentpoujol.fr/content/unity3d/csharptounityscript/

Arreglos de cadenas

En caso de tener en la consola algo como error CS0029: Cannot implicitly convert type `string' to `int', nos indicará que nuestros arreglos de cadenas están mal convertidos.

C#

string[] dificultad= new string[]{"Muy facil", "Facil","Regular", "Dificil"};

JavaScript

var dificultad:string[]= ["Muy facil", "Facil","Regular", "Dificil"];

Tipos de datos no declarados 


En UnityScript es posible no declarar los datos, por lo que el convertidor a C# puede arrojar la palabra FIXME_VAR_TYPE, en este cas deberemos inferir el tipo en base a la inicialización como lo hace el compilador.

var musica = true;
FIXME_VAR_TYPE musica= true;


En vase a sus valores, el tipo debe seer bool.

var musica:boolean = true;
bool musica= true;


miércoles, 16 de abril de 2014

Como cambiarle el fondo a un JFrame en Java

Introducción

Una práctica muy común en mucos lenguajes es el cambiar el fondo de la ventana principal, en este caso les enseñaré como hacerlo desde código, y para hacerlo rápido usaré netbeans.

Color de fondo


Para poder cambiar el color de fondo deberemos realizar lo siguiente:
  1. Creamos un nuevo proyecto de netbeans de tipo Aplicación de Java (Java Application)
  2. Creamos un nuevo archivo de formas gráficas de Swing ( Swing GUI Forms ), que sea de preferencia un JFrame, aunque cualquier clase que herede a Component podría usarlo.
  3. Vamos a la pestaña de código y heredamos el método paint, si el componente no es swing sino AWT o cualqueir clase que herede un componente ligero deberemos sobreescribir el método PaintComponent.
  4. dentro de este método cambiamos el color de la configuración gráfica por defecto
    • Mediente g.setColor([color]);
  5. Finalmente pintamos un cuadro de las dimensiones del componete en cuestión
    • Usando g.fillRec([iniciox],[inicioy],[finx],[finy]);

Código

El código terminado debe lucir así:

import java.awt.Color;
import java.awt.Graphics;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Administrador
 */
public class frameconfondo extends javax.swing.JFrame {

    /**
     * Creates new form frameconfondo
     */
    public frameconfondo() {
        initComponents();
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.setColor(Color.red);
        g.fillRect(this.getX(), this.getY(), this.getX()+this.getWidth(), this.getY()+this.getHeight());
    }   
   

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>                       

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(frameconfondo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(frameconfondo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(frameconfondo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(frameconfondo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new frameconfondo().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                    
    // End of variables declaration                  
}


El programa al correrse se debe ver así:

Explicación


Debido a que la interfaz gráfica en Java se realiza a partir de clases de código, se puede redefinir la forma en que se pintan, así que redefinimos el método paint o paint component para cambiar su apariencia. Las rutinas de pintado son dependientes del sistema operativo y no siempre es predecible como actuará el uso de la clase Graphics, podría haber casos en que no se viera tal como en el ejemplo.

martes, 8 de abril de 2014

Como enviar un juego para rating ESRB

Artículo en Proceso...

Introducción 

ESRB es un sistema de clasificación de contenido de videojuegos para Estados Unidos de América.
Este proceso es requerido para la publicación de aplicaciones en grandes compañías, entre ellas demostraremos el caso con Sony.
Aplicaremos este proceso a la aplicación Te Agarré x Ahi de android, pero el proceso también es válido para el caso de que se desee compilar la aplicación con el Publishing Utility for Unity parte del PSM SDK.

Procedimiento

Primero nos dirigimos al sitio de ESRB donde nos saldrá un registro general. Entre las opciones que podemos indicar con un sí o un no están:
  1. Violencia
  2. Sexualidad
  3. Apuestas
  4. Lenguaje Vulgar
  5. Substancias controladas
  6. Humor Crudo
  7. Permite compartir información personal
  8. Muestra la localización geográfica
  9. Permite el intercambio de contenido creativo
  10. Requerimiento de edad mínima en los terminos de servicio
Violencia
El sistema realiza 4 preguntas:
  1. Violencia contra humanos
  2. Violencia contra cualquier cosa no humana
  3. Tipo de contexto ( Realista o fantasioso )
  4. Tipo de gráfico (Estilizados o fotorealistas)







Como enviar un juego para rating PEGI

Introducción 

PEGI es un sistema de clasificación de videojuegos y software de entretenimiento para Europa, específicamente 26 naciones.
Este proceso es requerido para la publicación de aplicaciones en grandes compañías, entre ellas demostraremos el caso con Sony.
Aplicaremos este proceso a la aplicación Te Agarré x Ahi de android, pero el proceso también es válido para el caso de que se desee compilar la aplicación con el Publishing Utility for Unity parte del PSM SDK.

Procedimiento

Primero nos dirigimos al sitio de PEGI express donde nos saldrá un registro general muy rápido. Entre las opciones que podemos indicar con un sí o un no están:
  1. Elementos terroríficos
  2. Lenguaje vulgar
  3. Violencia
  4. Crímen
  5. Apuestas
  6. Discriminación
  7. En línea
  8. Drogas, Alcohol, Tabaco
  9. Sexo
Posteriormente, debemos ahondar en cada una de las opciones que hayamos especificado.

Lenguaje Vulgar

Para este caso nos va a preguntar 2 cosas:
  1. Si contiene maldiciones o lenguaje ofensvo
  2. Si contiene improperios de índole sexual o blasfemias

Seguridad del usuario

También influye en el rating que tan expuesto podría estar el usuario y su información, específicamente con respecto a:
  1. Opciones de compra dentro del juego
  2. Compartisión de información personal
  3. Funcionalidad de interacción social
  4. Capacidad de compartir información
Tras completar estos sencillos pasos veremos un resúmen de los datos ingresados
Tras verificas los datos tendremos la opción de enviarlos a nuestro correo electrónico.

lunes, 7 de abril de 2014

Hacer que funcionen el plugin de admob y de google play games en Unity3D


Introducción


Desde que Google hizo que su nueva librería para unity tuviera incluido el soporte admob, el plugin de admob( de hecho todos los plugins de admob, gratuitos y de paga, pero yo me referiré al gratuito ) comenzó a marcar errores y no se podía compilar. Hoy les traigo una solución, que aunque es un poco burda, les aseguro que funciona a la perfección.

Descripción del error


Al momento de darle en Build nos aparece el mesaje de diálogo



y un error en la consola que dice algo así como:

Error building Player: CommandInvokationFailure: Unable to convert classes into dex format.

See the Console for details.
C:\Program Files (x86)\Java\jdk1.7.0_51\bin\java.exe -Xmx1024M -

Dcom.android.sdkmanager.toolsdir="C:/Program Files (x86)/Android/android-sdk-windows\tools"

-Dfile.encoding=UTF8 -jar "C:/Program Files

(x86)/Unity/Editor/Data/BuildTargetTools/AndroidPlayer\sdktools.jar" -

stderr[

UNEXPECTED TOP-

LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: ...

Explicación del problema


Como algunos desarrolladores de android sabrán, al agregar librerías con clases con el mismo nombre duplicado es lo que genra este error, simplemente, algunas clases ya estaban incluidas en el plugin de admob.

Solución


La solución es simple, borrar los archivos duplicados. Es recomendable conservar una copia de los jar originales, pero como para este caso Java se encarga de hacer un nuevo jar no afectará el proyecto. En este caso borraremos los archivos del google play games.

Archivos a borrar


Para ahorrar tiempo diré que se debe eliminar toda la carpeta
  • google-play-services.jar\com\google\ads\mediation\customevent
y los archivos:

  • com/google/ads/AdRequest$ErrorCode
  • com/google/ads/AdSize 
  • com/google/ads/AdRequest 
  • com/google/ads/mediation/MediationInterstitialListener 
  • com/google/ads/mediation/MediationServerParameters
  •  com/google/ads/mediation/MediationBannerAdapter
  • com/google/ads/mediation/MediationAdRequest
  • com/google/ads/mediation/MediationInterstitialAdapter
  • com/google/ads/mediation/MediationAdapter 
  • com/google/ads/mediation/NetworkExtras
  • com/google/ads/mediation/EmptyNetworkExtras 
  • com/google/ads/mediation/MediationServerParameters$Parameter
  • com/google/ads/mediation/MediationServerParameters$MappingException
  • com/google/ads/mediation/admob/AdMobAdapter 
  • com/google/ads/mediation/admob/AdMobAdapter$a
  • com/google/ads/mediation/admob/AdMobAdapter$b
  • com/google/ads/mediation/MediationBannerListener 
  • com/google/ads/AdRequest$Gender

Pero.. me da flojera hacer todo eso

No te preocupes, con dinero se arregla casi todo :P
Puedes descargar el jar modificado totalmente gratis mediante el siguiente link patrocinado: Enlace de descarga
Una vez puesto tu id de app y presionado el botón enl pestaña de configuración de android para GPGS remplaza el archivo que se debe encontrar en Assets/Plugins/google-play-services_lib/libs

Conversión básica de códigos de C++ a C

El código en C++


Se desea convertir el siguiente código:

#‎include‬<fstream>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int main()
{
ofstream f;
int A[10];
f.open("numero.txt", ios::out);
if(!f)
{
cerr<<"Error de apertura del archivo";
getch();
return 1;
}
else
{
for(int i=0;i<10;i++)
{
cout<<"introduzca los numeros"<<endl;
cin>>A[i];
f<<A[i]<<" "<<endl;;
}
}
f.close();
cout<<"Los datos se han almacenado en numero.txt";
getch();
system("cls");
cout<<"Estos son los datos almacenados"<<endl;
ifstream salida;
salida.open("numero.txt", ios::in);
for(int i=0;i<10;i++)
{
salida>>A[i];
cout<<"\n"<<A[i];
}
getch();
salida.close();
}

Código en C


El código deseado será:

#‎include‬<conio.h>
#include<stdio.h>
#include<file.h>
int main()
{

File f; //ofstream f;
int A[10];


f=fopen("numero.txt", "rw");
if(f==null)
{
printf("Error de apertura del archivo");
read();
return 1;
}
else
{
for(int i=0;i<10;i++)
{
printf("introduzca los numeros");
scanf("%d",A[i]);
fprintf(A[i]);
}
}
fclose(f);
printf("Los datos se han almacenado en numero.txt");
read();
//system("cls"); ??
printf("Estos son los datos almacenados");
//ifstream salida;

File salida;
salida=fopen("numero.txt", "r");
for(int i=0;i<10;i++)
{
fscanf(A[i]);
printf("\n%d",A[i]);
}
read();
fclose(
salida);
}




Procedimiento


En C los cout se remplazan por printf

domingo, 6 de abril de 2014

Como configurar netbeans para ver todos los plugins

Muchas veces sucede que cuando conocemos netbeans nos dicen que hay plugins para muchísimos lenguajes y que podemos acceder a ellos desde el IDE pero al tratar de descaros encontramos que aparentemente no es así; aquí te mostramos como acceder a todos los plugins que se muestran en el portal.

Explicación


Solamente unos pocos plugins son hechos por oracle, como los demás los provee la comunidad, se consideran plugins en estado Beta hasta que el equipo de Oracle les de un ajuste final y decida hacerlos oficiales. Por este motivo hay repositorios para cada versión de netbeans que ha salido.

Procedimiento


  1. Ir a Tools>Plugins
  2. Una vez allí ir a la pestaña Settings (Si es que no se abre en es pestaña)
  3. En la parte de abajo ala derecha dar click en el botón Add
  4.  Luego se debe de agregar un link al repositorio de la versión de netbeans que tengamos de la forma: http://updates.netbeans.org/netbeans/updates/[version]/uc/final/beta/catalog.xml.gz que en mi caso es7.2.1
     Finalmente, tras completada esta tarea se deben de actualizar y cargar todos los plugins no oficiales

El plugin que necesito esta en otra versión


Muy sencillo, podemos accesar a todas las versiones mediante el link:

http://dlc.sun.com.edgesuite.net/netbeans/updates/

Algunas versiones por ejemplo no tienen repositorio beta como en mi caso, así que conviene darle una revisada por si las dudas.

sábado, 5 de abril de 2014

Como hacer que Unity 4.1 y versiones superiores compilen para android

Introducción

Las versiones a partir de unity 4 fueron muy importantes, porque por primera vez incluian el soporte para crear aplicaciones android de manera gratuita. Anteriormente el costo de adquirir la licencia para Unity android era de casi 10 mil pesos mexicanos. Pero desgraciadamente, con la actualización al api nivel 22 empezaron los problemas, primero no se podía compilar con el API 22 y se debía de regresar al 21, y segundo, después de la versión 4.1 el sistema no encontraba la ruta hacia las nuevas instalaciones del android sdk, y por lo tanto no se podían generar los apk.

Solución


Si bien la solución es bastante precaria, funciona en el 100% de los casos, basta con ubicar la carpeta de instalacón del android sdk que generalmente debería de ser C:\android-sdk\ y simplemente deberemos cambiarle el nombre a C:\android-sdk-windows\

Explicación y posibles consecuencias


La explicación es sencilla, antes el sdk de android indicaba en su carpeta para que sistema operativo era, pero como uno no podía ejecutar versiones de diferentes sistemas operativos se eliminó el sufijo que indicaba la plataforma en las versiones más recientes.

Entre las consecuencias podemos hacer notar
  1. Los accesos directos ya no coincidirán, pero basta con corregirles la ruta
  2. Eclipse o el IDE que tuviera configurado apra desarrollar aplicaciones android no podrá encontrar la ruta al SDK, pero basta con cambiarle la ruta por la nueva ruta en las opciones de configuración


Como corregir el error de las plattaform tools no encontradas del android sdk

Introducción


Un error muy frecuente en las máquinas de 64 bits que se produce generalmente por acutalizar es que el sdk manager marque que las plataform tools están instaladas y actualizadas, pero en la parte de hasta abajo aparece un icono que indica que faltan algunas herramientas y sugiere reinstalar, pero reinstalar no es la solución.

El mensaje de error


El mensaje de error generalmente aparece algo similar a:

Error executing aapt. Please check aapt is present at C:\android-sdk-windows\platform-tools\aapt.exe

o en versiones más recientes

Error executing aapt. Please check aapt is present at C:\android-sdk\platform-tools\aapt.exe

Algunas veces al revisar la carpeta del android sdk incluso encontramos que no está la carpeta platform-tools.

Corrección del problema

Suponiendo que no tengamos la última versión de las platform tools le sugiero que la descargaue desde el android sdk manager ( sdkmanager.exe )

A continuación deberemos de seguir los siguientes pasos
  • Ir a la carpeta donde se ubica nuestro sdk de android y ubicar la carpeta build tools, esto se debería de ver como
    • android-sdk-windows\build-tools en versiones no tan recientes del sdk manager
    • android-sdk\build-tools en versiones más recientes
  • A continuación deberá ubicar la carpeta donde se encuentre la última versión que corresponde con los build tools dañados, donde deberán estar absolutamete todas las aplicaciones de herramientas faltantes, por ejemplo \build-tools\17.0.0 para la versión 17, etc
  • Finalmente, copiamos todas las aplicaciones a la carpeta platform-tools y nuestro problema debería de estar solucionado

Explicación

Como ya se mencionó... este es un problema muy común en las versiones de 64 bits,  y consiste en que generalmente se descargan las aplicaciones, se colocan en un lugar temporal, y finalmente se remplazan en la carpeta donde deberán ir, pero por alguna razón no se realiza la copia y se quedan en ese lugar temporal, ya sea la carpeta temp o en este caso, la carpeta build-tools.