Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Temas - Hechelion

#21
Proyectos / Mundial Futbolín (windows)
14 de Abril de 2012, 08:00:06 PM
Para los que no lo sepan, esta semana son las votaciones del CODEAR, clásica competencia de la comunidad argentina DUVAL (ex ADVA) y está vez, la temática ha sido fútbol, así que me he programado un pequeño juego de futbolín que quería presentar por estos lados.

Imagen


Vídeo
http://www.youtube.com/watch?v=ZSIPKj0z1mU

Es un proyecto GPL, desarrollado con VB6 y la dxlib32 de Ex3.
El juego es bastante simple, un futbolín de mesa, aún me falta habilitar el modo campeonato, pero se puede jugar sin problemas en el modo partida rápida, si se animan a probarlo acá dejo el link a mi blog donde salen los enlaces a los binarios o al código fuente
http://www.deitec.cl/feudo/?p=126
#22
Off-topic / Windows phone gana por que si.
27 de Marzo de 2012, 07:28:22 AM
Estaba leyendo las noticias tecnologías y me tope con el siguiente articulo, la verdad, no sé que me molesta más, si el hecho de usar publicidad engañosa o que esta ya directamente se vuelva una practica común.

http://skattertech.com/2012/03/i-won-the-windows-phone-challenge-but-lost-just-because/
#23
General Programadores / Python, agrupar valores.
04 de Marzo de 2012, 12:51:14 PM
Buenas, tengo una problema que no he logrado entender.

Tengo un archivo de texto donde almaceno unos datos:


cabecera
linea_1 ;;;;;ID_0;;;;;;;;;
linea_2 ;;;;;ID_1;;;;;;;;;
linea_3 ;;;;;ID_0;;;;;;;;;
linea_4 ;;;;;ID_2;;;;;;;;;
linea_5 ;;;;;ID_1;;;;;;;;;


Creé el siguiente programa en python, para agrupar los datos (o lineas) según sea el ID.

import struct
import sys
import glob
import os
import types
import binascii
import re

class ClsPJ:
    #Clase para almacenar los datos de cada PJ
    cadena = []   
    nombre = ""
   
    def __init__(self):
        pass
   
    def AddDato(self, dato):
        self.cadena.append(dato)
   
    def printDato(self):
        for linea in self.cadena:
            print(linea)


def leerArchivo(ruta):
    #Desglosa un archivo de log
    log = open(ruta,'r')
    for linea in log.readlines()[1:]: #Recorrermos el log, menos la primera l?nea que es la cabecera
        campos = linea.split(";") #cortamos la linea en sus respectivos campos
        if not campos[5] in lstPJ: #Si la key no existe en el diccionario
            lstPJ[campos[5]] = ClsPJ() #Creamos una entrada nueva en el diccionario
            lstPJ[campos[5]].nombre = campos[5] #escribimos la key en el objeto
        lstPJ[campos[5]].AddDato(linea) #agregamos el dato al objeto


lstPJ = {} #creamos el diccionario que contendr? los datos
leerArchivo("output.txt") #Leemos el archivo de prueba

for k, v in lstPJ.iteritems(): #imprimimos los datos para probar
    print(v.nombre)
    v.printDato()


El problema lo tengo al momento de agregar el dato a cada objeto, yo espero que la línea
" lstPJ[campos[5]].AddDato(linea) #agregamos el dato al objeto" agregue una línea a un objeto y esperaría la siguiente salida de mi programa (cada línea estaría agrupada):


ID_0
linea_1 ;;;;;ID_0;;;;;;;;;
linea_3 ;;;;;ID_0;;;;;;;;;

ID_1
linea_2 ;;;;;ID_1;;;;;;;;;
linea_5 ;;;;;ID_1;;;;;;;;;

ID_2
linea_4 ;;;;;ID_2;;;;;;;;;



Sin embargo, la salida actual de mi programa es la siguiente:


ID_0
linea_1 ;;;;;ID_0;;;;;;;;;
linea_2 ;;;;;ID_1;;;;;;;;;
linea_3 ;;;;;ID_0;;;;;;;;;
linea_4 ;;;;;ID_2;;;;;;;;;
linea_5 ;;;;;ID_1;;;;;;;;;

ID_1
linea_1 ;;;;;ID_0;;;;;;;;;
linea_2 ;;;;;ID_1;;;;;;;;;
linea_3 ;;;;;ID_0;;;;;;;;;
linea_4 ;;;;;ID_2;;;;;;;;;
linea_5 ;;;;;ID_1;;;;;;;;;

ID_2
linea_1 ;;;;;ID_0;;;;;;;;;
linea_2 ;;;;;ID_1;;;;;;;;;
linea_3 ;;;;;ID_0;;;;;;;;;
linea_4 ;;;;;ID_2;;;;;;;;;
linea_5 ;;;;;ID_1;;;;;;;;;



Como ven, por algún extraño motivo que no he logrado comprender, me crea bien los 3 objetos dentro del diccionario, pero a cada objeto le está agregando las 5 líneas en vez de agregar solo la línea que corresponde.


Por lo que entiendo, luego de hacer un montón de pruebas, es como si la variable "cadena" no fuera local y única a cada objeto, si no, que fuera una única variable global.
No me cuadra, como puede pasar eso, si "cadena" fue definida dentro de la clase (el programa es todo lo que hay ahí). En especial, si la propiedad "nombre" funciona bien, por lo cual sé que tengo 3 objetos diferentes, pero desconozco por que tengo solo una lista global en vez de tener 3 listas independientes.
¿Alguna idea?
#24
Proyecto dx_lib32 / Duda sobre NET
02 de Febrero de 2012, 11:54:14 PM
Aprovechando que me encuentro trabajando para Dhu Nun, me surgió una duda.

El juego está programado en NET, específicamente la versión 3.5, sin embargo solo hago uso de lo básico, así que había pensado en cambiar la versión (pasar a 4.0), pero tengo la duda de si vale la pena hacerlo o no, por lo cual quería saber los pro y los contra de cada versión.

En otras palabras
¿Que versión de NET recomiendan para distribuir un juego como Dhu nun?


Puntos que he estado considerando:
-Sé que un windows 7 actualizado no tendrá ningún problema, sin embargo me preocupa principalmente la gente que usa WinXP o vista(86), ya que en parte no me interesa que se tengan que descargar 1 GB de dependencias para un juego de 10MB (por que directamente no lo van a hacer).

-La opción más simple, es usar la versión NET más actual y olvidarme de los usuarios, pero como no hago uso extensivo del framework no tengo problema en la versión, así que mi problema se resume a buscar la mejor versión de cara al posible público que lo probaría (aunque para 3 personas que con suerte lo descargan, tal vez no valga la pena calentarse la cabeza  :P ).
De acá, se me ocurre que un porcentaje de descargar será para winXP, por lo cual me interesa que sea lo más fácil y cómodo para este universo.

Buscando, encontré las versiones compactas de los NET, los cuales por lo que entiendo serian suficientes para mi aplicación (uso lo básico, "system")
3.5 = 33MB
http://www.microsoft.com/download/en/details.aspx?id=65

4.0 = 48MB
http://www.microsoft.com/download/en/details.aspx?id=17718

NET 4 si o si necesita WinXP SP3, mientras que la versión 3.5 creo que corre sin problemas en WinXP SP2, pero es donde tengo la duda y el motivo por le cual escribo, recordando siempre, que  mi duda está enfocada de cara a que la instalación sea lo más simple posible para el usuario final.

#25
Proyecto dx_lib32 / crear PAK
29 de Enero de 2012, 11:57:45 AM
Buenas.
He estado mirando la documentación de la librería y no encuentro nada sobre crear, grabar o agregar contenido a un PAK de quake, solo funciones para rescatar el contenido de un PAK ya creado.

¿Se me ha pasado por alto alguna función? o ¿es así y hay que programarse algo para crear los PAK?


Igual me he adelantado algo antes de la respuesta y estuve buscando el formato de los archivos PAK para Quake y debería ser la siguiente:
=Format=
Header
(4 bytes) signature = 'PACK'
(4 bytes, int) directory offeset
(4 bytes, int) directory lenght

Directory
(56 bytes, char) file name
(4 bytes, int) file position
(4 bytes, int) file lenght

¿Efectivamente esa es la estructura que reconoce la librería?


#26
Off-topic / Feliz navidad y prospero 2012
25 de Diciembre de 2011, 01:13:43 AM
Pues eso, que tengan una felices fiestas.
#27
Cumpliendo la agenda, me encuentro nuevamente avanzando sobre Dhu Nun y dentro de este proceso me encuentro optimizando el mapa y quería consultar algunas cosas para tratar de mejorar el rendimiento.

¿Qué es mejor para la librería, pasarle todas las llamadas agrupadas por imagen de origen, o pasarle las llamadas de dibujo agrupados por canal Z?, por si no ha quedado claro, me explico con un ejemplo.

Vamos a suponer que tengo 2 PNG, que cargo como imagen "A" e imagen "B", con estas 2 imágenes pinto el escenario, el cual tiene 3 planos de profundidad (canal Z) que llamare 2, 1 y 0, y supongamos que en cada canal voy a usar partes de la imagen A y partes de la imagen B.

¿Qué sería más óptimo para la librería?
Pasar cada llamado de dibujo para A y luego para B, de la siguiente manera: A2, A1, A0, B2, B1 y B0

o

Pasar cada llamado de dibujo por canal Z independiente de que imagen venga: A2, B2, A1, B1, A0 y B0

Por lo que recuerdo de leer en diferentes post, me parece que lo más óptimo sería la primera opción, pero me gustaría confirmarlo antes de rearmar esta parte del juego, que por cierto, sigue avanzando y espero luego poder liberar algunas mejoras en varias herramientas que estoy utilizando, como una nueva clase para generar partículas, un editor de animaciones bastante más avanzado que el actual (permite animaciones tipo muñeco de papel con diferentes niveles de profundidad) y una versión nueva del editor y clase de mapas de tiles.

Por último, si conocen algún consejo sobre como mejorar la optimización serán bienvenidos, aunque tengo claro que la optimización es todo un mundo y depende en buena medida de cada programa, a saber si hay algún consejo de tipo general, como por ejemplo agrupar las llamadas de dibujo por imagen o por canal Z, etc.
#28
General / crear MMORPG
28 de Septiembre de 2011, 06:32:46 AM
Para todos aquellos que quieren crear MMORPG, les dejo un link a un proyecto abierto sobre MMO.
http://worldforge.org/doc/introduction

Worldforge, básicamente, viene a ser un framework abierto que permite crear MMORPG, así que aquellos que quieren programarse uno, tienen acá de donde partir en vez de tener que programar todo desde 0.
El juego es multiplataforma y corre sobre GNULinux, Windows y Mac y ya existen servidores funcionando.

A ver si con esto, dejamos de ver intentos y vemos más proyectos funcionando   >:D

http://worldforge.org/project/screenshots/images/ember_screen5/thumbnailView
#29
Proyecto dx_lib32 / Luces
17 de Septiembre de 2011, 04:49:18 PM
Estuve jugando un poco para conseguir efectos de noche y día y luces, aunque no logré llegar a lo que quería, ya que no logré encontrar forma de trabajar a nivel del canal alpha (Por lo menos, no sin meterme a nivel de pixel, cosa que no probé) creo que logré un  efecto decente.
Las luces están generadas en tiempo de ejecución, con lo cual se pueden mover, variar intensidad, etc.

http://www.youtube.com/watch?v=WVLpiJaEIMo
#30
Off-topic / Nuevas ideas para videojuegos
05 de Septiembre de 2011, 04:59:01 AM
Un vídeo sobre la realidad empresarial para generar nuevos juegos y nuevas mecánicas.

http://www.youtube.com/watch?v=cq4voeNuWEY&feature=player_embedded#!
#31
Me he puesto a testear Unity (acabo de actualizar a la 3.4) y a seguir algunos tutorial que he encontrado por ahí.

Traté de hacer algo simple, un terreno y un personaje que se mueva, para lo cual use el prefabricado FirstPersonControl, que en los tutoriales que he mirado y leído se supone que es arrastrar al escenario y usar (luego de borrar la cámara principal), pero en mi caso, aunque el escenario carga bien, (incluso puedo construir el juego) el personaje no responde a los comandos, ni del teclado ni del mouse y el sistema me marca el siguiente error:

NullReferenceException: Object reference not set to an instance of an object
FirstPersonControl.Update () (at Assets/Standard Assets (Mobile)/Scripts/FirstPersonControl.js:66)

y la línea en cuestión (LA primera línea del a función Update):

var movement = thisTransform.TransformDirection( Vector3( moveTouchPad.position.x, 0, moveTouchPad.position.y ) );

Por lo que entiendo hay una referencia que no se está creando bien, pero al ser nuevo en Unity y en Java no sé bien donde se está generando el problema, en especial porque en todas las partes que leo, el FirstPersonControl debería ser llegar y usar.
Intente buscar el error en google, pero el único enlace que me da, es al foro de Unity, donde otra persona tiene exactamente el mismo error pero nadie le ha contestado, así que si alguno me puede tirar un cable se lo agradecería.
#32
General Programadores / replace null en python 3.2
29 de Junio de 2011, 11:52:01 AM
Buenas, en python 2.6 usaba la función replace de los string para sacar los caracteres nulos que obtengo al leer un archivo binario.


        s1 = f.read(24)
        a1 = struct.unpack("16s l h h", s1)
        temp = str(a1[0]).replace('\0','')


Como muestra el código, obtengo los primeros 16 bytes de un chunk de 24, esos 16 corresponden al nombre del archivo, y con
str(a1[0]).replace('\0','') lo convierto a un string, al cual le reemplazo los caracteres nulos para que me retorne solo el nombre. Ese código en python 2.6 me funciona perfecto.


>c:\Python26\python searchHAK.py nw2old
>nw2oldowlwell.mdl
>nw2oldowlwell.pwk


Cuando intento correr el script en python 3.2, el código funciona y no me arroja error, pero no me reemplaza los caracteres nulos y además me agrega unas comillas y una letra b al inicio y no tengo la menor idea de porque hace eso.

>c:\Python32\python searchHAK.py nw2old
>b'nw2oldowlwell\x00\x00\x00'.mdl
>b'nw2oldowlwell\x00\x00\x00'.pwk


Llevo varias horas buscando en la red, y no logro encontrar que hay de malo o como adaptar el código para que funcione bien en 3.2. Si alguien me pueda dar una mano se lo agradecería.
#33
Como dice el titulo.
Tengo un programa que se encarga de actualizar el contenido de un juego, baja los archivos y los descomprime para que el jugador tenga el mismo contenido que el servidor.

El problema, es que algunos jugadores instalan el juego sobre "Program file" y usan win7 y como bien me explicó vicente en otro post, nos quedamos sin permisos de escritura y el updater no funciona. La solución anterior era decirles a esos jugadores que corrieran el updater con permisos de administrador. El tema, es que justo ahora estoy trabajando en la aplicación para implementarle algunos cambios y me gustaría resolver ese problema. Sé que debe existir alguna solución, porque otros juegos como "guild war", que también usan updater, son capaces de escribir en sus propios directorios sin que el usuario haya realizado cambios previos, pero no he encontrado nada en la red.

Supongo, que el truco estará en pasar el updater por un "instalador".

Por ultimo, He visto que algunos juegos, cuando se instalan en win7, agregan un acceso directo a "juegos" (Pero no lo hacen bajo XP), así que no crea que sea simplemente cosa de agregar un acceso directo por parte de la aplicación, me da la idea que es el propio OS el que determina que la aplicación es un juego y agrega el acceso. ¿ sabéis algo al respecto o el sándwich que me comí estaba pasado?

Datos:
El updater está programado con VB6, es una aplicación que hice hace años, cuando el 100% de la gente que jugaba usaba winXP, pero que funciona de 10 hasta el día de hoy.
La parte del updater, descarga el contenido vía HTTP a una carpeta temporal y luego usa el 7zip para descomprimir el contenido de los temporales al directorio final.
#34
Modelado / MakeHuman
01 de Abril de 2011, 07:12:14 PM
MakeHuman es un proyecto OpenSource y gratuito que permite crear modelos humanos de forma fácil, ideal para aquellas personas como yo que no tienen buenas capacidades modelando de 0.

La mayoría del trabajo se hace manipulando opciones, como la edad, peso, altura, etc. Y ya luego tenemos opciones más finas para modificar ciertas zonas del cuerpo.

El programa además se integra con blender, mediante el formato MHA, el cual viene integrado en blender 2.5x, permitiendo cargar de forma simple las texturas y el esqueleto creados en MakeHuman para poder trabajar con toda la potencia de Blender. Además, MakeHuman al igual que blender corren bajo Linux.

El proyecto es aún Alpha, pero está lo suficientemente completado como para crear modelos.

Un vídeo tutorial de modelado de personaje usando MakeHuman
http://www.youtube.com/watch?v=o2CIgn4knIU

MakeHuman:
http://www.makehuman.org/

#35
Tal como dice el titulo, creo un setup de mi aplicación usando el programa Setup Factory versión 8.
Ya probé con el publicar de VS2010 express y ni una posibilidad tampoco.

La generación del archivo queda bien, lo pruebo e instalado y todo funciona de maravilla, excepto que los archivos me quedan sólo son con permiso de lectura para el usuario, lo cual no me permite modificar el archivo "config.ini" mediante un programa que tengo para modificar las propiedades del juego.

¿Como cambio el permiso de un recurso de tal forma que al instalar o al correr por primera vez la aplicación pueda cambiar el permiso de lectura a escritura para el usuario (como admin o cambiando las propiedades de permiso del archivo se arregla, pero no puedo presentar un instalador de juego así)?

PD: No confundir con el atributo de sólo lectura, que eso está bien, es un problema de permiso de escritura para el usuario luego de instalar.
#36
Proyecto dx_lib32 / COM
10 de Marzo de 2011, 02:42:28 AM
Buenas.
Estoy preparando un Setup para la instalación del juego y quiero confirmar algunas cosas, a ver si alguien me da una mano.

Las Librerias que necesita Dxlib32 son esencialmente 2:

dx8vb.dll
dxlib32_xxxx.dll

Las cuales hay que registrarlas (en ese orden)

Anexo, se deben incluir las siguientes para reproducir OGG
oggDS.dll
ogg.dll
vorbis.dll
vorbisenc.dll

Acá comienzan mis dudas, de las 4, mi empaquetador me dice que solo la primera acepta registro como interface COM, las otras 3 simplemente las copio en system junto con la oggDS o tengo que meter todo junto con la aplicación?

Por lo que entiendo, yo debo meter todas las librerías en la carpeta %SystemFolder% y será windows el que dependiendo de su arquitectura decide si las mete en system32 o e systemWOW64 o es necesario meter algún script en el empaquetador para diferencias eso?
#37
Off-topic / ¿Qué respuesta hubiera recibido acá?
03 de Marzo de 2011, 12:10:03 AM
Tal vez sea porque estoy desde el lunes con un resfrío de los mil demonios, pero al entrar en otra comunidad (también de desarrollo de videjuegos) me he topado con el siguiente post en un hilo

Citar
Yo que tu haria algo con Direct3D 11 directamente , y empezaria con eso.
Al menos cuando lo manejes bien , osea luego de un tiempo razonable , no estaras retrasado en el tema de tecnologia.

Usar engines 3D / librerias 2D , no lo recomiendo , salvo que lo puedas llevar a otro nivel , mejorarlo , porque sino , vas a terminar haciendo proyectos del monton ,
que en la web abundan por todos lados , de esos engines que lo tienen todos , que lo manejan muchos , que hacen plata algunos (sus dueños) y que no los entiende ninguno de los que los programa.

Siempre desde mi punto de vista.

Por lo menos a mi, me ha parecido el comentario absurdo de alguien que no tiene la menor idea y que acá habría sido fusilado por la "cruel verdad" (Grande Mars), pero no sé, tal vez sea producto de la fiebre y se me ha pasado la mano al responderle al otro lado.
¿Realmente es el comentario de alguien sin la menor idea o realmente tiene razón?
#38
Off-topic / ¿Cómo subir un avatar al foro?
24 de Febrero de 2011, 06:32:23 PM
Saludos.

Tal como dice la pregunta. ¿Dónde tengo que subir un avatar para que Stratos lo muestre?

Hace tiempo que he tratado, alojando el avatar en mi sitio o en servidores gratuitos como Tinypic pero aunque coloque el enlace no se muestra el avatar. Asumo que habrá algún sitio o servidor que permita subir el avatar y que sea compatible con el foro.

PD: ¿Realmente es muy caro hacer como la mayoría de los foros y permitir subir un avatar pequeño al servidor, o tal vez limitarlo a la gente con cierta antigüedad o cantidad de post?
#39
Proyecto dx_lib32 / consumo de recursos
15 de Enero de 2011, 05:16:46 AM
Tengo algunas dudas sobre como calcular un aproximado de los recursos de un proyecto.

Tengo claro que al no ser un lenguaje de bajo nivel es un poco complicado (Por no decir imposible) hacer un calculo exacto, pero me imagino que debe haber formas de calcular un aproximado que no sea contar con muchos hardware y hacer pruebas.

Por lo que entiendo, la librería carga los mapas en la memoria de la GPU, si por ejemplo, cargo un PNG de 521*128 que pesa 10K, ¿en memoria usara 10K? o ¿será 32*512*128 bit?
¿Hay que agregar algún extra como cabecera o info?

¿Al cargar un mapa, esté usa RAM del PC o sólo de la GPU?

¿Las fuentes y sonidos se cargan en la RAM?

¿Algún consejo para calcular los recursos u optimizar el uso de la librería?
#40
Cita de: http://www.emol.com/noticias/tecnologia/detalle/detallenoticias.asp?idnoticia=452453
El sistema que permitía detectar el uso de aplicaciones no certificadas por Apple en el iPhone (jailbreak), fue desactivado en la última versión del iOS (4.2.1).

Esta medida llega después de que hace algunos meses, autoridades estadounidenses anunciaran que el desbloqueo del equipo de Apple no era ilegal.

El fabricante del iPhone se había opuesto a la medida, alegando que el desbloqueo de los equipos aumentaba la posibilidad de fallas

Según Apple, lo servicios técnicos se reciben millones de aparatos con problemas ocasionados con el desbloqueo.

Apple aclaró que nunca ha demandado a los propietarios del iPhone por romper sus sistemas de seguridad.

Con el desbloqueo, los usuarios pueden instalar aplicaciones que no han sido aprobadas para ser instaladas por la vías tradicionales que ofrece Apple.

No sé que tan vieja sea la noticia (digamos que los diarios de mi país no se caracterizan por tener la última noticia en temas tecnológicos), pero no recuerdo haberlo leído antes, así que la coloco por acá.

Personalmente me parece algo excelente, no por un tema de revivir  disputas entre un sistema cerrado y uno abierto, si no, porque legalmente se hace un reconocimiento a los derechos del consumir.





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.