Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Temas - Fenris78

21
Fuente: Viadeo Blog

Es indudable el carácter lúdico de internet, especialmente con el crecimiento del acceso a internet vía móvil. Según Junipiter Mediametix los juegos online han crecido más rápido que cualquier otra forma de entretenimiento en la red. Aprovechar las horas "muertas" para crear granjas en Facebook o derribar obstáculos lanzando pájaros desde nuestro Smartphone, tiene cautivados a muchos internautas. El 24% de los españoles y el 25% de los europeos juega online al menos una vez a la semana (Asociación Europea de Publicidad Interactiva). En otras palabras, la publicidad en juegos o advergaming es una poderosa herramienta que no debe pasar desapercibida a los anunciantes.

¿Por qué tal afirmación?

Tiempo: los jugadores pasan mucho tiempo jugando, y por tanto expuestos a los anuncios. Cosa que no ocurre con otros soportes publicitarios.

Interacción: es un soporte interactivo que permite interactuar con el jugador de manera cordial y entretenida.

Atención: con los juegos el receptor se encuentra activo y concentrado en la partida, por lo que el impacto es mayor.

Baja intromisión: la publicidad en juegos, lejos de ser molesta puede convertirse en parte del juego y aportar valor añadido al usuario  ¿Te imaginas recibir un cupón de descuento al pasar de pantalla?
Predisposición: el jugador adopta una actitud receptiva al jugar, en otras palabras, es el usuario el que busca el juego.

Existen distintos tipos de advergaming para publicitarse en juegos online, estos son los más utilizados:

1. Advergames: juegos publicitarios creados por la marca. En la imagen, un juego que Cocacola preparó para la Eurocopa en el que los jugadores podían ganar premios al participar.



Juego Online de CocaCola en Publijuegos.com

2. In Game advertising (IGA): publicidad insertada en juegos. Puede ser estática o dinámica (varía en función de tu situación geográfica, el tiempo o el contexto).  Este tipo de publicidad no es intrusiva y aumenta el realismo de los escenarios.

3. Patrocinio: juegos gratuitos precedidos por un anuncios publicitarios. Este tipo de publicidad es la más intrusiva, pero permite jugar sin coste.

La publicidad en juegos tiene un gran potencial a la hora de proporcionar beneficios a largo plazo para productores.  Quizá es la solución para rebajar los precios de los videojuegos y para promover el desarrollo de juegos gratuitos online. Además, se trata de un canal muy efectivo para anunciantes y relativamente poco explotado.
22
Noticias / Subforo desarrolladores activo
Septiembre 24, 2012, 06:18:10 PM
Como prometimos, la maquina del cambio continua en funcionamiento:

A partir de hoy, ya podeis acceder al nuevo subforo "Desarrolladores" ubicado dentro de la, tambien nueva categoria "Industria".

Como vereis, tanto su funcionalidad como reglamento son simples y concisos:

Citar


El Sub-Foro desarrolladores es un espacio donde los usuarios pueden enlistar sus trabajos desarrollados, tanto en programacion como en composición.

Esto permite a terceros ver el trabajo de cada uno y tomar lo publicado como el curriculum del usuario.

Reglamento:


- Es obligatorio el uso de la plantilla
- Esta prohibido publicar post que no van en este sub-foro.
- Solo esta permitido 1 tema por usuario o Grupo.

Si alguna publicacion no cumpliera con alguna de las reglas mencionadas,sera eliminada.

Para Acceder a la plantilla haz click aqui

Desde el staff de CGM esperamos sinceramente que disfruteis esta nueva seccion.

Pronto, mas buenas nuevas en la comunidad.
23
Desarrolladores / Oniric Factor
Septiembre 23, 2012, 11:06:26 PM




Jorge Romero [Fenris78]
Pucheta Aldo [Shaoran]

              02/05/2004

     España



"Oniric Factor", inicialmente conocido como "Estudios Valhalla" es el nombre de la firma utilizada por Jorge [Fenris78] para rubricar sus juegos. A lo largo del tiempo han surgido colaboraciones con diferentes desarrolladores, fundamentalmente músicos como Neogamer, Jacobo, Dr Jacko & Okeanos o Aurial.

La andadura de Fenris comenzó con la realización de traducciones, videojuegos y pequeñas aplicaciones gratuitas exclusivamente para Windows. En la actualidad tras la finalización de sus dos últimos títulos comerciales, se encuentra probando suerte con el desarrollo de juegos para navegador y terminales móviles (IOS/Android).

El dia 16 de Noviembre del 2012, el equipo se amplia con Shaoran, un nuevo miembro proveniente de Argentina que actualmente colabora en el primer proyecto multiplataforma de Oniric.



- Super Demon Hunter [2012]
- Demon Hunter [2012]
- Bio Guardian [2011]
- Pixel converter [2009]
- Conversor Zero [2007]
- Cangrejo y cerebroguisante [2007]
- La furia de Acuarides [2006]
- Reloj despertador [2005]
- Superchuflibolas [2005]
- Chuflibolas [2005]
- Hijos del Eter [2004]

- Plugin definición funciones GM 6.1
- Traducción Extension Maker
- Traducción GM6.1
- Traducción GM 6.0
- Traducción GM 5.3a
- Traducción Dragon Script 1.3
- Traducción Lib Builder

- DLL Ventana circular [2006]
- DLL Ventana cuadrada [2006]
- DLL Ventana con bordes redondos [2006]




- Rocket commander [2012] Estado: Prototipado
- Sacred Stones [2007]
- HDE [2006]
- Proyecto Exodo[2005]



Portal: www.oniric-factor.com
Blog: www.fenris78.blogspot.com




Tlfno: 600383764
email: info@oniric-factor.com

24
Books / Books: ¿Que es y como funciona?
Septiembre 20, 2012, 12:17:49 AM
Bienvenidos al subforo "Books"

La comunidad en el subforo Desarrolladores ya dispone de un espacio dedicado para grupos de desarrollo y "lobos solitarios" donde publicar un resumen de sus juegos finalizados y sus proyectos actuales... ¿pero que sucede con los usuarios especializados en un area en particular?

Este subforo pretende cubrir ese espacio quedando destinado a la muestra de trabajos de musicos, grafistas, modeladores, guionistas... y demas usuarios especializados.

¡No te confundas! los trabajos aqui expuestos no tienen por finalidad el intercambio de opiniones sobre su calidad, sino la de servir de referencia del usuario. De esta forma, cuando quiera ofrecerse a dar un servicio, puede utilizar el enlace a su seccion; por otra parte, si alguien busca a un especialista, puede navegar entre los temas de los usuarios para encontrar lo que necesita.

Recuerda: Para debates  sobre tecnicas y acabados, el subforo Grafismo & Composicion.

Las reglas para publicar en este subforo son muy sencillas:

CitarUtiliza el generador de plantillas de la seccion.

Abre un solo tema por usuario / especialidad.

Sube solo trabajos de tu autoria.

Tampoco olvides que este subforo esta adscrito al [Reglamento general]
25
Anuncios / Anuncios: ¿Que es y como funciona?
Septiembre 20, 2012, 12:01:31 AM
Bienvenido al Subforo "Anuncios".

Este subforo tiene por finalidad el servir como espacio para realizar solicitud y demanda de servicios o compra venta de articulos.

Las reglas de este subforo son simples:

CitarIconos de mensaje:

  - Tanto si solicitas un servicio como si buscas conseguir un determinado item, debes utilizar el icono [Demanda] 
  - Tanto si ofreces un servicio como si vendes u ofreces un determinado item, debes utilizar el icono [Oferta]

Precios:

Si ofreces un Item u ofertas un servicio debes especificar el precio: un servicio puede ser gratuito, tener un precio determinado, cobro por comision, gastos de envio... SIEMPRE hay que ser CLARO y CONCISO.

Este reglamento es de obligado cumplimiento. Los temas que incumplan estas indicaciones seran borrados SIN PREVIO AVISO.

IMPORTANTE: Comunidad GM no se hace responsable por estafa, robo, plagio o uso indebido de los contenidos publicados en el subforo. En el caso de darse alguna de estas anomalias, os invitamos a comunicarlo al staff de CGM para tomar las medidas oportunas dentro del marco comunitario y advertir a la comunidad de usuarios. Por supuesto, esto no excluye las posibles medidas legales que se deseen emprender a nivel particular entre las partes en disputa.
26
Noticias / Nuevos cambios en el perfil de usuario
Septiembre 19, 2012, 12:06:07 AM
Saludos makeros.

Continuado con los cambios prometidos, he modificado los campos disponibles en el perfil de usuario. A partir de ahora al pulsar sobre el nombre de cada usuario podreis acceder a estos nuevos campos:


CitarFacebook: direccion de facebook
Nombre: nombre real
Perfil: grafista, musico, programador...
Telefono: telefono de contacto
Twitter: direccion de twitter
Listado de proyectos: enlace a tu seccion "Desarrolladores" (se explicara en su momento)
Book: enlace a tu seccion "Intercambio" (se explicara en su momento)

Recordad que para completar estos campos en vuestro perfil, basta con que pulseis sobre vuestro nombre de usuario y navegueis a traves de los siguientes menus:

CitarNombre de usuario -> editar perfil -> perfil del foro

Con estos nuevos cambios, esperamos que podamos conocernos todos un poco mejor tanto profesional como personalmente. Por otra parte esperamos tambien facilitar las relaciones entre usuarios tanto dentro, como fuera de la comunidad.

Eso es todo por hoy, seguid sintonizando honda CGM.
27
Noticias / Encuesta y debate sobre los campos del perfil
Septiembre 17, 2012, 10:43:34 PM
Saludos.

Como ya sabeis, estamos remodelando los foros de CGM.

Ya que estamos en ello, he pensado en modificar los campos del perfil de usuario, de tal forma que podais añadir nuevos datos y eliminar los que no se usan.

Dicho esto, me gustaria que listarais aqui los campos que os gustaria ver en el perfil de los usuarios. Dependiendo de vuestras respuestas, podreis daros a conocer mejor en el foro o no.

Nota: es posible que tenga que eliminar el campo actual de Facebook y volverlo a crear... os aviso de antemano.

En espera de vuestras propuestas quedamos.
28
Juegos completos / ???? Demon Hunter [Mini Juego]
Octubre 06, 2011, 02:35:27 AM

Demon Hunter

Plataformas

GM8


Las gemas negras han sido reunidas y ciudad Vintage esta en peligro.

?Seras capaz de encontrarlas y expulsar a las fuerzas del mal?

?A por ellos cazador!






Descargar Demon Hunter desde el servidor de Oniric Factor



Controles:

[ X ] Atacar
[ Z ] Saltar
[ S ] Cambiar Zoom




Demon Hunter es un peque?o proyecto creado como tributo a aquellos juegos que jugabamos en casa entre finales de los 80 y principios de los 90.

De entre todos estas pequ?as joyitas a las que nos enviciabamos en nuestro MSX Dynadata, recuerdo una muy especial que consiguia tenerme pegado al monitor durante horas, transportadome a un magico mundo de fosforo verde:

Valis, the Fantasm Soldier.

Hoy, cerca de 20 a?os despues de haberlo jugado por primera vez y aun frente al prisma de los nuevos tiempos, he vuelto a disfrutar esa jugabilidad a?eja masacrando sprites monocromos... no porque se trate del mejor juego del mundo, ni tan siquiera de su epoca, es mas, ni tan siquiera de su genero.

Simplemente porque ha formado parte de mi infancia, dejando su grabada una impronta indeleble en mi memoria.

Espero que este peque?o tributo sirva para que otros puedan disfrutar de parte de aquella experiencia que vivia cuando era peque?ajo.

Los que sigan a la comunidad a traves de las redes sociales, seguramente ya sepan de que va la cosa, pero os recuerdo los detalles tecnicos que he tratado de seguir para hacer que la estetica del juego sea lo mas fiel posible a lo que se estilaba por aquellos tiempos:

CitarPaleta de 16 colores. En este caso, la original de MSX 1:



Resolucion de pantalla:

256 x 192 Pixeles

Numero maximo de colores por fila de 7 pixeles (Por sprite):

2 colores, incluido el color transparente.

En el aspecto grafico, la verdad es que ha sido una experiencia muy gratificante, porque las propias limitaciones del formato me han ayudado a crear una estetica mucho mas coherente y a eliminar todo lo superfluo.

Solo me queda por decir que espero que lo disfruteis, que me aviseis de cualquier error que se me haya podido pasar (en especial en cuanto a la traduccion) y dar las gracias de nuevo a Zone por su inestimable ayuda en el campo de las hondas. Gracias tambien a Killer por indicarme la funcion que necesitaba para cambiar el escalado del area de dibujo.

?Nos leemos!


29
Saludos.

Estoy terminando un juego que esta creado en muy baja resolucion y que se ejecuta en pantalla completa. El tema es que quiero que los pixeles se vean lo mas limpios posible y por eso estoy jugando con el zoom de la pantalla.

Mi duda es la siguiente:

Si tengo un juego que se ejecuta en pantalla completa con una escala determinada del 200% desde el menu "Game Settings" de GM, pero quiero que el usuario pudiera elegir el nivel de "zoom", ?como puedo modificar dicha escala con GML?

Se me hace raro que no haya una funcion especifica para eso con la cantidad de funciones que hay para el manejo de las ventanas.

?Sabeis como se llama dicha funcion o si hay alguna manera simple de hacerlo sin tener que recurrir a superficies o sucedaneos?
30
Saludos. Os escribo porque tengo un concepto de juego en mente, pero me he encontrado con un problema a la hora de implementarlo, a ver si me podeis ayudar.

Resulta que quiero generar alrededor de un punto, o bien una malla de hexagonos, o bien una de circulos, de forma que este punto siempre quede rodeado de circulos (o hexagonos, lo mismo me da) sin dejar huecos demasiado grandes y sin que se solapen las figuras.

La idea es crear una forma mas o menos circular a base de objetos circulares, o bien una forma hexagonal a base de objetos hexagonales:


Ejemplo hexagonal, todos deberian de ser del mismo tama?o.


Ejemplo circular, no importa demasiado el tama?o de los circulos.

?Alguna idea de como conseguirlo? esta ma?ana le he estado echando un buen rato, pero solo he conseguido estrellitas y algo parecido a un cultivo de bacterias XD

PD: Mmmm... ahora que lo pienso, para el caso de los circulos, quizas fuera mejor enfocarlo al reves, se crea una circunferencia y se van creando instancias circunscritas en los huecos libres... ?como lo veis? de todas formas, sigo muy interesado en las posibles soluciones que se os ocurran.
31
Revisando portales de videojuegos, he visto que resulta muy usual que los juegos tengan un menu desde el que seleccionar varios perfiles. Dado que GM tiene un sistema para gestionar archivos .ini bastante eficiente, he decidido desarrollar este script para poder utilizarlos sin tener problemas con el usuario medio.

Autor:

Fenris78

Descripci?n:

Este script codifica un texto a formato ascii o recupera el texto a partir de dicho formato. Util para codificar por ejemplo, los archivos .ini en los que guardemos datos importantes para nuestro juego.

Versi?n GM:

:GM8:

[gml]

//argument0 cadena a codificar/decodificar
//argument1 true codifica, false decodifica

var codoutput; codoutput=string(argument0);

if(argument1=true)
{
   for(i=0; i<255; i+=1)
   {
       codoutput=string_replace_all(codoutput,chr(i+1),chr(i))
   }
}
else if(argument1=false)
{
   for(i=255; i>0; i-=1)
   {
       codoutput=string_replace_all(codoutput,chr(i),chr(i+1))
   }
}

return codoutput;[/gml]

Ejemplo de uso:

Codificar:
[gml]codificado=sc_codif("HOLA",true);[/gml]

Decodificar:
[gml]sc_codif(codificado,false);[/gml]
32
Nombre del creador:

Fenris78

Breve descripci?n de su funci?n:

Devuelve una lista de n valores enteros aleatorios, escogidos del 1 al vmaximo sin repeticion. El ID de la lista se puede usar despues para acceder a cualquiera de sus valores.

Ej: milista=scliale(10,30);

Versi?n GM utilizada:  

:GM8:

C?digo del Script:

[gml]
//sc_liale(nvalores,vmaximo);  Ej: milista=scliale(10,30);

var lista,ntotal,nmax,nvalido,numero;

lista=ds_list_create(); //Creo una lista
ntotal=0; nvalores=argument0; nmax=argument1; nvalido=false;

for(i=1;ntotal<nvalores;i+=1)
{
   numero=irandom(nmax)+1;
   for(i=1; i<nvalores; i+=1){ if(ds_list_find_value(lista,i)=numero){ nvalido=false; } else { nvalido=true; } } //verifico si esta seleccionado
   if(nvalido=true) { ntotal+=1; ds_list_add(lista,numero); }
}
return lista; //Devuelvo su ID[/gml]
33
Preguntas y respuestas / Crear un instalador con GM
Enero 01, 2011, 05:52:19 PM
Saludos.

Llevo tiempo con un juego terminado y estoy dandole vueltas al tema de los instaladores. En un principio debo de incluir uno, pero estoy ojeando los que hay por la red y hasta el momento no he visto ninguno que me termine de convencer.

Llegados a este punto he estado pensando en crear uno con GM, pero tengo mis dudas sobre como crear las rutas de instalacion por defecto. Me gustaria que se instalara por defecto en archivos de programa, independientemente de la version de Windows.

La aplicacion tambien deberia de ser capaz de crear un desinstalador y los enlaces directos correspondientes.

?Ideas sobre como hacerlo? sobre todo en lo referente a variables de sistema y accesos directos.

Si conoceis alguna aplicacion gratuita, sencilla y sin publicidad para crear buenos instaladores, tambien podria ser una solucion a mi problema.

?Nos leemos!

34
Preguntas y respuestas / Abrir URL navegador
Octubre 14, 2010, 02:53:29 PM
Saludos.

Estoy liado con la demo de mi juego y quiero que al terminar, me de la opcion de visitar una pagina web con el navegador predeterminado por el sistema.

Creo recordar que lo he hecho alguna vez, pero con explorer.

?Podria alguien comentarme como hacerlo?

35
Saludos.

Os escribo para ver si alguien me puede echar un cable con una direccion.

Como muchos sabreis, desde hace algun tiempo es posible jugar juegos de GM a traves del navegador. El tema es que hace algun tiempo mientras navegaba me tope con una pagina donde no solo podias subirlos, sino que ademas podias monetizarlos a traves de publicidad como se hace con otros juegos en flash. La pagina estaba orientada principalmente a juegos creados en Game Maker.

Mi problema surge cuando, por razones desconocidas, al actualizar Opera, la mitad de las carpetas de mis favoritos desaparece. Ahora mismo no tengo la direccion y no recuerdo el titulo de la pagina, he estado haciendo busquedas por la red, pero nada, que no la encuentro.

?Alguien la conoce o podria compartir enlaces a portales de juegos online que soporten algo mas que juegos flash?
36
Saludos.

Ando liado con un problema, a ver si podeis echarme un cable. Resulta que para una peque?a aplicacion necesito realizar conversiones de decimal a binario y viceversa. He creado dos scripts, pero solo me funciona el que realiza las conversiones de decimal a binario, el que hace la conversion contraria no funciona y todavia no se porque.

Os dejo con el primer script(el que funciona):

// argument0 Numero decimal

var bin, binresultinv,binresult;

binresult="";
binresultinv="";
bin=argument0;

while bin>=1
{
   if (bin mod 2 = 0) {binresultinv+="0";}
   else {binresultinv+="1";}
   bin=round(bin/2)
}

for(i=string_length(binresultinv); i>0; i-=1) // Invertimos la cadena segun procedimiento de conversion
{
   binresult+=string_char_at(binresultinv,i);
}

return(binresult)
   


Este es el que me da problemas. Se supone que deberia de convertir una cadena con un numero binario en un numero decimal:

// argument0 numero binario (en formato cadena)

var dec,decresult;

decresult=0;
dec=0;

for(i=string_length(argument0); i>0; i-=1) //La conversion se hace del ultimo digito al primero
{
  dec=real(string_char_at(argument0,i));
  decresult+=dec*power(2,i)
}

return(decresult)


?Podria alguien decirme donde me estoy equivocando?
37
Saludos.

Tengo un problema, a ver si me podeis ayudar.

Necesito montar un script para manejar las articulaciones del ultimo jefe de mi juego, pero para ello necesito dar solucion al siguiente problema:

CitarAveriguar las coordenadas x e y del punto al que apunta un vector (xf,yf) del que conozco:

  • Las coordenadas x e y de origen del vector (xo, yo).

  • La longitud del vector (long).

  • La direccion del vector (dir).

    El cuadro de coordenadas de referencia tiene origen en la esquina superior izquierda de la pantalla.

    ----------------------------------------
    |
    |
    |   #(xo,yo)----------->#(xf,yf)
    |
    |
    |
    |
A ver si de paso aprendo/desempolvo algo de matracas, que desde que termine de estudiar no he hecho practicamente nada mas que sumar y restar.
38
Autor: Fenris78

Version GM utilizada:  :GM6: Probablemente compatible con :GM7: (por verificar)

Descripcion: Hoy mientras trabajaba en Cell Fusion, me di cuenta de que me vendria bien algun tipo de Script para mejorar la seleccion automatica de enemigos a la hora de dispararles. No me bastaba con que se eligiera al mas cercano, me resultaba mas util elegir primero al enemigo mas cercano ubicado dentro de un rango de vision definido por un angulo y una distancia maximas. En el caso de que no existiera ningun objeto que cumpliera esas condiciones, entonces dar luz verde a elegir el objeto mas cercano aunque estuviera fuera del rango de vision.

Este script tambien puede ser util para hacer peque?as IAs. No he tenido tiempo de hacerlo, pero se me ocurrio que para el ejemplo podria haber puesto un par de nidos de ametralladoras disparando a una multitud de atacantes. Estos nidos solo dispararian a los enemigos que tuvieran dentro de su rango de tiro, priorizandolos segun la distancia a la que se encontrasen de su posicion. Eventualmente, cuando todo estuviera tranquilo, alguien podria atacar desde atras... si no tuvieran activado el 4 argumento, las posiciones serian tomadas, caso contrario, podrian "oir" al enemigo y darse la vuelta.

He de darle las gracias a Darth por darme la idea de por donde podria tirar para hacer el Script y a Killer por ayudarme a localizar y solucionar un bug importante en el script. El post original lo teneis aqui.

Codigo del Script:

/*----------------------------------------------------------------------------
Script de seleccion de objetivos cercanos a traves de visibilidad.

Esta funcion devuelve el id del enemigo mas cercano dentro del rango
de vision. Si esta demasiado lejos, da la opcion de escoger al mas
cercano, este o no dentro de la vista (argument4 puesto a true). Si
el argumento 4 no esta inicializado, el script retorna "false" cuando
no detecta objetos en el rango de vision.

// argument0 objeto a chequear
// argument1 objeto referencia
// argument2 distancia maxima antes de buscar objetivo fuera del encaramiento
// argument3 maxima apertura (por cada lado)
// argument4 si no ve nada, devuelve ids de objeto mas cercano fuera de vista.

Ejemplo de uso:  sc_cercacara(o_hostil,o_scalpel,400,120,true);
----------------------------------------------------------------------------*/

var nen, cen, den, iden, mien, ten;

nen=instance_number(argument0);

cen=ds_priority_create();

for(i=0; i<nen; i+=1)
{
   iden=instance_find(argument0,i);
   
   den=point_direction(argument1.x,argument1.y,iden.x,iden.y);
   
   if (argument1.direction < argument3) && (den > 360-argument3) den -= 360;
   else if (argument1.direction > 360-argument3) && (den<  argument3) den += 360;
   
   if ( den > argument1.direction - argument3 && den < argument1.direction + argument3 )
   {
       if(point_distance(iden.x,iden.y,argument1.x,argument1.y)<argument2)
       {
           ds_priority_add(cen,iden,point_distance(iden.x,iden.y,argument1.x,argument1.y) );
       }
   }
}

if  ( ! ds_priority_empty(cen) ) { mien=ds_priority_find_min(cen); }
else if(argument4=true) { mien=instance_nearest(argument1.x,argument1.y,argument0); }
else {ds_priority_destroy(cen); return false; }

ds_priority_destroy(cen);
return mien;



Como siempre, estais invitados a crear ejemplos, optimizar o ampliar el script. Eso si, si vais a poner algo, procurad que no implique perder la flexibilidad del script.
39
Saludos comunidad.

Este es el listado completo de funciones y sentencias de :GM6: que hace algun tiempo redactamos entre toda la comunidad.

En esta ocasion, por peticion de la propia comunidad, se ha tomado la decision de ampliar este glosario a?adiendo nueva informacion, ejemplos y corrigiendo los gazapos que se nos escaparon en su dia.

Dada la enorme extension del listado, dependemos integramente de la ayuda desinteresada de los miembros de la comunidad. Si te estas preguntando como podrias ayudar, solo debes de estar atento a los siguientes parrafos.

Debajo de esta introduccion, veras citado un listado enorme de funciones. La mayoria estan comentadas en castellano, pero queremos mejorar la informacion disponible. Tras un peque?o debate en esta misma seccion, hemos decidido que las colaboraciones deben adoptar la plantilla que planteo Pucara:

Cita de: PlantillaFunci?n / Sentencia:
Sint?xis:
Exp. Argumentos [Si procede]:
Uso:
Ejemplo 1 [Si procede]:
Ejemplo 2 [opcional]:
Funciones relacionadas:

Para a?adir una colaboracion, no tienes mas que responder en este tema a?adiendo la descripcion (conforme a esta plantilla) de la funcion, constante o sentencia que hayas elegido del listado. Los responsables del proyecto se encargaran de revisarla y a?adirla a un listado definitivo mientras tachan o borran la funcion del listado que aparece en este tema, que hara las veces de pila de trabajo.

Los responsables del proyecto son:

CitarPucara

Dieguin451

Gabriel Moreno

A continuacion, os dejo con el listado:

Código (Parte 1) [Seleccionar]




frac(x) Devuelve la parte fraccional de X, que es la parte situada tras el punto decimal.

sqrt(x) Devuelve la ra?z cuadrada de X. El valor no debe ser negativo.

sqr(x) Devuelve el cuadrado de X.

exp(x) Devuelve E elevado a X.

ln(x) Devuelve el logaritmo neperiano (natural) de X.

log2(x) Devuelve el logaritmo en base 2 de X.

log10(x) Devuelve el logaritmo en base 10 de X.

logn(n,x) Devuelve el logaritmo en base N de X.

sin(x) Devuelve el seno de X (X en radianes).

cos(x) Devuelve el coseno de X (X en radianes).

tan(x) Devuelve la tangente de X (X en radianes).

[s]arcsin(x) Devuelve el arcoseno de X[/s].

[s]arccos(x) Devuelve el arcocoseno de X.[/s]

arctan(x) Devuelve la arcotangente de X.

arctan2(y,x) Calcula la arcotangente de (Y/X), y devuelve un ?ngulo en el cuadrante correcto.

degtorad(x) Convierte grados a radianes.

radtodeg(x) Convierte radianes a grados.

min(val1,val2,val3,...) Devuelve el menor de los valores. La funci?n soporta 16 argumentos.

max(val1,val2,val3,...) Devuelve el mayor de los valores. La funci?n soporta 16 argumentos.

mean(val1,val2,val3,...) Devuelve el promedio de los valores. La funci?n soporta 16 argumentos. Deben ser todos n?meros reales.

median(val1,val2,val3,...) Devuelve el valor intermedio de los argumentos introducidos.

point_direction(x1,y1,x2,y2) Devuelve la direcci?n desde el punto (x1,y1) hacia el punto (x2,y2) en grados.

lengthdir_x(len,dir) Devuelve la componente horizontal (x) del vector determinado por la longitud y direcci?n indicadas.

lengthdir_y(len,dir) Devuelve la componente vertical (y) del vector determinado por la longitud y direcci?n indicadas.

is_real(x) Averigua cuando X es un valor real. (diferenci?ndolo de una cadena de texto).

is_string(x) Averigua cuando X es una cadena de texto. (diferenci?ndolo de un n?mero real).

chr(val) Devuelve una cadena con el car?cter al que hace referencia el c?digo asci VAL.

ord(str) Devuelve el c?digo asci del primer car?cter de la cadena de texto STR.

real(str) Convierte una cadena de texto en un n?mero real. STR puede contener signos negativos, puntos decimales o una parte exponencial.

string(val) Convierte el n?mero real en una cadena de texto utilizando el formato est?ndar

string_format(val,tot,dec) Convierte VAL en una cadena de texto utilizando nuestro propio formato: TOT indica el m?ximo de d?gitos y DEC el n?mero de d?gitos decimales.

string_pos(substr,str) Devuelve la posici?n de SUBSTR en STR (0 No encontrado).

string_copy(str,index,count) Devuelve una subcadena de STR, partiendo de la posici?n INDEX y de una longitud definida por COUNT.

string_char_at(str,index) Devuelve el car?cter situado en la posici?n INDEX de la cadena STR.

string_delete(str,index,count) Devuelve una copia de la cadena STR con una parte borrada, que empieza en INDEX y de una longitud definida por COUNT.

string_insert(substr,str,index) Devuelve una copia de la cadena STR con la subcadena SUBSTR a?adida en la posici?n INDEX.

string_replace(str,substr,newstr) Devuelve una copia de STR con la primera ocurrencia de SUBSTR reemplazada por NEWSTR.

string_replace_all(str,substr,newstr) Devuelve una copia de STR con todas las ocurrencias encontradas de SUBSTR reemplazadas por la subcadena NEWSTR.

string_count(substr,str) Devuelve el n?mero de ocurrencias de la subcadena SUBSTR existentes en STR.

string_lower(str) Devuelve una copia en min?sculas de la cadena STR.

string_upper(str) Devuelve una copia en may?sculas de la cadena STR.

string_repeat(str,count) Devuelve una cadena con un n?mero de copias de la cadena STR definido por COUNT.

string_letters(str) Devuelve una cadena de texto que solo contiene las letras de la cadena STR.

string_digits(str) Devuelve una cadena que solo contiene los n?meros de la cadena STR.

string_lettersdigits(str) Devuelve una cadena que solo contiene los n?meros y las letras de la cadena STR.

date_current_datetime()Devuelve fecha y hora actual.

date_current_date()Devuelve fecha actual ignorando la hora.

date_current_time()Devuelve hora actual ignorando la fecha.

date_create_datetime(year,month,day,hour,minute,second) Crea un valor fecha-hora correspondiente a la fecha y hora indicados.

date_create_date(year,month,day) Crea un valor fecha-hora correspondiente a la fecha indicada.

date_create_time(hour,minute,second) Crea un valor fecha-hora correspondiente a la hora indicada.

date_valid_datetime(year,month,day,hour,minute,second) Muestra si la hora y fecha indicados son v?lidos.

date_valid_date(year,month,day) Muestra si la fecha indicada es v?lida.

date_valid_time(hour,minute,second) Muestra si la hora indicada es v?lida.

date_inc_year(date,amount) Devuelve una nueva fecha N a?os despu?s de la fecha indicada. N debe ser un n?mero entero.

date_inc_month(date,amount) Devuelve una nueva fecha N meses despu?s de la fecha indicada. N debe ser un n?mero entero.

date_inc_week(date,amount) Devuelve una nueva fecha N semanas despu?s de la fecha indicada. N debe ser un n?mero entero.

date_inc_day(date,amount) Devuelve una nueva fecha N d?as despu?s de la fecha indicada. N debe ser un n?mero entero.

date_inc_hour(date,amount) Devuelve una nueva fecha N horas despu?s de la fecha indicada. N debe ser un n?mero entero.

date_inc_minute(date,amount) Devuelve una nueva fecha N minutos despu?s de la fecha indicada. N debe ser un n?mero entero.

date_inc_second(date,amount) Devuelve una nueva fecha N segundos despu?s de la fecha indicada. N debe ser un n?mero entero.

date_get_year(date) Devuelve el a?o actual.

date_get_month(date) Devuelve el mes actual.

date_get_week(date) Devuelve la semana actual.

date_get_day(date) Devuelve el d?a actual.

date_get_hour(date) Devuelve la hora actual.

date_get_minute(date) Devuelve el minuto actual.

date_get_second(date) Devuelve el segundo actual.

date_get_weekday(date) Devuelve el d?a de la semana actual.

date_get_day_of_year(date) Devuelve el d?a del a?o especificado.

date_get_hour_of_year(date) Devuelve la hora del a?o especificado.

date_get_minute_of_year(date) Devuelve el minuto del a?o especificado.

date_get_second_of_year(date) Devuelve el segundo del a?o especificado.

date_year_span(date1,date2) Devuelve el n?mero de a?os que hay entre las dos fechas. Reporta los a?os incompletos como una fracci?n.

date_month_span(date1,date2) Devuelve el n?mero de meses que hay entre las dos fechas. Reporta los meses incompletos como una fracci?n.

date_week_span(date1,date2) Devuelve el n?mero de semanas que hay entre las dos fechas. Reporta las semanas incompletas como una fracci?n.

date_day_span(date1,date2) Devuelve el n?mero de d?as que hay entre las dos fechas. Reporta los d?as incompletos como una fracci?n.

date_hour_span(date1,date2) Devuelve el n?mero de horas que hay entre las dos fechas. Reporta las horas incompletas como una fracci?n.

date_minute_span(date1,date2) Devuelve el n?mero de minutos que hay entre las dos fechas. Reporta los minutos incompletos como una fracci?n.

date_second_span(date1,date2) Devuelve el n?mero de segundos que hay entre las dos fechas. Reporta los segundos incompletos como una fracci?n.

date_compare_datetime(date1,date2) Compara los dos valores fecha-hora. Devuelve -1, 0, ? 1 dependiendo en si la primera fecha es anterior, igual, o posterior que la segunda.

date_compare_date(date1,date2) Compara los dos valores fecha-hora tomando en cuenta s?lo la parte de la fecha. Devuelve -1, 0, ? 1 dependiendo en si la primera es anterior, igual, o posterior que la segunda.

date_compare_time(date1,date2) Compara los dos valores fecha-hora tomando en cuenta s?lo la parte de la hora. Devuelve -1, 0, ? 1 dependiendo en si la primera es anterior, igual, o posterior que la segunda.

date_date_of(date) Devuelve la parte de la fecha del valor fecha-hora indicado, estableciendo la hora a 0.

date_time_of(date) Devuelve la hora del valor fecha-hora indicado, estableciendo la fecha a 0.

date_datetime_string(date) Devuelve una cadena indicando la fecha y hora definidos, en el formato predeterminado para el sistema.

date_date_string(date) Devuelve una cadena indicando la fecha definida en el formato predeterminado para el sistema.

date_time_string(date) Devuelve una cadena indicando la hora definida en el formato predeterminado para el sistema.

date_days_in_month(date) Devuelve el n?mero de d?as que hay en el mes indicado.

date_days_in_year(date) Devuelve el n?mero de d?as que hay en el a?o indicado.

date_leap_year(date) Define si el a?o indicado es un a?o bisiesto.

date_is_today(date) Define si la fecha indicada es la actual.

x Su posici?n x.

y Su posici?n y.

xprevious Su posici?n x anterior.

yprevious Su posici?n y previa.

xstart Su posici?n x inicial en el cuarto.

ystart Su posici?n y inicial en el cuarto.

hspeed Componente horizontal de la velocidad.

vspeed Componente vertical de la velocidad.

direction Su direcci?n actual (0-360, contra las manecillas del reloj, 0 = a la derecha).

speed Su velocidad actual (p?xeles por step).

friction Fricci?n actual (p?xeles por step).

gravity Cantidad actual de gravedad (p?xeles por paso).

gravity_direction Direcci?n de la gravedad (270 es hacia abajo).

motion_set(dir,speed) Establece el movimiento a la velocidad speed y la direcci?n dir.

motion_add(dir,speed) Agrega el movimiento al movimiento actual (como una suma vectorial).

place_free(x,y) Devuelve si la instancia colocada en la posici?n (x, y) est? libre de colisi?n. Normalmente se emplea para revisar antes de mover la instancia a la nueva posici?n.

place_empty(x,y) Devuelve si la instancia colocada en la posici?n (x, y) no se encuentra con nadie. Esta funci?n tambi?n toma en cuenta las instancias no s?lidas.

place_meeting(x,y,obj) Devuelve si la instancia colocada en la posici?n (x,y) se encuentra con un el objeto obj. obj puede ser un objeto en cuyo caso la funci?n devuelve verdadero si se encuentra con una instancia
de ese objeto. Tambi?n puede ser el id de una instancia, o la palabra especial other.

place_snapped(hsnap,vsnap) Devuelve si la instancia est? alineada con los valores de snap hsnap y vsnap.

move_random(hsnap,vsnap) Mueve la instancia a una posici?n libre, y la alinea con los valores hsnap y vsnap, al igual que la acci?n correspondiente.

move_snap(hsnap,vsnap) Alinea la instancia, como la acci?n correspondiente.

move_wrap(hor,vert,margin) Teleporta la instancia cuando sale del room al lado opuesto. hor indica si debe desplazarse horizontalmente y vert indica si debe desplazarse verticalmente. margin indica cu?nto debe salir el origen de la instancia del room para teleportarse (es decir, un margen alrededor del room). Esta funci?n se usa normalmente el evento Outside.

move_towards_point(x,y,sp) Mueve la instancia con velocidad sp hacia el punto (x,y).

move_bounce_solid(adv) Rebotar contra objetos s?lidos, como la acci?n correspondiente. adv indica si se emplea rebote avanzado, que toma en cuenta las paredes inclinadas.

move_bounce_all(adv) Rebotar contra todas las instancias, en lugar de s?lo con las s?lidas.

move_contact_solid(dir,maxdist) Mover la instancia en la direcci?n dir hasta que haya contacto con un objeto s?lido. Si no hay collision en la posici?n actual, la instancia es colocada justo antes de donde ocurre una colisi?n. Si ya hay una colisi?n en la posici?n actual, la instancia no se mueve. Puedes especificar la distancia m?xima a mover la instancia maxdist (emplea un n?mero negativo para indicar distancia arbitraria).

move_contact_all(dir,maxdist) Igual que la funci?n anterior pero esta vez se detiene hasta que haya contacto con cualquier objeto, no solo s?lidos.

move_outside_solid(dir,maxdist) Mueve la instancia en la direcci?n dir hasta que no est? al alcance de un objeto s?lido. Si no hay collision en la posici?n actual, no se mueve la instancia. Puedes especificar la distancia m?xima a mover (usa un valor negativo para indicar una distancia arbitraria).

move_outside_all(dir,maxdist) Igual que la anterior pero se mueve hasta estar fuera de alcance de cualquier objeto, no solo objetos s?lidos.

distance_to_point(x,y) Devuelve la distancia de la caja l?mite de la instancia actual hacia el punto (x,y).

distance_to_object(obj) Devuelve la distancia de la instancia actual a la instancia m?s cercana del objeto obj.

[s]position_empty(x,y) Indica si no hay nada en la posici?n (x,y).[/s]

position_meeting(x,y,obj) Indica si en la posici?n (x,y) hay una instancia obj. obj puede ser un objeto, una id de una instancia, o las palabras clave self, other o all.

path_start(path,speed,endaction,absolute) Comienza un path para la instancia actual. path es el nombre del path que deseas iniciar. speed es la velocidad con la que la instancia debe moverse por el path (una
velocidad negativa indica que la instancia se mover? al rev?s sobre el path). endaction indica que deber?a ocurrir cuando la instancia llegue al final del camino. El argumento absolute debe ser true o false. Cuando es true se usan las coordenadas absolutas del path. Cuando es false el path es relativo a la posici?n actual de la instancia. Para ser m?s precisos, si la velocidad es positiva el punto inicial del path se colocar? en la posici?n actual de la instancia y se seguir? desde ah?.

path_end() Termina el path para la instancia actual.

path_index* ?ndice del path que la instancia sigue. No se puede cambiar directamente, debes utilizar la funci?n path_start(path,speed,endaction,absolute). path_position Posici?n en el path actual. 0 es el principio del
path y 1 es el final. Los valores deben estar entre 0 y 1.

path_positionprevious Posici?n previa en el path. Esto se puede usar en eventos de colisi?n para colocar la instancia en la posici?n anterior antes de una colisi?n.

path_speed Velocidad (en p?xels por paso) con la que la instancia sigue el path. Con una velocidad negativa el path se recorre en sentido inverso.

path_orientation Orientaci?n (antihoraria) en la que se realiza el path. 0 es la orientaci?n normal del path.

path_scale Escala del path. Aum?ntala para hacer el path m?s grande. 1 es el valor normal del path.

path_endaction La acci?n que se debe ejecutar al finalizar el path. Puedes indicar los valores explicados m?s arriba.

mp_linear_step(x,y,stepsize,checkall) Esta funci?n hace que la instancia de un paso hacia la posici?n (x,y). La longitud del paso se indica con el par?metro stepsize. Si la instancia ya ha llegado a esa posici?n no
se mover?. Si checkall es true la instancia se parar? cuando choque con una instancia de cualquier objeto. Si es false, s?lo se parar? al chocar con un objeto s?lido. Esta funci?n no propone un camino alternativo,
simplemente se parar? si encuentra un obst?culo. La funci?n devuelve si se ha alcanzado el destino.

mp_linear_step_object(x,y,stepsize,obj) Igual que la anterior, pero esta vez s?lo se tienen en cuenta las instancias del objeto obj. obj puede ser un objeto o una id de una instancia particular.

mp_potential_step(x,y,stepsize,checkall) Igual que las anteriores, pero en este caso la instancia intentar? esquivar los obst?culos que encuentre. Cuando la instancia se choque con un obst?culo cambiar? su
direcci?n para tratar de esquivar el objeto, movi?ndose alrededor de ?l. Puede que no siempre se consiga llegar a la meta, pero la funci?n siempre intentar? acercar lo m?s posible a la instancia. Devuelve true si se
llega a la meta.

mp_potential_step_object(x,y,stepsize,obj) ) Igual que la anterior, pero esta vez s?lo se tienen en cuenta las instancias del objeto obj. obj puede ser un objeto o una id de una instancia particular.

mp_potential_settings(maxrot,rotstep,ahead,onspot) La funci?n anterior hace su trabajo usando un n?mero de par?metros que pueden ser cambiados con esta funci?n. El m?todo funciona como sigue: primero la instancia intenta moverse en l?nea recta hacia la meta. Para ello, mira un n?mero de pasos adelante para ver si hay alg?n obst?culo. Este n?mero de pasos corresponde al valor ahead (por defecto 3). Reduciendo este valor la instancia comenzar? a cambiar su direcci?n m?s tarde si encuentra un obst?culo. Aument?ndolo cambiar? antes de direcci?n. Si detectamos una colisi?n, la funci?n mira a la derecha y a la izquierda para encontrar un camino libre. Esto se realiza en pasos de tama?o rotstep (por defecto 10). El par?metro maxrot indica cu?nto puede cambiar como m?ximo la direcci?n en un paso.
mp_linear_path(path,xg,yg,stepsize,checkall) Calcula un path en l?nea recta para la instancia desde su posici?n hasta (xg,yg) usando el paso especificado en stepsize. Usa pasos como en la funci?n mp_linear_step(). El path indicado debe existir con anterioridad a la llamada de la funci?n y ser? sobreescrito por el nuevo path (consulta el cap?tulo sobre c?mo crear y destruir paths). La funci?n devuelve si se ha encontrado un path. Si no consigue encontrar un camino, la funci?n devolver? un path hasta la posici?n donde la instancia qued? bloqueada.

mp_linear_path_object(path,xg,yg,stepsize,obj) Igual que la anterior, pero esta vez s?lo se tienen en cuenta las instancias del objeto obj. obj puede ser un objeto o una id de una instancia particular.

mp_potential_path(path,xg,yg,stepsize,factor,checkall) Esta funci?n calcula un camino para instancia desde su posici?n actual y orientaci?n hasta (xg,yg) usando el paso especificado en stepsize e intentando evitar colisionar con los obst?culos. Utiliza pasos potenciales como la funci?n mp_potential_step() y los par?metros se pueden configurar con mp_potential_settings(). El path indicado debe existir con anterioridad a la llamada de la funci?n y ser? sobreescrito por el nuevo path (consulta el cap?tulo sobre c?mo crear y destruir paths). La funci?n devolver? si se ha encontrado un camino.

mp_potential_path_object(path,xg,yg,stepsize,factor,obj) Igual que la anterior, pero esta vez s?lo se tienen en cuenta las instancias del objeto obj. obj puede ser un objeto o una id de una instancia particular.

mp_grid_create(left,top,hcells,vcells,cellwidth,cellheight) Esta funci?n crea la rejilla. Devuelve un ?ndice que debe ser usado en las dem?s funciones. Puedes crear y mantener varias rejillas al mismo tiempo. left y top
indican la posici?n de la esquina superior izquierda de la rejilla y hcells y vcells indican el n?mero de celdas horizontales y verticales respectivamente. Finalmente, cellwidth y cellheight indican la anchura y altura de las celdas.mp_grid_destroy(id) Destruye la rejilla indicada y libera la memoria usada. No olvides llamar a esta funci?n cuando no necesites usar m?s la rejilla.

mp_grid_clear_all(id) Marca todas las celdas como libres.

mp_grid_clear_cell(id,h,v) Marca la celda indicada como libre (la primera celda es la 0,0).

mp_grid_clear_rectangle(id,left,top,right,bottom) Marca como libres todas las celdas que intersectan el rect?ngulo definido en coordenadas absolutas del cuarto.

mp_grid_add_cell(id,h,v) Marca ls celdas indicadas como prohibidas.

mp_grid_add_rectangle(id,left,top,right,bottom) Marca todas las celdas que intersectan el rect?ngulo como prohibidas.

mp_grid_add_instances(id,obj,prec) Marca todas las celdas que intersectan una instancia del objeto indicado como prohibidas. Tambi?n puedes especificar una id de una instancia concreta, o la palabra clave all para indicar todas las instancias. prec indica si hay que usar colisi?n precisa (s?lo funcionar? si en el sprite de la instancia est? activada la misma opci?n). p_grid_path(id,path,xstart,ystart,xgoal,ygoal,allowdiag) Calcula el path a trav?s de la rejilla. El path indicado debe existir con anterioridad a la llamada de la funci?n y ser? sobreescrito por el nuevo path (consulta el cap?tulo sobre c?mo crear y destruir paths). xstart e ystart indican el comienzo del path y xgoal e ygoal las coordenadas de la meta. allowdiag indica si se permiten movimientos diagonales entre celdas o no.

mp_grid_draw(id) Esta funci?n dibuja la rejilla marcando las celdas libres y prohibidas (muy ?til para buscar errores).collision_point(x,y,obj,prec,notme) Comprueba si hay una colisi?n en el punto (x,y) con instancias del objeto obj.

collision_rectangle(x1,y1,x2,y2,obj,prec,notme) Comprueba si hay una colisi?n entre el rect?ngulo (s?lido) con las esquinas indicadas e instancias del objeto obj.

collision_circle(xc,yc,radius,obj,prec,notme) Comprueba si hay una colisi?n entre la circunferencia (s?lido) con centro (xc,yc) y radio r e instancias del objeto obj. Puedes usar esta funci?n para ver si un objeto est? cerca de una posici?n.

collision_ellipse(x1,y1,x2,y2,obj,prec,notme) Comprueba si hay una colisi?n entre la elipse (s?lida) con las esquinas indicadas e instancias del objeto obj.

collision_line(x1,y1,x2,y2,obj,prec,notme) Comprueba si hay una colisi?n entre la l?nea que va de (x1,y1) a (x2,y2) e instancias del objeto obj.

object_index* ?ndice del objeto del cual ?sta es una instancia. No se puede cambiar.

id* La id ?nica de la instancia (>= 100000) (Al definir cuartos la id de la instancia bajo el puntero del rat?n es indicada). No se puede cambiar.

mask_index ?ndice de l sprite usado como m?scara para las colisiones. Si indicas -1 la m?scara ser? igual al sprite de la instancia.

solid Indica si la instancia es s?lida o no.

persistent Indica si la instancia es persistente y reaparecer? al moverse a otro cuarto. A veces puedes querer volver a ponerlo a 0 (por ejemplo, al volver al primer cuarto).

instance_count* N?mero de instancias que existen en el cuarto.

instance_id[0..n-1]* La id de la instancia n?mero n.

instance_find(obj,n) Devuelve la id de la instancia n+1 de tipo obj. obj puede ser un objeto o la palabra clave all. Si no existe se devuelve el objeto especial noone. Recuerda que el orden de las instancias cambia en cada step as? que no puedes usar valores de steps anteriores.

instance_exists(obj) Devuelve si existe alguna instancia del objeto obj. obj puede ser un objeto, la id de una instancia o la palabra clave all.

instance_position(x,y,obj) Devuelve la id de la instancia de tipo obj en la posici?n (x,y).
Cuando hay varias instancias en esa posici?n se devuelve la id de la prtimera. obj puede ser un objeto o la palabra clave all. Si no existe se devuelve el objeto especial noone

instance_furthest(x,y,obj) Devuelve la id de la instancia de tipo obj que est? m?s lejana en ese momento a (x,y). obj puede ser un objeto o la palabra clave all.

instance_place(x,y,obj) Devuelve la id de la instancia de tipo obj encontrada cuando la instancia actual se coloca en la posici?n (x,y). obj puede ser un objeto o la palabra clave all. Si no existe se devuelve el objeto
especial noone.

instance_copy(performevent) Crea una copia de la instancia actual. El argumento indica si se debe ejecutar el evento create en la nueva instancia. La funci?n devuelve la id de la nueva copia.

instance_destroy() Destruye la instancia actual.

instance_change(obj,perf) Cambia la instancia a una del tipo obj. perf indica si se deben ejecutar los eventos de destrucci?n y creaci?n.

position_destroy(x,y) Destruye toda las instancias cuyo sprite pasa por el punto (x,y).

position_change(x,y,obj,perf) Cambia todas las instancias en la posici?n indicada a otras del tipo obj. perf indica si se deben ejecutar los eventos de destrucci?n y creaci?n.instance_deactivate_all(notme) Desactiva todas las instancias del cuarto. Si notme es true la instancia actual no es desactivada (normalmente es lo que se desea).

instance_deactivate_object(obj) Desactiva todas las instancias en el cuarto del objeto especificado. Tambi?n puedes indicar all para desactivar todas las instancias o la id de una instancia concreta para desactivarla.

instance_deactivate_region(left,top,width,height,inside,notme) Desactiva todas las instancias en la regi?n indicada (es decir, todas aquellas cuya caja de contorno est? parcial o completamente dentro de la regi?n indicada). Si inside es igual a false las instancias completamente fuera de la regi?n son desactivadas. Si notme es true la instancia actual no es desactivada (normalmente es lo que se desea).

instance_activate_all() Activa todas las instancias del cuarto.

instance_activate_object(obj) Desactiva todas las instancias en el cuarto del objeto especificado. Tambi?n puedes indicar all para desactivar todas las instancias o la id de una instancia concreta para desactivarla.

instance_activate_region(left,top,width,height,inside) Activa las instancias dentro de la regi?n especificada. Si inside es false las instancias fuera de la regi?n son activadas.

room_speed Velocidad del juego en el cuarto actual (en steps por segundo).

fps* N?mero de cuadros que son dibujados por segundo.

current_time* N?mero de milisegundos que han pasado desde que el sistema fue iniciado.

current_year* El a?o actual.

current_month* El mes actual.

current_day* El d?a actual.

current_weekday* El d?a actual de la semana (1=domingo, ?, 7=s?bado).

current_hour* La hora actual.

current_minute* El minuto actual.

current_second* El segundo actual.


?Animo! entre todos podemos generar la base de datos sobre GML mas extensa y util de la red.
40
FAQ: Introduccion a "Game Maker"

Si aun no conoces GM, o llevas muy poco tiempo us?ndolo. Te recomendamos, leas este FAQ que hemos redactado para ponerte al d?a.

Citar
Game Maker, definici?n

Game Maker es una herramienta RAD, basada en un lenguaje de programaci?n interpretado y un paquete de desarrollo de software - SDK - para desarrollar videojuegos, creado por el profesor Mark Overmars, y orientado a usuarios noveles o con pocas nociones de programaci?n. El programa es gratuito, aunque existe una versi?n comercial ampliada con caracter?sticas adicionales.

Tuvo su origen en los a?os 90, cuando Mark Overmars empez? a crear una herramienta de animaci?n para ayudar a sus estudiantes. Con el tiempo su proyecto se convirti? en una herramienta de desarrollo de videojuegos. En 29 de mayo del 2005 sali? la versi?n 6.1.
Game Maker usa su propio lenguaje de programaci?n, el GML (Game Maker Language), con el que se pueden conseguir impresionantes juegos, pues aunque Game Maker est? dise?ado para la creaci?n de juegos en 2 dimensiones, usando el GML se pueden conseguir juegos 3D incre?bles tales como un FPS (First Person Shotter).

El desarrollo de un juego es realmente simple, al basarse en el manejo de:

  • Recursos (gr?ficos, sonidos, fondos, etc.), que se asignan a objetos.
  • Eventos (presionar una tecla, mover el rat?n, etc.), a trav?s de los que se ejecutan comandos.
  • Objetos, sobre los que se act?a en el juego.

Las acciones del juego se pueden programar de dos formas distintas:

  • El interfaz "Drag &amp; Drop" ("arrastrar y soltar"): el programador arrastra unas especies de cajas a una lista, esas "cajas" realizan cierta acci?n. Se gana en facilidad de manejo, a cambio de una menor flexibilidad.
  • El lenguaje GML (Game Maker Language): lenguaje de programaci?n propio de Game Maker, m?s potente, con el que se puede acceder a todas las funciones y posibilidades de Game Maker.

La sintaxis de GML es muy flexible, ya que mezcla elementos de Delphi, C++, y otros lenguajes. As?, el programa trata indistintamente:

  • L?neas terminadas con punto y coma (";") o no.
  • Bloques de c?digo delimitados con begin y end o con llaves ("{" y "}"). Adem?s, se incluyen instrucciones de control de flujo como switch, break, for, etc.

El compilador de Game Maker no compila realmente los ejecutables, sino que une el c?digo a interpretar a su propio int?rprete para formar los ejecutables de los juegos. Por ello, no resulta muy eficiente para grandes proyectos. En versiones recientes se puede compilar el c?digo GML a c?digo m?quina al cargar el juego (Just in Time) justo antes de ejecutar.
En la versi?n 6.1 se utiliza Direct3D para los gr?ficos, lo que los hace m?s r?pidos que en la versi?n 5.3a, que utilizaba DirectDraw. Tambi?n hay soporte para DLLs hechas en C++, Delphi y Pascal, y se pueden crear juegos 3D u online, entre otras funcionalidades.

Enlaces externos



Game Maker, versiones m?s extendidas

Al empezar con GM muchas veces nos entra la duda de cu?l es la mejor versi?n. En este tema se tratar? de responder a esta pregunta.

Primero de todo, hay que dejar claro qu? es lo que uno entiende por "la mejor versi?n". Dependiendo del tipo de juegos que vayamos a crear, la audiencia a la que vayan dirigidos o nuestras propias limitaciones esta definici?n puede variar, por eso se contemplan varios casos:

CitarOrdenador limitado y alta compatibilidad
Si nuestro ordenador es un poco antiguo, si queremos crear juegos que funcionen en el mayor n?mero de sistemas posible o si simplemente no vamos a usar la potencia gr?fica de GM6 o GM7, la mejor opci?n sigue siendo GM5. Esta versi?n necesita pocos requisitos para funcionar y su potencia est? fuera de toda duda. Funciona en pr?cticamente todos los sistemas Windows e incluso en Linux v?a un emulador. Distinguimos dos casos:
1 - GM Registrado: en este caso, la mejor versi?n es GM5.3a.
2 - GM sin registrar: en este caso la mejor es GM5.0, ya que en esta versi?n tenemos m?s funciones disponibles (y m?s importantes) que en cualquier versi?n posterior.




Ordenador actual y gran potencia
Si por contra queremos usar toda la potencia de GM para crear espectaculares efectos visuales, sonido 3D, etc...la mejor versi?n que podemos elegir es GM7 PRO: simplemente es la versi?n m?s potente que existe de GM, la que menos bugs tiene y la que m?s posibilidades ofrece. En este caso no hacemos distinci?n entre la versi?n gratuita y la registrada, ya que si quieres usar la potencia de GM al m?ximo necesitar?s registrarlo. No hagas caso a los que te digan que GM6 es mejor: absolutamente toda la gente que conozco que haya probado el GM7 PRO no ha vuelto a tocar el GM6. Personalmente, he probado todas las versiones de GM desde el GM4 y te puedo asegurar que ninguna supera al GM7 PRO cuando hablamos de potencia.

Links de descarga:

Versiones oficiales
Versiones no oficiales


Herramientas asociadas con GM

Librerias


Lib builder

Se trata de una aplicaci?n para crear librerias. Las librerias son baterias de acciones D&D Poseen codigo en GML encapsulado de tal forma que no es necesario conocer su funcionamiento interno para poder utilizarlo. Basta con arrastrar el icono en cuestion sobre el evento en el que se quiera utilizar, como si de cualquier otra acci?n D&D se tratase.

Links de descarga:


Programacion GML

Dragon Script Resurrection

Aunque GM en todas sus versiones cuenta con un entorno de desarrollo completo, es posible personalizarlo para utilizar aplicaciones externas. Este este es el caso de Dragon Script, un editor de codigo orientado especialmente al lenguaje de Script GML. -Version 6.1-

Links de descarga:


Action Decoder

Debido a su mayor flexibilidad, es muy com?n en los usuarios mas experimentados, que dejen de utilizar paulatinamente el sistema D&D para acomodarse a GML. A menudo esta transici?n resulta algo dificil. Action decoder es una aplicacion dise?ada especialmente para facilitar esta tarea, proporcionando al usuario las equivalencias entre botones D&D y codigo GML. -Version 6.1-

Links de descarga:


Conversor Ejecutables GM6.X - Windows Vista

Con la salida a las calles de Windows Vista, han tomado relieve ciertos errores de compatibilidad con algunas aplicaciones. Si bien GM 7.0 es 100% compatible con esta nueva versi?n de Windows, se han observado errores en algunos juegos creados con GM 6.1. La aplicaci?n de este parche sobre el ejecutable, permite solucionar dichos errores de compatibilidad.

Link de descarga:


Extension Maker

Con la salida de GM 7.0, tambi?n hace aparici?n el concepto de Extension. La extensiones permiten a?adir nuevas funcionalidades a GM, sin tener que recurrir a archivos adjuntos al poder comprimir en un unico paquete DLLs, scripts... que luego van encapsulados en el propio ejecutable.

Links de descarga:


Plugin funciones GML 6.1

El editor de codigo GML incluido con GM, cuenta a su vez, con un asistente que te muestra las funciones cuyos car?cteres coinciden con los terminos introducidos en el editor. En la comunidad hispana de GM, hemos creado este plugin para que dicho asistente tambi?n muestre una breve descripcion en nuestro idioma sobre su sintaxis, utilidad e implementaci?n.

Link de descarga: