29 de diciembre de 2011

Y más cambios internos...


Sigo modificando muchas rutinas internas, sobretodo añadiendo bastantes puntos de control para intentar evitar el uso indebido ó torpe del usuario final y que descontrole la aplicación.

También he añadido un rótulo con el nombre temporal del juego, ElectricRPG. :-P

2 de diciembre de 2011

Rutina LOAD/SAVE incluida... y más.



Sigo cada día escribiendo código. He añadido la rutina de LOAD/SAVE para las variables de configuración del juego así como de los mapas escritos con el EDITOR.

Poco a poco estoy haciendo modificaciones al aspecto gráfico. También he optimizado internamente la rutina de timming que controla la velocidad de las animaciones.

28 de noviembre de 2011

El editor de mapas


Quiero probar todos los movimientos de los enemigos en situaciones diversas; para esto necesito diseñar algunos mapas (los generados aleatoriamente no sirven ya que no cumplen algunas condiciones de distribución que busco).

Así que he incluido a la aplicación un sencillo editor de mapas... de paso añadiré las rutinas de SAVE/LOAD de los ficheros.

19 de noviembre de 2011

Limpiando el código

He terminado de programar la parte de control de los bot enemigos y todo parece funcionar como debe. La prueba realizada en iOS no ha dado ningún problema.

Voy a limpiar el código de comentarios y rutinas obsoletas en preparación de la siguiente fase; desarrollar las reglas del juego para el jugador y bots.

En esta parte es donde se deciden los puntos a aplicar, las normas de comportamiento de cada tipo de bot dependiendo de su situación particular, el control de la partida por los diferentes mapas, etc.

Quiero buscar algún momento para grabar un vídeo del juego en el iPad...

Ejecutando en iPad


14 de noviembre de 2011

12 de noviembre de 2011

Programando los Bot enemigos

Llevo unos días sin publicar nada en el blog, aunque lógicamente sigo trabajando en el juego. Actualmente me encuentro en la parte dedicada a la IA de los bot enemigos.

Tengo que tener en cuenta multitud de factores a la hora de dotar de inteligencia a los enemigos en el juego; hay que controlar el estado de cada bot, su posición con respecto al personaje controlado por el jugador, el tipo de acción y/o ataque a realizar (y las consecuencias que conlleven), etc.

En cuanto esta parte de la programación esté solventada, posiblemente publique una Alpha con creación de mapas aleatorios... así los betatesters interesados podrán trabajar en encontrar bugs.

Sigo programando... :)

7 de noviembre de 2011

Explotando sprites...

Inspirado por los efectos del juego Voxatron, esta semana pasada he empleado algunos ratos en montar mi propia rutina de efectos de explosiones.




Se pueden apreciar que los vectores de desplazamiento se entrecruzan unos con otros. Esto ya está solventado para la versión final implementada, que se expande como corresponde.

Además el movimiento de píxeles en mi caso es más brusco (cada 5px).

3 de noviembre de 2011

Añadiendo la "IA" de los bots


Estoy insertando todo lo relativo a las acciones de los bots. No quiero complicarme la vida así que pienso programar alguna rutina sencilla. La idea es realizar una busqueda del recorrido en el mapa y luego mover los enemigos hacia la posición de nuestro personaje para atacarle.

También he añadido la opción de pasar a pantalla completa; por otro lado he rediseñado las diferentes pantallas de opciones que ahora han pasado de una a tres.

31 de octubre de 2011

Añadiendo Bots enemigos...


He empezado a añadir los Bot enemigos, para ello he creado esta estructura (no definitiva):

TYPE Bot_Enemigo
     PosX
     PosY
     Activado
     Tipo
     Grafico
     Grafico_Inicial
     Energia
     Ataque
     Defensa
     Estado
     Accion
ENDTYPE

24 de octubre de 2011

Modificando la pantalla de juego



He ajustado los diferentes componentes del panel de juego encajándolos dentro de un marco que he decidido esté en todo momento.

Ahora el mapa es más pequeño; puedo jugar con los parámetros de posición XY para centrarlo en la pantalla si es necesario.

18 de octubre de 2011

Preparando Botonera


Ya he modificado las rutinas de control de botones para que funcionen en "modo gráfico" y no simulado con un recuadro y textos como hasta ahora.

Así que ya estoy preparando los gráficos correspondientes a los botones...

17 de octubre de 2011

App GLB identificada como PDM.Keylogger

Lo que faltaba... ahora salta el Antivirus Kaspersky y me dice que la aplicación compilada con GLB es peligrosa y que contiene el código malicioso correspondiente a PDM.Keylogger.

Desde el foro de GLB, me aconsejan que envíe el EXE a Karspersky para que actualicen sus firmas...

Pffffffffffff

16 de octubre de 2011

Trabajando en el proyecto


Terminada la parte de teñir los sprites, actualmente me encuentro modificando las capas de renderizado de la aplicación.

He estado poniendo en orden el diferente pintado de los fondos, sprites personaje, objetos, etc... Internamente se pintan las cosas en diferente orden en comparación al principio del proyecto. Ahora dejo para el final de todo la impresión de la máscara de efectos.

Esta semana ya me enfrento a la IA de los enemigos y poco más... quiero avanzar en todo lo posible. Las pruebas realizadas con la última versión de todo (GLB, Lion, Xcode) han funcionado perfectamente en el iPad.

Sigo adelante!!!

4 de octubre de 2011

Jugando con los colores

Se me ha ocurrido la tontería de añadir diferentes paletas de colores a la aplicación. :-P

Las pantallas corresponden a mis primeros test con una rutina propia que simplemente modifica el fondo RGB y la transparencia de los sprites que se pintan encima.

Comentándolo con el amigo Javier, éste me propone una rutina de cosecha propia alternativa; teñir los sprites.

Próximamente en este blog...




Sprites de personajes

Diseños correspondientes al gráfico del protagonista principal. Realizados con la herramienta Sprite Something para iPad.


1 de octubre de 2011

Añadiendo items al mapa

Este juego utiliza una rutina para generar el mapa aleatoriamente a modo de laberinto.


Una vez tengo el mapa creado inserto los objetos también de forma aleatoria mediante una función que comprueba si la posición X/Y está libre u ocupada ya por un objeto ó personaje.

FUNCTION Inserta_Mapa_Datos_OBJETOS: Codigo_Objeto, Cantidad_Objetos

LOCAL Objetos_Insertados
LOCAL PosX_Insertar
LOCAL PosY_Insertar
Objetos_Insertados=0

WHILE Objetos_Insertados < Cantidad_Objetos
  PosX_Insertar=RND(MAPA_Ancho-1)
  PosY_Insertar=RND(MAPA_Alto-1)

  IF MAPA_Datos_BLOQUEO[PosX_Insertar][PosY_Insertar]=1 AND MAPA_Datos_OBJETOS[PosX_Insertar][PosY_Insertar]=0
  MAPA_Datos_OBJETOS[PosX_Insertar][PosY_Insertar]=Codigo_Objeto
  Objetos_Insertados=Objetos_Insertados+1
  ENDIF

  IF PosX_Insertar=HEROE_PosX AND PosY_Insertar=HEROE_PosY
  MAPA_Datos_OBJETOS[PosX_Insertar][PosY_Insertar]=0
  Objetos_Insertados=Objetos_Insertados-1
  ENDIF
WEND

ENDFUNCTION

29 de septiembre de 2011

Retomando el proyecto...

He recuperado el proyecto que comentaba en el post anterior...


Como hacía tiempo que no abría este desarrollo, me ha tomado un par de ratos el ponerme al tanto del código fuente que escribí en su momento.

Tras repasar los procedimientos y funciones que incluye, me encuentro actualmente revisando las variables que utilizo y eliminando todo aquello que no es necesario ó que no está al 100% implementado (o funcionando como debiera).

Seguramente para el fin de semana ya tendré lista una versión todavía muy Alpha.

26 de septiembre de 2011

Tomando decisiones...

He estado repasando entre todo el material de mis backup los proyectos que he ido desarrollando desde la creación del blog...

Tras el disgusto del disco duro me he propuesto terminar como mínimo uno de los juegos ya mismo, sin más pausas ni esperas... tengo varias opciones:


El juego principal y objeto inicial del blog se me antoja como un proyecto demasiado largo; sólamente la parte de diseño de mapas se puede alargar casi un año más... creo que es demasiado tiempo para un desarrollo en solitario.

De momento lo voy a aparcar. Siempre puedo volver a él ya que tengo todo el código fuente guardado y comentado para futuros usos.


De éste diseño casi no hay explicaciones en el blog. No he comentado ni el gameplay ni el objetivo del juego, aunque sí algunos post sobre el diseño del mismo (ya que en este caso es la parte importante del desarrollo).

Lo voy a dejar a un lado... los diseños de éste proyecto son los que he perdido en la tragedia; ahora mismo no pienso repetirlos. Quizás más adelante...


Finalmente me queda esta otra idea... se trata del juego que escribí mientras estaba con mi madre, durante su convalecencia por causa del accidente que sufrió.

Tengo montado el gameplay, los gráficos... faltaría implementar un sistema de menús, la parte iOS y pulir ciertos detalles para terminar. Creo que me voy a quedar con ésta opción; me apetece bastante terminar este proyecto con píxeles gordos...

... Más noticias en breve.

23 de septiembre de 2011

SYSTEM FAILURE


Como en la película Matrix, la máquina principal donde programo se ha "detenido"... el ordenador llevaba varios dias avisándome con inestabilidades, cuelgues, reinicios automáticos, etc...

Finalmente (y como era de preveer) el sistema ha fallado y ahora me toca renovar el equipo...

Lo peor es que he perdido el disco duro y los últimos avances de mis desarrollos con GLB/Photoshop...

Ahora me planteo recuperar/retomar algún proyecto del backup ó por el contrario seguir con lo que tengo "a medias", aunque ésto puede significar el repetir las últimas versiones de todo (sinceramente no me apetece nada).

La verdad es que estoy bastante bajo de moral... :-(

29 de agosto de 2011

Vuelta al trabajo...

He desconectado por casi tres semanas. Cero programar. Cero diseñar. Cero TI.

Había que descansar un poco...

Hoy... vuelta al trabajo...

8 de agosto de 2011

Lógica terminada, peparando interface

He terminado la programación básica de la aplicación. Falta por retocar algunos detalles bastante sencillos que iré puliendo a medida que implemento el aspecto gráfico final.

Como ya he comentado, el proyecto es muy simple... ;)

26 de julio de 2011

GLBasic v10.057 - Fichero log_e.gbas

A continuación los cambios introducidos en el lenguaje así como los diferentes avances (y solución de bugs) para las "nuevas" plataformas soportadas.


Ahora podemos compilar para: Win32, Win32-DLL, Linux, OsX, iOS, WebOs, Android, WinCE, GP2X, Wiz y Pandora... :D

(fichero log_e.gbas)
// 10.057 *** RELEASE V10 ***
// WebOS:
// Bugfix for MOUSESTATE.
//
// Android:
// NETWEBEND works.


// RC 10.053
// Core:
// LOADSPRITEMEM pixels were not returned.
//
// Android:
// Compiling failed.
// Compiler warning in ant/main_rules.xml has been solved.(Release)
// Cleaning works even if ADB is running.
//
// WebOS:
// SYSTEMPOINTER TRUE is forced.


// RC 10.051
// Core:
// GETPIXEL ignored SETORIENTATION.
// KEY() slightly faster.
// GRABSPRITE didn't work on some platforms when out of screen.
// MOUSESTATE/MOUSEAXIS code reqritten from scratch.
// Acceleration values are correct now.
//
// WebOS:
// KEY() for gestures works better.
//
// Android:
// CREATESCREEN can fallback to GRABSPRITE method if unsupported.
// Icon gets shiny default frame.
// PLATFORMINFO$("DEVICE") returns "KEYBOARD" or "TOUCHSCREEN".


// RC 10.042
// 3D:
// X_SCALING and shadows work together (very small speed impact).
// X_SPOT_LT -3: first call sets light colour. It's flushing shadows
// when you turn that light off.
//
// WebOS:
// DECLARE calls will fail now. HP disallows the use of dlopen/dlsym API.
// You can submit to the HP store again, now.
// Icons are 64x64 pixels (as required for WebOS). Must restart device to
// regenerate icon cache.


// RC 10.013
// Editor:
// Fixed a code folding bug.
//
// Win32:
// F10, LAlt do no longer pause/lock the application.
//
// DDgui:
// Combo uses list for the box. Scrolls item into view.
//
// 3D:
// X_LINE changed colour of 3D objects drawn afterwards.
// Shadows where covering lit side of flat objects.
// X_SPOT_LT -3: The shadow is tainted with the colour now.


// RC 10.012
// New command:
// SOCK_GETREMOTEIP, SOCK_GETREMOTEPORT // remote computer info (also UDP)
// SOCK_SETBLOCKING // blocking mode of socket
// X_GETMATRIX // Get current matrix for X_DRAWOBJ position
// SETORIENTATION iMode // Set the screen rotation (iPag e.g.)
// GETORIENTATION() // ... and get that value.
//
// Editor:
// New function File/Project/Clean up
// that cleans out build files.
// User keywords must be 2 characters long at least now.
// Icons must be transparent PNG for transparency now.
// Icons are scaled using bicubic filter -> excellent quality.
// gbas/gbap files have different icons now.
// Mac-Icons are generates from the icon.png file.
//
// Project options -> Version number is available.
// You can query it with PLATFORMINFO$("VERSION").
//
// All platforms except Win/Linux build into "distribute" directory now.
// .app/Media is copied into distribute on build.
//
// Core:
// Programs also try to load Media/smalfont.png and Media/smalfont.bmp
// on startup.
// INKEY$ works much better and buffers multiple
// key presses druing one showscreen cycle (up to 16).
// INKEY$/INPUT$ returned \r instead of \n. Bug is fixed.
// URLENCODE$/URLDECODE$ caused wrong output with
// codes>127. It will be converted ISO 8859-1 to UTF-8 first
// so php can properly interact with GLBasic now.
// Shoebox leaked memory.
// CONSTANT yielded compiler errors (assign to const object).
// GRABSPRITE id,0,0,0,0 frees the memory. Was a bad leak.
// Fixed bug in loading JPEG images.
// PLATFORMINFO$("APPDATA") is added.
// VIEWPORT on USESCREEN was using wrong y values.
// NET... commands might have dropped packages.
//
// 3D OpenGL|ES (mobile platforms):
// X_SCREEN2WORLD and X_WORLD2SCREEN work now. glGetFloatv() was not supported.
// Clipping improved.
// Loading Fragment shaders only works again.
// Mipmapping ignored -> shows textures now.
//
// Compiler:
// Nested ?IFDEF might have caused trouble.
// ?DEFINE always was triggered.
// 2-pass-compiler implemented. GLOBAL declarations
// from other files are known in stage 2 now.
// This allows:
// INC foo.bar; TYPE Tfoo; bar; ENDTYPE; GLOBAL foo AS Tfoo
//
// Win32:
// SHELLCMD did not return to fullscreen.
//
// MacOSX:
// INKEY$ returned improper stuff for cursor and del keys.
//
// iPhone:
// SLEEP is working properly now.
// HiRes (iPhone 4) icons are generated.
// Default~.png images from .app directory are copied to XCode project.
//
// Pandora:
// GLBasic builds a full featured .pnd package for you.
// The screen size is not fixed anymore, allowing it to run
// on OMAP-3 devices as well.
//
// WebOS:
// appinfo.json is filled with version number and proper strings.
// Fixed crash on 2.1.0 in SPRITE2MEM, SPRCOLL and GRABSPRITE.
// Mousecount limited to 5. More seems to be inaccurate.
// SOCK_GETIP() crashed.
// Ports on firewall for listening were not opened.
// -> internally done with PDL_SetFirewallPortStatus() now.
//
//
// Android:
// possible crash at startup fixed.
// Fix with spaces in path (GLBasic installation and project path)
// Pause does not crash anymore.
//
// Wiz:
// Fix of crash on startup.

Primera pantalla del "proyecto turbo"


Con la programación principal en un 70% (luego sólo quedarán los detalles de implementación del GUI final), presento aquí la primera captura del juego de programación rápida (no invertir un año) para plataforma iPad en el que me he metido.

Espero tenerlo listo en 15 días... Luego vendrá la mejor parte... el diseño del GUI... y los posibles problemas con la Appstore.

24 de julio de 2011

GLBasic v10.057 publicado

Descargando la última versión del programa. En cuanto instale comento las novedades que se incluyen. (La actualización desde el IDE indica erróneamente que v9.040 es la más actual).

8 de julio de 2011

Foro GLBasic - Haz un juego en 3,5 horas


Killy Hello ha publicado un tutorial mostrando las excelencias de GLBasic. Según el post del foro, en 3,5 horas es posible realizar un juego "como Dios manda".

El hilo sobre este tema esta aquí.

El enlace para descargar el juego Frogs 1x1 está aquí.

5 de julio de 2011

"Mini pausa" para nuevo proyecto...


He pensado en realizar una prueba con la appstore de Apple. Para esto se me ha ocurrido desarrollar un juego sencillo, con un gameplay también sencillo. Gráficos pixel y jugabilidad rápida. ;-D

Quiero probar el funcionamiento de la tienda, posibles problemas que me puedo encontrar, qué material necesito en el momento de publicar (banners, imágenes, instrucciones, requerimientos web), etc.

No me gustaría terminar el "mega proyecto" y encontrarme con problemas a la hora de publicar.

25 de junio de 2011

Preparando Bots para el juego


Toca, además de diseñar los niveles... incluír personajes NPC que poblarán los mapas. Habrá bots diferentes, cada uno programado para una función específica.

La imagen corresponde a uno de los primeros diseños; como se aprecia el look está basado en el personaje principal, ya que no quiero variar el estilo de dibujo.