Feda /dev/

sasher

#1318 Pues no se si será lento de cojones pero en python por ejemplo algunos diseños quedan la mar de limpios.

2 respuestas
DarkSoldier

#1321 una cosa no quita la otra XD

Kaiserlau

#1321 en python creo q esta locals() y .name para eso no?

r2d2rigo

#1318 yo lo he usado en aplicaciones en tiempo real (concretamente juegos a 60fps) y obviamente si lo haces a cada frame es lento, pero en cuanto cachees resultados funciona como casi cualquier otra cosa.

2 respuestas
HeXaN

#1324 Con 60 FPS no consigues una experiencia cinematográfica.

1 1 respuesta
r2d2rigo

#1325 pedirle a un Android chustero mas de eso es imposible.

Kaiserlau

#1324 me pica la curiosidad, ¿xq has tenido q hacer ne un juego lo de ? #1324

1 respuesta
r2d2rigo

#1327 mas que un juego en si fue en un motor en C#. El sistema que monte para pasar parametros a shaders de OpenGL en estructuras tipadas necesito reflection porque estaban separadas en distintos ensamblados y no se podia acceder directamente a algunas propiedades ya que el tipo no las exponia; asi que a la hora de crear el shader, se buscaban todas las propiedades del tipo y se bindeaban a la shader uniform correspondiente.

1 respuesta
Kaiserlau

#1328 grcias.Casi imploto.

herre

Lo que me ha costado esto. Floor casting en mi raycaster!

Mucho uniti y mucho openjele, pero yo me estoy montando mi motor gráfico 2.5D en C a pelo. Sólo uso SDL para copiar el array de pixeles a una ventana. :clint:

2 2 respuestas
starfucker

#1330 Parece duke nukem >.<

1 respuesta
r2d2rigo

#1330 los hombres de verdad usan ASM.

#1331 <pedante> en todo caso Wolfenstein/Doom, el motor Build no es un raycaster http://fabiensanglard.net/duke3d/build_engine_internals.php </pedante>

1 1 respuesta
herre

#1332 La web de ese tio es la hostia. Me he leido su analisis del motor de Doom mil veces.

De hecho, la idea de hacer un raycaster viene de querer entender el motor del doom mejor.

kas

Reflection es lento.
En el paradigma de programación de C#, yo solo permitiría concatenar el nombre de una variable con un string para alguna herramienta puntual en la que estas analizando tu código.

En producción lo mato.

1 respuesta
litoss

http://meanwhile.harrisblondman.nl/

El about tampoco se queda corto http://www.harrisblondman.nl/#jl-entry-1

Dostoievski

#1334 En cuanto te metas con un poco de "metaprogramación" (si se le puede llamar así en java o c#) no te queda otra.

Cualquier framework o librerías (para parsear datos por ejemplo) que uses usa reflection por debajo así que ya lo estás usando en producción

1 respuesta
herre

Shading!

PD: Tengo el número de post apropiado!

8 4 respuestas
E

Alguna vez habéis leido los datos de un puerto serie con java? :/

1 respuesta
cabron

#1338

Sí, pero usaba una dll nativa para hacerlo, no sé si java como tal tiene algo para acceder.

1 respuesta
N

#1337 Me quito el sombrero.

Deoxys

#1337

¿Lo tienes en GH? Me gustaría ver el código.

E

#1339 antes estaba javax.comm, pero cuando fue comprada por Oracle sudaron de actualizar esas librerías. Su heredero es rxtx: http://fizzed.com/oss/rxtx-for-java

Aun asi tengo problemas a la hora de recibir los datos por el puerto serie, no se si es cosa mía, del buffer que uso o qué, pero de repente me mete 2 espacios aleatorios como se come un caracter xD

B

#1337 Que rule el source!

/clap

herre

OK ahí va: https://github.com/herrecito/engine
Si tengo tiempo esta noche agrego un README

La única dependencia es SDL2. Para compilar simplemente haced make. Igual teneis que trastear con LDLIBS y CFLAGS si vuestra distro no pone las cosas donde las pone Arch.

Usad el editor para hacer un "mapa" (Click izquierdo para crear paredes, boton derecho para eliminarlas, S para guardar el mapa y L para cargarlo desde el archivo)

Necesitais tener 3 texturas .bmp en el mismo directorio que el ejecutable llamadas "floor.bmp", "wall.bmp", "ceil.bmp" Yo uso estas: http://imgur.com/a/ZTjgj

Cuando veais MapIterator no penseis que me he vuelto loco xD Ahora mismo recorro todas las paredas y utilizo Z Buffering para dibujar la escena, pero la idea es utilizar un BSP tree y he hecho algunas cosas pensando en ello (cosa que no debería hacer).

No estoy vendido en la idea del struct Color, pero quiero usar lightmaps para meter iluminacion precalculada y pensé que me vendría bien para prerarar funciones para multiplicar las texturas.

Lo que quiero acabar es:

Colisiones
Dibujar la escena usando BSP
Lightmaps
Sprites

No me interesa paredes de altura variable, suelos o techos de diferente altura, etc. Es mucho tinglao hacer eso a partir de esta base, si te metes en ese plan es mejor hacer un engine 3D de verdad.

Have fun.

8 1 respuesta
r2d2rigo

#1344 las paredes son arbitrarias o en cuadricula como el Wolfenstein?

A la estructura Color lo unico que le veo es que multiplicas las componentes por un double cuando con un float deberia ser necesario, ademas de forzar un cast por si acaso. Y las componentes quiza estarian mejor en un array que por separado.

1 respuesta
herre

#1345 Arbitrarias.

En los procesadores de hoy en día no debería haber diferencia de velocidad entre floats y doubles, yo uso doubles por default para todo.

kas

#1336 Insisto, usar frameworks o crear herramientas especificas es una cosa.

Ver a un programador que le apetece que una variable se llame "USER_PRIVATE_DATA" para luego poder usar ese nombre de variable en una query y así asegurarse que una parte de esa query esta bien escrita, es para matarlo.
Es solo un ejemplo, obviamente para DB usaria LINQ, EntityFramework, etc.

Yo he tenido que crear frameworks para unit testing en los que creaba extension methods para clases no testeables donde tenias que pasar Expression<Func<TIn, TOut>> y el framework analizaba la expresion para al final, sobre Moq, decirte si tal llamada se había hecho.

Pasamos de escribir cosas como:

this.facadeMock.AddCommandCallback(
    "EngineA", 
    "Get_PD_Rail1PresenceSensor",
    command =>
    {
        command.ResponseParameters[8].ValueAsObject = new Enumeartion("Present", (int)RailPresenceSensor.Present) ;
     });

A:

this.facadeMock
    .Setup(i => i.EngineA.Get_PD_Rail1PresenceSensor)
    .ReturnsAsEnumeration(RailPresenceSensor.Present);

Pusimos la lentitud de reflection en una balanza frente a poder escribir unit tests sin strings de por medio, pudiendo pasar los metodos de la API y agregando generics, y claramente ganó el "strong typing".

En este caso creo que esta justificado de manera mas que suficiente.

Markitos_182

Jotauvece


http://i.imgur.com/yYn26lS.gif

1
B

4
Tema cerrado