Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Librería para hacer juegos con Pascal (https://www.clubdelphi.com/foros/showthread.php?t=38220)

Ñuño Martínez 07-12-2006 01:11:08

Librería para hacer juegos con Pascal
 
Como de vez en cuando se pasa por aquí gente preguntando cómo hacer juegos con Delphi, pues creo que es buen lugar para ofertar la librería en la que estoy trabajando. Se trata de un producto secundario de mi "otra" librería de juegos: Mingro, ya que la nueva API será mucho más fácil de desarrollar si separo una parte de la misma como paquete independiente. Este paquete independiente tiene como única misión servir de enlace entre la librería Allegro y el compilador Pascal, de ahí que se llame Allegro.pas.

Todavía está en pleno desarrollo y falta bastante para que esté completa, pero aun así querría que la probaran y me dijeran qué piensan de ella (a pesar de los problemas que estoy teniendo he conseguido subirla a mi web). Lo que más me interesa es saber si compila y funciona correctamente con Delphi. Tampoco me vendría mal consejos para instalarlo en él (hace años que no lo utilizo y estoy desentrenado).

No hay documentación, así que pregunten qué es lo que necesitan saber. No la he escrito todavía porque como sé cómo funciona podría obviar cosas importantes. De esta forma, con sus preguntas, sabré enseguida qué necesita la documentación para ser completa.

(continúa en el siguiente mensaje)

Ñuño Martínez 18-12-2006 02:41:10

Bueno, pues la librería ya es más funcional y pueden hacerse juegos completos.

Descarga y documentación (incompleta ahora, pero completa en el futuro :)) aquí y ahora

Ñuño Martínez 01-02-2007 21:50:49

Actualizando, que es gerundio...
 
Revivo este hilo para anunciar que acabo de subir a Sourceforge una revisión de mi librería de juegos Allegro.pas. Además de corregir algún error (como, por ejemplo, dos gordísimos en la unidad de las matemáticas en punto fijo que me ha dado bastantes dolores de cabeza) he añadido un montón de nuevas envolventes para algunas de las funcionalidades más interesantes de Allegro, como son las transparencias, los sprites RLE (mucho más ligeros y rápidos que los normales, ¡dónde va a parar! :D ), los mapas de color (utilísimos para crear efectos especiales como convertir a tonos grises, simular visión calorífica al estilo de Predator...), más acceso a archivos de disco y alguna cosilla que se me escapa. También he actualizado la documentación, aunque todavía le queda mucho para estar completa.

La publico ahora, como versión beta, ya que voy a estar fuera de negocio durante una temporada y la versión definitiva va a tardar un rato, todavía... :( Vueltas que da la vida. De todas formas aquí tenéis la página del proyecto desde donde podréis acceder a las descargas y la documentación.

Que la disfruten con salud y ya saben, si tienen dudas, no duden y pregunten. ;)

Onti 01-02-2007 22:15:02

Hola Ñuño

Hice todo tipo de programas, pero los juegos , es algo que siempre he querido hacer algo, pero nada; así que voy a probar tus librerías y empezar por ahí

Salu2

Ñuño Martínez 01-02-2007 22:34:32

¡Oleeeeee! (ya picó uno :D )

Caral 01-02-2007 23:12:31

No Ñuño Martínez,
Si somos mas de uno los que hemos picado.
Mi problema es que me gustaria aprender, pero tendria que empezar por conocer que son, como se instalan y para que sirven las bibliotecas.
Osea, casi nada.:D
Pero ganas tengo.
Saludos

seoane 02-02-2007 01:54:23

Bueno Ñuño, le he echado un vistazo a tu librería. Y se me han presentando un par de problemillas al intentar compilarlos en mi Turbo Delphi. Aquí te dejo una lista con algunos problemas y las soluciones que modestamente utilice, aunque puede que tu encuentres una forma mejor de hacerlo.

Código:

[Pascal Error] albase.pas(56): E2003 Undeclared identifier: 'DWORD'
--> Añadí la unit Windows

[Pascal Error] alfixed.pas(216): E2016 Array type required
--> Anadi la siguiente funcion
  function tabla(Base: TBLptr; Offset: Integer): AL_FIXED;
  begin
    inc(Base,Offset);
    Result:= Base^;
  end;
 
  Y corregí el problema de la siguiente manera:
  al_fixsin := tabla(_cos_tbl,((x - $400000 + $4000) SHR 15) AND $1FF);

  Este problema se repite en varias lineas mas, utilice la misma solución

Incompatible types: 'AL_CHARptr' and 'PAnsiChar'
--> Este error aparece varias veces, un simple Typecast soluciona el problema.

Incompatible types: 'AL_CHARptr' and 'string' 
--> Este error aparece varias veces, un simple Typecast soluciona el problema.

Por cierto el ejemplo expal me gusto, es casi hipnótico :p

Ñuño Martínez 02-02-2007 12:42:33

Cita:

Empezado por seoane
Bueno Ñuño, le he echado un vistazo a tu librería. Y se me han presentando un par de problemillas al intentar compilarlos en mi Turbo Delphi. Aquí te dejo una lista con algunos problemas y las soluciones que modestamente utilice, aunque puede que tu encuentres una forma mejor de hacerlo.

Tendré que echarle un vistazo, aunque no será enseguida :(. Ya sabía yo que tan bueno no podía ser... :p
Cita:

Por cierto el ejemplo expal me gusto, es casi hipnótico :p
De hecho ayer mismo lo estaba probando en el trabajo (no puedo utilizar internet en casa, todavía) y la jefa casi me pilla. Menos mal que me gritó primero "Guillermo, ¿qué te pasa, que estás embobao?" De otro modo estaría en la calle :D.

[edit] Aquí hay algo que se me escapa. Acabo de entrar en la página de descargas y resulta que dice que NADIE HA DESCARGADO LA NUEVA VERSIÓN (4.2.1 beta). ¿Cómo es posible, entonces, que tú, seoane, hayas conseguido obtenerla sin que quedara registrado?

seoane 02-02-2007 14:30:15

Cita:

Empezado por Ñuño Martínez
[edit] Aquí hay algo que se me escapa. Acabo de entrar en la página de descargas y resulta que dice que NADIE HA DESCARGADO LA NUEVA VERSIÓN (4.2.1 beta). ¿Cómo es posible, entonces, que tú, seoane, hayas conseguido obtenerla sin que quedara registrado?

Es extraño, yo acabo de volver a entrar a la pagina y tienes razón que pone 0 descargas, pero yo te puedo asegurar que la baje.

Ñuño Martínez 02-02-2007 15:07:54

¡Olvidé contestar a Caral! No te enfades, anda ;)
Cita:

Empezado por Caral
No Ñuño Martínez,
Si somos mas de uno los que hemos picado.
Mi problema es que me gustaria aprender, pero tendria que empezar por conocer que son, como se instalan y para que sirven las bibliotecas.
Osea, casi nada.:D
Pero ganas tengo.
Saludos

No te preocupes. Lo explico en el archivo "leeme.txt", en castellano como debe ser ;). Simplemente te bajas la versión precompilada de Allegro, buscar el archivo "alleg42.dll" y copiarlo en tu directorio "Windows/System32". Luego te descargas la versión precompilada de Allegro.pas y haces lo mismo con el archivo "alpas42.dll". Finalmente te descargas la versión "normal" de Allegro.pas, haces los cambios que dice seoane en los archivos fuente que hay en el subdirectorio "lib" y copias estos archivos donde tengas las librerías de Delphi (acabo de instalar Turbo Delphi y me dice que están en C:\Archivos de programa\Borland\BDS\4.0\lib). A partir de aquí ya puedes abrir los ejemplos que están en el directorio "examples". La documentación la puedes consultar "on-line" en http://allegro-pas.sourceforge.net (en inglés por razones de márquetin :D ).

Y para otras dudas, aquí estamos todos :cool: .

Onti 02-02-2007 17:50:56

Cita:

Empezado por seoane
Es extraño, yo acabo de volver a entrar a la pagina y tienes razón que pone 0 descargas, pero yo te puedo asegurar que la baje.

No esta funcionando el contador , porque yo también lo descargue

Saiyan 27-04-2007 16:59:16

Cita:

Incompatible types: 'AL_CHARptr' and 'string'
--> Este error aparece varias veces, un simple Typecast soluciona el problema.
Perdon por la ignorancia...
pero me podrias ayudar diciendo como se usa el TypeCast para resolver esos problemas??.. a los demas ya los arreglé y funcionan bien tus mejoras...

Como arreglo con TypeCast?

sitrico 27-04-2007 17:45:44

No he bajado la librería pero me gusta la idea :cool:

TypeCast = conversión de tipo y debe ser algo como:

PAnsiChar(AL_CHARptr)

Código Delphi [-]
Var
i : Byte;  
begin
i := 1;
If Boolean(i) Then // esto es un TypeCast

Espero no te salga un Invalid typecast

Saiyan 27-04-2007 18:07:48

Muchas Gracias.. Ok, lo pruebo y comento que sucedió.
Gracias...

esta tarde lo pruebo...

Ñuño Martínez 07-06-2007 12:23:25

¡Vuelvo a la carga!
 
Lo dicho. He cambiado varias cosas siguiendo para compatibilizar mejor con Delphi. He subido el archivo de forma temporal a esta dirección. Si alguien me hiciera el grandísimo favor de comprobar si funciona con Delphi y/o Turbo Delphi y me informara del resultado, lo agradeceré enormamente.

Recuerdo que deberéis descargar también las versiones precompiladas de Allegro y de Allegro.pas (los enlaces van directos a las descargas). Únicamente son necesarios los archivos DLL.

Gracias adelantadas.

seoane 07-06-2007 17:52:29

Hola Ñuño,

ahora mismo no tengo mucho tiempo para hacer pruebas. Pero te cuento como me fue con un par de ejemplos.

Primero hay que añadir el directorio "lib" al "Search Path" del proyecto (Menú: "Project/Options/Directories Conditionals/Search Path"). Y definir la condición WINDOWS (Menu: "Project/Options/Directories Conditionals/Conditionals defines").

Luego modificamos la clausula uses de varios .pas

albitmap.pas
Código Delphi [-]
  USES
    albase, alcolor, alvtable
{$IFNDEF FPC}
 {$IFDEF WINDOWS}
,Windows
 {$ENDIF}
{$ENDIF}
;

alfile.pas
Código Delphi [-]
{$IFNDEF FPC}
  USES Sysutils, albase;
{$ELSE}
  USES strings, albase;
{$ENDIF}

alKeybrd.pas
Código Delphi [-]
{$IFNDEF FPC}
  USES Sysutils, albase;
{$ELSE}
  USES albase;
{$ENDIF}

exBlend.pas, lineas (142 y 154)
Código Delphi [-]
  
  image1 := al_load_bitmap (filename, AL_RGBptr(@pal));
  image2 := al_load_bitmap (filename, AL_RGBptr(@pal));

Hasta aquí llegue, probé los ejemplos: exblend, excolmap y el hipnótico expal, en cuanto tenga tiempo le hecho un vistazo al resto.

Ñuño Martínez 07-06-2007 18:05:45

Son más errores y problemas de los que esperaba :(

Lo de poner el path me lo imaginaba. Tendré que añadirlo a la documentación para que la gente lo tenga en cuenta. Estaba pensando en crear un paquete para Lazarus, así que también se podría hacer uno para Delphi, ¿o no?

En cuanto a lo de definir la condición WINDOWS, ¿no tiene Delphi una ya definida? Por ejemplo WIN32 o similar que permita saber que está compilando en él. Dado que existe Kylix supongo que sí habrá una.

El resto de las cosas ya las iré estudiando.

Gracias, y si hay algún detalle más que se necesite cambiar o añadir, decidlo sin miedo.

seoane 07-06-2007 18:10:32

Cita:

Empezado por Ñuño Martínez
En cuanto a lo de definir la condición WINDOWS, ¿no tiene Delphi una ya definida? Por ejemplo WIN32 o similar que permita saber que está compilando en él. Dado que existe Kylix supongo que sí habrá una.

:o Estoy cansado de verla y no me di cuenta hasta que lo preguntaste. La que tiene definida delphi por defecto es MSWINDOWS.

Por lo tanto:
Código Delphi [-]
{$IFDEF MSWINDOWS}
,Windows
{$ENDIF}

Ñuño Martínez 09-07-2007 18:24:44

Allegro.pas ataca de nuevo
 
"Raudo como una centella
en su corcel verde botella (...)"
regresa Ñuño con sus ideas de bombero.

Pues eso, que le he hecho unos pocos cambios y me arriesgo a subirlo a su web oficial, eso sí, sigue siendo una versión "beta" porque quiero que la definitiva tenga ya toda la documentación completa y un juego de demostración para que la gente pueda empezar a cacharrear (el editor de mapas está casi terminado ya :cool:).

La página de descargas para que le echéis un vistazo.

Lo que me interesa saber, especialmente, son dos cosas:
  • Que las instrucciones de instalación y uso son claras, se entienden y sirven
  • Que compila bien en Delphi sin tener que hacer cambios
A ver si esta vez lo he conseguido, puedo terminar la versión estable y puedo respirar tranquilo de una pugnetera vez, que eso de tener todos los proyectos a medias y sin terminar no es nada bueno para la salud.

Ñuño Martínez 24-07-2007 09:25:38

Aquí estoy de nuevo, porque hay nueva versión. Estuve haciendo un juego y detecté un par de errores, muy simples pero bastante molestos. La página de descargas de nuevo...

El juego puedo publicarlo por culpa del servidor :mad: A ver si consigo solucionar un problema que tengo y contrato a Emilio de una vez :rolleyes: (Espero que no se haya enfadado por el último plantón, pero uno no gana para sustos e imprevistos).


La franja horaria es GMT +2. Ahora son las 12:46:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi