Translate

miércoles, 30 de julio de 2014

Poner texto que no se pueda copiar en html5

Introducción


Algunas veces sucede que tenemos algún contenido que no quisieramos que cualquier usuario novato nos lo robe y querems evitar que abran el menú contectual para copiar nuestros recursos. En esta ocasión les comparto un pedazo de código que lo he probado tanto en Firefox como en Chrome.
Si lo que desea es quitar esta protección siga las instrucciones de mi otro blog

Código


-webkit-user-select: none

Ejemplo:


<div style ="-webkit-user-select: none">Este código como podrás ver no se puede editar </div>

Nota: Como blogger usa xhtml si se podrá copiar :(

sábado, 3 de mayo de 2014

Como poner su videojuego de Unity3D en su blog

Introducción


Ya sea que usted tenga su propio blog de desarrollo corporativo o su blog personal, en esta ocasión le compartiré un pequeño truco para hacer que pueda hospedar gratuitamente su juego y no deba preocuparse por el gasto de ancho de banda. El tutorial será ejemplificado en Blogger, pero los conceptos y el código aquí aplicados pueden ser usados en cualquier plataforma.

Procedimiento



  • Primeramente deberemos de crear una cuenta en Dropbox.com. 
  • En el folder Público colocamos nuestros archivos generados por Unity. En mi caso descargué la aplicación para PC, y coloco los archivos en una copia local y el programa se encarga de subirlos. Sugiero para la página web cambiarle el nombre a index.html

  • En el caso de Blogger deberemos crear una nueva entrada  y editar el contenido pero desde la vista HTML, para ello deberemos dar click en la pestaña HTML

En la pestaña HTML deberemos agregar un código que nos permita cargar el objeto, referenciando al link de nuestro archivo en el dropbox.

Código


El código a ingresar será:
<script src="http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject.js" type="text/javascript"></script>
  <script type="text/javascript">
  <!--
  function GetUnity() {
   if (typeof unityObject != "undefined") {
    return unityObject.getObjectById("unityPlayer");
   }
   return null;
  }
  if (typeof unityObject != "undefined") {
   unityObject.embedUnity("unityPlayer", "https://dl.dropboxusercontent.com/u/75082642/VALVWB.unity3d", 800, 600);
  }
  -->
  </script>
<!--object classid="clsid:444785F1-DE89-4295-863A-D46C3A781394" codebase="http://webplayer.unity3d.com/download_webplayer-2.x/UnityWebPlayer.cab#version=2,0,0,0" height="420\" id="UnityObject" width="\">
     <param name="src" value="https://dl.dropboxusercontent.com/u/75082642/VALVWB.unity3d" />
     <embed id="UnityEmbed" src="https://dl.dropboxusercontent.com/u/75082642/VALVWB.unity3d" width="560" height="420\" width=\"590\"" type="application/vnd.unity" pluginspage="http://www.unity3d.com/unity-web-player-2.x" />
     <noembed>
      <div align="center">
       This content requires the Unity Web Player<br /><br />
       <a href="http://www.unity3d.com/unity-web-player-2.x">Install the Unity Web Player today!</a>
      </div>
</noembed>
    </object-->
<br />
<div height="600" id="unityPlayer" width="100%">
<div class="missing">
<a href="http://unity3d.com/webplayer/" title="Unity Web Player. Install now!">
      <img alt="Unity Web Player. Install now!" src="http://webplayer.unity3d.com/installation/getunity.png" height="63" width="193" />
     </a>
    </div>
</div>


El ejemplo presentado podrá verlo en este blog Aquí

Como enviar un juego para play station age rating system desde Unity3D

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 en el Unity dentro de opciones en la pestaña... Damos click en la opción... donde nos saldrá un registro general. Entre las opciones que podemos indicar con un sí o un no están:
  1.  Elementos aterradores
  2. Lenguaje Vulgar
  3. Violencia
  4. Crímen
  5. Apuestas
  6. Discriminación
  7. En Línea
  8. Drogas, Alcohol, Tabaco
  9. Sexo 

Posteriormente para el caso de el lenguaje nos pregunta si la aplicación contiene maldiciones o lenguaje ofensivo y si la aplicación contiene insinuaciones sexuales o comentarios profanos
Para el caso de seleccionar violencia nos preguntará si la aplicación contiene violencia humorística, si la violencia podría ser perturbadora para un niño mnor de 7 años. Pregunta si la aplicación contiene alguna violencia implícita hacia seres humanos donde esta no se muestre. También si contiene violencia relacionada con artes marciales o algún deporte, en caso de decir que sí preguntará si se muestra sangre o es tipo gore. Posteriormente preguntará si la aplicación contiene violencia de apariencisa no-realista, en caso de decir que sí preguntará si la violencia es hacia personajes fantásticos, hacia personajes humanoides, o si es hacia humanos, o animales.
En la segunda parte de la encuesta acerca de violencia preguntará si la violencia presentada es de tipo realista, es decir, que se muestre sangre o desmembramientos, en caso de decir que sí, nos preguntará si se ejerce contra personajes fantasiosos, hacia humanos que no resulten gravemente heridos, si la violencia es excesiva (tortura, desmembramientos, sadismo, homofóbica o implica alguna descripción horripilante de la muerte) o si la violencia es injustificada y/o afecta personajes inocentes, y finalmente pregunta si la violencia es de caracter sexual.
Preguntará además para el caso de las comunicaciones en línea si se contiene un chat de cualquier tipo, si se comparte alguna información personal del usuario, si se usa geo-localización, si se permite el intercambio incensurado de contenido generado por los usuarios, y si existe una edad mínima requerida para el juego establecida por nosotros.
Tras completa esta encuesta obtendremos nuestro Rating y un pequeño resumen de las caracteríticas más trascendentes para esta clasificación.

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.