viernes, 30 de julio de 2010

Ragdoll en BGE

Aqui os dejo un enlace que os puede servir para entender bien lo que es un ragdoll si no lo sabeis:
Física ragdoll

Pues eso, os dejo con el tutorial.

Aqui el video: Tutorial Ragdoll en Youtube
Aqui el blend: Ragdoll.blend

Espero que os ayude, :)


MisterPompas

jueves, 29 de julio de 2010

Encriptador en Python

Descarga directa Aquí

Este script se dedica a encriptar textos y a desencriptarlos. Es fácil de usar, pero las opciones no están muy bien explicadas, así que las explico aquí.

Si se escribe 1 ó 11, se encripta un texto (el 11 utiliza un cifrado más sencillo pero algo menos fiable)
Si se escribe 2 ó 22 se desencripta un texto (aquí es indiferente cual se use)

-> Estas dos opciones no sirven de mucho, es como una demostración.

Para encriptar una frase a un fichero, escribir 1o (1 de cifrar y o de output). Entonces la frase se escribira cifrada en el fichero cifrado.txt

Para desencriptar una frase del fichero cifrado.txt, escribir 2i (2 de descifrar y i de input). entonces se escribe la contraseña y ya se desencriptó la frase.

-> Estas opciones sirven para encriptar algo corto (una contraseña encriptada o algo asi)

Para escribir texto encriptado a un fichero y desencriptarlo de él, pulsar e.

Alli se accede a otro menú.

En este menú, si se pulsa 1, se abre una ventana especial en la que se van encriptando muchas líneas a un fichero (no es recomendable hacer líneas muy largas).
Si se pulsa 2, se elije un fichero a desencriptar y otro de salida y desencripta el primero

[En este menu especial recomiendo leer las opciones y explicacion]

- El funcionamiento de la encriptacion se basa en supuesto sistema de discos giratorios (algo muy parecido a un criptex). Cada disco tiene 255 caras (una por cada caracter en ASCII), y van girando en base a ciertos patrones y a la contraseña. De esta forma, se obtiene un texto completamente distinto al original, y encima en caracteres ininteligibles, de modo que es muy dificil adivinar el algoritmo de encriptación.

Descarga directa Aquí

(No adjunto el código porque me es muy complicado adaptarlo a formato de espacios que exige blogger. Para ver el código no hace falta más que descargar el script)

Tal =)


miércoles, 14 de julio de 2010

Factorizar Número en Python

(Descarga directa del script aquí)

El script que voy a explicar ahora se encarga de expresar un número como un producto de números primos.

El script que voy a explicar ahora se encarga de expresar un número como un producto de números primos. Funciona para cualquier número - por grande que sea - aunque cuanto mayor es la longitud del número, más suele tardar.

A grandes ragos, el script funciona asi:


1) El programa tiene una lista interna de números primos

2) Intenta dividir el número que le indicamos (por ejemplo el 265) por cada uno de los números de esta lista , empezando por el más pequeño. (lo intenta con el 2, si no es divisible con el 3, etc)

3) Una vez encuentra el número primo más pequeño por el que es divisible el número (en este caso, el 5 es el número primo más pequeño por el que 265 es divisible) divide el primer número (265) entre el número primo (5), y obtiene un nuevo número (el 53 en este caso)

4)Vuelve al paso 2, pero utilizando el número obtenido en el paso anterior(el 53).

-> El programa finaliza este bucle cuando el número que obtenemos en el paso 3 es primo.(El 53 es primo, por lo tanto se detiene una vez lo obtiene, y nos muestra que 265 es igual a 5 * 53)

-> La lista inicial de números primos tiene hasta el 17, pero es muy probable que haga falta utilizar más números (En el caso anterior, hace falta ampliar la lista de números primos hasta el 53). Para ampliar esta lista, el programa usa la función "aniadir_primo".


Bueno, y aquí va el script:


# Writed in Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on win32.

# Factorizar un numero

numero = int(raw_input('Introduzca numero para factorizar : --> '))

def factorizar(numero): # Funcion principal
#print 'numero:',numero
num_ini = numero
num = num_ini
num_fact = ''
primos = [1,2,3,5,7,11,13,17]
# Con primos = [1,2] tambien funcionaria
seguir = True
while seguir:
if num ==1: # Se acabo la descomposicion
break
#print 'iteracion', primos[-1]
for primo in primos[1:]:
if num%primo == 0: # Si es divisible
num = num/primo
num_fact += str(primo)+'*'
break # Saltamos el for

# Si estamos aqui es que no es divisible entre los numeros de la lista que teniamos:
#hay que ampliar la lista.
primos = aniadir_primo(primos, num)
# Aqui volvemos a ejecutar todo el programa a ver si con la nueva lista conseguimos algo.
num_fact = num_fact[:-1]
print
print 'descomposicion factorial: ',num_fact
raw_input()

def aniadir_primo(primos, fin): # Funcion para añadir nuevos numeros primos
#print 'fin',fin
l_p = primos
# Establecer c
c = int(primos[-1])+1
while 1:
if es_primo(c, l_p):
l_p.append(c)
return l_p
if c == fin:
# Aqui no se que poner
return 'hola'
c += 1


def es_primo(num, primos): # Funcion que dado un número comprueba si es primo
l_p = primos[1:] # Para quitar el 1
for primo in l_p:
divisor = primo
cociente = float(num)/float(primo)
if cociente < divisor: return True # Si pasa esto es que ya no tiene
#sentido seguir dividiendo pues no me dara enteros, y por eso paro: es primo
if num%primo == 0: return False
return True

factorizar(numero)


Tal =)

martes, 13 de julio de 2010

Cambio Dia -- Noche


El Cambio Dia -- Noche es un proyecto que hice para un posible juego de rol. Como dice el nombre, se encarga de variar el color y la intensidad de las luces de un escenario con el fin de simular el dia, la noche y las transiciones entre ambos. Es muy facil de implementar en un proyecto en blender: solo hace falta copiar las tres lámparas que hay en el archivo.

El funcionamiento es muy simple. Hay una lámpara (tipo Hemi) que proporciona la iluminación global (esta lámpara no varía su intensidad a lo largo del día). Una lámpara Sun se encarga de variar la intensidad de la luz sobre el suelo del escenario y además crea las sombras del terreno. Una última lámpara Sun varía el color y la intensidad de la luz sobre el cielo, para dar la apariencia del amanecer, el mediodía, el atardecer y la noche.

Para variar la luz y el color sólo he utilizado unas cuantas curvas IPO para cada lámpara.


Descargar Aqui

Tal =)

domingo, 11 de julio de 2010

Python

Hola, soy Tal. Como aparte de videojuegos también se programar en Python, iré colgando algunos scripts que tengo, haciendo algún tutorial si se me ocurre un tema o si alguien me lo pide, etc.

Ya que es probable que no toda la gente que lea este blog sepa qué es Python, empezaré por explicarlo: Python es un lenguaje de programación orientado a objetos. Es, además, un lenguaje de alto nivel (para entendernos, es relativamente fácil de parender y bastante potente ).

Para aprender a programar en Python, hay muchos manuales, libros, etc. Aquí dejo los mejores:

+ http://diveintopython3.org/ (Muy bien documentado, pero en inglés)


Tal =)

Presentacion

Hola a todos, este blog esta destinado a dar a conocer nuestra organizacion: Soft Develop. Nos dedicamos principalmente a la realizacion de videjuegos, aunque tambien tenemos conocimientos de programacion y de diseño artistico, ya sea en 2D o en 3D.
Concretamente, el programa que usamos es Blender, que nos permite trabajar(si es esa la palabra adecuada) en la creacion de videojuegos y diseño grafico.

Los miembros que la integramos somos:
-Tal (programacion, modelado 3D)
-MisterPompas (logica de juegos, animaciones, el autor de este articulo :)
-Kable (photoshop, after effects)

Otra de nuestras intenciones es ayudar a cualquiera que necesite ayuda(claramente en alguno de los campos que dominamos, xP). Para preguntar dudas dejais un comentario y punto.