jueves, 22 de noviembre de 2012

Proyecto Final

El proyecto final Assasin FIME esta en el blog de mi compañero René.

jueves, 15 de noviembre de 2012

Imitación computacional de texturas naturales

Se supone que debería de generar aluminio, algo así:


Pero ni con el código de tela.py lo pude generar.

:/

sábado, 10 de noviembre de 2012

Encender LED con Python y Arduino

Herramientas:
  • Arduino (usaremos a Leonardo)
  • Led (en este ejemplo son 4)
  • Motor (extra para el ejemplo)
  • Proto y cables (lo usual xD)

Software:
  • Python 2.7
  • Tkinter
  • python-serial
  • sketch (programar el arduino)
Se programa una interfaz con Tkinter en Python: http://pastebin.com/zjhNUy4e






Y para encender los leds sera con puros if: http://pastebin.com/bUxfj84j




Como debe quedar armado el proto:





Pines utilizados:
  • 4 Led
  • 5 Led
  • 6 Led
  • 7 Led
  • 12 Motor
  • GND (tierra)
Saludos.

jueves, 8 de noviembre de 2012

Respuestas visuales, auditivos y táctiles

Mi tarea para esta semana consiste en que el programa de puddi que hice hace unas semanas, al momento de tocar una pared encenderá un led y el motor.

Materiales.
  • Arduino Leonardo
  • 4 leds
  • Motor vibrador
  • Protoboard

Codigo del puddi: http://pastebin.com/kai7W323

Codigo del arduino: http://pastebin.com/gfZRLfNP


Fotos del proto armado.




Video: http://youtu.be/HXNgoVcUHXQ

jueves, 1 de noviembre de 2012

Cuestiones de usabilidad en sistemas inteligentes

Evaluación de Sistemas Adaptativos. Stephan Weibelzahl

Los sistemas adaptativos son sistemas que pueden alterar aspectos de su estructura.

El objetivo de esta tesis es explorar una metodología para la evaluación empírica
de sistemas adaptativos. 

La metodología consiste en al menos dos componentes:

Primero un montón de criterios que son probados para ser confiables y validos para medir el éxito de la adaptabilidad. probablemente, solo una combinación de varios criterios sera adecuadamente significativo. segundo una especificación de diseños experimentales y procedimientos son necesarios para aplicar ese criterio.

Ambos, criterios y diseños experimentales, deben ser independientes del dominio
y el mecanismo de inferencia, ya que esto permite una comparación de diferentes enfoques. Desde luego, no pasar por alto el hecho de que no son de dominio diferencias específicas entre los sistemas.

Es decir, hay criterios que evalúan los objetivos específicos del sistema. Sin embargo, nuestro enfoque explora esas metas que todos los sistemas (o la mayoría) de adaptación tienen en común: mejorar y simplificar la interacción.

Sostenemos que tal enfoque general produce una metodología que sea transferible a muchos sistemas y permitiría a los investigadores:
- Encontrar deficiencias y fallos del sistema
- demostrar que la adaptabilidad de su sistema es útil y exitoso
- Justificar los enormes esfuerzos invertidos en lograr que los sistemas adaptativos
- Señalar los déficits de los sistemas no adaptativos.

Enfoque
Un resumen de las evaluaciones publicadas afirmado nuestra afirmación de que sólo unos pocos estudios se basan en diseños experimentales
adecuados y métodos estadísticos.
Se encontró que las cuestiones de evaluación se pueden clasificar de acuerdo con un modelo de procesamiento de la información de los sistemas adaptativos.
Este modelo sirve como marco de evaluación para ulteriores consideraciones.

Modelo de adaptatividad
El principio básico de los sistemas adaptativos, es para adquirir datos sobre el
usuario, que se utilizan para inferir características abstractas. Sobre la base de estas características (a veces llamadas propiedades de usuario), el sistema decide cómo adaptar, que tiene repercusiones tanto en el comportamiento del sistema y el comportamiento del usuario. Así, se distinguir seis pasos de la evaluación:

1. Evaluation of reliability and external validity of input data acquisition
2. Evaluation of the inference mechanism and accuracy of user properties
3. Appropriateness of adaptation decisions
4. Change of system behavior when the system adapts
5. Change of user behavior when system adapts
6. Change and quality of total interaction

El punto es que este paso de la última evaluación sólo puede interpretarse correctamente
Si todos los pasos anteriores se han completado. Especialmente en el caso de encontrar ninguna diferencia entre un sistema adaptable y un sistema no adaptable, los pasos anteriores proporcionan alusión a las deficiencias. Los resultados de tal evaluación capas son mucho mejor para interpretar y dar pistas más exactas de los fracasos y las inferencias falsas que una simple evaluación mundial de la usabilidad.

Criterio Nuevo: Complejidad del Comportamiento
Una metodología de evaluación también requiere criterios para el éxito de adaptación, sin embargo, nuestra revisión sistemática hizo evidente que los criterios más actuales son o no fiable (o al menos no se ha probado ser confiable) o son bajos en validez externa (por ejemplo, duración de la interacción como un criterio para la satisfacción con un aprendizaje
medio ambiente).
Nuestro enfoque se basa en la suposición de que la adaptabilidad tiene por objeto reducir la complejidad de la interacción. Por ejemplo, un sistema de ayuda adaptativa infiere del usuario objetivos actuales y selecciona textos adecuados de ayuda. Así, el usuario no necesita una visión general de todos los temas presentados y, posiblemente, a continuación, para seleccionar el más adecuado sección.

La misma argumentación es válida para otros sistemas de adaptación, por ejemplo, de productos sistemas de presentación o entornos de aprendizaje.

Según Kieras Polson y el comportamiento del hormigón de un usuario puede ser
se describe como una red de estado de transición. De acuerdo con esta idea, un sistema es definido por los estados disjuntos y las transiciones entre estos estados. Un usuario de entrada es igual a una transición a un estado otro.

Una única red se deriva para cada usuario. La complejidad de estas redes puede ser calculado de varias maneras. En una serie de experimentos de laboratorio Weibelzahl, Klein, y Weber en comparación con cuatro medidas de complejidad en dos sistemas diferentes (que implementa diferentes mecanismos de inferencia en diferentes dominios). Los usuarios que habían sido apoyados por un sistema adaptativo producido comportamiento de complejidad reducida en comparación con los usuarios que han completado el mismo tarea ("Encontrar una casa de vacaciones adecuado en este catálogo electrónico", "Complete esta capítulo en la línea de aprendizaje del curso ") con una versión no adaptativa.

Perspectivas Futuras
Como muestran los resultados experimentales con la complejidad del comportamiento son muy alentadoras, un evaluación más detallada de un entorno de aprendizaje adaptativo fue diseñado para validar este criterio.

El curso online-HTML-Tutor se pondrá a prueba tanto en laboratorio como en el
campo que explorar la validez externa de la complejidad del comportamiento y la
ámbito de aplicación de nuestro marco.

Stephan Weibelzahl Evaluación de sistemas adaptativos http://ub-dok.uni-trier.de/diss/diss11/20030428/20030428.pdf

jueves, 25 de octubre de 2012

Movimiento natural de modelos tridimensionales

Bueno esta semana hice un video un poco antes de la clase. La animación es de l escudo que hice en blender la semana pasada.

Inicialmente la idea era hacer un monito de palito que moviera el escudo pero por errores al hacerlo (se borro) no lo pude hacer, entonces decidí que solo hiciera simples movimientos.




Aqui un video tomado con el celular


video

Aporte Semanal

Para el proyecto grupal hice un mapa para el proyecto espero tener mas mapas pronto.




En un rato subo el mapa en un tar al face y aqui en la entrada.

jueves, 18 de octubre de 2012

Modelado tridimensional de objetos

Bueno para esta semana me toco modelar un escudo en Blender.

Lo primero es ajustar el tamaño del cubo. Entonces seleccionamos el cubo y lo subdividimos y reajustamos el tamaño.


Despues de ajustar el tamaño seleccionamos lo vertices que vamos a estirar y asi le damos forma.

Bueno aqui agregamos una figura que tiene forma de una dona xD, la cortamos a la mitad y la pegamos al escudo. Despues agregamos un cilindro para untilizarlo como un mango, iguasl ajustamos el tamaño y lo ponemos en la posición deseada.
Despues le agregue un cuadrado que le di forma de un rectangulo par que forme parte del mango del escudo y la dumplicamos para poner la otra parte del mango.

Y asi quedo el escudo.

Con una textura:


Para el proyecto Grupal :

Encontre unos sprites para el proyecto y hoy voy a empezar a dibujar mapas. :p

Fire Emblem Sprites - http://mercenarylight.synthasite.com/fire-emblem-sprites.php

Kroah’s Game Reverse Engineering Page - http://bringerp.free.fr/RE/Ce/utility.php5

jueves, 11 de octubre de 2012

Aportes para el proyecto grupal

Bueno esta entrada es para no tener NP :/

tmxlib: the Python tilemap toolkit .http://pytmxlib.readthedocs.org/en/v0.1.0/

Es una libreria para el manejo objetos del mapa. Sirve escribir scripts para la manipulación automática de archivos TMX.


Librerías de Python para cargar el mapa como pytmxloader.

Encontre unos codigos de ejemplo para hacer menus con texto en pygame, estilo del cursor y fuentes.
http://www.learningpython.com/2006/12/13/textwidget-a-simple-text-class-for-pygame/





jueves, 13 de septiembre de 2012

Interaccion entre objetos artificiales

Bueno no pude hacer el ejemplo en python como yo propuse en clase la verdad me falto tiempo (lo siento Elisa :c).

Aqui pongo una foto del programa corriendo el puddi es el objeto que rebota.




Aqui esta el codigo hecho en Python. link


Aporte del proyecto

Bueno a mi me toco investigar sobre .tmx.


Es un estandar de XML que sirve para el intercambio de memorias de traducción.

http://razonartificial.com/2010/06/engine-vi-formato-tmx/
http://es.wikipedia.org/wiki/TMX
http://www.pygame.org/project-map+loader+for+'tiled'-1158-.html
http://wiki.apertium.org/wiki/Tools_for_TMX
http://pygame.seul.org/tags/tile



jueves, 6 de septiembre de 2012

Planeacion Automizada

Un ejemplo en la vida real puede ser al hacer la mochila.


Tenemos que la mochila solo puede soportar un peso y que al poner algo mas pesado se rompe.

Entonces la solución seria buscar conseguir la combinación de mayor peso pero que no exeda lo que soporta la mochila.

Ejemplo:
Si la mochila soporta 15kg
tenemos que:
A = 8kg
B = 5kg
C = 4kg
D = 2kg

primero:
Tomamos A, B y C los introducimos a la mochila.

segundo:
vemos que es mayor a 15kg entonces tendriamos que retirar uno alguno

tercero:
en este ejemplo sacando el C y nos deja el espacio para agregar D.



Referencia:
Wikipedia (2012) Problema de la mochila http://es.wikipedia.org/wiki/Problema_de_la_mochila 

jueves, 30 de agosto de 2012

Snake semana 3

Bueno el juego que yo elegí fue el de la snake.


Consiste en que controlas la serpiente y el objetivo es ir comiendo, pero al ir comiendo la serpiente crece y si chocas con la pared o con alguna parte de la serpiente pierdes.

 



Bueno al iniciar el juego comienzas como se muestra en la imagen anterior, al hacer un movimiento se cambia el diagrama que tiene sus posibles resultados. En este caso empezamos con el nodo padre “inició” que nos lleva a poder tomar 1 decisión de 3 posibles ya sea ir hacia arriba, seguir a la derecha o tomar hacia abajo (perder), el algoritmo siempre trata de obtener una solución para no perder, entre mas avanza el digrama se hace mas grande.

Saludos

jueves, 23 de agosto de 2012

Fisica en los Video Juegos

En esta entrada pondre un diagrama de como entiendo que puede ser la arquitectura de la fisica en el juego.

La fisica del video juego depende en gran parte del mapa y los graficos.




Para mi los items son lo mas importante porque le dan gran parte de la fisica del juego, ya que con ellos se hace el mapa.

Los items siempre tendran restricciones:
  • Si el item se puede mover o no.
  • Su peso (que el personaje tenga la capacidad para cargarlo).
  • Si es un item fijo como una roca (no se puede mover).
  • Su tamano: por logica no lo podria mover, cargar y puede obstruir el paso.
http://forum.unity3d.com/attachment.php?
attachmentid=30447&d=1328566708


http://i1-games.softpedia-static.com/screenshots/
Animate-Dream-2D-Game-Engine_2.jpg
En el caso del mapa tiene limites y estos pueden variar:
  • Estructuras (Edificios, escaleras, rocas, arboles, etc): ya que obstruyen el paso o es algun punto que no puede ocupar el personaje.
  • Tipo de suelo (agua, lava, vacio, etc)
  • Creaturas o NPC: que el personaje no pueda estar en el mismo punto que una creatura o un NPC o que no pueda estar en "stack".

miércoles, 15 de agosto de 2012

Como empezar un juego?

Para empezar a diseñar un juego es importante tener en cuenta que lenguaje, librerías y herramientas podremos usar.


Lenguajes:
  • Python
  • Javascript 
  • Lua
Usar Python podría ser bueno porque tiene muchas librerías y es un lenguaje muy dinámico.
Para scripts seria muy conveniente usar Lua.


En el caso de que el juego se abra desde el navegador podríamos usar:
  • Javascript
  • Actionscript (flash)


Base de datos e información:
  • MySql
  • XML

Herramientas
  • Apache
  • Svn (o algo parecido)
El svn seria muy útil porque todos podríamos subir, descargar y trabajar con el mismo código, además permite ver versiones anteriores y que cambios fueron realizados.


Librerías:
En este momento es difícil saber que tantas librerías vamos a ocupar, probablemente nos daremos uñeta según avanze el proyecto.

Aquí un link que me pareció interesante ya que cuenta con un gran cantidad de librerías que tal ves nos puedan servir. (http://content.gpwiki.org/index.php/Libraries)


Saludos.

viernes, 1 de junio de 2012

Habilitar UserDir

¿Cómo lo hacemos?… bueno lo primero que tenemos que hacer es abrir una Terminal, una vez abierta nos vamos a la carpeta donde están los archivos de configuración de apache, esto con el siguiente comando:


cd /etc/apache2/


Una vez ahí hacemos un ls, que nos mostrará algo como lo siguiente:



richi@hp:~/etc/apache2$ ls
apache2.conf conf.d httpd.conf mods-enabled sites-available
apache2.conf~ envvars mods-available ports.conf sites-enabled
richi@hp:~/etc/apache2$


apache2.conf es el archivo de configuración de apache, conf.d es un directorio con configuraciones tambien, httpd.conf según ellos lo manejan para que el usuario en este caso el administrador del sistema agregue sus configuraciones, mods-enabled y mods-available contienen los modulos disponibles y los que se cargan (Estas dos carpetas son con las que vamos a trabajar), sites-available y sites-enabled cumplen una función similar a las carpetas de los mods o modulos, envvars son variables de entorno y ports.conf es de puertos, en este caso si ejecutan el comando “more ports.conf” nos mostrará Listen 80, esto quiere decir que esta usando el puerto 80 que es el de web.

Muy bien, ya vimos las carpetas y vimos que las que nos interesan se llaman mods-available y mods-enabled, ¿Por qué? pues porque como ya se menciono la parte de UserDir ya se hizo como un modulo más de apache, mods-available contiene todos los modulos que se instalarón al momento de instalar Apache, y mods-enabled contiene todos los modulos que se activan al momento en que apache inicia, no todos los modulos se cargan al arranque, sólo los que especificamos nosotros.

Ahora tenemos que entrar a la carpeta mods-available con cd mods-available (siempre y cuando estemos ubicados en /etc/apache2, si no es así tenemos que escribir la ruta completa, es decir, /etc/apache2/mods-available) y una vez dentro de la carpeta ejecutamos el siguiente comando: ls userdir* nos debe mostrar dos archivos el userdir.conf y el userdir.mod estos archivos del modulo estan disponibles pero no activados, para activarlos debemos meternos dentro del directorio mods-enabled y crear enlaces simbolicos hacia estos dos archivos.

Bueno, nos metemos al directorio mods-enabled con el siguiente comando “cd ../mods-enabled” o en su defecto “cd /etc/apache2/mods-enabled”, una vez ahi vamos a ejecutar el siguiente comando:


sudo ln -s /etc/apache2/mods-available/userdir* .


¿Qué significa el comando anterior?… el comando anterior lo que nos dice es: crea un enlace simbolico (ln -s) de los archivos que se encuentran en mods-available y cuyo nombre empieze con userdir y termine con cualquier otra cosa (/etc/apache2/mods-available/userdir*) y finalmente crea esos enlaces en la carpeta en la que me encuentro actualmente (eso significa el “.”, nuestra ubicación actual que se supone es mods-enabled) y bueno el sudo es para hacerlo con permisos de superusuario, si no ponemos sudo simplemente los enlaces no se crearán.

Ahora si ejecutamos un ls userdir* dentro del directorio mods-enabled nos deben aparecer los dos archivos de los que creamos el enlace simbolico, el userdir.conf y el userdir.mod, si se dan cuenta aparece en otro colorsito, eso indica que son enlaces simbolicos, y si ejecutan un ls -la userdir* nos mostrara la dirección del archivo al que esta apuntando ese enlace simbolico, algo como lo siguiente:



richi@hp:~/etc/apache2/mods-enabled$ ls -la userdir*

lrwxrwxrwx 1 root root 30 2007-07-03 10:41 userdir.conf -> ../mods-available/userdir.conf

lrwxrwxrwx 1 root root 30 2007-07-03 10:41 userdir.load -> ../mods-available/userdir.load

richi@hp:~/etc/apache2/mods-enabled$


Bueno, ya casí estamos listos, lo que nos falta es reiniciar nuestro servidor apache, eso lo hacemos ejecutando el siguiente comando:


sudo /etc/init.d/apache2 restart


Si todo sale bien, nos debe aparecer mensajtos de lo que esta haciendo y al final un [ok], eso indica que todo fue bien, si nos sale un [fail] o algo asi de error pues entonces ya valio madres jajajaja, no, bueno no y si, pero ahi nos dice porque no se pudo arrancar y con base en ese mensaje de error podemos realizar acciones para intentar solucionarlo.

Nosotros en este post optaremos porque todo salio perfecto, para comprobar que todo fue bien, vamos a nuestra carpeta home, ya pueden cerrar sus consolas si quieren, a partir de aquí usamos el entorno gráfico, ahora que si les encanta la consola pues adelante, sigan con ella, pues si, les decía, vamos a nuestro home o carpeta de usuario y creamos una carpeta llamada public_html, es ahí donde guardamos nuestros archivos web, vamos a crear una página sencilla sólo para probar, un html simple que muestre un mensaje, algo así como “hola mundo de mier… bueno, mejor cruel jaja” y lo guardamos con el nombre de index.html en esa carpeta.

Lo siguiente es abrir nuestro navegador de internet y en la barra de direcciones poner lo siguiente: http://localhost/~usuario/ y al darle enter nos debe mostrar el contenido o el mensaje que pusimos en nuestra pagina html, que en este caso sería: “hola mundo de mier… bueno, mejor cruel jaja”, aparecerá si lo guardamos con el nombre index.html, si no lo guardamos así, debemos especificar el nombre del archivo despues de ~usuario/nombreArchivo.html.

Y para finalizar, el simbolo ~ indica la carpeta home, y se le agrega el nombre del usuario que quiere ver sus datos, en mi caso es: http://localhost/~huevas/ porque mi usuario linux es huevas, para sacarlo buscalo en tu teclado y lo sacas con la combinación de la tecla AltGr + la tecla que tiene el simbolo.

viernes, 17 de febrero de 2012

Configurar un Servidor SSH

Esta entrada es para compartir los pasos para instalar un servidor ssh.

Lo primero es descargar el servidor ssh es facil confundirce porque usualmente ubuntu tiene por default el cliente.

SERVIDOR SSHD
cliente ssh

Tecleamos en la terminal.

sshd

Despues de teclear no aparece si lo tenemos instalado o como instalarlo.


Una vez instalado creo yo que seria importante abrir el puerto 22 (puerto de default de ssh). [port checker]

Bueno segun la pagina de ubuntu es bueno hacer un respaldo del archivo a modificar.

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
sudo chmod a-w /etc/ssh/sshd_config.factory-defaults

Abrimos el archivo sshd_config.

sudo emacs /etc/ssh/sshd_config -nw

Es muy recomendable para evitar hackeos cambiar el acceso al root

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes

Despues abrimos el hosts.deny

sudo emacs /etc/hosts.deny -nw

Y verificamos que diga:

ALL: ALL

Abrimos el hosts.allow

sudo emacs /etc/hosts.allow -nw


y tecleamos nuestra IP como en el siguiente ejemplo:

sshd: 192.168.0.10 # Permitir una dirección fija.
sshd: 192.168.0.*  # Permitir todo el rango de la IP 192.168.0.1 a 192.168.0.255 recomendable si tienes ip dinamica.

Unos consejos de Seguridad. puede ser cambiar el puerto de default, cambiar el número de intentos fallidos de autentificación (MaxAuthTries 2), o cambiar el número de conexiones concurrentes no autentificadas (MaxStartUps 3), etc.

Saludos.