Foros - Stratos

Proyectos => CRM32Pro => Mensaje iniciado por: TheAzazel en 01 de Marzo de 2006, 02:52:12 PM

Título: Oncoming Crm32pro V4.80
Publicado por: TheAzazel en 01 de Marzo de 2006, 02:52:12 PM
 Bueno...para que veais que no estoy parado, estas son todas las mejoras que traera la nueva version, ya esta lista pero la estoy probando en los distintos entornos(win32 con vs y mingw32 y linux), con suerte, para el viernes estara disponible para descarga junto con el nuevo diseno web.


  28 February 2006 - 4.80 - Major Update
   --------------------------------------
   · CRM32Pro main interface:
     - Added Update() member integrating all systems updates. See Reference Guide to further details.
     - Added CleanUp() member to clean up the whole update system and to avoid event/timing propagation.
     - Added SetVideoMode() member to setup the video mode. Use it instead SDL_SetVideoMode().
     - Added Blit() member. Use it instead of SDL_BlitSurface().
     - Fixed minor bug with XML code.
   · ITimeSystem:
     - Init() member supports two working modes: create or reset a previously created system.
     - Added Info() member to show a internal timer information.
     - Removed SetFPS() member, since now, you have to use SetRFR() in sync mode.
     - Added SetRFR() member, it means Rendering Frame Rate, it is asynchronous (it doesnt stop your mainloop).
     - Added SetLFR() member, it means Logic Frame Rate, it is synchronous (it stops your mainloop).
   · IButton:
     - GUI system supports multilayers.
     - Fix a little bug, while you are typing in an input box, other buttons are not sensible to its associated key.
   · IVideo:
     - Added SetScale() and SetPosition() members to scale the video and to set a desired position.
     - Added the posibility to center video stream on screen.
     - It also works when main screen is on video memory (note that previously, it doesn´t).
     - It supports all effect (FX,scale and position) together.
   · Improve and smart cursor update among all graphics interfaces (CTile,CSprite,CFont and IButton).
   · All graphics interfaces automatically recover lost surfaces in DirectX(hardware mode).
   · Improved alpha per pixel support on Sprites, Tiles, Images, Cursors, Fonts and Buttons.
   · Updated to UCL 1.0.3, libogg 1.1.3 and libvorbis 1.1.2 to solve a few bugs and to improve compatibility with oncoming 64bits ports.


El roadmap quedaria como sigue:

-v4.90: proteccion de DPF (encriptado, password, etc.) y mejoras muy importantes en INetwork. Otros cambios menores... Con suerte para finales de marzo estara disponible

-v5.00: nuevo setupproject multiplataforma y completamente configurable, soporte total a glSDL (aceleracion 2D usando OpenGl sin modificar nada de tu codigo!). Mejora en la documentacion y varios ejemplos de uso.

Por ahora, esto es todo.

Saludos

PD: no olvideis que en este enlace teneis los cambios de la 4.70.
Título: Oncoming Crm32pro V4.80
Publicado por: Capiflash en 01 de Marzo de 2006, 03:35:42 PM
 La verdad , TheAzazel , me parece un gran trabajo el que has hecho.
Llevo meses esbozando ( muy muy muy poco a poco ) un juego en 2D , no es ni mucho menos un AAA ( si solo con plantearlo me ha llevado meses.. xD ) , no me habia decidido por la librería a usar , y te has llevado el "premio" . Saludos .

P.D. Ya vendre a darte la paliza por aqui de vez en cuando...
Título: Oncoming Crm32pro V4.80
Publicado por: Haddd en 01 de Marzo de 2006, 03:38:24 PM
 Al final Stratos va a ser el sitio donde más librerías se han creado en el mundo  :P  
Título: Oncoming Crm32pro V4.80
Publicado por: Vicente en 01 de Marzo de 2006, 03:59:01 PM
 La verdad que la constancia del trabajo de Azazel merece un premio ;) Ojalá alguien haga un buen juego que le haga justicia a la librería! Un saludo!

Vicente
Título: Oncoming Crm32pro V4.80
Publicado por: TheAzazel en 02 de Marzo de 2006, 12:17:34 AM
 Muchas gracias!

la verdad es que si lleva mucho curro pero bueno, me lo tomo como un hobby(aunque mi novia no lo entiende jajaja).

Pues nada, voy a seguir con ello a ver si saco el release lo antes posible.

Saludos
Título: Oncoming Crm32pro V4.80
Publicado por: [EX3] en 02 de Marzo de 2006, 05:30:29 AM
 Enhorabuena, se nota que tambien te tiras tus horas frente al ordenador dando forma al tema (ole) Pintan muy bien las nuevas "features", sobre todo la mas interesante quizas sea la incorporacion al fin de glSDL :)

Salu2...
Título: Oncoming Crm32pro V4.80
Publicado por: SiPoX en 02 de Marzo de 2006, 01:19:49 PM
 Sip, muy interesante! ;) :)

pd.- una curiosidad.. el editor está desarrollador con la librería? ;) :) Para nuestro jueguecillo estamos tratando de implementar algo similar, pero es tuyo pinta más que interesante como digo.. así que es posible que nos ayudemos de él. ;) :)

Saludos!
Título: Oncoming Crm32pro V4.80
Publicado por: TheAzazel en 02 de Marzo de 2006, 06:23:13 PM
 El EditorDPF esta desarrollado en Visual C++ con MFC y utilizando (logicamente) la libreria por lo que si no utilizas la libreria... de poco te puede servir el editor...

saludos

PD: el proximo SetupProject, estara desarrollado integramente con la libreria(nada de MFC) y por lo tanto, tambien sera portable. Y todos los editores que vaya haciendo, seguiran esta politica y asi seran portables.
Título: Oncoming Crm32pro V4.80
Publicado por: SiPoX en 03 de Marzo de 2006, 08:55:28 AM
 Si, claro, me refería a ayudarnos de la librería y del editor.. ;) :)

Ya estoy ojeado la documentación.. que me puse a mirarla hace tiempo... pero por diversos parones.. algo aparcao lo dejamos.. ;) :) Como en un principio iba a estar basado en SDL, no habrá ningún problemilla para adaptar el codiguillo que ya tenemos.

Saludos!!
Título: Oncoming Crm32pro V4.80
Publicado por: SiPoX en 06 de Marzo de 2006, 11:44:30 AM
 Buenas de nuevo!

Hay por ahí alguna referencia / tutorial de cómo usar el editor? Soy algo torpe.. je,je,je..

Saludos!
Título: Oncoming Crm32pro V4.80
Publicado por: TheAzazel en 06 de Marzo de 2006, 12:30:20 PM
 Que version estas usando?
Título: Oncoming Crm32pro V4.80
Publicado por: SiPoX en 06 de Marzo de 2006, 12:32:12 PM
 Hum.. la de la web, la v3.511, pero dentro solo estaban las licencias i el historial de cambios ;) :)
Título: Oncoming Crm32pro V4.80
Publicado por: TheAzazel en 06 de Marzo de 2006, 12:47:54 PM
 Vale, pues no utilices esa que es un poco antigua.

Bajate esta otra:

http://www.megastormsystems.com/download/C...v3.61-Win32.rar

que soluciona un monton de cosas y agrega otras nuevas (como la inclusion de ficheros, por ejemplo, para guardar xml, ini, o lo que quieras).


Por el momento no he hecho ningun mini documento de como funciona el EditorDPF, asi que preguntame lo que quieras y lo voy recompilando todo para hacer un minidoc.

tahora
Título: Oncoming Crm32pro V4.80
Publicado por: SiPoX en 06 de Marzo de 2006, 04:16:48 PM
 okis, versión bajada ;) :) trasteando un poquillo en horas muertillas del curro...

te comento ;) :) Estamos desarrollando un jueguecillo tipo aventura gráfica, point & click, desde SDL y C++. La idea que tenemos es meter los datos relativos a escenarios, personajes, objetos.. en .dat (por lo que veo el .dpf es algo similar, no? :)) y en base a la info de esos archivos, que el programa actue en consecuencia.

Ahora bien.. para leer ese .dpf desde el programa? :D quiero decir desde el juego, no desde el editor :D. Por ejemplo.. si tengo una lista de tiles que he cargado desde el editor.. como accedo a esa lista desde el juego? ;) :) Supongo que seguirá la estructura de datos de la librería.. pero.. cómo saber que datos están antes o después, como leerlo? :D

Un saludo!  
Título: Oncoming Crm32pro V4.80
Publicado por: TheAzazel en 06 de Marzo de 2006, 04:33:02 PM
 Para eso que me indicas(almacenar los tiles y sprites) os viene de lujo el EditorDPF+la libreria.

Veras, desde codigo, acceder a todo lo almacenado en los DPF es mucho mas sencillo que cargar una imagen y demas... en casi todas las clases/interfaces tienes un miembro Load() que le pasas el nombre del DPF(con su ruta si quieres) y el nombre del recurso en cuestion y ya esta listo para funcionar.

Echa un vistazo a los ejemplos y abre los DPFs que incorporan para que luego desde codigo veas como se cargan. De sobra esta decir que manteniendo el nombre de los recursos, a la informacion en si(graficos o sonido) les puedes hacer lo que quieras y cambiar sus propiedades que el juego seguira cargandolo igual y ajustandose a ello.

Estoy a punto de subir el nuevo diseno web con la ultimisima version (la 4.80) de la lib... a ver si puedo hacerlo ya hoy que voy con retraso :P
Título: Oncoming Crm32pro V4.80
Publicado por: SiPoX en 06 de Marzo de 2006, 11:21:44 PM
 Wooow! je,je,je.. muy currado, útil e interesante.. je,je,je... ya me veía yo leyendo a saco ;) :)

He mirado los ejemplos, ejecutados, el código y la documentación... ;) :)

Pero ahora de compilarlo, tengo un problemilla... vamos.. más que al compilarlo, que me da 0 errors y 0 warnings, al ejecutarlo no me finaliza el programa, sin más. En el log de errores de sdl, (en el del programa, todo aparece correcto) me sale:

Fatal signal: Segmentation Fault (SDL Parachute Deployed)

Creo que lo he configurado bien, el compilador con los parámetros y tal... he copiado los archivos de la carpeta SDL a la carpeta SDL que ya tenia (en realidad la original la he renombrado, para conservarla por si acaso :)) y el .h de la crm32 a la carpeta raiz de include. Tb los .lib, a la carpeta de .lib de mi ide, code::blocks. ;) :) Y luego, en los parametros del compilador, he añadido el de crm32... CRM32Pro.mingw ;) :) además de los que ya tenia de SDL.

Alguna idea? :D

Saludos!!  
Título: Oncoming Crm32pro V4.80
Publicado por: TheAzazel en 06 de Marzo de 2006, 11:43:35 PM
 Si mal no he leido (es que estoy ultimando la web y ya estoy que no veo :S), haz mezclado los .h de SDL con los que trae CRM32Pro(que tambien son SDL)... no hagas eso :), lo mismo no hay ningun cambio pero quizas si y eso puede provocar efectos no deseados, aunque por el momento te ha compilado.
Bien, el problema que indicas viene dado por que mezclas SDL con CRM32Pro cuando en realidad, CRM32Pro YA incluye a SDL, por lo tanto no se como no te ha dado problemas con referencias duplicadas.

El caso es que con que incluyas CRM32Pro.mingw.lib y sdlmain.mingw.lib en el linker, la cosa funcionara :)

Esto creo que ya le paso a alguien hace tiempo(aunque fue por emails, asi que no esta registrado aqui) pero ya pense en hacer un esquema de todas las librerias que seguramente mañana, cuando me libere del peso que tengo ahora sobre mis ojos, hare y pondre en la web.

Pues dime si te ha funcionado con eso vale?

Edit: releyendo veo que los .h lo has hecho bien, has guardado los tuyos jeje, asi que eso bien, tan solo tienes que eliminar la referencia en el linker a sdl.lib y te funcionara :)
Título: Oncoming Crm32pro V4.80
Publicado por: SiPoX en 07 de Marzo de 2006, 12:00:05 AM
 ei!! cierto.. estaba enlazando de más en el linker.. ;) :)

Graciaaas! ;) :) Solucionado esto, a saquillo con ello... :) ;)
Título: Oncoming Crm32pro V4.80
Publicado por: TheAzazel en 07 de Marzo de 2006, 12:04:42 AM
 Lo que no entiendo es porque no te da ningun error ni aviso....

pero bueno, espero que con el grafiquillo que hare mañana quede mas claro :)

pues te voy a cambiar de version en unos minutejos jejeje
Título: Oncoming Crm32pro V4.80
Publicado por: _ShellyWallace_ en 08 de Marzo de 2006, 03:14:54 PM
 No me extraña que le feliciten por los cambios y bla bla bla....si es que cada vez fijo que te pareces mas a este  (uoh) ..........
Título: Oncoming Crm32pro V4.80
Publicado por: SiPoX en 09 de Marzo de 2006, 11:43:19 PM
 Buenas!!

Trasteando con la librería... probando los efectos... me pasa una cosa algo curiosa...

al hacer algo como

CitarsBg=IImage->Load(GFX_RESOURCE,"IntroUCS");
SDL_BlitSurface(sBg,NULL,CRM32Pro.screen,NULL);
IScreenFX->FadeImageA(CRM32Pro.screen,10);
SDL_FreeSurface(sBg);

si lo ejecuto con  CRM32Pro.Config.VideoWindow=0;, en pantalla completa, al terminar el efecto, me saca del programa, plasmando en el log de errores de SDL el mismo error de antes: Fatal signal: Segmentation Fault (SDL Parachute Deployed).
Sin embargo.. si ejecuto con CRM32Pro.Config.VideoWindow=1; , parece que se queda con el cursor en area algun segundo de más, pero ni sale del programa, ni da error... funciona :).

Alguna idea? :S
Título: Oncoming Crm32pro V4.80
Publicado por: TheAzazel en 10 de Marzo de 2006, 10:37:58 AM
 Uhm...en pantalla completa (con .VideoWindow=0), que otros flags de .Videoxxx estas usando?

tambien si me pasas ese fragmento de codigo, me ahorras mucho curro :).

Es extrano puesto que esas funciones son bastante antiguas, me da que la cosa va por una nueva funcionalidad que he anadido, recuperar las superficies hardware cuando se pierden en directx.

Hoy tengo el dia en el curro tranquilo(por fin!) asi que, en cuanto me lo pases, me pongo con ello.

Sludos
Título: Oncoming Crm32pro V4.80
Publicado por: SiPoX en 10 de Marzo de 2006, 10:55:39 AM
 Buenas!

El código exacto no lo tengo aquí, tb estoy por el curro.. ;) :) Pero.. básicamente, seguía la estructura del programa basiccode de la documentación, pero cambiando los flags del config..  800x600 en 24 bits (con 32 me decía lo mismo ;)).

pd.- en cuanto llegue a casa, te copi - pasteo el código ;) :) Saludos y graciaas!
Título: Oncoming Crm32pro V4.80
Publicado por: TheAzazel en 10 de Marzo de 2006, 11:07:51 AM
 Si sigue mas o menos el basiccode, intentare reproducirlo aqui, solo una cosa mas, win32(vs o mingw) o linux?
Aunque seguro que el error sucede en todas las plataformas pero solo por asegurar.


saludos
Título: Oncoming Crm32pro V4.80
Publicado por: SiPoX en 10 de Marzo de 2006, 02:25:58 PM
 win32, con mingw

:)
Título: Oncoming Crm32pro V4.80
Publicado por: SiPoX en 10 de Marzo de 2006, 06:31:03 PM
 int main( int argc, char* argv[] )
{

   // Declaramos las variables SDL y especiales
   SDL_Event event;
   SDL_Surface *sBg;      // Background surface

   // Declaramos el resto de variables
   Uint8 done=0;
   int i;


   // Inicializamos el sistema de log
   ILogSystem.Init("BasicCode.log",LOG_FILE,LOG_NORMAL,"Prueba01","UC Studios","","");


   //Config del programa:
   CRM32Pro.Config.Title="Prueba01";
   CRM32Pro.Config.VideoBPP=24;
   CRM32Pro.Config.VideoWidth=800;
   CRM32Pro.Config.VideoHeight=600;
   CRM32Pro.Config.VideoWindow=1;


   // - Inicializamos SDL y CRM32, video, audio y control de tiempo -
   if(CRM32Pro.Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)<0)
   {
       ILogSystem.Msg(LOG_NORMAL," · [LOG] - Couldn´t initialize CRM32Pro: %s\n",SDL_GetError());
       return 1;
   }

   // -Graphics system initialize-
   if(!CRM32Pro.SetVideoMode())
   {
        CRM32Pro.Quit();
        return 1;
   }

   // Efecto de Pantalla
   sBg=IImage->Load(GFX_RESOURCE,"IntroUCS");
   SDL_BlitSurface(sBg,NULL,CRM32Pro.screen,NULL);
   IScreenFX->FadeImageA(CRM32Pro.screen,10);
   SDL_FreeSurface(sBg);
   //IScreenFX->FadeBlackA(10);


   // Main loop
   while(!done)
   {
       // Main system update and events loop
       while(CRM32Pro.Update(&event))
       {
           switch (event.type)
           {
               case SDL_MOUSEBUTTONDOWN:
                 //  ISoundFX->SoundPlay(1,hndClick,0);
      break;

               case SDL_KEYDOWN:
                   done=1;
               break;

               case SDL_QUIT:
                   done = 1;
               break;

                case SDLK_ESCAPE:
                   done = 1;
               break;

               default:
   break;
           }
       }
   }


   // Free resources
   SDL_FreeSurface(sBg);

   // Cerramos la librería, el modo gráfico
   CRM32Pro.Quit();

   return 0;

}


Ya de paso... por qué el evento en las teclas no funciona, cual es el parámetro a pasar? Me refiero a por ejemplo SDLK_ESCAPE, que no va. ;) :)

Un saludo!
Título: Oncoming Crm32pro V4.80
Publicado por: TheAzazel en 10 de Marzo de 2006, 10:38:05 PM
 Ya he conseguido reproducirlo, y bueno, al mirar el codigo detenidamente he visto donde estaba la cosa, ademas, te comento otras cosillas:

- cuando lo ejecutes en modo ventana, es mejor que pases 0 como bits per pixel ya que de ese modo se elegira el mismo BPP que el desktop y se evitara que se haga una reconversion al vuelo (que suele ser lentilla). Yo no lo fuerzo desde las entrañas de CRM32Pro por si acaso alguien quiere activar un modo aposta aunque luego reconvierta al vuelo al mismo depthcolor que el desktop.

- no utilices 24BPP, es muy lento en comparacion con 32BPP, asi que usa este mejor, (en un patch que estoy haciendo, no sera posible seleccionar 24BPP salvo que indiques 0 al estar en modo ventana y tu desktop este a 24 je)

- Tambien tienes una doble liberacion de superficie, fijate que la liberas dos veces, no te ha pasado nada de milagro(con los punteros hay que tener cuidado), de hecho, eso me ha inspirado para añadir un safe free surface en CRM32Pro, asi nunca eliminaras dos veces una superficie y te avisara del error :)

- Para el teclado añade esto bajo el case de SDL_KEYDOWN:

if(event.key.keysym.sym==SDLK_ESCAPE) done=0;

- Y por ultimo, el error, pues bien, estabas usando IScreenFX->FadeImageA() de un modo no valido, en la documentacion dice:
CitarFade to given surface from screen surface using alpha channel
y es un pelin vaga y no especifica el detalle que la superfice dada no puede ser la propia screen. El motivo de porque fallaba en modo pantalla completa y no en ventana viene dado por el modo de acceder a video de cada backend, en este caso directdraw, con windib por ejemplo no fallaba. Vamos, resumiendo, añadire un mensajito de warning a las funciones de fade image para evitar justo esto  y el modo de solucionarlo es facil:

// Efecto de Pantalla
sBg=IImage->Load(GFX_RESOURCE,"background");
IScreenFX->FadeImageA(sBg,10);
SDL_FreeSurface(sBg);
IScreenFX->FadeBlackA(10);

Ahora bien, seguro que no ves nada porque va a todo pastilla jeje, y es que ya te dije que eran de las funciones mas antiguas...cuando esto era muy lento y no hacia falta poner un timer, pues bien, ahora si, asi que para ese patch que voy a preparar, el control sera total, le indicaras cuantos ms quieres que dure el fade, en vez de utilizar esos flags un poco ambiguos (FADE_FAST,FADE_SLOW...).


Pues nada, espero que todo esto te sirva, ya me contaras :P

me piro de viernes nocheee  :ph34r:  
Título: Oncoming Crm32pro V4.80
Publicado por: SiPoX en 11 de Marzo de 2006, 10:58:48 AM
 okis, cambios realizados y funcionando! ;) :)

1.- Sí, lo de liberar dos veces la superficie fue un lapsus.. (nooo) , copie el del final para ver si era por que había que liberar la superficie, por si acaso lo estaba colapsando o algo así. Pondré especial cuidado a partir de ahora...  je,je,je.. aunque el safe free surface es una muy buena idea... :D

2.- Okis, 32... en principio puse 32, también lo cambié a 24 para ver si era por eso... y luego no lo volví a cambiar..

3.- El evento para el scape, funciona! ;) :)

4.- Tb okis.. entendí que había que pasarle la propia screen...

Tienes razón.. va muy rápido... incluso a pesar de ponerle un 1... je,je,je.. esperaré al patch.. pues eso no me corre prisa, sólo estaba trasteando un poco con los efectos.. ;) :)

Nuevamente, gracias y un saludoo!!