<<< Gemix BETA 6.0 >>>

Actualizaciones, lanzamientos y últimas noticias sobre el lenguaje.

<<< Gemix BETA 6.0 >>>

Postby CicTec » Mon Jan 03, 2011 11:53 am

BETA download: Gemix Studio BETA 6.0 Tools Win32
BETA download: Gemix Studio BETA 6.0 Win32
BETA download: Gemix Studio BETA 6.0 Linux
BETA download: Gemix Studio BETA 6.0 Mac OS X


NOTA: la version BETA y su uso es GRATIS hasta la salida de la version FINAL (ver = README =.TXT para mayor info sobre la licencia de uso)

03/01/2011 BETA 6.0
---------------------------

Language & Core
---------------------

  • + Añadido: nuevos tipos de datos al lenguaje:
    • FLOAT (floating-point single precision 32bits)
    • DOUBLE (floating-point double precision 64bits)
  • + Añadido: soporte de tipo de retorno para los bloques FUNCTION
    ej: FUNCTION FLOAT my_max(FLOAT v1, FLOAT v2)
  • + Añadido: soporte de overloading para los bloques FUNCTION
    ej:
    FUNCTION INT my_max(INT v1, INT v2)
    FUNCTION FLOAT my_max(FLOAT v1, FLOAT v2)
    FUNCTION DOUBLE my_max(DOUBLE v1, DOUBLE v2)
  • + Añadido: nuevas palabras claves al lenguaje: BAND, BOR, BXOR, alias de los operadores &, |, ^
  • + Añadido: operador bitwise NOT (~) y palabra clave alias BNOT
  • + Añadido: operador condicional (?:) al lenguaje, permite utilizar condiciones estilo IF(condition) ... ELSE ... END en las expresiónes
  • + Añadido: opción de compilación _USE_CSTYLE_OPERATORS la cual permite utilizar los operatores estilo C, segun su prioridad y semantica.
    Con esta opción los operadores AND, XOR y OR (&&, ^^, ||) funcionaran como operadores logicos reales, ademas se activara en automatico el sistema de condiciones estilo C
    NOTA: esta opción de compilación rompe la compatibilidad con los programas DIV2
  • + Añadido: opción de compilación _USE_CSTYLE_SIZEOF la cual permite al operador SIZEOF de devolver el tamaño en bytes en lugar de elementos.
    NOTA: esta opción de compilación rompe la compatibilidad con los programas DIV2
  • + Añadido: opción de compilación _USE_CSTYLE la cual permite de activar una serie de opciónes estilo C (matrices, operadores, sizeof, condiciónes, etc...)
    NOTA: esta opción de compilación rompe la compatibilidad con los programas DIV2
  • + Añadido: operador (cast) al lenguaje, permite convertir expresiónes de un tipo en otro tipo
  • + Añadido: soporte cross-compilation al compilador para poder compilar para todas las plataformas disponibles en Gemix desde el SO usado
  • + Añadido: soporte de numeros en notación exponencial
    (ej: value = 1.33e-7)
  • + Añadido: soporte de argumentos de default para PROCESS y FUNCTION
    ej:
    PROCESS wolf(x, y, graph, size = 50, alpha = 128)
    FUNCTION calculate_speed(double start = 300.1234567)
  • + Añadido: soporte de punteros a punteros (ej: int **ptr, ***ptr2, etc...)
  • * Arreglado: bug en la declaración y uso de los punteros multidimención
  • * Arreglado: bug al usar punteros de la forma ptr[<expr>]..., usando la opción de compilación _USE_CSTYLE_MATRIX
  • * Arreglado: bug de error de compilación al declarar estructuras que tenian como primer campo un dato con un tipo explicito (ej: INT val, STRING text, etc...) usando la opción de compilación _USE_CSTYLE_MATRIX
  • * Arreglado: bug en el control de indices para array sin tamaño especificado (ej: int array[] = 1, 2, 3, 4, 5;) cuando se usaba la opción de compilación _USE_CSTYLE_MATRIX
  • * Arreglado: bug que impedía usar constantes declaradas con CONST como tamaño de arrays declarados como campos de una estructura
  • * Arreglado: bug en el uso interno de las cadenas temporales
  • * Arreglado: bug en SIZEOF en el calculo de cadenas, punteros a cadenas y punteros a estructuras
  • * Arreglado: bug en las expresiónes de cadenas usando valores de retorno de funciones

Main
------

  • + Añadido: nueva función EXEC y constantes:
    • _p_wait
    • _p_nowait
    ejecuta un comando externo permitiendo de elegir si bloquear la aplicación o no en la ejecución del mismo
  • + Añadido: nueva función GETENV, que permite recuperar el valor de una variable de entorno
  • + Añadido: nueva función GET_OS y constantes:
    • os_windows
    • os_linux
    • os_macos
    Devuelve un valor correspondiente a una de las constantes para saber en cual sistema operativo se esta ejecutando el programa
  • + Añadido: nuevo tipo utilizable para la función SIGNAL y constante:
    • all_process
    Permite enviar un señal a todos los procesos del programa excepto el actual que llama la función
  • * Arreglado: bug en la función EXISTS en reportar correctamente los procesos existentes cuando se usaba la forma TYPE process
  • ! Información: mejorado control de FPS, ahora más preciso

Graphics
-----------

  • + Añadido: nuevo overload para las funciones ADVANCE y XADVANCE:
    • INT ADVANCE(INT process_id, INT distance)
    • INT XADVANCE(INT process_id, INT angle, INT distance)
    el cual permite mover un determinado proceso desde otro punto del programa (process/function)
  • + Añadido: nuevo overload para las funciones GET_ANGLE y GET_DIST:
    • INT GET_ANGLE(INT process_id1, INT process_id2)
    • INT GET_DIST(INT process_id1, INT process_id2)
    las cuales permiten obtener angulo y distancia entre dos procesos desde otro punto del programa (process/function)
  • + Añadido: nuevas variables LOCAL DESTINATION_FILE y DESTINATION_GRAPH que permiten especificar un grafico como framebuffer de rendering para el proceso
  • + Añadido: nuevas variables GLOBAL DRAW_DESTINATION_FILE y DRAW_DESTINATION_GRAPH
    nuevas funciones:
    • SET_DRAW_DESTINATION
    nuevas constantes para DRAW_INFO:
    • drawing_destination_file
    • drawing_destination_graph
    permiten especificar y obtener el grafico usado como framebuffer de rendering para las primitivas graficas
  • + Añadido: soporte de FPG y MAP comprimidos y encriptados, se añaden los siguientes nuevos overloads:
    • INT LOAD_FPG(STRING fname, STRING password)
    • INT LOAD_FPG_MAP(STRING fname, STRING password, INT fpg_id, INT graph)
    • INT LOAD_MAP(STRING fname, STRING password)
    • INT SAVE_FPG(INT fpg_id, STRING fname, STRING password)
    • INT SAVE_MAP(INT fpg_id, INT graph, STRING fname, STRING password)
    NOTA: ahora SAVE_FPG y SAVE_MAP guardan de forma comprimida en automatico
  • + Añadido: soporte para cualquier tipo de resolución no estandard (ej: 301x255)
  • + Añadido: nueva función SET_VIRTUAL_RESOLUTION que permite establecer una resolución virtual con unas dimenciones diferentes respecto a la física establecida con SET_MODE. El contenido de la resolución física será adaptado a la virtual, estirándolo o encogiéndolo según el caso.
    Se añade tambien la función VIRTUALRESOLUTION_INFO y constantes:
    • virtualres_isvirtual
    • virtualres_aspectratio
    • virtualres_width
    • virtualres_height
    • virtualres_ratiowidth
    • virtualres_ratioheight
    • virtualres_xoffset
    • virtualres_yoffset
    Para obtener info sobre la resolución virtual seteada
  • + Añadido: parametro para soporte de Z en la función DRAW_TILE
  • + Añadido: soporte para regiones sin limite de tamaño
  • + Añadido: nuevo overload para la función OUT_REGION:
    • INT OUT_REGION(INT process_id, INT x, INT y, INT width, INT height)
    Comprueba si un grafico esta dentro de una región rectangular indicada por los parámetros
  • + Añadido: nueva función XOUT_REGION, comprueba si un proceso está dentro, parcialmente fuera o totalmente fuera de una región devolviendo un valor de tipo float que indica que porcentaje del gráfico se encuentra fuera de la región, siendo 0.0 totalmente dentro y 100.0 totalmente fuera.
  • + Añadido: nuevos overloads para las funciones COLLISION y OVERLAP:
    • INT COLLISION(INT x, INT y, INT process_id)
    • INT COLLISION(INT x, INT y, TYPE process)
    • INT OVERLAP(INT x, INT y, INT process_id)
    • INT OVERLAP(INT x, INT y, TYPE process)
    que comprueban si un punto colisiona con un proceso
  • - Eliminado: variable GLOBAL DRAW_REGION inecesaria
  • # Modificado: constante fps_exists -> fpg_loaded
  • * Arreglado: bug en la signature del overload de la función
    GET_REAL_POINT donde el parametro process_id era declarado por ultimo en lugar que primero
  • * Arreglado: bug en GET_PIXEL/MAP_GET_PIXEL en obtener el valor correcto del pixel (en 32bits) en algunas ocasiones
  • * Arreglado: bug de sincronización del puntero del mouse cuando se usaba un filtro grafico 2x (normal2x, scale2x)
  • * Arreglado: bug en las primitivas graficas (DRAW) al usar regiones distintas de la pantalla (0)
  • * Arreglado: bug en UNLOAD_FPG_MAP que no permetia descargar un grafico con codigo 999, dando error de runtime
  • * Arreglado: bug en el uso de los comentarios multilinea que portaba al crash del programa en algunos casos
  • * Arreglado: bug usando la función XXPUT que portaba al crash del programa
  • * Arreglado: bug en CLONE_MAP al duplicar graficos con canal alpha
  • * Arreglado: bug en CLONE_MAP al duplicar correctamente el punto de control 0 en algunos casos
  • * Arreglado: bug en el sistema partial_restore/dump que causaba el crash del programa en algunos casos
  • * Arreglado: bug en las funciones PUT_CSRECT, PUT_RECT, PUT_SRECT, MAP_PUT_CSRECT, MAP_PUT_RECT y MAP_PUT_SRECT nel dibujar correctamente las primitivas en muchos casos
  • * Arreglado: bug en la función DRAW_TILE al usar una region distinta de 0
  • * Arreglado: bug en el sistema interno de blitting que causaba el
    crash del programa cuando se intentaba dibujar en una region inexistente
  • * Arreglado: bug nel restaurar el rendering del programa cuando se cambiaba la resoluccion o profundidad del sistema
  • * Arreglado: bug en el restaurar el rendering del programa cuando se cambiaba la resolución o profundidad del sistema
  • * Arreglado: bug en unas rutinas FX + ALPHA cuando se aplicaban a operaciones de graficos con canal alpha
  • ! Información: rendering SOFT de graficos, más rápidos del 2 ~ 6%
  • ! Información: optimizados algunos FX SOFT, más rápidos del 10 ~ 40%
  • ! Información: optimizados filtros scanline 25-50-75%, más rápidos del 30 ~ 40%
  • ! Información: optimizado filtro normal2x, más rápido del 5 ~ 10%
  • ! Información: optimizada función CLONE_MAP, más rápida del 30%
  • ! Información: optimizado SIZE y SIZE_X/Y, más rápido del 40 ~ 110%
  • ! Información: optimizada función OUT_REGION
  • ! Información: optimizado ALPHA 16bits, más rápido del 5 ~ 50%
  • ! Información: optimizado FADING a 16bits y 32bits
  • ! Información: optimizadas funciones MAP_SET_COLOR y MAP_SET_PIXEL versiones SOFT
  • ! Información: optimizadas funciones de primitivas graficas (DRAW, PUT_PIXEL, GET_PIXEL, MAP_PUT_LINE, etc...)

Input
-------

  • + Añadido: mejor soporte para los valores HAT de los joysticks y nuevas constantes:
    • joy_hat_notavailable
    • joy_hat_centered
    • joy_hat_up
    • joy_hat_right
    • joy_hat_down
    • joy_hat_left
    • joy_hat_rightup
    • joy_hat_rightdown
    • joy_hat_leftdown
    • joy_hat_leftup
  • # Modificado: rango de valores devuelto da los joysticks analogicos, ahora entre -32768..32767
  • * Arreglado: bug que impedía de usar los campos TFMORDER, SHEAR_X y SHEAR_X de la estructura mouse
  • * Arreglado: bug en la variable ASCII en devolver correctamente el codigo de los caracteres acentados y mayuscolos

Sound
--------

  • * Arreglado: bug nel sistema de audio que portaba a veces al crash del programa al descargar correctamente los recursos alocados

File
-----

  • + Añadido: nuevas modalidades para FOPEN: "wz", "rz", "az", "w+z", "r+z", "a+z" permiten scribir/leer ficheros comprimidos (solo ficheros binarios y con funciones FREAD/FWRITE).
    nuevo overload de la función:
    • INT FOPEN(STRING fname, STRING mode, STRING openmode, STRING password)
    permite crear/abrir ficheros encriptados para la escritura/lectura

Mode7
--------

  • + Añadido: nueva función SET_MODE7_DESTINATION, permite especificar un grafico como framebuffer de rendering para la ventana de mode7
  • + Añadido: soporte de SIZE_X, SIZE_Y, SHEAR_X, SHEAR_Y y TFMORDER para los procesos de mode7
  • + Añadido: campo VISIBLE a la estructura M7, permitiendo asi poder ocultar o poner visible una ventana de mode7
  • + Añadido: soporte de fogging, por medio de los nuevos campos FOG, FOGCOLOR y FOGDENSITY de la estructura M7
    Se soportan los siguentes tipos de fogging por medio de constantes para el campo FOG:
    • m7fog_none
    • m7fog_linear
    • m7fog_quad
    • m7fog_cubic
    • m7fog_quart
    • m7fog_quint
    • m7fog_sine
    • m7fog_exp
    • m7fog_circ
    Se añade tambien la variable LOCAL M7_FOG que permite indicar si el proceso de mode7 sera afectado automaticamente por el fogging o no
  • + Añadido: nueva función MODE7_TO_SCREEN, que proyecta un punto del espacio de coordenadas del modo 7 (x, y, height) al plano de la pantalla
  • + Añadido: nueva función SCREEN_TO_MODE7, que proyecta unas coordenadas de pantalla al plano del mode7 indicado devolviendo las coordenadas
  • + Añadido: nueva variable LOCAL M7_ANGLE, permite rotear los graficos de los procesos de mode7
  • + Añadido: valor -1 al parametro REGION de la función START_MODE7 para indicar de tomar automaticamente el tamaño del framebuffer de destino (pantalla o mapa) para el rendering
  • * Arreglado: bug en el visualizar correctamente un grafico de la ventana cuando se cambiaba con otro de tamaño diferente
  • * Arreglado: bug que probocaba el crash del programa al utilizar un numero de region no definida a la función START_MODE7, ahora provoca un error en runtime de region invalida.
  • * Arreglado: bug de posición de los procesos de mode7 el utilizar una region de tamaño inferior a la pantalla

Scroll
-------

  • + Añadido: nuevas funcionalidades para el scroll para el parametro SCROLL_MODE, con las siguientes constantes:
    • scroll_normal_key
    • scroll_layers_key
    permiten setear el scroll de forma que se pueda ver lo que hay detras las zonas transparentes de los planos
  • + Añadido: nuevos campos GRAPH1 y GRAPH2 a la estructura SCROLL, permiten poder cambiar dinamicamente los graficos de los planos usados por el scroll
  • + Añadido: nueva función SET_SCROLL_DESTINATION, permite especificar un grafico como framebuffer de rendering para la ventana de scroll
  • + Añadido: campo VISIBLE a la estructura SCROLL, permitiendo asi poder ocultar o poner visible una ventana de scroll
  • + Añadido: valor -1 al parametro REGION de la función START_SCROLL para indicar de tomar automaticamente el tamaño del framebuffer de destino (pantalla o mapa) para el rendering
  • * Arreglado: bug que probocaba el crash del programa al utilizar un numero de region no definida a la función START_SCROLL, ahora provoca un error en runtime de region invalida
  • ! Información: optimizado ALPHA 16bits, más rápido del 5 ~ 10%

Math
------

  • + Añadido: nuevos overloads de las siguientes funciones con soporte floating-point:
    • ABS, ACOS, ASIN, ATAN, ATAN2, POW, SQRT, RAND, COS, SIN, TAN, COPYSIGN, MILTODEG, DEGTOMIL, MIN, MID, MAX
    y nuevas funciones:
    • EXP, FREXP, LDEXP, LOG, LOG2, LOG10, MODF, COSH, SINH, TANH, CEIL, FLOOR, HYPOT, ISFINITE, ISINFINITE, ISNAN, IMOD, FMOD, FTOFIX, FIXTOF, DTOFIX, FIXTOD, DEGTORAD, RADTODEG
  • # Modificado: funciones matematicas con nombres mas comunes:
    • GET_MIN -> MIN
    • GET_MID -> MID
    • GET_MAX -> MAX
    • DEGREETOMIL -> DEGTOMIL
    • MILTODEGREE -> MILTODEG
  • * Arreglado: bug en la función SIN al devolver el seno exacto del ángulo de 90° (90000)

String
--------

  • + Añadido: nuevas funciones de cadenas para floating-point:
    • ATOF, FTOA, CALCULATEF
  • ! Información: optimizadas funciones LOWER y UPPER

Text
------

  • + Añadido: nuevas funciones para imprimir textos numericos floating-point:
    • WRITE_FLOAT, WRITE_DOUBLE
  • + Añadido: nueva función WRITE_DWORD para imprimir textos numericos enteros sin signo
  • + Añadido: nuevas variables GLOBAL TEXT_DESTINATION_FILE y TEXT_DESTINATION_GRAPH
    nuevas funciones:
    • SET_TEXT_DESTINATION
    nuevas constantes para TEXT_INFO:
    • txt_destination_file
    • txt_destination_graph
    permiten especificar y obtener el grafico usado como framebuffer de rendering para los textos
  • + Añadido: nuevos overloads para las funciones WRITE y WRITE_INT:
    • INT WRITE(INT fnt_id, INT x, INT y, INT align, STRING text, INT update_text)
    • INT WRITE_INT(INT fnt_id, INT x, INT y, INT align, INT POINTER value, INT update_text)
    Los cuales permiten crear textos fijos o dinamicos, se añaden tambien las siguientes nuevas funciones:
    • DRAW_TEXT, MAP_PUT_TEXT, PUT_TEXT
    Las cuales permiten pintar textos no-objetos en un MAP, en la pantalla o en su fondo
  • * Arreglado: bug en WRITE nel visualizar correctamente los textos de variables STRING (bug introducido en la 5.7)
  • * Arreglado: bug nel visualizar correctamente caracteres acentados de las FNT de DIV
  • ! Información: optimizadas funciones FNT_SET_COLOR, FNT_SET_PIXEL, TEXT_SET_COLOR y TEXT_SET_PIXEL versiones SOFT

Pathfind
-----------

  • + Añadido: nuevos modos de busqueda al sistema PATHFINDING para PATH_FIND sin el uso de diagonales, se añaden tambien las nuevas constantes para los modos disponibles:
    • pf_fast
    • pf_accurate
    • pf_fast_nodiag
    • pf_accurate_nodiag
  • ! Información: optimizados metodos PATHFINDING, más rápidos del 5 ~ 20%

Modules
----------

  • + Añadido: modulo tween para crear transiciones de forma sencilla

Platforms
------------

  • + Añadido: nueva plataforma Linux
  • + Añadido: nueva plataforma Mac OS X
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: <<< Gemix BETA 6.0 >>>

Postby OscarBraindeaD » Mon Jan 03, 2011 12:05 pm

Estupendo!!!! esta tarde, en casa, la bajo y la pruebo. Lástima que no haya llegado a tiempo la versión Mac para esta beta, pero bueno, con esta tenemos para trastear bastante tiempo!!!

Salud
OscarBraindeaD
 
Posts: 547
Joined: Fri Mar 27, 2009 8:28 pm

Re: <<< Gemix BETA 6.0 >>>

Postby CicTec » Mon Jan 03, 2011 12:11 pm

Hola Oscar,

Si lo siento, la version Mac no hemos llegado a probarla para ver si funcionaba todo bien, pero es cuestion de detalles, a lo largo de la semana deberia estar lista y la subo, mientra podeis probar lo que ya hay y si encontrais bugs me lo reportais.

Saludos.
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: <<< Gemix BETA 6.0 >>>

Postby Ignis » Mon Jan 03, 2011 12:25 pm

Para los que no la hayan probado es CONSIDERABLEMENTE mas rapida y tiene otras cosas como:
- Resoluciones virtuales
- Poder usar fpg's encriptados
- Los fps especificados con set_fps ahora son exactos. No como antes con los otros divlike que ponias set_fps(60,0) y te iba a 58 :P
User avatar
Ignis
 
Posts: 304
Joined: Sun May 17, 2009 2:37 pm

Re: <<< Gemix BETA 6.0 >>>

Postby BigHead » Mon Jan 03, 2011 12:32 pm

GRACIASSS! Y ENHORABUENA COMO SIEMPRE POR TAN GRANDIOSO TRABAJO!!!

PROBANDO CON EL SPACE!!

ya comento los resultados y que tal todo.

Saludos!!! :D :D :D :D

PD: PEDAZOO REGALO DE REYES!!!
Hañime Bushi, nekonoashi
User avatar
BigHead
 
Posts: 1277
Joined: Sun Nov 30, 2008 1:28 pm

Re: <<< Gemix BETA 6.0 >>>

Postby shao » Mon Jan 03, 2011 1:10 pm

hola, estoy un poco descolocado con todo lo nuevo asi que tengo preguntas sobre nuevas funciones y demas:

1- No veo nada de los tools, apareceran esta semana supongo?.

2 - + Añadido: soporte de tipo de retorno para los bloques FUNCTION
ej: FUNCTION FLOAT my_max(FLOAT v1, FLOAT v2)

ahora especificamos que tipo de dato devuelve, que quiere decir? si devuelvo byte (pro ejemplo) tambien hay que declarar "function byte my_time"? antes no hacia falta creo.

3 - + Añadido: soporte de overloading para los bloques FUNCTION
ej:
FUNCTION INT my_max(INT v1, INT v2)
FUNCTION FLOAT my_max(FLOAT v1, FLOAT v2)
FUNCTION DOUBLE my_max(DOUBLE v1, DOUBLE v2)

no entiendo exactamente que quiere decir nada de aqui! que las funciones pueden recibir el nuevo tipo de dato float y double?

4 - + Añadido: soporte de argumentos de default para PROCESS y FUNCTION
ej:
PROCESS wolf(x, y, graph, size = 50, alpha = 128)
FUNCTION calculate_speed(double start = 300.1234567)

de aqui tampoco entiendo un carajo, a ver... si se va a recibir size como parametro que quiere decir entonces añadir el = 50? si el valor que reciba size lo determinara el proceso que llame a este.


5 - + Añadido: nuevas variables LOCAL DESTINATION_FILE y DESTINATION_GRAPH que permiten especificar un grafico como framebuffer de rendering para el proceso

He estado leyendo la definicion de framebuffer en varias webs, la idea que me queda es que el framebuffer es el lugar donde se guarda la proxima imagen que se va a imprimir, pero no tengo ni idea de para que servirian estas nuevas variables, es decir, que es lo que hacen con el framebuffer?

6 - + Añadido: soporte de FPG y MAP comprimidos y encriptados, se añaden los siguientes nuevos overloads:

INT LOAD_FPG(STRING fname, STRING password)
INT LOAD_FPG_MAP(STRING fname, STRING password, INT fpg_id, INT graph)
INT LOAD_MAP(STRING fname, STRING password)
INT SAVE_FPG(INT fpg_id, STRING fname, STRING password)
INT SAVE_MAP(INT fpg_id, INT graph, STRING fname, STRING password)

la funcion load_fpg(string fname, string password) carga un fpg, y este fpg necesita un password que indicamos en el segundo parametro? y como se le añade un password a un fpg? con SAVE_FPG(INT fpg_id, STRING fname, STRING password)?

creo que aun hay mas pero de momento me gustaria saber estas.
gracias!.
User avatar
shao
 
Posts: 6034
Joined: Wed Jun 17, 2009 4:51 pm

Re: <<< Gemix BETA 6.0 >>>

Postby Ignis » Mon Jan 03, 2011 1:30 pm

shao wrote:hola, estoy un poco descolocado con todo lo nuevo asi que tengo preguntas sobre nuevas funciones y demas:
2 - + Añadido: soporte de tipo de retorno para los bloques FUNCTION
ej: FUNCTION FLOAT my_max(FLOAT v1, FLOAT v2)

ahora especificamos que tipo de dato devuelve, que quiere decir? si devuelvo byte (pro ejemplo) tambien hay que declarar "function byte my_time"? antes no hacia falta creo.

Puedes hacerlo de la manera clasica o, si lo deseas, especificarlo

shao wrote:3 - + Añadido: soporte de overloading para los bloques FUNCTION
ej:
FUNCTION INT my_max(INT v1, INT v2)
FUNCTION FLOAT my_max(FLOAT v1, FLOAT v2)
FUNCTION DOUBLE my_max(DOUBLE v1, DOUBLE v2)

no entiendo exactamente que quiere decir nada de aqui! que las funciones pueden recibir el nuevo tipo de dato float y double?

Si, puedes especificar el tipo de dato que reciben y devuelven, porque pasando int's igual hace una cosa y tienes la misma funcion recibiendo floats que funciona internamente de manera distinta

shao wrote:4 - + Añadido: soporte de argumentos de default para PROCESS y FUNCTION
ej:
PROCESS wolf(x, y, graph, size = 50, alpha = 128)
FUNCTION calculate_speed(double start = 300.1234567)

de aqui tampoco entiendo un carajo, a ver... si se va a recibir size como parametro que quiere decir entonces añadir el = 50? si el valor que reciba size lo determinara el proceso que llame a este.

Ésto no lo he probado aun, pero imagino que si llamas al proceso wolf(x,y,graph) sin pasar ni size ni alpha aplica los valores default, y si le pasas valores aplica los que has pasado

shao wrote:5 - + Añadido: nuevas variables LOCAL DESTINATION_FILE y DESTINATION_GRAPH que permiten especificar un grafico como framebuffer de rendering para el proceso

He estado leyendo la definicion de framebuffer en varias webs, la idea que me queda es que el framebuffer es el lugar donde se guarda la proxima imagen que se va a imprimir, pero no tengo ni idea de para que servirian estas nuevas variables, es decir, que es lo que hacen con el framebuffer?

Lo que hacen esas variables es decir al proceso que en vez de dibujarse en la pantalla como los demas, deben dibujarse dentro de un grafico que especifiques. Por ejemplo, tienes un proceso "numero" que muestra un grafico con un numero, pero no quieres colocarlo en la pantalla sino que quieres que aparezca como si fuera una textura de un proceso que está rotado. Pues se dibujaria en el grafico de ese proceso. Algo como lo que se consigue con map_xput, pero con la ventaja de que tratas al grafico como un proceso

shao wrote:6 - + Añadido: soporte de FPG y MAP comprimidos y encriptados, se añaden los siguientes nuevos overloads:

INT LOAD_FPG(STRING fname, STRING password)
INT LOAD_FPG_MAP(STRING fname, STRING password, INT fpg_id, INT graph)
INT LOAD_MAP(STRING fname, STRING password)
INT SAVE_FPG(INT fpg_id, STRING fname, STRING password)
INT SAVE_MAP(INT fpg_id, INT graph, STRING fname, STRING password)

la funcion load_fpg(string fname, string password) carga un fpg, y este fpg necesita un password que indicamos en el segundo parametro? y como se le añade un password a un fpg? con SAVE_FPG(INT fpg_id, STRING fname, STRING password)?

Si, yo por ejemplo cargo los fpg con un programilla usando load_fpg normal y a continuacion hago un save_fpg con otro nombre y un password

En el programa donde voy a usar ese fpg simplemente modifico el load_fpg y listo
User avatar
Ignis
 
Posts: 304
Joined: Sun May 17, 2009 2:37 pm

Re: <<< Gemix BETA 6.0 >>>

Postby CicTec » Mon Jan 03, 2011 1:32 pm

shao wrote:hola, estoy un poco descolocado con todo lo nuevo asi que tengo preguntas sobre nuevas funciones y demas:

Hola shao, ok a ver...

shao wrote:1- No veo nada de los tools, apareceran esta semana supongo?.

Lo veo muy muy dificil, los tools estan principalmente en manos a GINO y ya anda algo desaparecido desde unos dias, no creo que los habra pronto, aunque nunca decir nunca, lo siento.

shao wrote:2 - + Añadido: soporte de tipo de retorno para los bloques FUNCTION
ej: FUNCTION FLOAT my_max(FLOAT v1, FLOAT v2)

ahora especificamos que tipo de dato devuelve, que quiere decir? si devuelvo byte (pro ejemplo) tambien hay que declarar "function byte my_time"? antes no hacia falta creo.

Ahora los bloques FUNCTION permiten tipo explicito, esto sirve principalmente para devolver datos floating point, por ejemplo:
Source Code (Gemix) [ Download ] [ Hide ]
  • function get_name()
  • private
  •    string name = "shao";
  • begin
  •    return name;
  • end
  •  

Esta funcion devuelve una cadena (o puede ser un INT de cualquier tipo) y te sigue funcionando con la forma tradicional, en addiccion puedes usar la forma explicita:
Source Code (Gemix) [ Download ] [ Hide ]
  • function string get_name()
  • private
  •    string name = "shao";
  • begin
  •    return name;
  • end
  •  

Que hace exactamente lo mismo que antes, solo que ahora aparece el tipo explicito, en el caso de las cadenas/int no es necesario, pero para los floating-points si, sino te devolveria datos enteros.

shao wrote:3 - + Añadido: soporte de overloading para los bloques FUNCTION
ej:
FUNCTION INT my_max(INT v1, INT v2)
FUNCTION FLOAT my_max(FLOAT v1, FLOAT v2)
FUNCTION DOUBLE my_max(DOUBLE v1, DOUBLE v2)

no entiendo exactamente que quiere decir nada de aqui! que las funciones pueden recibir el nuevo tipo de dato float y double?

Te permite crear un sistema de overloading para tener la misma funcion (con el mismo nombre) que opera sobre datos de tipo distinto, un ejemplo lo puedes encontrar con las funciones matematicas de Gemix (SIN, COS, TAN, etc...) el metodo es lo mismo, segun que tipo de dato pasas como argumento a la funcion, va a utilizar el tipo adecuado devolviendo el tipo concreto.

shao wrote:4 - + Añadido: soporte de argumentos de default para PROCESS y FUNCTION
ej:
PROCESS wolf(x, y, graph, size = 50, alpha = 128)
FUNCTION calculate_speed(double start = 300.1234567)

de aqui tampoco entiendo un carajo, a ver... si se va a recibir size como parametro que quiere decir entonces añadir el = 50? si el valor que reciba size lo determinara el proceso que llame a este.

Te permite especificar datos predefinidos que tendra un proceso, por ejemplo imagina de tener eso:
Source Code (Gemix) [ Download ] [ Hide ]
  • begin
  •    shao();
  •    shao(100, 180000);
  •    shao(200, 90000);
  • end
  •  
  • process shao(size = 50, angle = 360000)
  • begin
  •    graph = N;
  •    x = N;
  •    y = N;
  •  
  •    loop
  •       frame;
  •    end
  • end
  •  

Como ves se llaman 3 instancias del proceso shao
la primera utiliza los argumentos de default, visualizando shao a la midad de tamaño y volteado de 360°
la segunda y la tercera visualizan shao con las propriedades size y angle indicadas explicitamente

shao wrote:5 - + Añadido: nuevas variables LOCAL DESTINATION_FILE y DESTINATION_GRAPH que permiten especificar un grafico como framebuffer de rendering para el proceso

He estado leyendo la definicion de framebuffer en varias webs, la idea que me queda es que el framebuffer es el lugar donde se guarda la proxima imagen que se va a imprimir, pero no tengo ni idea de para que servirian estas nuevas variables, es decir, que es lo que hacen con el framebuffer?

Este sistema es muy poderoso y te permite de crear muchos efectos.
Si el framebuffer es la superficie de memoria donde se va a pintar toda la escene del juego, en este caso en lugar que en pantalla directamente puedes redireccionar el volcado en una mapa y este mapa luego lo asignas a procesos, aplicas FX, y lo pintas en pantalla como quieres.

shao wrote:6 - + Añadido: soporte de FPG y MAP comprimidos y encriptados, se añaden los siguientes nuevos overloads:

INT LOAD_FPG(STRING fname, STRING password)
INT LOAD_FPG_MAP(STRING fname, STRING password, INT fpg_id, INT graph)
INT LOAD_MAP(STRING fname, STRING password)
INT SAVE_FPG(INT fpg_id, STRING fname, STRING password)
INT SAVE_MAP(INT fpg_id, INT graph, STRING fname, STRING password)

la funcion load_fpg(string fname, string password) carga un fpg, y este fpg necesita un password que indicamos en el segundo parametro? y como se le añade un password a un fpg? con SAVE_FPG(INT fpg_id, STRING fname, STRING password)?

Son overloads, obviamente antes debes guardar el FPG con SAVE_FPG especificando una password y luego para recargar el FPG debes usar el overload para especificarla, un ejemplo:

Source Code (Gemix) [ Download ] [ Hide ]
  • begin
  •    load_fpg("shao.fpg");  // cargo el FPG normal
  •    save_fpg(0, "shao_new.fpg", "mi password es ...."); // guardo el nuevo FPG comprimido y encriptado con password
  •    unload_fpg(0);  // descargo el FPG normal
  •  
  •    load_fpg("shao.fpg", "mi password es ....");  // cargo el FPG comprimido y encriptado ponendo la password
  • end
  •  

Obviamente si la password es erratica recibes un error de runtime y no podras cargar el FPG.
Ademas hay que tener extremo cuidado cuando guardas recursos encriptados, porque el metodo es irreversible, conserva siempre una copia de los graficos originales y de la password, porque si por desgracia llegas a perder la password puedes hechar los recursos a la basura.

Si sigues tenendo dudas avisa.
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: <<< Gemix BETA 6.0 >>>

Postby OscarBraindeaD » Mon Jan 03, 2011 1:33 pm

CicTec wrote:Hola Oscar,

Si lo siento, la version Mac no hemos llegado a probarla para ver si funcionaba todo bien, pero es cuestion de detalles, a lo largo de la semana deberia estar lista y la subo, mientra podeis probar lo que ya hay y si encontrais bugs me lo reportais.

Saludos.


No te preocupes hombre, mejor tarde y bien que aprisa y con problemas. Además, la versión windows funciona bastante bien... aunque sea windows... :evil: y tenemos más que de sobra con ella :claphands:

Buen regalo de reyes anticipado!!!!

Salud
OscarBraindeaD
 
Posts: 547
Joined: Fri Mar 27, 2009 8:28 pm

Re: <<< Gemix BETA 6.0 >>>

Postby shao » Mon Jan 03, 2011 1:50 pm

ok, entre los dos lo he podido entender todo bastante claro, gracias!

otra cosa

"Lo veo muy muy dificil, los tools estan principalmente en manos a GINO y ya anda algo desaparecido desde unos dias, no creo que los habra pronto, aunque nunca decir nunca, lo siento."

estas diciendo que puede ser que haya abandonado el team o que?

otra cosa es que mi programa no daba este fallo en la anterior beta:
dice "no es un tipo de proceso" refiriendose a un proceso que esta en un include
User avatar
shao
 
Posts: 6034
Joined: Wed Jun 17, 2009 4:51 pm

Next

Return to Novedades y Releases

Who is online

Users browsing this forum: No registered users and 4 guests