Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





3 Simples Razones Para Proporcionar El Código Fuen

Iniciado por miguelOGL, 04 de Mayo de 2006, 09:38:51 AM

« anterior - próximo »

miguelOGL

  (nooo) 3 simples razones para proporcionar el código fuente del motor

1.   Puede que el conjunto del motor no esté definido pero hay muchas clases auxiliares, como puede ser un "Manager" de texturas, que creo no van ha sufrir muchas modificaciones y es un código muy interesante de analizar.
2.   A la hora de entender el motor, poder seguir su evolución, en cuanto a las decisiones de diseño, que nombres de espacios cambian, que clases se van añadiendo en cada nueva compilación, etc: poder seguir estos cambios a través del código fuente es muy interesante y hasta cierto punto necesario.
3.   No cuesta nada poner para descarga un archivo "zip" con el ejecutable y otro con el código fuente, y que cada cual se baje el que quiera.

Sin más, un saludo y ánimo.

Haddd

 
Citar1. Puede que el conjunto del motor no esté definido pero hay muchas clases auxiliares, como puede ser un "Manager" de texturas, que creo no van ha sufrir muchas modificaciones y es un código muy interesante de analizar

Hay montones de ejemplos en la web y código sobre eso. No ganarías nada analizando el nuestro que además está pensado para nuestras necesidades.

Citar2. A la hora de entender el motor, poder seguir su evolución, en cuanto a las decisiones de diseño, que nombres de espacios cambian, que clases se van añadiendo en cada nueva compilación, etc: poder seguir estos cambios a través del código fuente es muy interesante y hasta cierto punto necesario.

Precisamente esto es lo que queremos evitar.  :blink:

Citar3. No cuesta nada poner para descarga un archivo "zip" con el ejecutable y otro con el código fuente, y que cada cual se baje el que quiera.

Eso es cierto, no cuesta nada. Pero bueno, el punto 2 lo impide.

Tened paciencia y así, cuando lo tengais, al menos si quereis mejorar el motor, vuestro trabajo posiblemente será aprovechado pq no haremos cambios drásticos en el sistema.  ;)  

Vicente

 Hola!

si lo que quieres es analizar el código de ciertas clases, nada te impide descompilar la dll y mirar esas clases. El código no está ofuscado ni lo va a estar.

Ya hemos dicho que nuestro objetivo es sacar el código, pero como sabréis, los programadores a veces somo muy perfeccionistas ;) Queremos que el motor cuando salga cumpla ciertos requisitos de documentación, cualidades, etc etc, y no pensamos que las cumpla aún. Si las cumpliera para nuestro gusto ten por seguro que el código estaría (como está la librería de IA o tengo la impresión de que estará la parte de red cuando esté más avanzada). El motor ha tenido un proceso de escritura donde se ha mezclado la codificación del motor con el descubrimiento de un nuevo lenguaje de programación, y bueno, pues en algunos puntos es un poco caótico aún.

Sabemos que muchos queréis darle un vistazo, pero de momento nada, toca esperar... De todas formas, si te vienes a la quedada del día 12 (no se si eres de Madrid), yo me llevo el portatil y puedes mirar cosas si quieres ;)

[OT]Por cierto, tas metido en temas de la OGL? (Open Gamming License)[/OT]

Un saludo!

Vicente

[Vil]

 Yo aqui ni pincho ni corto... porque ni papa de c# ni de C++ ni de na. Asi q no creo q descargara el codigo ni nada relacionado con el motor que no sean ejemplos compilados, juegos y demas. Pero tambien voy viendo, que siempre teneis algo q mejorar, o decidis añadir algo o lo que sea... y veo que nunca liberareis a este paso el código, cosa que sería una pena.

Supongo que quereis enseñar de golpe todo estando perfectamente organizado, documentado y tal... y la verdad es q lo entiendo. Solo espero q seais lo suficientemente realistas al pensar que en menos de ¿1 año? vais a tener algo lo suficientemente terminado como pa dejarlo libre al "publico", sino creo q no merece la pena tenerlo asi oculto.

Pero como digo, realmente no se como va el proyecto, como se desarrolla, cuanto creeis q le falta, etc, etc... es solo la sensacion que me da de fuera, sobre todo al ver que hay tantisima gente interesada en él.

Un saludo

ethernet

 Está claro que la decisión es de los creadores, pero me parece una idea correcta no liberarlo hasta que no esté todo atado, desde el propio código con los menos bugs posibles, hasta la documentación. Está claro que es un motor con el que se pueden hacer cosas interesantes, no creo que sea adecuado hacerlo ahora.

De todas formas yo tengo por mi disco duro el código fuente de una versión antigua de Haddd, que bien no tiene muchísimas de las cosas de ahora, sí que está muy bien para echarle un vistazo.

matute

 Hola entiendo perfectamente que es una desicion de los desarrolladores de la engine si dan el codigo de la engine y cuando lo hacen.
Pero mi opinion es que de ese modo se retrasa la adopcion de la engine por gente que esta interesada en utilizarla.
En mi caso queria probar ( no tengo claro si sera finalmente posible.. ) correr la engine en un Control .. para realizar una herramienta de edicion de objetos de la engine dentro de una aplicacion WinForms, y por otro lado empezar a analizar dar soporte a exteriores con Mapas de alturas y Octree, y creo que para todo esto tengo que tener acceso a los fuentes, aunque siempre trate de no tocar nada y usar todo mediante el API de la engine que estan creando.. me parece que para esto tengo que tener acceso a los fuentes y tocar alguna cosas.
Un sugerencia es que la clase Haddd no sea sealed, y que no tenga metodos estaticos, para que se pueda extender y modificar sin tocar el codigo de Haddd, y lo de los metodos estaticos puede traer problemas cuando se utilicen otras librerias de terceros que tambien hagan cosas con metodos estaticos ya que se vuelve dificil manejar la secuencia con que se ejecutan todos estos metodos estaticos al correr la aplicacion, y si actuan sobre los mismos recursos esto ocaciona problemas muy dificiles de resolver.
Probablemente lo mejor sea que Haddd sea un singleton.

Saludos Matias

matute

 PD: otra sugerencia  :rolleyes: .. creo que los metodos de la clase Haddd deberian ser virtual .. para poder rescribirlos .. por supuesto para esto como dije arriba Haddd no deberia ser sealed.

Saludos

Haddd

 Tienes razón en tus comentarios. Pero el mismo problema que tieens con Haddd podrías teenrlo con muchas clases. Me refiero a que puedo estar cambiando la base y tu trabajar sobre el sisteam antiguo y luego..nada!!!

Te pongo un ejemplo perfecto. La versión nueva lleva un sistema totalmente nuevo de Meshes. La anterior utilizaba mallas de DX, pero la actual utiliza VB e IB. Imaginate si hubieras trabajado con el motor a nivel de vertices el cambio que te supondría.

Pero ya te digo que la versión actual "parece" ser bastante estable y cómoda de trabajar. Por ejemplo, antes los VertexBuffer se trataban así:

float[] vertices=vb.Lock....

...

unlock


Y tenías que asumir que el formato de vértices era siempre el mismo. Ahora esto se ha convertido en un simple HVertexBuffer:

Vector3[] Position;
Vector3[] Normal;
Vector2[,] TextCoord;
Vector3[] Tangent;

Y tu recuperas la posición o la normal así:

vb.Position[1]...
vb.Normal[1]...

que es la manera como todo el mundo quiere trabajar ( o yo al menos he expermitenado un cambio enorme en el código y he quitado montones de código al trabajar así )

Fíjate tu la diferencia entre el sistema antiguo y el nuevo. Pero bueno, puede que este nuevo también cambie, pero vamos, tiene pinta de que no.... ;)

¿Quieres hacer cosas de terrenos? Bien, genial, pues mandame un correo y hablamos. No hay problema en compartir el código con alguien que colabore de verdad. Es fácil mantener el código con 1 persona, pero no con 50 que hacen cosas diferentes y están todo el día haciendo preguntas... <_<  

Vicente

 Hola,

Matute, respecto a lo que comentabas: yo creo que son en general temas de diseño más que relacionados con el código. Yo creo que lo que quieres hacer de los mapas de alturas se puede hacer sin necesidad del código del engine (lo mismo me cuelo porque no se de gráficos, no lo sé). Tu te pones a hacerlo, y ten por seguro que si avanzas, y resulta que hay cosas que necesitas porque el motor no hace y nos las comunicas, intentaremos resolverlas. No creo que necesites el código para extender el motor.

Por ejemplo: yo trabajo sin el código del motor. Alguno me dirá: claro, tu eres de IA :P Pues si, yo toco IA, pero para la demo, tuve que mover una entidad 3D por un mundo 3D y tal. Me cogi la DLL, y fui preguntando a Haddd y a Ber como se hacían las ideas que yo tenía en mente. Ellos me contaban que necesitaba usar y fin. No me hizo falta el código. Y durante este proceso necesité un método que no existia (un método que proyecta un objeto en línea recta y comprueba si ha colisionado con algo). Lo pedí y seguí trabajando como si ese método siempre devolviera false (no optimizaba el camino). Cuando lo tuve lo puse, hice pruebas con el método real, corregí fallos y ale, fin.

No se, estoy seguro que tu trabajo sería más fácil con el código fuente que sin el código fuente, pero no es imposible de realizar solo con la DLL.

Respecto a lo del singleton, virtualizar funciones y tal: también es cuestión de diseño. Virtualizar cosas está muy bien, pero si tu asumes que una función tiene que hacer una cosa en concreto, la virtualizas y luego la función que la sobreescribe no hace eso que tu habías supuesto, pues hay problemas ;) De todas formas en la clase Haddd hablo sin saber, asi que lo mismo me cuelo también. Si tu crees que habría que virtualizarla y no hacerla sealed, seguro que Haddd y Ber han tomado nota del comentario y lo evaluan ;) Yo en la IA hay una persona que está usando bastante la parte de algoritmos genéticos (hola Olmo ;)) y me hace muchos comentarios sobre la librería, e incluso me pasa cosas que ha modificado de las clases. Algunos cambios los he incorporado (por ejemplo permitir la ejecución por pasos en el algoritmo genético y emitir un evento en cada paso para ver como avanza la evolución), y otros no (como eliminar el List de los cromosomas y dejarlo en un T).

Ya por último y me callo: fijate si es posible y creemos que se puede hacer lo que comentas del control para editar objetos, que hemos pedido un colaborador para el tema ;) Y tendrá el código del visor/editor viejo, pero currará contra la DLL del motor.

Un saludo!

Vicente

[Vil]

Cita de: "Vicente"(hola Olmo ;))
Estooo... mi nombre real es Olmo... pero supongo que no te refieres a mi (es q somos mu pocos y por eso me parece curioso), que yo de algoritmos geneticos se muy poco

Vicente

 Anda! Otro Olmo ;) Pues no, creo que no eres tu porque si no lo sabríamos los dos no? :P

Que curioso la verdad... Ya conozco dos Olmos ;)

Un saludo!

Vicente






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.