Motor de gravedad

Started by JaViS, October 25, 2007, 10:47:38 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

JaViS

Estuve jugando un rato a http://www.kloonigames.com/blog/games/crayon/ y se me ocurrio que estaria buenisimo que bennu trajera un motor de gravedad incluido por defecto ^_^

Offtopic: ¿Quien seria el enfermo que se le ocurriria usar esto?
Working on Anarkade. A couch multiplayer 2D shooter.

SplinterGU

No se en que consistiria, pero no suena mala la idea.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

syous

si seria interesante una libreria de fisicas con lo cual ya se tine gravedad y lo que quieras
Un Saludo
EL dia que la humanidad aprenda a mirar y sentir con los ojos del alma, recuperara su humanidad
http://sodonline.net/
http://darknessage.ayudaprogramacion.net/
http://www.ayudaprogramacion.net/

Proyecto: MMORPG
Completado: 2%
Estado: En Desarrollo...

osk

Ei!, es buenísimo el Crayon Physics ese!!.
He visto que está hecho con SDL y el motor de gravedad es uno libre que se llama Box2D (http://www.box2d.org) el cual está hecho con C++ .

...y digo yo, sin saber nada de nada...¿hacer un binding para Bennu de una librería ya hecha en C++ -aunque no C- costaría mucho? ¿O más valdría crear la librería pensando propiamente en Bennu? Lo digo porque eso de reutilizar código e ideas puede ser buena idea...

HaCkZJuaNN

Quote from: SplinterGU on October 25, 2007, 10:49:15 PM
No se en que consistiria, pero no suena mala la idea.

hombre, pues supongo que se podría hacer diciendo dentro del proceso algo asi: declare_corp(float masa, float radio)

y luego por debajo harías todos los calculos de atracción gravitatoria entre todos los cuerpos que podrías obtener con get_vel_x get_vel_y, etc...

aunque esto sería para sistemas gravitatorios de varios cuerpos, pero si lo que quieres es que las cosas "caigan", es mucho más sencillo que todo eso. Lo único que tienes que hacer es poner: apply_gravity(int masa), y eso haría que la y fuera cambiando en función de la gravedad, con todos los cálculos por debajo, y luego también podrías incluir otras funciones y variables como gravity_angle(para hacer que no solo caigan hacia abajo, sino también hacia los lados), gravity_force(para poner una gravedad más fuerte o más débil), etc...

Así divagando también se me ocurre que si pones eso también podrías poner algo para que los objetos que "caen", "choquen" al llegar a determinado punto, y que dependiendo de la elasticidad del objeto choque más o menos fuerte. Todo es cuestión del realismo y el detalle que quieras darle.

Como ya sabéis, las matemáticas y la física me gustan mucho así que si splinter decides hacerlo, me ofrezco para hacerte un "modelo" en bennu que luego tú puedas adaptar para incluirlo en el código fuente de bennu, si te parece bien. Además, ya he hecho cosas parecidas de simulación de física relativamente simple en otros lenguajes.

SplinterGU

Si, ya me di cuenta que estas divagando... :D
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Segata

Hombre, lo divertido de estas cosas es programarlas uno mismo, de todas formas si viene ya hecho más de uno ahorraría algo de tiempo.

SplinterGU

Por que no aprovechamos este thread para que entre todos los interesador diseñen que seria el motor de gravedad? pero no divagen, den algo tangible... digamos:

- Para que sirve?
- Caracteristicas?
- Requerimientos (datos de entrada necesarios)
- Necesidades
- Logica
- Caso practico (Teorico, no hace falta ejemplos en source, sino en palabras)

y luego, en base a todo lo analizado:

- Variables (si corresponde), funciones, etc...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

HaCkZJuaNN

Entonces la primera pregunta sería, lo que queremos es que los objetos caigan o que se atraigan unos a otros?

SplinterGU

no se, investiguen un poco...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Kel

la verdad es que es un tema interesante y para cosas sencillas creo que hasta se podria implementar algo basico. Yo tambien estudio fisica como hobby a ratos(entre tantos hobbys) y estuve a punto de hacer algo para fenix y al final no lo hice por otros menesteres.

Lo que es un motor basico, con gravedad, velocidad, angulos, aceleraciones, movimientos circulares realmente no supondria mucho esfuerzo en cuanto a cpu y ni tan siquiera requiere de cálculo mas allá del algebra y trigonometria, coordenadas cartesianas y polares, etc, y el tema de angulos y distancias ya lo tenemos disponible en el lenguaje.

Ya si nos metemos en algo mas avanzado saliendo de lo normal, entonces ya habria que tirar de simulacion numérica como hacen ODE o Newton,(bueno mas bien éstos usan un sistema por impulsos pero eso es bastante complicado para un motor simple). Yo voto por algo simple, fisica muy basica, y a correr  ;D

SplinterGU

Ok, pero que supondria algo simple y algo complejo?
Hagan de cuenta que no sabemos nada del tema y que lo que leemos es todo chino... de que forma plantearian explicar esto como una necesidad, argumentar y demostrar que seria util o necesario...
Luego, con todo un diseño hacer un modulo de esto no seria complicado.
Ya que muchos tienen ganas de colabrar en el proyecto pero no saben como, creo que esta seria una buena forma de hacerlo.
Traten de investigar un poco de que tratan estas cosas, o si hay engines ya hechos opensource, etc. No nos limitemos en lo que creemos deberia ser... busquemos lo que ya hay, y veamos que de todas las ideas, pueden ser utiles para hacer algo aprovechable para Bennu y que cosas no...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

HaCkZJuaNN

La cuestión es que no sería necesario tirar de otro motor. Para lo que va a usar la mayoría de la gente, se puede programar solamente a base de fórmulas(como nos enseñaban en el colegio). Yo hice un programa que simulaba atracciones entre muchos cuerpos y funcionaba muy bien y solamente usaba fórmulas, y no pasaba de las 500 líneas. Para hacer un motor que simplemente haga que los objetos caigan hacia el suelo... más fácil todavía. La cuestión es saber qué es lo que quiere la gente.

SplinterGU

Lo que sea... la propuesta?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JaViS

Yo tenia en mente que se importen las funciones hechas en una libreria externa como la que usa el juego q puse de ejemplo. Creo que eso seria mucho mas productivo que hacer todo de cero.

Lo que habria q pensar, es como unir todo eso al lenguaje. Si van a haber nuevas propiedades para los procesos y como van a ser las funciones.
Working on Anarkade. A couch multiplayer 2D shooter.