Junio 19, 2013, 05:43:28 am

Mostrar Mensajes

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


Temas - Texic

Páginas: [1] 2
1
F.A.Q. / Terminología básica
« en: Mayo 11, 2013, 10:37:26 pm »
Esta es una lista de palabras que uno debería aprender cuando se comienza con Game Maker, algunas son abreviaciones, pero otras son palabras que aunque parezcan parecidas son muy distintas y pueden desorientar. Por ejemplo imagen y sprite, objeto e instancia, etc.

D&D (Drag and Drop): Forma de añadir acciones a un objeto, arrastrando las acciones a el evento
GML (Game Maker Language): Forma de añadir acciones a un objeto en código escrito, escribiéndolo en una accion del tipo Execute a Piece of Code
Evento (Event): Conjunto de acciones que se ejecutan en un determinada condicion, por ejemplo al presionar la flecha izquierda
Acciones (Actions): Acción a relizar por un objeto cuando se cumple la condición del evento, por ejemplo moverse 5 píxeles a la derecha cuando se presiona la tecla derecha

Recursos: Son los elementos que tiene un juego, imágenes, objetos, fondos, sonidos, etc.
Sprites: Imágenes del juego que suelen estar asociadas a objetos, por ejemplo un dibujo de un auto, pueden tener varias subimagenes para estar animadas
Subimagenes (subimages): Subimágenes que tiene un sprite, algo así como los fotogramas de una animación
Sonidos (sounds): Sonidos del juego, por ejemplo disparos o música
Fondos (backgrounds): Fondos, similares que los Sprites pero no son usados para objetos sino para ser colocados como fondo de un room
Tiles: Son una porción de un fondo establecido para ser usado como tileset, se pueden colocar sobre el room para armar los niveles
Fuentes: Representan un tipo de letra con un tamaño y fuente específico, así como un rango de caracteres validos
Paths: Representa un camino fijo que puede ser utilizado por un objeto
Scripts: Sirven para crear nuevas funciones, deben ser escritos en GML
Timelines: Representan una secuencia de acciones que realizará un objeto en una determinada cantidad de pasos
Objetos: Son los que realizan acciones en el juego en base a eventos, por ejemplo un auto, un pelota, etc.
Instancia: Copia de un objeto que está en juego, con sus propias variables y valores independientes
Rooms: Es donde se desarrolla el juego y colocan los objetos, ya sean niveles, pantallas de selección o créditos
Steps: Un step es una ejecución de todos los códigos en el juego. La speed de un room indica la cantidad de steps que se ejecutarán por segundo
View: Porción de la pantalla visible, algo así como un cámara

2
Juegos completos / MOVIDO: reducir tamaño .apk en android
« en: Abril 09, 2013, 11:18:06 pm »
El tema ha sido movido a Preguntas y respuestas.

http://www.comunidadgm.org/index.php?topic=18489.0

3
Noticias / Juntada Makera en Mar del Plata!
« en: Febrero 25, 2013, 04:42:09 pm »
Hola makeros! Les comunico que estoy organizando personalmente una juntada makera en mar del plata (argentina) para las vacaciones de invierno. Todavía hay muchos puntos a confirmar, como el día, la hora, el punto de encuentro exacto y el lugar donde nos juntamos pero ya tengo una idea de cada una, hay que irla adaptando a las necesidades de cada uno de los que vaya. La idea es juntarnos en plaza mayo, el shopping los gallegos o directamente en la terminal de omnibus tipo 10 (se verá según los horarios de micro de cada uno) y de ahí ir pateando para la pizzería "La nieve" que queda en la esquina de rivadavia y la rioja. De ahí podemos ir a dar una vuelta, ir a alguna plaza o a la costa a tomar mates y seguir la charla, veremos qué prefieren hacer. Voy posteando desde ahora para que me vayan confirmando los que pueden ir, me parece que estaría bueno vernos cara a cara y hay tiempo para ahorrar para pasajes. Si quieren recomendar un punto más intermedio o a alguno carece de plata para movilizarse hasta mardel vemos cómo hacemos. Bueno, los que quieran ir vayan avisando por acá y cuando sepamos más o menos los que somos repasamos cada uno de los puntos. Saludos!

4
Desarrollo de Scripts / Scripts extendidos para listas
« en: Febrero 19, 2013, 07:27:21 pm »
Creador: Yo

Version de GM utilizada:  :GM8:

Descripcion:
Una recopilación de scripts útiles para listas creado por mi, extiende las funciones permitiendo mezclar o ordenar 2 listas ligadas (o más modificando los scripts), buscar y reemplazar un valor o todos (como la función string_replace_all), y encontrar todas las repeticiones de un valor en una lista con la posición detallada de cada uno

ds_list_sort_both
//argument0=lista 1
//argument1=lista 2
//argument2=ascendente
//argument3=preciso
var a,b,isreal,isreal2;
if argument3=0
{
if ds_list_size(argument0)<>ds_list_size(argument1) {return -1}
a=ds_list_create()
ds_list_copy(a,argument0)
b=ds_list_create()
ds_list_copy(b,argument1)
ds_list_sort(argument0,argument2)
for (i=0;i<=ds_list_size(argument1)-1;i+=1)
{
ds_list_replace(argument1,i,ds_list_find_value(b,ds_list_find_index(a,ds_list_find_value(argument0,i))))
}
ds_list_destroy(a)
ds_list_destroy(b)
return 1
}
else
{
if ds_list_size(argument0)<>ds_list_size(argument1) {return -1}
isreal=ds_list_create()
isreal2=ds_list_create()
for (i=0;i<=ds_list_size(argument0)-1;i+=1)
{
ds_list_add(isreal,is_real(ds_list_find_value(argument0,i)))
ds_list_replace(argument0,i,string(ds_list_find_value(argument0,i))+string(i))
ds_list_add(isreal2,is_real(ds_list_find_value(argument1,i)))
ds_list_replace(argument1,i,string(ds_list_find_value(argument1,i))+string(i))
}
a=ds_list_create()
ds_list_copy(a,argument0)
b=ds_list_create()
ds_list_copy(b,argument1)
ds_list_sort(argument0,argument2)
for (i=0;i<=ds_list_size(argument1)-1;i+=1)
{
ds_list_replace(argument1,i,ds_list_find_value(b,ds_list_find_index(a,ds_list_find_value(argument0,i))))
}
for (i=0;i<=ds_list_size(argument0)-1;i+=1)
{
ds_list_replace(argument0,i,string_delete(ds_list_find_value(argument0,i),string_length(ds_list_find_value(argument0,i)),1))
if ds_list_find_value(isreal,i) {ds_list_replace(argument0,i,real(ds_list_find_value(argument0,i)))}
ds_list_replace(argument1,i,string_delete(ds_list_find_value(argument1,i),string_length(ds_list_find_value(argument1,i)),1))
if ds_list_find_value(isreal2,i) {ds_list_replace(argument1,i,real(ds_list_find_value(argument1,i)))}
}
ds_list_destroy(a)
ds_list_destroy(b)
ds_list_destroy(isreal)
ds_list_destroy(isreal2)
return 1
}
Este script ordena una lista (lista 1) en orden ascendente o descendente dejando intacta la lista ligada (lista 2). El argumento preciso debe usarse si en la lista 1 existen valores que se repiten, de otra manera se recomienda no usarlo ya que consume más recursos. Las listas deben tener el mismo tamaño. Devuelve 1 si la operación es exitosa, de lo contrario devuelve -1

ds_list_shuffle_both
//argument0=lista 1
//argument1=lista 2
//argument2=preciso
var a,b,isreal,isreal2;
if argument2=0
{
if ds_list_size(argument0)<>ds_list_size(argument1) {return -1}
a=ds_list_create()
ds_list_copy(a,argument0)
b=ds_list_create()
ds_list_copy(b,argument1)
ds_list_shuffle(argument0)
for (i=0;i<=ds_list_size(argument1)-1;i+=1)
{
ds_list_replace(argument1,i,ds_list_find_value(b,ds_list_find_index(a,ds_list_find_value(argument0,i))))
}
ds_list_destroy(a)
ds_list_destroy(b)
return 1
}
else
{
if ds_list_size(argument0)<>ds_list_size(argument1) {return -1}
isreal=ds_list_create()
isreal2=ds_list_create()
for (i=0;i<=ds_list_size(argument0)-1;i+=1)
{
ds_list_add(isreal,is_real(ds_list_find_value(argument0,i)))
ds_list_replace(argument0,i,string(ds_list_find_value(argument0,i))+string(i))
ds_list_add(isreal2,is_real(ds_list_find_value(argument1,i)))
ds_list_replace(argument1,i,string(ds_list_find_value(argument1,i))+string(i))
}
a=ds_list_create()
ds_list_copy(a,argument0)
b=ds_list_create()
ds_list_copy(b,argument1)
ds_list_shuffle(argument0)
for (i=0;i<=ds_list_size(argument1)-1;i+=1)
{
ds_list_replace(argument1,i,ds_list_find_value(b,ds_list_find_index(a,ds_list_find_value(argument0,i))))
}
for (i=0;i<=ds_list_size(argument0)-1;i+=1)
{
ds_list_replace(argument0,i,string_delete(ds_list_find_value(argument0,i),string_length(ds_list_find_value(argument0,i)),1))
if ds_list_find_value(isreal,i) {ds_list_replace(argument0,i,real(ds_list_find_value(argument0,i)))}
ds_list_replace(argument1,i,string_delete(ds_list_find_value(argument1,i),string_length(ds_list_find_value(argument1,i)),1))
if ds_list_find_value(isreal2,i) {ds_list_replace(argument1,i,real(ds_list_find_value(argument1,i)))}
}
ds_list_destroy(a)
ds_list_destroy(b)
ds_list_destroy(isreal)
ds_list_destroy(isreal2)
return 1
}
Hace lo mismo que el script anterior pero mezclando la lista 1 de manera aleatoria, también se debe notar que se elimina el parámetro ascendente. Las listas deben tener el mismo tamaño. Devuelve 1 si la operación es exitosa, de lo contrario devuelve -1

ds_list_find_replace
//argument0=lista
//argument1=valor buscado
//argument2=valor con el que será reemplazado
var a;
a=ds_list_find_index(argument0,argument1)
if a<>-1 {ds_list_replace(argument0,a,argument2)}
return a
Este script reemplaza el primer valor encontrado en una lista por el valor deseado. Devuelve la posición del elemento reemplazado si se encontró, de lo contrario devuelve -1

ds_list_find_replace_all
//argument0=lista
//argument1=valor buscado
//argument2=valor con el que será reemplazado
var a,b;
b=-1
a=ds_list_find_index(argument0,argument1)
while a<>-1 {ds_list_replace(argument0,a,argument2) a=ds_list_find_index(argument0,argument1) b=1}
return b
Este script reemplaza todos los valores encontrados en una lista por el valor deseado. Devuelve 1 si se encontró y reemplazó algún valor, de lo contrario devuelve -1

ds_list_find_index_all
//argument0=lista
//argument1=valor buscado
var a,b;
aux=ds_list_create()
b=-1
a=ds_list_find_index(argument0,argument1)
while a<>-1 {ds_list_replace(argument0,a,"_*#@") ds_list_add(aux,a) a=ds_list_find_index(argument0,argument1)}
a=ds_list_find_index(argument0,"_*#@")
while a<>-1 {ds_list_replace(argument0,a,argument1) a=ds_list_find_index(argument0,"_*#@")}
return aux
Este script encuentra todas las posiciones de un valor buscado en la lista y los vierte en una lista nueva, devuelve el índice de dicha lista

Bueno, esos son todos, me costó un poco hacer algunos, pero a mi particularmente me estaban haciendo falta, espero que a alguno le sirva, saludos!  :)

6
Juegos en desarrollo / Consola GM
« en: Noviembre 20, 2012, 03:58:51 am »

Consola GM

Otro

GM8

Consola GM es una consola de juegos para game maker que te permite descargar y jugar los mejores juegos hechos en GM con absoluta facilidad y comodidad. Tiene una agradable pantalla de selección con screenshots para que no vuelvas a olvidarte de qué iba ese juego que no tocas hace mucho tiempo. La lista de juegos descargables se actualiza con frecuencia, sin necesidad de redescargar el programa










EJECUTABLE: http://dl.dropbox.com/u/18232060/Juegos%20proyecto/Consola%20GM.rar

EDITABLE: http://dl.dropbox.com/u/18232060/Editable%20de%20Consola%20GM.rar


Si tienen alguna sugerencia para hacer, duda o queja, no duden en decírmelo


8
Noticias / Euclideon y su nuevo engine 3D
« en: Agosto 06, 2012, 02:18:12 am »
Les dejo este video por acá
http://www.youtube.com/watch?v=JVB1ayT6Fdc&feature=related
Es una de las demostraciones más interesantes que he visto. Con esto la compañía euclideon se ha ganado varios enemigos, pero tienen mi apoyo, no se logra lo que ellos lograron sin poder hacer el resto. Ya el avance que han dado es colosal, impresionante diría yo. Está en inglés sin subtítulos lamentablemente, quizás en algún momento se me dé por traducirlo pero mientras tanto los que hablen inglés, vale muchísimo la pena el video. Los va a dejar con la boca abierta sin dudas

9
Desarrollo de Scripts / Asociar Extensión
« en: Agosto 01, 2012, 10:54:35 pm »
Creador: Texic
Versión de Gm utilizada:  :GM8:
Descripción: Este script sirve para crear una asociación entre un tipo de archivo y un archivo ejecutable. Puede hacerlo de dos maneras, por medio de los scripts en gml (silencioso), y si no funciona (por ejemplo en windows 7 o similares) pasa al modo no silencioso, creando y ejecutando un archivo de registro .reg
Script:
Código: [Seleccionar]
//argument0: Extensión a asociar (string) Ej: ".svk"
//argument1: Ruta del archivo con que abrirlo (string) Ej: "C:\Mijuego\Juego.exe"
//argument2: Ruta del ícono asociado (string) Ej: "C:\Mijuego\Icono.ico" (Opcional)
//argument3: Tipo de archivo (string) Ej: "Archivo Guardado"
b=registry_set_root(2)
if registry_exists("\"+argument0) {exit}
b+=registry_write_string_ext("\"+argument0,"",string_copy(argument0,2,3)+"file")
b+=registry_write_string_ext('\'+string_copy(argument0,2,3)+"file","",argument3)
b+=registry_write_string_ext('\'+string_copy(argument0,2,3)+"file"+'\shell\open\command',"",argument1+' %1')
if variable_local_exists(argument2) {b+=registry_write_string_ext("\"+string_copy(argument0,2,3)+"\DefaultIcon","",argument2)}
if b=0{
argument1=string_replace_all(string_replace_all(argument1,"\","|"),"|","\\")
argument2=string_replace_all(string_replace_all(argument2,"\","|"),"|","\\")
str='Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\'+argument0+']
@="'+string_copy(argument0,2,3)+"file"+'"

[HKEY_CLASSES_ROOT\'+string_copy(argument0,2,3)+'file'+']
@="'+argument3+'"

[HKEY_CLASSES_ROOT\'+string_copy(argument0,2,3)+"file"+'\DefaultIcon]
@="'+argument2+'"

[HKEY_CLASSES_ROOT\'+string_copy(argument0,2,3)+'file'+'\shell]

[HKEY_CLASSES_ROOT\'+string_copy(argument0,2,3)+'file'+'\shell\open]

[HKEY_CLASSES_ROOT\'+string_copy(argument0,2,3)+'file'+'\shell\open\command]
@="'+argument1+' %1"
'
a=file_text_open_write(working_directory+"\reg.reg")
file_text_write_string(a,str)
file_text_close(a)
execute_shell(working_directory+"\reg.reg",0)
}
str='@echo off
taskkill /IM explorer.exe /F
CD /d %userprofile%\AppData\Local
DEL IconCache.db /a
explorer.exe
exit'
a=file_text_open_write(temp_directory+"\act.bat")
file_text_write_string(a,str)
file_text_close(a)
while(1)
{
screen_redraw()
screen_refresh()
if registry_exists_ext("\"+argument0,"") {execute_shell(temp_directory+"\act.bat",0) break}
}

Soporte para íconos personalizados agregado, y ejemplo sobre cómo usar los parameter string y count para reconocer los archivos asociados abiertos. Usenlo con sabiduría! ;P

Ejemplo Adjunto

PD: Para que el ícono y el nombre de la extensión sean visibles se corre un comando .bat, si lo desean pueden pasar esos comandos de manera silenciosa con silentdos, que se encuentra en gmtoolbox.com. Lo dejo a su elección, de otra manera se muestra en pantalla

11
Desarrollo de Scripts / sprite_change_color
« en: Junio 13, 2012, 07:15:22 pm »
Creador: Texic
Versión de Gm utilizada: :GM8:
Descripción: Este script sirve para cambiar el color de un sprite por otro. Por el momento no funciona para cambiar colores transparentes, sólo colores sólidos.
Script
Código: [Seleccionar]
//argument0=color a cambiar
//argument1=color deseado
//argument2=sprite a cambiar
var w,h,i,j,sp,count,sn;
count=1
w=sprite_get_width(argument2)
h=sprite_get_height(argument2)
xo=sprite_get_xoffset(argument2)
yo=sprite_get_yoffset(argument2)
sn=sprite_get_number(argument2)
a=surface_create(w,h)
surface_set_target(a)
draw_clear_alpha(c_white,0)
draw_sprite(argument2,0,0,0)
for (i=0;i<=h;i+=1)
{
for (j=0;j<=w;j+=1)
{
if surface_getpixel(a,j,i)=argument0 {draw_point_color(j,i,argument1)}
}
}
surface_reset_target()
sp=sprite_create_from_surface(a,0,0,w,h,0,0,xo,yo)
surface_free(a)
while sn>1 and count<>sn {
a=surface_create(w,h)
surface_set_target(a)
draw_clear_alpha(c_white,0)
draw_sprite(argument2,count-1,0,0)
for (i=0;i<=h;i+=1)
{
for (j=0;j<=w;j+=1)
{
if surface_getpixel(a,j,i)=argument0 {draw_point_color(j,i,argument1)}
}
}
surface_reset_target()
sprite_add_from_surface(sp,a,0,0,w,h,0,0)
surface_free(a)
count+=1
}
return sp

Ejemplo: Adjunto

12
Preguntas y respuestas / Sobre GM Studio...
« en: Marzo 30, 2012, 08:20:01 am »
Hola a todos!
Tengo una seria pregunta, no sé si alguno ya lo habrá probado, pero he notado que GM Studio compila en C++, quería preguntar si alguno sabe cuánta es la diferencia de velocidad con las compilaciones en GM8, si es que hay diferencia.
Y algo más (respecto al mismo tema). Ya se perdió el soporte de GM Studio sobre las versiones antiguas de game maker? Porque leí algo así como que el código de proyectos en gm8.1 ya no funcionaba en gmstudio... De ser así piensan que en algún momento los hagan compatibles para poder pasar de gm8 o gm8.1 a gmstudio??
Gracias por leer, espero su respuesta :)

13
Preguntas y respuestas / Error ilógico (Esta vez bien XD)
« en: Febrero 08, 2011, 06:08:22 am »


Bueno, el tema de este error es q no me saltó a mi, le saltó a dos usuarios al querer iniciar mi juego (Al resto no, a todos les anda). Primero a uno q lo usó con Wine en Linux y luego a otro q lo usó en Windows 7. En otras pc's con windows 7 no da problemas el juego. La complicación del error es q es inconsistente. No existe trigger event en el objeto defender. Y en el objeto Mazo q es donde existe dicho evento no hay definición de ningun archivo externo (dll), eso está en el object149, el cual no tiene evento trigger. Me sugirieron q las librerias de windows para correr ejecutables podían estar mal, pero no tengo NI IDEA del tema. Alguien tiene alguna idea sobre qué puede estar causando esto o cómo resolverlo?? Si sirve de algo, el q usaba windows 7 dijo q al principio no podía entrar por ese error, q luego le entró el juego sin error y luego no entró nunca más =S

PD: Perdon por el post anterior, andaba algo apurado y me olvidé del ícono (eso y que hace eones q no posteo un tema)

14
Preguntas y respuestas / Error ilógico
« en: Febrero 07, 2011, 09:20:26 pm »


Bueno, el tema de este error es q no me saltó a mi, le saltó a dos usuarios al querer iniciar mi juego (Al resto no, a todos les anda). Primero a uno q lo usó con Wine en Linux y luego a otro q lo usó en Windows 7. En otras pc's con windows 7 no da problemas el juego. La complicación del error es q es inconsistente. No existe trigger event en el objeto defender. Y en el objeto Mazo q es donde existe dicho evento no hay definición de ningun archivo externo (dll), eso está en el object149, el cual no tiene evento trigger. Me sugirieron q las librerias de windows para correr ejecutables podían estar mal, pero no tengo NI IDEA del tema. Alguien tiene alguna idea sobre qué puede estar causando esto o cómo resolverlo?? Si sirve de algo, el q usaba windows 7 dijo q al principio no podía entrar por ese error, q luego le entró el juego sin error y luego no entró nunca más =S

15
Preguntas y respuestas / Cómo hacer un actualizador??
« en: Diciembre 28, 2010, 11:53:29 pm »
Siempre tan fáciles mis preguntas XD
Quiero lograr hacer un actualizador para un juego, se me ha ocurrido usar execute_string al comienzo del juego o durante el mismo para ir agregando las cosas q faltan en dicha version con respecto a la vieja, pero es muy tedioso, porq además de programar la nueva versión hay que meter los cambios en un txt o algo. También se me ocurrió trabajar con los archivos bin directamente sobre el exe, guardando en un txt los bytes que se encontraban diferentes en un exe y en el otro, y parecía funcionar, pero tardaba demasiado en recorrer un archivo de 2mb, tanto para crear la actualización como para ponerla en práctica (1 hora para actualizar 300kb no es algo viable)
Si alguien tiene una idea soy todo oidos, ya sea que se pueda resolver con Game Maker o con cualquier otro programa, ya probé dll's de archivos bin y todas son más o menos lo mismo, no reducen demasiado el tiempo.
Bueno, de por sí gracias por haber leído hasta ak, y si se les ocurre algo, mejor aún :)

Páginas: [1] 2