La rosquillera: un framework para hacer juegos como rosquillas

Started by Yawin, October 28, 2015, 10:08:27 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Yawin

Os presento un nuevo proyecto en el que estoy trabajando: La rosquillera.



¿Qué es La rosquillera?
La rosquillera es un framework para hacer videojuegos con SDL2 que tiene como objetivo que el usuario pueda hacer juegos como rosquillas (o sea muchos, muy rápido y sin romperse la cabeza).

¿Qué ventajas ofrece respecto a usar SDL2 directamente?
- Muchas.
- Nah, en serio, ofrece toda una serie de clases ya diseñadas para facilitar la programación.
- La clase RF_Engine mantiene un taskManager, el cual acumula procesos que compartan como clase base la clase RF_Process, y en cada fotograma se encarga de llamar a las distintas funciones de actualización y pintado.

¿Cuándo será publicada una versión estable oficial?
Lo desconozco, me gustaría decir que algún día; pero tal vez nunca.

¿Y qué hacemos mientras esperamos?
Podéis trastear con el código fuente que poco a poco se va actualizando en github.
También puedes mirar el jueguecito que trae de ejemplo.

¿Dónde puedo encontrar el código fuente?
En https://bitbucket.org/yawin123/la-rosquillera-framework

Bugs conocidos
- No lo sé. No me he puesto a mirarlo.

Ideas pendientes de implementar
- Rotación y escala de los procesos
- Primitivas de dibujo
- Put_pixel y Get_pixel
- Scrolls
- Aprender a crear miembros estáticos, que parece que tengo algún tipo de problema personal con ellos y no soy capaz de programarlos correctamente
- Audio
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Yawin

¡Wole!

Aprovechando que estoy de exámenes y no puedo hacer nada, os voy a poner al día de las últimas novedades:
  • Ahora "La Rosquillera Framework" (a partir de ahora "la rosquillera") trae un pequeño motor 3D para renderizar las mallas y/o vértices de objetos 3D.
  • Implementa un rudimentario sistema de audio basado en: "tú lanza la canción que seguro que suena. Confía en mí™".
  • Tiene un proceso "background" (recientemente renombrado a "RF_Background") que permite controlar mediante primitivas la capa más al fondo de la ventana.
  • El motor de tareas reasigna huecos previamente vaciados a las nuevas tareas, para aprovechar memoria.
  • Actualizado hoy: Motor de scrolls parallax. Soporta tantas capas como se desee (aunque a partir de la 10 es mejor dejar de crear nuevas), y permite hacer zoom y rotarlo. Bueno, estas dos últimas funciones aún no están terminadas; pero tienen un primer prototipo.
Y para muestra, varios vídeos:¡Os mantendré informados de novedades en la medida en que la universidad me permita!

Edit: Se me había olvidado añadir el nuevo repositorio xDD https://bitbucket.org/yawin123/la-rosquillera-framework
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Futu-block


Yawin

¡He puesto vídeos!

No veo necesidad de poner imágenes estáticas, porque el objetivo del proyecto no es hacer un juego, sino hacer el framework para hacer juegos. Luego cualquier imagen que ponga mostrará una posibilidad no la idea general de lo que se puede hacer. Por ello, prefiero poner vídeos.

Pero, y sin que sirva de precedente:


Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Yawin

Quote from: SplinterGU on October 05, 2016, 02:51:31 AM
felicitaciones por tu proyecto...

¡Gracias! Principalmente mi objetivo es aprender, por lo que mientras tenga cosas que aprender irá engordando ^__^
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Futu-block

Quote from: Yawin on October 05, 2016, 08:54:31 AM
¡He puesto vídeos!

No veo necesidad de poner imágenes estáticas, porque el objetivo del proyecto no es hacer un juego, sino hacer el framework para hacer juegos. Luego cualquier imagen que ponga mostrará una posibilidad no la idea general de lo que se puede hacer. Por ello, prefiero poner vídeos.

Pero, y sin que sirva de precedente:




Ya con eso sirve de mucho, genial

Drumpi

Mola el proyecto ese. Es como la churrera del Spectrum, pero con 30 años más :D

Por cierto, para futuras referencias: ALT + IMPR PANT captura sólo la ventana activa, así os ahorrais los recortes en el paint :D :D :D
Tengo que estudiar eso de las metabolas, más de una vez me ha apetecido hacer algo con fluidos en los juegos y no he sabido por dónde empezar :)
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Yawin

Pues en el repositorio, entra a "example/scene2.cpp" y a "example/scene2.h" para no perderte los tipos de las variables que declaro ahí y mirate la función "metabolas". Tal cual está es el modo más simple de hacerlas.

Luego existe otro modo que en mi grupo llamamos "el método que usa magia arcana y hechicería chunga". Que no hay dios que lo entienda.

La forma simple es muy sencillita de entender. En líneas generales:

- Definimos varias masas con sus respectivas coordenadas x, y (las cuales yo calculo con senos y cosenos para darles una cierta trayectoria).
- Definimos una densidad, que yo he hardcodeado para evitar accesos a memoria innecesarios y, con ello, pérdida de fps.
- Definimos un valor del que va a depender el radio de las bolas que equivale a la tensión gravitatoria mínima que debe tener para pintarse.

- Hacemos esto para cada punto de la pantalla:
if ( bola1.masa / (pow( sqrt( pow(bola1.x - i, 2) + pow(bola1.y - j, 2)), densidad)) + bola2.masa / (pow( sqrt( pow(bola2.x - i, 2) + pow(bola2.y - j, 2)), densidad))) <= tension_gravitatoria ) 
{
put_pixel(i,j,color);
}


Básicamente calculamos con una fórmula de la Ley de la Gravitación Universal la tensión gravitatoria (creo que se llama así) que hay en cada punto de la pantalla teniendo en cuenta los campos gravitatorios que generan los puntos definidos.

Para simplificar los cálculos, damos a todos la misma densidad (recuerda que cuanto menos densas, quedará un efecto más líquido).
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Futu-block

Quote from: Drumpi on October 05, 2016, 12:42:58 PM
Mola el proyecto ese. Es como la churrera del Spectrum, pero con 30 años más :D

Por cierto, para futuras referencias: ALT + IMPR PANT captura sólo la ventana activa, así os ahorrais los recortes en el paint :D :D :D
Tengo que estudiar eso de las metabolas, más de una vez me ha apetecido hacer algo con fluidos en los juegos y no he sabido por dónde empezar :)

bitch plis...

SplinterGU

Quote from: Yawin on October 05, 2016, 08:54:31 AM
¡He puesto vídeos!

No veo necesidad de poner imágenes estáticas, porque el objetivo del proyecto no es hacer un juego, sino hacer el framework para hacer juegos. Luego cualquier imagen que ponga mostrará una posibilidad no la idea general de lo que se puede hacer. Por ello, prefiero poner vídeos.

Pero, y sin que sirva de precedente:




que bonito y fluido se ve ese scroll parallax...

oh, cierto, es una imagen estatica... :'(
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Yawin

Quote from: Futublock on October 05, 2016, 01:59:20 PM
Quote from: Drumpi on October 05, 2016, 12:42:58 PM
Mola el proyecto ese. Es como la churrera del Spectrum, pero con 30 años más :D

Por cierto, para futuras referencias: ALT + IMPR PANT captura sólo la ventana activa, así os ahorrais los recortes en el paint :D :D :D
Tengo que estudiar eso de las metabolas, más de una vez me ha apetecido hacer algo con fluidos en los juegos y no he sabido por dónde empezar :)

bitch plis...


Yo uso la versión 0.90.1 xDD
Es que los repositorios de Trisquel siempre van un pelín retrasaditos porque tienen que dedicar tiempo a filtrar los paquetes privativos de los repositorios de Ubuntu.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Futu-block


Yawin

Quote from: Futublock on October 05, 2016, 03:48:46 PM
La ventaja de tener Xubuntu, muahahahahahhah
No veo ninguna ventaja en usar una distribución que contiene software privativo a paladas y, además, promociona su uso.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Drumpi

Gracias por la clase de física, Yawin. Ahora a ver si puedo programar eso en Bennu sin que se me vaya media CPU por el desagüe :D :D :D

Pues no se yo en Xubuntu, pero en Kubuntu ya hay una aplicación por defecto y, con la misma combinación que Windows (alt + impr pant) se lanza con la ventana capturada sola y me pregunta que qué quiero hacer con ella (si dejarla en el portapapeles, guardarla como imágen, exportarla a otro programa, descartarla...). La única pega que le pongo es que no captura video, pero parece ser que FFMPEG... perdón, AVCONV (que la están cambiando) sí que lo permite, pero aun no lo he probado (ni sé el comando que lo hace LOL).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)