CRM32Pro v4.99 SDK

21 octubre, 2007

Buenas!

al final y como casi siempre, unos dias se traducen en semanas que a su vez, se hacen meses… y es que el tema de los efectos en sprites(mirror,flip,resize y rotate) ha dado mucha mas guerra de la que me imaginaba. Para empezar, justo hace un a帽o que intente implementarlo pero me rendi, habia otras cosas que hacer…por aquel entonces el proyecto PKM06 estaba vivo… pero como soy masoca, un poquito melon y tuve un momento de inspiracion..se me ocurrio antes de verano que podria ponerme de nuevo con los dichosos efectos. Pues bien, estan conseguidos y funcionando! 馃檪

Esta version, tiene muchisimas mejoras y aconsejo a todo el que utilice la lib, pasarse a ella YA!.

Una de las cosas que estuve haciendo fue pasarla el BoundsChecker de forma intensiva y descubri varios bugs jodidillos pero que pude reparar.

Ademas, he aprovechado y he agregado soporte directo a las superficies y recursos en 8bits, hace a帽os pense que seria una tonteria soportar 8bits pero ahora creo que es mas tonteria poner limites absurdos solo porque yo pensara que…. y esto no ha sido facil, sobre todo en el EditorDPF pero con tiempo y dedicacion, tambien lo he conseguido jeje.

Por ultimo, he subido la v1.2 del DPF2XML que no solo es muchisimo mas rapido importando de XML a DPF si no que ademas van los ejecutables para Windows y Linux.

Quizas alguno se pregunte…y el SetupProject? no estaba terminado? S铆, si lo esta. Lo subir茅 esta semana pero tengo que hacer unas mini-instrucciones y modificar muy levemente al SpacePong para que lo utilice y asi habra un ejemplo practico.

Si todo eso va bien, esta semana hare otro update de la web y acto seguido me pondre con el scrollengine para pulir un par de detalles y poder liberarlo cuanto antes, fechas? yo espero que antes de que termine este mes este en la web pero… yo ya no digo nada :).

Y bueno, la v5.0 la dejo un poco aparcada hasta el proximo a帽o ya que me quiero poner con los jueguecillos, lease TitanBomber.

En fin, esto ha sido todo por el momento, que no es poco!

Dejo una lista de las mejoras de la v4.99:

路 CRM32Pro main interface:

– Implementation of LoadConfig() and SaveConfig(). They now work!.

– Full working link between LoadConfig()/SaveConfig() and the SetupProject.

– Improved blitting optimization across all supported CPUs.

路 ILogSystem:

– Added new Halt() and Resume() members to stop and resume the log output.

– New mode to append the log output to the same log file.

路 ICursor:

– Fixed a problem creating a cursor from a 8bits surface.

路 INetwork:

– Fixed some memory leaks on client and server code.

– Improved stability with client-server disconnections.

– Updated network examples.

路 IButton:

– Raised MAX_LAYERBUTTON from 3 to 5.

– Fixed a problem with layer visibility. Now they works fine.

– Fixed a problem with ID buttons on layer 2 and upper.

– Better output of Info() member.

– Improved master buttons and cloned buttons functionality.

– Added new SetKey() and GetKey() members.

– Added new SetColorSelect() and GetColorSelect() members.

– Added new RemoveMaster() member.

– Inputbox type button now works better avoiding key repetition and delays.

– GetCurrentValue() has been renamed to GetValue().

– SetCurrentValue() has been renamed to SetValue().

– Function assigned to a button now supports two argument of any data type.

– Fixed a problem in Save() to DPF when the button was in video memory.

路 IVideo:

– Fixed a critical bug on MPEG playback on multicores CPUs.

The problem was found and solved on SMPEG sources.

路 IScreenFX:

– Improved Resize(): faster, support all color depth and optional render to a destination surface.

– Added new Flip() member to flip a surface.

– Added new Mirror() member to mirror a surface.

– Added new Rotate() and RotateScale() members to rotate a surface.

– All above members support surface clipping and the destination surface bounds.

– Note that all above features work in software mode. In hardware mode they are quite slow.

路 IPrimitives:

– PutPixel() has been renamed and duplicated to PutPixelColor() and PutPixelRGBA().

– HLine() has been renamed and duplicated to HLineColor() and HLineRGBA().

– VLine() has been renamed and duplicated to VLineColor() and VLineRGBA().

– Rect() has been renamed and duplicated to RectangleColor() and RectangleRGBA().

– Added new LineRGBA() and LineColor() members.

– Added new BoxColor() and BoxRGBA() members.

– Added new RGBtoYUV() and YUVtoRGB() members.

– Added new RGBtoCYMK and CYMKtoRGB() members.

路 CSprites:

– Added new SetEffect() member to activate special effects.

– New special effects: mirror, flip, rotate and resize.

– Fix a problem with colorkey in 8bits and 16bits surfaces.

– Full support for 8bits sprites surfaces.

– Fixed a problem in Save() to DPF when the sprite was in video memory.

路 IImage:

– Added new LoadIMG() member to load a BMP or PNG.

– Fix a problem in SavePNG() trying to save RLE surfaces.

路 CTiles:

– Full support for 8bits tiles surfaces.

– Fixed a problem in Save() to DPF when the tile was in video memory.

路 Improved internal use of SDL_DisplayFormat(): it only performs the conversion when it is needed.

路 Modified project files to support VS2005 and ready to add MacOS x86 project files.

路 Improved documentation.

路 Fixed a couple of mispelling words on sprites documentation. Thanks to Melkor to report it!.

Anuncios

SetupProject v1.0

14 agosto, 2007

Ultimamente me esta cundiendo bastante, desde que cambie de puesto la verdad que no solo estoy mas inspirado si no que tengo tiempo libre, puedo trasnochar(que es cuando mas cunde esto de la programacion jeje) y luego levantarme a tiempo de ir a trabajar sin estar muerto de sue帽o.

El caso es que me puse con el SetupProject que tenia abandonado desde hace mas de un a帽o y medio. Me imagino que pocos sabran de que se trata, pues bien, antiguamente tenia una aplicacion utilizando las MFC para configurar de un modo sencillo cualquier juego que utilice CRM32Pro pero claro, estaba restringido solo a Windows asi que aprovechando que CRM32Pro es multiplataforma, dise帽e un nuevo SetupProject mas avanzado, completamente configurable sin tener que programar ni compilar nada(lo unico que hay que hacer es modificar un XML) y utilizando CRM32Pro. El resultado, a mi parecer, es bastante bueno y permite tener una herramienta para configurar el juego, acceder directamente a cualquier URL(local o en internet), cualquier fichero de texto(como las instrucciones del juego por ejemplo), ejecutar el juego despues de asegurarte que la configuracion es la correcta y voila! Ademas, funciona igual en Windows que en Linux(y proximamente en MacOS x86). Las configuraciones estan divididas entre 3 tabs:

En el tab general se encuentra el tipo de procesador, memoria disponible, multitasking friendly, etc.

SetuProject General tab

Tambien he agregado un boton que lanza un benchmark(prueba la cpu, memoria y velocidad de bliteo por software) que termina dando un indice de rendimiento, de este modo se podria recomendar que para correr el juego se necesita un indice de X como minimo. Los botones readme y web site acceden a un fichero de texto local y a una URL dada respectivamente. De este tipo se pueden configurar de 0 a 7 botones que realicen cualquiera de esas acciones.

En el tab de video se puede escoger el renderer deseado disponible para la plataforma en la que lo estas ejecutando, elegir la resolucion deseada de entre un maximo de 4, cada una de ellas puede ser el valor que uno desee(de nuevo, modificando el XML), la profundidad de color, etc. Lo interesante es que automaticamente y dependiendo de las opciones elegidas o disponibles se van activando y desactivando algunos controles y en el caso de que sea una combinacion no deseada, simplemente no permite guardar la configuracion actual.

SetuProject Video tab

Por ultimo, el tab de audio, podemos activar o desactivar el sonido, cambiar la configuracion de salida de output, muestreo, frecuencia, resolucion, modo sin olvidarnos del volumen de los sonidos y de la musica.

SetuProject Audio tab

El control que tenemos sobre cualquier elmento de cada pesta帽a es total: podemos deshabilitar un control, por ejemplo en caso de que no queramos que el usuario corra en modo ventana, con desahilitar ese control se termino :P, podemos modificar su posicion, de nuevo, utilizando el XML. El aspecto grafico esta basado en skins, yo he creado uno, el llamado “default” cuyo aspecto es el que podeis ver en los pantallazos pero es facil crear otro set de controles GUIs, fondos, icono, etc.. bajo otro skin(uno de Linux, otro de Mac, otro complemente nuevo…). Una vez mas, para cambiar de un skin a otro…en el XML :). Todo esto se puede modificar a gusto del desarrollador o grafista directamente utilizando el EditorDPF, sin programar ni compilar nada!!

Para los que hayan llegado hasta aqui…se merecen ver el aspecto del fichero XML que configura todo esto, el layout.xml:

layout.xml

Como no podria ser de otra manera.., tambien le he pegado a CRM32Pro :). La v4.99 saldra junto al SetupProject v1.0 ya que he agregado los famosos LoadConfig() y SaveConfig() de modo que desde vuestro juego tan solo teneis que llamar al metodo LoadConfig() y voila! cargara todos los valores generados por el SetupProject, vamos, mas sencillo imposible :). Para esta version estoy trabajando en la maldita rotacion y escalado de sprites, no prometo nada puesto que es la 2 vez que me pongo a ello pero esta vez hay un par de ases en la manga asi que espero que vaya mejor la cosa.

La pregunta podria ser…y todo esto para cuando? pues bien, el SetupProject ya esta terminado al 100%. Ahora estoy con CRM32Pro(si, de nuevo jeje) y luego ya actualizo la web con todo esto, como estoy de vacaciones… yo diria que para dentro de unos dias estara todo listo(siempre y cuando mi nivel de inspiracion no caiga jeje). Ah!! y no me olvido del scrollengine, ese ya esta terminado y tendria que subirlo a la web. Vamos, que me espera un mesecito de muchas actualizaciones 馃檪

Pues nada, solo darte la enhorabuena si has sido capaz de tragarte todo este rollo 馃檪

hasta la proxima!


MegaStorm ScrollEngine v0.90(MSSE)- First release

25 julio, 2007

Finalmente aqui teneis la primera version publica del scroll engine funcionando sobre CRM32Pro v4.98 (esta version aun no esta terminada asi que solo incluyo la version para VisualStudio).

El scroll engine es completamente funcional y aunque me quedan realizar algunos cambios internos, lo mas importante y complicado ya esta. Si alguien se pone a probarlo o incluso utilizarlo y se le ocurre alguna mejora o descubre algun problemilla que me lo diga y lo corregire para la v1.0.

He tardado un poco mas porque he preferido documentar todo y crear unos cuantos ejemplos de uso. Por ahora no va el codigo fuente, solo la libreria estatica para linkar pero en la v1.0 la idea es dejar todo el codigo libre bajo alguna licencia para que podais agregar lo que querais.

dot Native support up to 5 layers. Easy update to n layers.
dot Full and customizable parallax scroll support.
dot Independent or group fixed, with scroll or with parallax scroll layers.
dot Viewport and target surface can be selected in realtime.
dot OnUpdateEnd event which will be called at the end of each layer update.
dot Manual layer creation.
dot Import any external image file(BMP or PNG) and convert it to a valid layer.
dot Export any layer to an image file(BMP or PNG).
dot Level loading and saving on native format to an XML or to a DPF file.
dot Easy custom maps management to create almost any kind of game.

Aprovecho tambien para comentar que la idea de crear este engine vino a raiz del grupo PKM06 y nuestro proyecto de un shooter espacial en 2D con scroll vertical al estilo clasico. Por el momento la cosa esta bastante congelada y no se si la cosa se reactivara o se quedara donde esta ahora pero es justo nombrarlo ya que sin el, este engine no existiria.

Volviendo a CRM32Pro… espero tener lista la v4.98 antes de que termine Julio y rapidamente vendra la v4.99 que utilizara la recien estrenada SDL 1.2.12 corrigiendo muchos bugs y glSDL 0.8. Ambas versiones seran muy probablemente las ultimas antes de SDL 1.3/2.0 asi que CRM32Pro esta cerca de llegar al final de su evolucion y pasara al modo mantenimiento, aun y asi el plan sigue siendo el mismo, la v5.0 tendra soporte total con aceleracion OpenGL y el scroll engine como tal se aprovechara de todo ello.

Por ultimo, aqui teneis el enlace: MegaStorm ScrollEngine v0.90(MSSE) for VisualStudio

Y bueno, esto es todo por el momento!

Hasta la proxima actualizacion!


ScrollEngine v0.8… casi libre en la red!

14 junio, 2007

El ultimo mes no ha sido muy productivo, hace 15 dias que no puedo hacer nada pero bueno, empiezo a tener tiempo libre la proxima semana ya que solo trabajare 3 dias a las semana :), no tendre excusa nunca mais!!

El ScrollEngine va por muy buen camino, ya graba en formato nativo y es muy definible, ahora estoy con la carga del formato nativo y un par de peque帽os detalles mas y lo libero a la red. Para mas adelanta quedaria la importacion de mapas del tiled, mappy y demas.

Ademas, a ratos (pero no es mucho) sigo con la v4.98 de CRM32Pro y como siempre mejoras aunque empiezo a pensar que darme la paliza de liberar las cosas quizas es demasiado… no parece que nadie este usando la lib, hubo un momento prometedor pero bueno… por eso en los ultimos meses me he centrado mas en desarrollar internamente que en liberar nada…

En fin, esperemos que en 1 semana este el scrollengine disponible para descarga 馃檪

Saludos!


ScrollEngine – Funcionando!!

6 mayo, 2007

Un mes ha pasado desde que me puse con el scrollengine y aunque no he podido dedicarle mucho tiempo de programacion…si pude darle ca帽a al tema del dise帽o y asi ha pasado…que el resultado ha sido bastante bueno, es potente, sencillo y flexible 馃檪

Ahora mismo podria subir una peque帽a demo pero como no he visto que este nadie interesado… me volcare en continuar su desarrollo, ahora me he puesto con el formato del mapa nativo (habilitando la posibilidad de guardar y cargas mapas), mas tarde vendra la importacion de mapas desde otros formatos: tiled, MapEditor de Mike y posiblemente del mappy. Y despues de eso… uff, eso ya es otra historia que veremos si me pongo con ella o me si centro en el juego en si de PKM06.

Pero vamos, que el ultimo mes ha sido bastante productivo 馃檪 Ya sabeis, si alguien quiere ver como va el tema que me de un toque y le paso el codigo + ejemplo.

Nada mas por el momento! hasta la proxima!


Siguiente paso…

2 abril, 2007

Despues de unos meses un poco vago(en cuanto a la programacion se refiere eh?), mucho lio y mucho trabajo en el curro, la cosa parece que vuelve a su cauce original, me he vuelto a inspirar y afortunadamente en el curro he podido conseguir otro puesto que, en unos meses me dejara 2 dias libres entre semana mas luego el finde, luego preveo mucho tiempo que junto a la inspiracion puede dar grandes frutos :).

El DPF2XML esta terminado y en la web, una nueva version el MapEditor de Mike con una correccion mia esta tambien OK y en la web… y ahora es tiempo de dise帽ar y plasmar en papel todas las ideas que he ido pensando las ultimas semanas acerca de un scroll engine montado sobre CRM32Pro que dicho sea de paso, lo utilizaremos en el grupo PKM06 para nuestro proyecto.

En cuanto tenga algo materializado, ire escribiendo o por aqui o por el foro para que veais su avance, dudas, peticiones, criticas, ayuda, sugerencias, etc…

Lo dicho…a trabajar!! 馃檪

Y el que este de Semana Santa… a disfrutar!!


DPF2XML – Exportador/importador DPFXML

20 marzo, 2007

Despues de unos meses sin tiempo libre, poco a poco voy haciendo hueco a esto de la programacion y desarrollo.

En Navidad, estuve liado con un exportador/importador de DPF a XML y al reves y en la ultima semana y durante esta, lo he estado dando los retoques finales. Al principio surgio como una herramienta para el equipo PKM06 y nuestro proyecto pero despues pense que puede ser util a cualquier otro.

La idea es poder abrir la posibilidad de crear utilidades utilizando XML para luego crear un DPF que entienda el codigo. En concreto, en PKM06 lo utilizaremos como punto de enlace entre editores realizados con .Net y el juego en si desarrollado cn CRM32Pro.

A continuacion, os pongo un ejemplo de un DPF transformado a XML:
dpf2xml.jpg

Manana actualizare la web con dicho exportador junto a una nueva version del MapEditor de Mike.

Espero que os sea util!!

Saludos!