Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-04-2018
Avatar de piXelicidio
piXelicidio piXelicidio is offline
Miembro
 
Registrado: nov 2008
Posts: 21
Poder: 0
piXelicidio Va por buen camino
Hormigas Locas 2018 - Delphi + SDL2

... y sigue este con su hormiguero!

He creado este nuevo hilo para dedicarlo exclusivamente, si me permiten, al desarrollo de mi nueva versión de simulación de hormigas. (referencia a la versión vieja)
Toda la aventura con Delphi XE3 y SDL 2.0.



Proyecto en Github:
https://github.com/piXelicidio/hormigas-locas

10 años después este remake trata de ser más moderno, el código más limpio y la applicación más divertida.
Por el momento la idea es compartir este modo "sandbox" como código abierto y que partiendo de esta base quien quiera pueda crear un juego más específico (incluyéndome a mi)... o simulación, o estudio científico

Y si hay por aquí algún fan de Lua, pues le cuento que ya esta versión "sandbox" de las hormiguitas la tengo implementada y muy completa con Lua + Love2D:
https://github.com/piXelicidio/locas-ants
Responder Con Cita
  #2  
Antiguo 10-04-2018
Avatar de piXelicidio
piXelicidio piXelicidio is offline
Miembro
 
Registrado: nov 2008
Posts: 21
Poder: 0
piXelicidio Va por buen camino
Las dependencias

Por si alguien se atreve a compilar la aplicación en su estado actual:
(Mas adelante quizás elimine dependencias, lo pensaré )

- Necesita ver las units de SDL2: https://github.com/piXelicidio/Pascal-SDL-2-Headers
- En la carpeta Output junto al .EXE se necesitan las DLLs del SDL2:
SDL2.dll
SDL2_image.dll
SDL2_ttf.dll
zlib1.dll
libfreetype-6.dll
libpng16-16.dll
- Necesita la unit px.sdl para facilitar el trabajo con SDL: https://github.com/piXelicidio/px.sdl
- Y también esta otra para vectores: https://github.com/piXelicidio/pxUni...r/px.vec2d.pas

- ... y mas tarde todo puede cambiar asi que solo le haga caso a mis últimas palabras.
Responder Con Cita
  #3  
Antiguo 10-04-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Responder Con Cita
  #4  
Antiguo 10-04-2018
Avatar de piXelicidio
piXelicidio piXelicidio is offline
Miembro
 
Registrado: nov 2008
Posts: 21
Poder: 0
piXelicidio Va por buen camino
Así lucen 20mil hormigas!!



Tenía dos razones de volver al delphi con las hormigas:
1) - Porque me gusta.
2) - Porque tenía la esperanza de poder mostrar más de 10mil hormigas sin bajar de los 30 fps. Hecho!

(Alguien mañoso con muy buena vista dirá que en el GIF se ve que FPS = 25, eso es que el FPS baja mucho cuando hago la captura de pantalla con ScreenToGif )
Responder Con Cita
  #5  
Antiguo 10-04-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.119
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Estupendo proyecto. Es como para meterse a investigar. Sin embargo, y, por favor, para los que no tenemos tiempo... ¿es posible descargarlo ya compilado? De veras que me gustaría echarle un vistazo.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 10-04-2018 a las 18:57:21.
Responder Con Cita
  #6  
Antiguo 10-04-2018
Avatar de piXelicidio
piXelicidio piXelicidio is offline
Miembro
 
Registrado: nov 2008
Posts: 21
Poder: 0
piXelicidio Va por buen camino
Cita:
Empezado por dec Ver Mensaje
Hola a todos,

Estupendo proyecto. Es como para meterse a investigar. Sin embargo, y, por favor, para los que no tenemos tiempo... ¿es posible descargarlo ya compilado? De veras que me gustaría echarle un vistazo.

Hola @dec,

Tienes mucha razón, ahora mismo la aplicación está en un estado muy temprano, pero pronto veré como incluyo todo compilado con sus DLLs para que pueda ejecutarse de un solo click!
Responder Con Cita
  #7  
Antiguo 10-04-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.119
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Cita:
Empezado por piXelicidio Ver Mensaje
Hola @dec,

Tienes mucha razón, ahora mismo la aplicación está en un estado muy temprano, pero pronto veré como incluyo todo compilado con sus DLLs para que pueda ejecutarse de un solo click!
Se agradecería. Yo, por si acaso, estoy suscrito a este hilo.

El programa (ya en su anterior versión) resulta de veras curioso, engancha, y, se queda uno con las ganas de investigar más a fondo su funcionamiento.

¡Enhorabuena y gracias por compartirlo con nosotros!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 10-04-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
¡ Excelente !

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 13-04-2018
Avatar de piXelicidio
piXelicidio piXelicidio is offline
Miembro
 
Registrado: nov 2008
Posts: 21
Poder: 0
piXelicidio Va por buen camino
DrawText en SDL2

Ahora necesito texto para la applicación de las hormigas, tanto para debug como para la GUI.
SDL2 es muy bonito hasta que te dás cuenta que no puedes dibujar texto...
Bueno si puedes, pero usando SDL2_ttf.dll... ah, pero es muy lento, solo hace el render de la TrueType en memoria de sistema, que hay que convertir a textura... y uff...

Entonces lo más eficiente sería BMFont, seguro alguien tendrá algo hecho por ahí, mil veces,... pero tengo ganas de hacerlo yo y no quiero cargar un bitmap pre-generado, quiero generarlo en tiempo de ejecución y divertirme implementando el DrawTextXY...

Entonces ya esta hecho y funciona! :



El fondo de la imagen son 3500 veces impreso mi nombre con transparencia, alcanzando más de 60fPS.
Con el método basico de hacer el render del texto a una SDL_Surface, luego convertir a SDL_Texture, mandar la textura para la pantalla, y librerar esas memorias, el Frame Rate bajaba a 20 por segundo con solo 100 veces imprimir dos palabras...

Este es el código para generar la textura:

Código:
function Tsdl.createBitmapFont(ttf_FileName: string;
  fontSize: integer): TBitmapFont;
var
  w  :integer;
  charWidth :array[0..255] of integer;
  i,j: Integer;
  c:byte;
  surf :PSDL_Surface;
  surfChar :PSDL_Surface;
  color :TSDL_Color;
  destRect :TSDL_Rect;
  sdlFont :PTTF_Font;
begin
  Result.maxW := 0;
  sdlFont := TTF_OpenFont(StrToSdl( ttf_FileName ), fontSize );
  if sdlFont = nil then
  begin
    errorMsg('Can''t open font '+ttf_FileName + ' ' + string( TTF_GetError ) );
    exit;
  end;
  Result.srcFont := sdlFont;
  for c := 0 to 255 do
  begin
    //storing char widths and finding the max width
    TTF_SizeText(sdlFont, strToSDL(string(char(c))), @w, nil);
    if w > Result.maxW then Result.maxW := w;
    charWidth[c] := w;
  end;
  Result.maxH := TTF_FontHeight(sdlFont);
  Result.texW := Result.maxW * 16;
  Result.texH := Result.maxH * 16;
  //creating the surface to draw the char matrix of 16 x 16
  surf := SDL_CreateRGBSurfaceWithFormat(0, Result.texW, Result.texH, 32, SDL_PIXELFORMAT_RGBA8888);
  SDL_FillRect(surf, nil, $0 );
  c:= 0;
  color.r := 255;
  color.g := 255;
  color.b := 255;
  color.a := 0;
  for j := 0 to 15 do
    for i := 0 to 15 do
      begin
        if c > 0 then
        begin
          //Rendering a single character to a temporary Surface
          surfChar := TTF_RenderText_Blended(sdlFont, strToSDL(string(char(c))), color );
          destRect := sdl.Rect(i*Result.maxW, j*Result.maxH, charWidth[c], Result.maxH);
          Result.asciiSprites[c] := destRect;
          //bliting the character to our big surface matrix
          SDL_BlitSurface(surfChar, nil, surf,  @destRect  );
          SDL_FreeSurface(surfChar);
        end;
        inc(c);
      end;
  //to fix the problem with alpha premultiplied od TTF_RenderText_Blended
  //we get the image as a grayscale mask and convert the intensity to alpha channel
  sdl.ConvertGrayscaleToAlpha( surf );
  //convert to texture;
  Result.srcTex := SDL_CreateTextureFromSurface(sdl.rend, surf);
  SDL_FreeSurface(surf);
end;
Y este es el codigo de imprimir un texto en pantalla:
Código:
function Tsdl.drawText(s: string; x, y: integer; color: cardinal;  alpha: byte): TSDL_Rect;
var
  i :integer;
  b :byte;
  srcRect :PSDL_Rect;
  dstRect :TSDL_Rect;
  sc : PSDL_Color;
begin
  sc := @color;
  SDL_SetTextureColorMod(fFont.srcTex, sc.r, sc.g, sc.b);
  SDL_SetTextureAlphaMod(fFont.srcTex, alpha);
  dstRect := sdl.Rect(x,y, fFont.maxW, fFont.maxH);
  for i:=1 to length(s) do
  begin
    b := ord( s[i] );
    srcRect := @fFont.asciiSprites[b];
    dstRect.w := srcRect.w;
    dstRect.h := srcRect.h;
    SDL_RenderCopy(fRend, fFont.srcTex, srcRect, @dstRect);
    dstRect.x := dstRect.x + dstRect.w;
  end;
  result.x := x;
  result.y := y;
  result.h := fFont.maxH;
  result.w := dstRect.x - x;
end;
Seguro todo mi código explota si se intenta meter a la fuerza Unicode ... ni quiero saber, por ahora mi implementación e intención es solo ASCII latino.
Responder Con Cita
  #10  
Antiguo 13-04-2018
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.237
Poder: 20
ElKurgan Va camino a la fama
Muy bueno.
Gracias por compartirlo

Saludos
Responder Con Cita
  #11  
Antiguo 16-04-2018
Avatar de piXelicidio
piXelicidio piXelicidio is offline
Miembro
 
Registrado: nov 2008
Posts: 21
Poder: 0
piXelicidio Va por buen camino
Tampoco tenía controles (GUI) en SDL2 con Delphi XE3, así que tuve que hacerlo desde cerito...

https://twitter.com/DenysAlmaral/sta...66578468483072

Sin protestar mucho porque en realidad pensé sería divertido. La experiencia con la VCL me sirvió de inspiración pero enfocado mejor en que la aplicación es ejecutada en tiempo real, no ventanas pasivas.. la cosa cambia.
La fuente del trabajo con SDL2 está por aquí: https://github.com/piXelicidio/px.sdl
Sigo pensando en después unirlo todo para que sea más facil de descargar, pero tengo conflictos filosóficos pendientes al respecto.



Lo único que encontré por ahí fue esto: https://github.com/dalerank/nanogui-sdl, y me pareció bastante distante
a lo que yo necesitaba, prefería algo más basico. Ademá que requiere XE5.

Por cierto tengo noticias interesantes:
He probado compilar pruebas de SDL2 con Delphi Starter 10.2 y por el momento todo funciona. Me preocupaba que si mi intención era que estas hormigas fueran Open Source, entonces dependiera de versiones costozas de Delphi que pudieran ser obstáculo para alguien que solo quiera jugar con los fuentes. Almenos podrá compilar para Win32 de gratis.
Responder Con Cita
  #12  
Antiguo 19-04-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.119
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Veo que has publicado una nueva "release" en Github con un ejecutable listo para probar el programa, que, por cierto, funciona muy bien. ¿Lo malo? Que ahora me tiraré media hora jugando con el mismo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #13  
Antiguo 19-04-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.119
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

¿Te has planteado vender el programa? Yo creo que podría ser muy interesante. Añadiendo lo que los usuarios demanden (y sea posible), creo que al final quedaría una especie de juego entretenido y curioso, ¡en mi opinión!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #14  
Antiguo 19-04-2018
Avatar de piXelicidio
piXelicidio piXelicidio is offline
Miembro
 
Registrado: nov 2008
Posts: 21
Poder: 0
piXelicidio Va por buen camino
Primera versión usable:

Ah! pero @Dec, tu si que eres rápido! Aqui ya venía yo a postear al respecto



Pues así es, ya está disponible un ejecutable para Windows aquí: https://github.com/piXelicidio/hormi...ses/tag/v0.0.1

Detalles que me encantaría saber: A cuantos FPS ejecuta en tu PC y cual CPU y GPU. Ahora mismo el FPS está ilimitado. También si lo corren en una pantalla de alta definición (más de 1080p), me gustaría saber como se comporta.

Controles:
- Con la rueda del Mouse: Zoom in/Out.
- Seleccionan un tipo de bloque y "dibujan" en el mapa con click izquerdo.
- F11, alterna FullScreen y Ventana.
- Teclas WASD para mover la cámara.
- ESC para salir.

@Dec, te respondo tu preguntas en un siguiente post
Responder Con Cita
  #15  
Antiguo 19-04-2018
Avatar de piXelicidio
piXelicidio piXelicidio is offline
Miembro
 
Registrado: nov 2008
Posts: 21
Poder: 0
piXelicidio Va por buen camino
Cita:
Empezado por dec Ver Mensaje
Hola a todos,

¿Te has planteado vender el programa? Yo creo que podría ser muy interesante. Añadiendo lo que los usuarios demanden (y sea posible), creo que al final quedaría una especie de juego entretenido y curioso, ¡en mi opinión!
Mi idea actual que estoy debatiendo en mi cabeza es dejar esta versión de código abierto en un estado básico y bién definido, sin complicarlo demasiado, y dejarlo así de gratis, open source. Que cualquiera pueda luego estudiarlo, transformarlo, lo que quiera. Este sería la versión Sandbox free open source.

Mientras pudiera continuar otra versión privada, con objetivos más ambisiosos de publicar en Steam, con algunas ideas de gameplay que estoy elaborando, con toques supervivencia y simulación, pero no tratar de imitar estrictamente una colonia de hormigas de la vida real, si no algo más en función de lo divertido. Aunque aparentemente no tengan que ver, me inspiran elementos de Terraria y Factorio. Pero algo muy importante que he aprendido a tropiezos es escuchar la reacción de la gente, y opiniones como la tuya , para saber que hacer con esto, y hasta donde vale la pena invertirle esfuerzo. Uno de los pasos pudiera ser montar un Patreon, pero de nuevo pienso que eso me lo dirá la reacción de la gente, ya veremos
Responder Con Cita
  #16  
Antiguo 19-04-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.119
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Mi PC no es que sea una gran cosa, aunque, tampoco va mal del todo, para el uso que le vengo dando. El "juego" se mueve a entre 90 y 111 FPS, y, aunque se nota en el ordenador que está "trabajando", oyes, estamos hablando de 8000 hormiguitas.

Mi PC tiene un Intel(R) Core(TM) i7-4790 3.60 Ghz y 8 GB de memoria RAM. Respecto de la tarjeta de vídeo, no estoy muy seguro, pero, según este comando "wmic path win32_VideoController get name", se trata de una NVIDIA GeForce GT 730.

Desde luego, yo creo que serían infinitas las posibles opciones: desde controlar una sola hormiga... pasando por toda una colonia... tal vez con su propia "reina"... no sé si existe software similar, esa es la verdad, ¡ni tampoco soy un genio en los negocios!

Lo del "Patreon" no lo termino de ver, puesto que conozco gente con nivel que hace vídeos, por ejemplo, muy útiles y curiosos, y, sin embargo, su "Patreon" no termina de despegar. Y es que cuando te dan la opción de no pagar o sólo de donar... pero, ojo, no quiero desanimarte.

Ahora bien, tal vez he pecado de bocazas con lo "¿te has planteado venderlo?", porque, en efecto, ahí entran variables personales, en fin, lo que yo quería decir (y mantengo) es que me parece un programa o juego que puede tener su público, en efecto.

P.S. Mi monitor es un BenQ muy normal y trabaja a una resolución de 1920 x 1080.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 19-04-2018 a las 19:56:48.
Responder Con Cita
  #17  
Antiguo 19-09-2018
Avatar de piXelicidio
piXelicidio piXelicidio is offline
Miembro
 
Registrado: nov 2008
Posts: 21
Poder: 0
piXelicidio Va por buen camino
Hola por aquí!

Las hormigas siguen vivas, Pero en pausa por unos meses, ... mucho trabajo.

Gracias por los datos @dec


Las buenas noticias dan una nueva motivación y lo estoy pasando todo a Delphi Community Edition, diciéndole adiós al XE3, y eliminando limitaciones para el que quiera jugar con el código sin tener que soltar un duro.

Seguiré avanzando lento, pero sin olvidar las hormiguitas.
Saludos!
Responder Con Cita
  #18  
Antiguo 19-09-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Responder Con Cita
  #19  
Antiguo 28-09-2018
Avatar de piXelicidio
piXelicidio piXelicidio is offline
Miembro
 
Registrado: nov 2008
Posts: 21
Poder: 0
piXelicidio Va por buen camino
Little updates:
- El proyecto cambia de nombre: Ant Planet: Sandbox.
- Ahora se desarrolla en Delphi Community Edition.
- Zero dependencias externas: Descargar, compilar y ejecutar.
Responder Con Cita
  #20  
Antiguo 14-01-2019
Yulexis Yulexis is offline
Miembro
 
Registrado: sep 2016
Posts: 19
Poder: 0
Yulexis Va por buen camino
JAJAJAJAJAJA simplemente GENIAL


Me recuerda a una simulación que realicé hace un tiempo en Delphi 7 a pelo, sin librerías ni nada, a puro código.
En aquel eran hembras (rozadas) y machos (negros).
Soltaba 4 o 5 al azar y comenzaban a caminar por todo el formulario como todas unas jóvenes hormigas locas .
Cuando se encontraban una hembra con un macho imaginen lo que sucedía , luego de lo sucedido , la hembra quedaba preñada, por lo que caminaba más lento.
Después de cierto tiempo, la hembra daba a luz de manera aleatoria (hembra o macho). Permitiendo que la colonia no mermara en miembros a no ser por mala suerte y todos nacieran machos
Las hormiguitas recién nacidas eran las más rápidas porque eran jóvenes y saludables. A medidas que pasaba el tiempo, se hacían más lentas porque envejecían y un tiempo después morían.

Buscaré por las salvas viejas que tengo para ver si lo encuentro y mostrárselo.
Muy divertido crear cosas como esta.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Hola! + Simulación de hormigas! piXelicidio Gráficos 35 10-04-2018 15:03:22
Curso gratis de firebird (hasta el 23.03.2018 o los 20 primeros) Chogo Noticias 3 13-03-2018 18:43:23
Cargar librerías (SDL2) desde iOS kotai FireMonkey 0 09-09-2013 21:58:05
EDBEngineError error $2018 biuti Conexión con bases de datos 2 28-02-2008 20:06:41
Frases locas Nuria Humor 4 29-03-2004 19:17:17


La franja horaria es GMT +2. Ahora son las 19:53:22.


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
Copyright 1996-2007 Club Delphi