Archivo: April, 2009

Trámites, siempre trámites

[ Blog: SiPoX - Undead Code: Internet, web 2.0, videojuegos y software ]
2009:04:29 20:30:17

Durante las últimas semanas íbamos comentando de forma breve que seguíamos dando pasos en el difícil mundo de la burocracia. Para quién ya ha superado ese paso, la dificultad parece menor, pero para quién comienza o está en ello, puede ser caótico. Y es que, cada día te enteras de trámites nuevos que hay que realizar y con los que antes no contabas o problemas legales / financieros a tener en cuenta en el futuro. Una gestoría ayuda mucho en estos casos, pero el proceso de ver las cosas como un empresario, no es inmediato. Así, vamos aprendiendo poco a poco a tener esa visión de gestión empresarial, para lo que también estamos poniendo en marcha nuestro consejo asesor, muy resolutivo en los últimos días. (Dos artículos interesantes sobre ello, uno de Jaime Estévez, y otro de Angel María Herrera).

Hoy hemos ganado una pequeña batalla a la administración. El final del túnel burocrático inicial está muy cerca; cuando lo superemos de forma completa, publicaremos un artículo contando la experiencia, así como nuestras peleas con hacienda, bancos y otras entidades.

Últimos artículos relacionados:


Efectos Vocales

[ Blog: cyberon - TodoSuperFriki ]
2009:04:29 14:04:24

No puedo poneros el vídeo, porque está vetado en youtube que se pueda embeber en otras páginas. Pero estamos hablando de un rap digno de escucharse. No soy fan de dicho estilo de música, pero me parece de quitarse el sombrero lo que se hace en esta canción. Bien es cierto que los raperos suelen tener un vocabulario mucho más amplio que los mortales de a pie, a pesar de que sus letras o el estilo de múscia pueda hacerles aparentar que tienen menos cultura que la media, pero este tema se pasa de nivel. ¿Cuántas frases completas y con sentido eres capaz de formar usando solo palabras con la letra “a”, “o” u “e”, pues solamente tenéis que ver el vídeo que os posteo para alucinar.

El video en youtube: Natch - Efectos Vocales

No related posts.

Related posts brought to you by Yet Another Related Posts Plugin.

El tiempo y la ejecución en Small Basic

[ Blog: Gorkin - Gorkin, hijo de Perkin, hijo de Hamperdine... ]
2009:04:29 12:51:07

Para continuar con un poco más de Small Basic vamos a hablar de tres librerías: Program, Clock y Timer. No hay que olvidar que de momento Small Basic es un lenguaje en desarrollo y está en estado beta, por lo que existe la posibilidad de que ocurran fallos inesperados. Comento eso porque en el propio foro de ayuda algunas personas se quejaban de que la librería Timer a veces fallaba, pero al menos los dos ejemplos que encontraréis en este artículo os puedo garantizar que a mi me han funcionado.

En fin, pasando ya al tema en sí, la librería Program sirve para controlar aspectos relacionados con la ejecución del programa. Para ello tenemos dos operaciones y también una propiedad:

  • Delay(milisegundos): Retrasa la ejecución del programa una cantidad determinada de milisegundos.
  • End(): Termina la ejecución del programa.
  • Directory: Permite obtener el directorio actual donde se está ejecutando la aplicación.

Y para poder comprenderlo un poco mejor aquí tenéis un ejemplo de las tres cosas:


'----------------------------------------------------
' Prueba del manejo de la ejecución
'----------------------------------------------------
TextWindow.Title = "Prueba del manejo de la ejecución"
TextWindow.WriteLine("Vamos a obtener el directorio del programa")
TextWindow.Write("Recibiendo información")
For i = 1 To 42
  Program.Delay(80)
  TextWindow.Write(".")
EndFor
TextWindow.WriteLine("")
TextWindow.WriteLine("")

TextWindow.WriteLine("El directorio es:")
TextWindow.WriteLine(Program.Directory)
TextWindow.WriteLine("")

While "true"
  TextWindow.Write("Mete un 0 para salir: ")
  aux = TextWindow.ReadNumber()
  TextWindow.WriteLine("Has metido un: " + aux)
  TextWindow.WriteLine("")
  If aux = 0 Then
    TextWindow.Pause()
    Program.End()
  EndIf
EndWhile

La siguiente librería que trataremos en este artículo es Clock, que básicamente sirve para acceder a la fecha y hora del reloj del sistema. Tiene diez propiedades, que son:

  • Date: Permite obtener la fecha del sistema.
  • Time: Permite obtener la hora del sistema.
  • Year: Permite obtener el año.
  • Month: Permite obtener el mes.
  • Day: Permite obtener el día.
  • WeekDay: Permite obtener el día de la semana.
  • Hour: Permite obtener la hora actual.
  • Minute: Permite obtener el minuto actual.
  • Second: Permite obtener el segundo actual.
  • Millisecond: Permite obtener el milisegundo actual.

Luego tenemos la librería Timer, que nos facilita la opción de poder repetir un fragmento de código, de nuestra aplicación, cada cierto intervalo de tiempo de forma indefinida. Por lo que nosotros indicaremos cuanto dura el intervalo de repetición y cada vez que pase esa cantidad fijada de tiempo, se lanzará un evento (este evento suele ser denominado como “Tick”), que Timer atrapará e invocará a la subrutina asociada a dicho evento. Esta librería tiene dos propiedades y dos operaciones:

  • Interval: Permite obtener y cambiar el intervalo de repetición en milisegundos. Con ello podemos indicar con qué frecuencia será invocado el evento “Tick”. El valor que le pasemos tiene que estar en el siguiente rango: de 10 a 100000000.
  • Tick: Permite cambiar la función que será invocada cada vez que se produzca el evento “Tick”.
  • Pause(): Deja la librería en modo pausa, por lo que no se producirán más eventos “Tick” mientras estemos en ese modo.
  • Resume(): Quita el modo pausa, permitiendo volver a generar eventos “Tick” de nuevo.

Y sabiendo todo lo que he expuesto en lo anterior, nos podemos hacer un bonito reloj como el que aparece en el siguiente ejemplo:


'----------------------------------------------------
' Prueba con el manejo del tiempo
'----------------------------------------------------
TextWindow.Title = "Prueba con el manejo del tiempo"
TextWindow.WriteLine("Formato estándar.")
TextWindow.WriteLine("Fecha: " + Clock.Date)
TextWindow.WriteLine("Hora:  " + Clock.Time)
TextWindow.WriteLine("")

TextWindow.WriteLine("Formato del usuario.")
TextWindow.Write("Fecha: ")
MostrarFechaCompleta()
TextWindow.Write("Hora:  ")
MostrarHoraCompleta()
TextWindow.WriteLine("")

Timer.Pause()
Timer.Tick = MostrarReloj
Timer.Interval = 100
Timer.Resume()

TextWindow.CursorLeft = 0
TextWindow.CursorTop = 22
TextWindow.Write("Pulse una tecla para salir...")
TextWindow.PauseWithoutMessage()
Program.End()

Sub MostrarFechaCompleta
  aux = Clock.Year + "-"
  aux = aux + Clock.Month + "-"
  aux = aux + Clock.Day + " "
  aux = aux + Clock.WeekDay
  TextWindow.WriteLine(aux)
EndSub

Sub MostrarHoraCompleta
  aux = Clock.Hour + ":"
  aux = aux + Clock.Minute + ":"
  aux = aux + Clock.Second + "."
  aux = aux + Clock.Millisecond
  TextWindow.WriteLine(aux)
EndSub

Sub MostrarReloj
  TextWindow.CursorLeft = 30
  TextWindow.CursorTop = 10
  MostrarHoraCompleta()
EndSub

En el próximo artículo lo más seguro es que comente alguna de las librerías para manejar estructuras de datos, posiblemente primero hable sobre manejar cadenas. Mientras tanto que lo paséis bien trasteando con los ejemplos.

Posted in Small Basic

Los argumentos en Small Basic

[ Blog: Gorkin - Gorkin, hijo de Perkin, hijo de Hamperdine... ]
2009:04:29 11:23:42

Hoy empezaré hablando de como se utilizan los argumentos de la aplicación bajo Small Basic. Para ello tenemos la librería Arguments en el lenguaje. Esta sólo tiene una propiedad y un método, que son:

  • Count: Permite obtener el número de argumentos, de línea de comando, pasados al programa.
  • GetArgument(índice): Devuelve el argumento indicado por el índice que le demos. Hay que tener en cuenta que los argumentos del programa empiezan a numerarse desde el número 1 en adelante.

Así que sabiendo esto podemos manejar ya aplicaciones que puedan recibir argumentos de entrada, como ocurre con muchos de los programas que usamos diariamente. Y para poder verlo mejor, aquí teneis un ejemplo ilustrativo:


'----------------------------------------------------
' Prueba con los argumentos
'----------------------------------------------------
TextWindow.Title = "Prueba con los argumentos"
TextWindow.WriteLine("Has metido " + Arguments.Count + " argumentos.")

' Si se han pasado argumentos al programa, los mostramos por pantalla.
If Arguments.Count > 0 Then
  TextWindow.WriteLine("Lista de argumentos:")
  tab = "    "
  For i = 1 To Arguments.Count
    TextWindow.WriteLine(tab + Arguments.GetArgument(i))
  EndFor
EndIf

TextWindow.WriteLine("")
Posted in Small Basic

Mini-advergame para Pasarmiedo.com

[ Blog: zwiTTeR - dfrriz - Ilustración, arte y videojuegos... ]
2009:04:28 20:27:00

Xbox Live Community Games III: Posibilidades de negocio

[ Blog: Beyond - Evolution Dreams Studio ]
2009:04:28 19:37:40

Entramos en el espinoso tema de la viabilidad económica de los juegos publicados en Xbox Live Community Games (Juegos en Comunidad). La plataforma es interesante, las herramientas potentes y flexibles, la comunidad de desarrolladores amplia, hay muchos recursos disponibles,… pero la pregunta es… ¿hay negocio?

La respuesta es que a día de hoy es imposible vivir del desarrollo de videojuegos para Community Games, y además, sin ningún tipo de duda. Esta afirmación puede parece un tanto tajante, pero después de la publicación de las primeras cifras de ventas de varios juegos durante los últimos meses, ha quedado patente que el mercado es muy pequeño.

No queremos desviar el debate hacia si la AppStore es más rentable o no, es la comparación más directa, así que nos centraremos exclusivamente en la realidad de la plataforma con independencia de sus alternativas.

Como no conocemos las ventas/descargas de todo el catálogo, pero sí de algunos de los títulos más relevantes, todo lo que explicaremos a continuación se basa en nuestras propias estimaciones. Al final de la serie de artículos dejaremos algunos enlaces para los que queráis ver tablas, ampliar la información,…


El principal problema, como hemos avanzado, es la falta de mercado real, que no potencial, de usuarios. Aunque pueda parecer inverosímil, la cifra total de usuarios de Xbox 360 que conoce la existencia y ha descargado algún juego de Community Games puede estar situada entre los 100.000 y los 200.000. Lo que es más, nos atrevemos a decir que esta cifra debe ser bastante similar a la de usuarios que simplemente conocen la existencia de los Community Games. Si decimos que el parque de consolas vendidas supera de largo los 20 millones de unidades y que el número de cuentas de Live también supera esta cifra, queda patente que es muy triste que ni un 1% de los usuarios sepa que existen estos juegos y que hay algunos que realmente merecen la pena.

¿¿Y que se puede esperar de un mercado tan reducido?? Pues un número de descargas ínfimo para tratarse de una plataforma on-line de distribución, y la posterior cifra de ventas de risa, a pesar de alcanzar unos ratios de conversión más que interesantes.

Hemos visto que el número de descargas es irrisorio, pero como apuntábamos los ratios de conversión han sido más que interesantes. Los desarrolladores también se han quejado del ratio comparándolo con el de los juegos de XBLA, según las cifras de hace un par de años. Esta cifra rondaba el 17% y para quien no esté muy puesto en descarga digital es una cifra astronómica. Probablemente esta cifra habrá bajado algún punto desde entonces, y es más alta que la de la mayoría de juegos del Community Games, pero evidentemente la calidad no es la misma. Estamos hablando de estudios profesionales (algunos con muchos juegos a sus espaldas), juegos muy bien producidos y a precios muy competitivos. En cambio en los Community Games podemos encontrar de todo, y aun existiendo juegos realmente buenos es difícil que compitan en igualdad de condiciones a los ojos de los usuarios. El ratio de conversión medio de los juegos del Community Games probablemente sea inferior al 10% pero superior al 5%, si nos fijamos en los valores del mercado online para PC, 1-2%, nos podemos dar con un canto en los dientes por tener un ratio tan cojonudo. Pero claro, un 1% de 10M no es lo mismo que un 10% de 50.000… y eso duele.

En los ratios también ha tenido mucha repercusión la fijación de los precios, sobretodo de los primeros juegos, aunque desde hace unas semanas es posible modificar el precio y así reequilibrar el factor calidad/precio respecto al resto del catálogo. Al proliferar los juegos/aplicaciones lowcost, 200 MP, casi todos los que fijamos el precio en 400 MP hemos visto unos ratios considerablemente más bajos, y no digamos ya los escasos juegos a 800 MP.

Sabemos que es inevitable que poco a poco más gente conozca la existencia de nuestros juegos, y aunque el ratio baje algún punto seguirá siendo más que interesante. También es inevitable que Microsoft tarde o temprano, se curre de verdad una campaña de promoción. Y cada vez habrán más y más juegos, y más y más morralla (proporcionalmente). Y aquí llega otro toque de atención a Microsoft, con más de 200 juegos disponibles de todo tipo, empieza a ser impepinable la necesidad de contar con un sistema de ratings para distinguir a los buenos juegos del resto de mediocridades.

Empezábamos la sección diciendo que a día de hoy es imposible vivir del desarrollo de videojuegos para Community Games, pero no hemos hablado de las oportunidades que brinda para quien no necesite vivir de esto. Programar con XNA es fácil, publicar tu juego para que lo jueguen miles de personas es accesible, promocionar tu trabajo delante de posibles empleadores es toda una oportunidad,… Es decir, que sino necesitas que tus juegos sean rentables, ahora mismo la plataforma es una de las opciones más atractivas para entrar en el mundillo y además si tienes suerte puedes ganar unos dinerillos, que nunca está de más.

Hasta que no se alcance una masa crítica de 1 millón de usuarios que conozcan el servicio y descarguen juegos, muy difícilmente será una plataforma rentable. Y no es que estemos hablando de una cifra imposible, es menos de un 5% de los usuarios suscritos al Live.

Para acabar vamos a revisar los números de algunos de los juegos que consideramos más relevantes para entender el quid de la cuestión:

  • Weapon of Choice no ha alcanzado las 10.000 unidades vendidas. Supuestamente necesitaban un mínimo de 20.000 para recuperar la inversión y más de 30.000 para que el desarrollo fuera rentable.
  • Golden Royal Blackjack: juego correcto de un género que siempre funciona bien, las cartas, que consiguió estar varias semanas en la primera posición del top 10 y unas cuantas más en otras posiciones elevadas. Lleva una cifra acumulada de descargas de unas 70.000. Probablemente sea el juego más descargado de la primera hornada y no habrán muchos juegos que lo hayan podido superar o que lo superen en los próximos meses.
  • Blow: gran juego de puzzles que a duras penas ha conseguido superar las 1000 unidades vendidas. Una lástima porque es un juego muy bien diseñado y es del tipo de juego que esperábamos ver en la plataforma.
  • Remote Masseause: aplicación para “dar masajes” con el pad de la consola… A finales de marzo acumulaban más de 55.000 descargas y la nada despreciable cifra de 3.500 ventas. Probablemente sus cifras actuales son sensiblemente superiores al haber seguido en el top 10 de ventas desde entonces. Y no es la aplicación de masajes más vendida de la plataforma…

Otros artículos de la serie:

Opinión HTC Touch 3G

[ Blog: ethernet - psé - blog de javi santana ]
2009:04:28 17:40:00
Hace un mes o así que tengo la HTC touch 3G. La compré con el objetivo de portar agroguía a HTC ya que he visto que muchas personas están interesadas en tener un sistema de guiado gps en su Smartphone.

El móvil es más pequeño de lo que pensaba, pero sigue siendo un buen tochardo para llevar en el bolso, lo cual es un punto muy negativo, casi bloqueante dependiendo de gustos. Por suerte es "fino" y se lleva dentro del pantalón fácil. Es lento como el solo, no llega al nivel de un Nokia N80, pero lo es. Es poco usable a la hora de hacer fotos y para la mayoría de las cosas, la pantalla es bastante pequeña para navegar y el navegador opera que trae es un verdadero truñazo, el GPS es malísimo... sin embargo tiene cosas que son una gozada.

Tiene una gestión de las llamadas buenísima, almacena TODAS las llamadas que has recibido, fechas, tiempos, contactos, puedes guardar notas sobre los contactos, sobre las llamadas, etc. Esto resulta especialmente útil cuando tienes muchos contactos, sobretodo de clientes. Ahora tengo un pequeño CRM dentro del móvil, donde anoto que he hablado con cada cliente, si les he prometido el oro y el moro, si he negociado un precio, si se ha quejado y lo más importante, sé cuando me ha llamado y le he llamado. Esto además se eleva a la n-esima si usas el teléfono como algo asíncrono, siempre tengo el teléfono en silencio y miro las llamadas cuando me apetece. Además la batería dura mucho si solo lo usas como teléfono y la conexión para usarlo como módem 3G es bastante rápida (te da como opción cuando conectas el USB).

En resumen, si estás pensando en comprartelo y estás interesado en tener los contactos bien ordenados, cómpralo, de otra forma tirarás tu dinero.

Aplicaciones en modo consola con Small Basic

[ Blog: Gorkin - Gorkin, hijo de Perkin, hijo de Hamperdine... ]
2009:04:28 12:26:35

Hoy voy a hablar sobre la librería para manejar el modo consola en el lenguaje Small Basic. A parte de haber dejado un ejemplo de código al final del artículo, también lo he colgado en la web de microsoft para subir código, la dirección es esta. Como bien puse en el anterior comentario sobre las APIs, la librería para manejar el modo consola es TextWindow. Dentro de esta librería tenemos las siguientes propiedades:

  • Title: Permite obtener y cambiar el título de la ventana.
  • Left: Permite obtener y cambiar la coordenada X de la ventana.
  • Top: Permite obtener y cambiar la coordenada Y de la ventana.
  • CursorLeft: Permite obtener y cambiar la columna actual del cursor.
  • CursorTop: Permite obtener y cambiar la fila actual del cursor.
  • BackgroundColor: Permite obtener y cambiar el color de fondo del texto que escribamos en la ventana.
  • ForegroundColor: Permite obtener y cambiar el color del texto que escribamos en la ventana.

Al final de la guía de introducción al Small Basic que hay en la página del proyecto, aparece una lista de los colores que soporta actualmente las APIs del lenguaje. Sin embargo para el modo consola, como es tradicional, solo soporta 16 colores, siendo los agraciados los siguientes: Black, DarkBlue, DarkGreen, DarkCyan, DarkRed, DarkMagenta, DarkYellow, Gray, DarkGray, Blue, Green, Cyan, Red, Magenta, Yellow, White.

Hay que tener en cuenta que si cambiamos el color de fondo, no se va a cambiar el fondo automáticamente. Se actualizará el color cuando borremos la pantalla entera o escribamos texto sobre esta. Por lo que vamos a echar un vistazo a las operaciones de la librería para saber qué podemos hacer:

  • Show(): Muestra la ventana en modo consola, para permitir la interacción con ella.
  • Hide(): Esconde la ventana, imposibilitando la interacción con ella.
  • Clear(): Limpia el contenido de la pantalla, usando el color de fondo actual.
  • Write(dato): Escribe en pantalla una cadena, número o el resultado de una expresión. Al contrario que WriteLine, esta operación no termina realizando un salto de línea, por lo que lo siguiente que vayamos a escribir en la ventana, salvo que cambiemos la posición del cursor, será escrito justo detrás de lo que acabamos de mostrar.
  • WriteLine(dato): Escribe en pantalla una cadena, número o el resultado de una expresión. Al terminar de escribir en pantalla el texto, se producirá un salto de línea, de ese modo lo siguiente que se vaya a mostrar por pantalla se situará en el inicio de la siguiente línea de la consola.
  • Read(): Lee una línea de texto introducida por teclado en la ventana y la devuelve. Esta función no terminará hasta que el usuario pulse la tecla ENTER.
  • ReadNumber(): Lee un número introducido por teclado en la ventana y lo devuelve. Esta función no terminará hasta que el usuario pulse la tecla ENTER.
  • Pause(): Muestra un mensaje y espera a que el usuario pulse una tecla, para poder continuar la ejecución del programa.
  • PauseIfVisible(): Hace lo mismo que Pause() con la salvedad de que comprueba si la ventana no está escondida, pues en caso de estarlo no realizaría la pausa.
  • PauseWithoutMessage(): Hace lo mismo que Pause() con la salvedad de no mostrar el mensaje por pantalla, para dar la oportunidad al programador de ser él, quien determine qué mensaje va a preceder a la pausa.

Y sabiendo esto ya podríamos echar un vistazo al programa de ejemplo que he colgado, pasando por alto las primeras 4 líneas de código que utilizan la librería de manejo de texto y que ya explicaremos en el futuro. Tan solo hay que saber, que esas líneas declaran 3 variables para contener 3 caracteres especiales que no tienen representación en las cadenas de Small Basic, salvo usando una variable como intermediaria. Pero ya hablaremos de ello más adelante. El ejemplo juega un poco con la posición del cursor, la de la ventana, los colores, las pausas y la entrada por teclado.


'----------------------------------------------------
' Prueba del modo consola con Small Basic
'----------------------------------------------------

comillas = Text.GetCharacter(34)                '\"
saltolinea = Text.GetCharacter(13)              '\n
saltolinea = saltolinea + Text.GetCharacter(10) '\r
tabulacion = Text.GetCharacter(9)               '\t

'----------------------------------------------------
' Prueba del hola mundo
'----------------------------------------------------
TextWindow.Title = "Prueba en modo consola"
TextWindow.BackgroundColor = "Black"
TextWindow.ForegroundColor = "Green"
TextWindow.CursorLeft = 10
TextWindow.CursorTop = 1
TextWindow.Write(comillas + "Hola mundo" + comillas)

TextWindow.ForegroundColor = "White"
TextWindow.CursorLeft = 0
TextWindow.CursorTop = 3
MostrarLeftTop()

TextWindow.Write("Mueva la ventana de la consola y ")
TextWindow.Write("pulse una tecla para continuar...")
TextWindow.WriteLine(saltolinea)
TextWindow.PauseWithoutMessage()

MostrarLeftTop()
TextWindow.Pause()

Sub MostrarLeftTop
  TextWindow.WriteLine("Left: " + TextWindow.Left)
  TextWindow.WriteLine("Top:  " + TextWindow.Top)
  TextWindow.WriteLine("")
EndSub

'----------------------------------------------------
' Prueba de colores en el modo consola
'----------------------------------------------------
TextWindow.Clear()
TextWindow.Write("Introduce una cadena: ")
cadena = TextWindow.Read()

TextWindow.CursorTop = 2
TextWindow.Write("Colores soportados en este modo:")
TextWindow.CursorTop = 4
TextWindow.CursorLeft = 0

color = "Black"
MostrarCadenaConColor()
color = "DarkBlue"
MostrarCadenaConColor()
color = "DarkGreen"
MostrarCadenaConColor()
color = "DarkCyan"
MostrarCadenaConColor()
color = "DarkRed"
MostrarCadenaConColor()
color = "DarkMagenta"
MostrarCadenaConColor()
color = "DarkYellow"
MostrarCadenaConColor()
color = "Gray"
MostrarCadenaConColor()
color = "DarkGray"
MostrarCadenaConColor()
color = "Blue"
MostrarCadenaConColor()
color = "Green"
MostrarCadenaConColor()
color = "Cyan"
MostrarCadenaConColor()
color = "Red"
MostrarCadenaConColor()
color = "Magenta"
MostrarCadenaConColor()
color = "Yellow"
MostrarCadenaConColor()
color = "White"
MostrarCadenaConColor()

TextWindow.WriteLine("")
TextWindow.Pause()

Sub MostrarCadenaConColor
  TextWindow.ForegroundColor = "White"
  TextWindow.Write(tabulacion + color + ": ")
  TextWindow.ForegroundColor = color
  TextWindow.CursorLeft = 21
  TextWindow.WriteLine(cadena)
EndSub

'----------------------------------------------------
' Prueba de la entrada de números
'----------------------------------------------------
TextWindow.Clear()
TextWindow.Write("Vamos a cambiar la posición de ")
TextWindow.WriteLine("la ventana." + saltolinea)

TextWindow.Write("Introduce la x: ")
x = TextWindow.ReadNumber()
TextWindow.Write("Introduce la y: ")
y = TextWindow.ReadNumber()

TextWindow.Left = x
TextWindow.Top = y

TextWindow.Write(saltolinea + "Y eso es todo por ")
TextWindow.WriteLine("ahora..." + saltolinea)

Y eso es todo por hoy respecto al manejo de la consola con Small Basic. El próximo día comentaré posiblemente el funcionamiento de algunas de las librerías del sistema o de manejo de estructuras de datos.

Posted in Small Basic

El valor de los juegos indie

[ Blog: SiPoX - Undead Code: Internet, web 2.0, videojuegos y software ]
2009:04:28 08:42:28

El mercado de los juegos casuales está en crecimiento. Jugadores puntuales que desean evadirse unas horas a la semana, sin dejarse medio sueldo en juegos AAA, que por sus preferencias y gustos tampoco van a disfrutar; jugadores esporádicos que pasan el rato en juegos flash, usuarios con equipos económicos sin grandes posiblidades, gente de más edad que los habituales hard gamers… un nicho de mercado al que se enfocan pequeñas empresas y desarrolladores independientes.

Dentro de varios meses, nos planteamos una iniciativa para el apoyo de juegos independientes realizados en España, por parte de grupos amateurs. Esta semana, abrimos como adelanto the indie value, un blog en el que a través de análisis, reviews y críticas hablaremos de este tipo de juegos, sin importar la plataforma. Basados en navegador, flash, para pc, mac, iphone… Nuestro objetivo es potenciar los juegos indie, así como su mundo, siendo un soporte para su distribución y difusión.

Si quieres que probemos tu juego, echa un vistazo al blog y escríbenos. P

Últimos artículos relacionados:


Filtro paso bajo con python

[ Blog: ethernet - psé - blog de javi santana ]
2009:04:27 22:03:00
Es muy común tener un señal con mucho ruido, si es de un GPS más aún y normalmente interesa que los movimientos sean suaves. Bien sabido es que con un filtro paso bajo podemos atenuar el ruido y hacer que todo sea suave y maravilloso.

Si además no tenemos que filtrar al vuelo, esto es, tenemos ya toda la señal bien guardadita en un array, es posible usar el truco de teleco viejo, utilizar la fft. ¿Cómo? pues símplemente haciendo la transformada discreta de la señal, quitando los armónicos más altos y haciendo la transformada inversa.

Aquí el código, todo gracias a numpy :)

from numpy import fft

def low_pass_filter(x, samples = 20):
  """ fft based brute force low pass filter """
   a = fft.rfft(x)
   tot = len(a)
   for x in xrange(tot-samples):
   a[samples + x] = 0.0
   return fft.irfft(a)


El código seguro que es mejorable, numpy tiene métodos para trabajar con arrays de forma eficiente, etc, pero funciona a las mil maravillas y permite un control bastante lógico, cuantos más samples de la fft no sean 0, mayor será la variación de la señal. Para que luego digan que lo que se aprende en la carrera no sirve de nada...