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.

Mensajes - brunoxzx

46
Por aquí puedo ayudar, me sé el manual de game maker studio 1 de pies a cabeza y si se me adjudican un par de artículos con gusto los traduzco.

P.D ¿es la traducción de el manual de gms:1 o de gms:2?
47
Mod devuelve el residuo de una division, en ese caso el timer de la alarma dividido entre 3:

Sería más o menos así conforme la alarma se va haciendo más pequeña:
((50/3)=16; residuo 2),
((49/3)=16; residuo 1),
((48/3)=15; residuo 0) AQUï image_alpha se hace 0;

((47/3)=15; residuo 2),
((46/3)=15; residuo 1),
((45/3)=15; residuo 0) AQUï image_alpha se hace 0;

((44/3)=15; residuo 2),
((43/3)=15; residuo 1),
((42/3)=15; residuo 0) AQUï image_alpha se hace 0;.....

y bueno ya sabras como sigue. EL operando modulo suele usarse para hacer conteos ciclicos, por ejemplo si quieres que se cuente del cero al 9 y se repita, haces esto: "numero=(numero+1) mod 10".

Lo de que rebote ya depende de tí jeje.. o de alguien más por acá...
48
Propuestas y soporte / Re:aplicación de Comunidadgm
Junio 29, 2017, 07:20:16 PM
También se puede hacer un pseudo interprete html, leer lo necesario solo usando la funcion "http_get". Tambien me parece que se puede iniciar sesión enviando ciertos formularios y de allí hasta poder escribir mensajes. Habría que ver.
49
Propuestas y soporte / Re:Un juego nuevo, "en serio"
Junio 29, 2017, 07:10:48 PM
En mi experiencia, lo ideal es comenzar con proyectos pequeños, tratar de hacer prototipos con los programadores y sobre todo entenderlos, de verdad los programadores tienen personalidades complejas muchas veces acompañadas de un ego grande que se niega a no hacer algo que es prácticamente imposible (y me incluyo).

También hay que saber en que pueden echarse la mano a veces hay trabajos que los dos pueden hacer, el grafista y el programador o el de sonido junto con el programador. Es extremadamente importante que se sepan comunicar en estos aspectos, que se vea que no hay un trabajo totalmente independiente de los demás, por eso recomiendo, especialmente a un diseñador, aprender lo básico de todas las materias y conseguirse colegas que le expliquen como va la cosa exactamente.

Y como conclusión, la verdad que no se me ocurre cual es la definición de un juego "profesional", diría que está en el acabado, en los detalles (que solo pueden ser dados por gente con experiencia). Por eso digo que te quites esa idea de la cabeza y si lo que de verdad quieres hacer es juegos, pues hazlos con esfuerzo, lo mejor que puedas, consiguiendo a un buen grupo, exponiendo tus ideas y dándonos a entender que realmente vas a romperla en algún sentido.
50
Pon esto en step de tu jugador.

[gml]
if (invulnerable && ( ( alarm[0] mod 3 )==0 )  )  ){
    image_alpha=0;
}else image_alpha=1;[/gml]

Puedes cambiar el 3 por un numero menor para hacerlo más constante o uno mayor para hacerlo menos.
51
Cita de: Neto Maker en Junio 29, 2017, 03:56:39 AM
Son 1,600 Objetos y llega a subir a 1,700 en el transcurso cuando se crean Enemigos, valas, sangres etc...
Y el room mide 14,000 por 7,000 Entonces corre bien, pero con los 30 enemigos comiensa a dar lag...
Apenas estoy exportando a YYC por que me dijieron que es más veloz.. pero me no me deja... mira abri otro Hilo
http://www.comunidadgm.org/preguntas-y-respuestas/error-al-compilar-android-yyc/

Gracias...

Eso que me mencionas lo mire en el manual, si mejora con el compilador YYC o no, igual vere la forma se mira interesante eso de el seguimiento por medio de Grid y Paht
Debo suponer que la mayoría de esos objetos son muros. Lo ideal para juegos con mapas muy grandes es usar un arreglo bidimensional, como una cuadricula que indique donde hay un muro y donde no, claro que esto te limitará a solo tener muros de tamaños multiplos de 32, o 16 (un tamaño fijo), pero la complejidad de las colisiones de ser O(n) donde n es el numero de muros, se convierte en O(1) osea solo un chequeo por personaje que colisiona con muros, ¡totalmente independiente del numero de muros!.

En GMS:2 es fácil hacer colisiones con tiles me parece (haciendo lo del arreglo que mencionaba, pero automaticamente con tiles), así que para un juego como el tuyo sería útil. Hay modos de hacer esto en gm:studio, hace años texic y yo discutimos sobre el tema y la verdad que a este punto me doy cuenta que tenia razón en varias cosas (quizá me di cuenta desde el momento pero no lo admití) y sobre todo sus ejemplos eran bastante más legibles, aúnque están en la seccion de descargas que aparentemente ya no funciona, como sea, te dejo el link a la discusion:

http://www.comunidadgm.org/articulos/tips-para-juegos-de-plataformas-(programacion)/

Por mi parte traduje este articulo de mike, que de todos modos es interesante leer:
http://www.comunidadgm.org/articulos/colisiones-con-tiles-(programacion)/msg86361

La idea es que cheques otros caminos que te lleven al mismo destino jé. A este punto y sobre todo si tu room es taaan grande, yo haría 2 "mp_grids" (en lugar de mp_potential) para que los zombies te encuntren, una muy poco precisa de 128 x 128 o por allí en donde los zombies más distantes puedan encontrar la ruta, y haría otra más precisa de 32x32 o 16x16 en donde los zombies más cercanos te encuentren ya sin falla. 

Como sea esto en definitiva sería cambiar un montón de cosas y quizá no sea lo que planees por el momento. Solo quería mencionar que es posible optimizar a los 30 enemigos.
52
¿Te descargaste el ndk?. Se tiene que descargar ademas del sdk.

leete por aquí:
https://help.yoyogames.com/hc/en-us/articles/216753638-Setting-up-GameMaker-Studio-for-YoYoCompiler-Platforms.

Si no es eso, te recomiendo ir preguntando en yoyo, porque ni idea de aquellos errores relacionados con la compilacion a android, aúnque bueno uno nunca sabe a lo mejor tambien te responden aquí.
53
Una buena opción es usar las funciones de paths "mp_potential_path" (o mp_grid_path  que son más precisas) . Y calcular el path hacia la posicion de tu personaje. Una vez hecho eso, moverlo por el path hasta estar cerca y aplicar mp_linear estando cerca, debes tomar en cuenta que si tu personaje se mueve mucho tienes que recalcular el path.

30 enemigos (zombies) no deberían ralentizar un juego bien optimizado,  piensa en los age of empires que mueven muchos más.
54
Preguntas y respuestas / Re:COLISION CON SPRITE
Junio 29, 2017, 02:53:55 AM
El código que puse debe ir en el step de los enemigos no del jugador y solo funcionará si la linterna se dibuja en la posición (x,y) del personaje, de otro modo debes modificarlo ligeramente.

Cita de: Alesxanderk en Junio 28, 2017, 08:32:19 PM
El obj_personaje necesita tener dos variables nuevas:

"pos_lin_x" y "pos_lin_y"; esto para que los enemigos puedan saber exactamente donde esta el origen de la luz.

el obj_enemigo para detectar la colisión necesita un código como este:


Colision = noone;
Colision = point_in_circle(x, y, obj_personaje.pos_lin_x, obj_personaje.pos_lin_y, 16);

if Colision != noone{
//Lo que tenga que hacer en caso de colisión
}

Nota 1: El código es más ilustrativo que funcional, debes de acomodarlo a tus necesidades.
Nota 2: Use "point_in_circle" como un ejemplo, si el sprite linterna tiene forma triangular usa "point_in_rectangle". haz los cálculos necesarios para que coincida con la forma y tamaño del sprite de la linterna.

Esto no funcionará, revisará si hay colisión (en un solo punto) con un circulo en donde se encuentra la linterna y nonoroman no mencionó que el sprite de la linterna fuera circular, tampoco que mide 16 pixeles.
55
Preguntas y respuestas / Re:COLISION CON SPRITE
Junio 28, 2017, 01:20:07 AM
Un modo sencillo sería:
[gml]
var s=objecto_PLAYER.sprite_index;
objecto_PLAYER.sprite_index=sprite_LINTERNA;
if ( place_meeting(x, y, objecto_PLAYER ) ){
    //Evento Colision:
}
objecto_PLAYER.sprite_index=s;
[/gml]
56
Cita de: NiuWeb en Abril 02, 2016, 09:31:59 PM
Yo no, porque sencillamente tu código no hace lo que el mio.
Por ejemplo, si tengo una estructura como "ABC" tu código devolvería "00000A00000B00000C", en cambio, el mio devolvería la str como "000970009800099"
Oh, tienes razón, , me confundí, por algúna razón creí que estabas redundando, siendo ese el caso, está bien que uses el while.
Para que quede como dices lo habría hecho así (pero no te confundas el while está perfecto)...

[gml]
///encode(str, key);
var str, key, i, nstr1, nstr2, str2, size, s;
str = string(argument0);
key = string(argument1);
nstr2 = "";
nstr1 = "";

for(i = 1; i <= string_length(str); i += 1)
{
    s=string( ord( string_char_at(str, i) ) );
    nstr1 += string_repeat('0', 5-string_length(s) ) + s;
}
//Puedes usar i en ambos casos, usar otra variable como j es para ciclos anidados...
for(i = 1; i <= string_length(key); i += 1)
{
    s=string( ord( string_char_at(key, i) ) );
    nstr2 += string_repeat('0', 5-string_length(s) ) + s;
}

str2 = "";
size=string_length(nstr1);
//Normalmente es mejor guardar el numero de veces que se va a iterar en un ciclo, así no tienes que calcular el largo de tu cadena cada vez.

for(i = 1; i <= size; i += 1)
{
    s= string( ord( string_char_at(nstr1, i) ) + ord( string_char_at(nstr2, 1+ ( (i-1) mod size ) ) ) )
    str2 += string_repeat('0', 5-string_length(s) ) + s;
}
return str2;
[/gml]

En todo caso la optimizacion está en quitar los ciclos que hacen que la llave tenga el mismo tamaño que el texto.
57
Mira, yo lo habría escrito así.
[gml]///encode(str, key);
var str, key, i, nstr1, nstr2, str2, size;
str = string(argument0);
key = string(argument1);
nstr2 = "";
nstr1 = "";

for(i = 1; i <= string_length(str); i += 1)
{
    nstr1 += "00000"+string_char_at(str, i);
}
//Puedes usar i en ambos casos, usar otra variable como j es para ciclos anidados...
for(i = 1; i <= string_length(key); i += 1)
{
    nstr2 += "00000"+string_char_at(key, i);
}

str2 = "";
size=string_length(nstr1);
//Normalmente es mejor guardar el numero de veces que se va a iterar en un ciclo, así no tienes que calcular el largo de tu cadena cada vez.

for(i = 1; i <= size; i += 1)
{
    str2 += "00000" + string_char_at(nstr1, i) + ( string_char_at(nstr2, 1+ ( (i-1) mod size ) )  );
}
return str2;[/gml]
58
Cita de: NiuWeb en Abril 02, 2016, 04:45:14 PM
Lo sé, es una mierda ¬_¬ xDDD
Mejor trollea el nuevo que hice (spam spam spam spam xDDD) que es menos terrible que éste
Yo diría que preferiría el que no dice explicitamente que hace mi texto 25 veces más grande... Lo leeré y si veo algo extraño te comento.

Cita de: NiuWeb en Abril 02, 2016, 04:45:14 PM
Porque sí xd, así programo yo, se ve más pro y me gusta hacerlo así. No le veo nada de malo D': xDDD
:-\
59
Cita de: kostra en Enero 22, 2016, 05:43:39 AM
no es justo, esta vez no viene ningúno de los "dioses" del foro a fastidiarle el script? :V
ya os vale xD
Yo he venido a molestar solo por este comentario.

Mira NiuWeb tu script tiene problemas por todos lados, para empezar por le nombre. ¿Porque huevo revuelo? por díos, pero que falta de creatividad, igual pudiste haber puesto algoritmo del espagueti enredado, o el de el pajaro mutilado. Te recomendaría deshumanizar el nombre de tu algoritmo y darle un nombre al termino común como NWEA(Niu Web Encryption Algorithm) para seguir la norma de los algoritmos monotonos con el nombre de su autor como RC4 o RSA. O quizá debiste seguir la norma de los algoritmos que llevan un nombre que intenta resumir la útilidad o el como funciona su algoritmo como el MD5 (Algoritmo de Resumen del Mensaje)

Siguiendo esa segunda norma yo le habría puesto NUEA acronimo de Not Useful Encryption Algorithm.


Para empezar que onda con eso de que la contraseña se invierte por la mitad si su medida es par, what? ¿para que? te parece muy divertido hacer que si la contraseña era "como" se cambie a "moco"? woow Seguridad!!!.

y esto como porque?
[gml]max(  ord(m1), ord(m2)  ) - min(  ord(m1), ord(m2)[/gml]

Mejor así abs(m2-m1)...


[gml]while string_length(str) > (string_length(key) + 1)
{
    var rest = string_length(str) - string_length(key);
    var falt = string_copy(key,1,rest);
    key += falt;
}


for(i=1;i<=string_length(str);i++)
{
    char = ((string_ord_at(str,i) + string_ord_at(str,i) - string_ord_at(key,i)));
    result += chr(char);
}
[/gml]

y todo eso, pues bien podría ser esto...

[gml]for(i=0;i<string_length(str); result += chr((string_ord_at(str, i+1)*2 - string_ord_at(key, 1+( ( i++)  mod string_length(key) )  ))))
{
}[/gml]
Que ademas de ser corto y muy eficiente, cumple con el compromiso de parecer encriptado.

Ahora, ni hablar del script para desencriptar, o de que los caracteres se pasan del 255 o de la poca seguridad, en pocas palabras tu algoritmo está casi peor que mi huevo revuelto de esta mañana (y eso es decir mucho).

Suerte NiuWeb. (Estoy en mi tiempo de ocio y sé que no me sale lo de troll xp).
60
Cita de: Wirgwoks en Febrero 15, 2016, 10:24:34 PM
Cita de: brunoxzx en Febrero 15, 2016, 10:18:44 PM
Tranquilos hombres de bien, estó se trata de un problema sencillo, no es todo culpa de Wirgworks, en mis tiempos ya habría hecho un ejemplo. Solo ahora ya no soy ese joven con animos de aprender y enseñar. Supongo que hace falta gente así por aquí...

Ya ni puedo crear un tema para tratar de solucionar un problema.... cada vez me dan menos ganas de preguntar para que me contesten de esa manera.

Yo no sé, a mi me toco un tiempo de una cgm bastante seria, los trolls eran desterrados rápidamente. Pero igual decayó, no sé como deba de ser la cosa, igual le hacía falta algo de gracia al estilo Niuweb... En todo caso, no te preocupes de más por las respuestas desconsideradas, tu dale pregunta. y no sigas todos los consejos que dan por allí, algúnos no son tan buenos.