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 - penumbra

1936
Preguntas y respuestas / Re:multi score
Febrero 08, 2014, 10:32:41 PM
Para guardar datos están bien los INIs, pero creo que lo que el makero yunkelsss quiere es símplemente mostrar el valor de una variable

En esencia lo que quieres hacer ya lo lograste, lo que te falla es cómo estás manejando las variables, y eso es más difícil de diagnosticar sin ver el código. Pon por favor el código que aumenta los puntos para el p1 y p2.
1937
He leído algunas historias algo bizarras respecto a .tk. Historias que no puedo decir si son ciertas o no. De momento, en cuanto a dominios de pago, estas alternativas son las que me parecen mejores.

https://www.namecheap.com/domains/registration/gtld.aspx

http://www.gandi.net/dominio/precio/detalle/info/ (creo que es más caro que namecheap, pero la oferta que de momento tienen para dominios .info se ve buena)
1938
Tener una variable
room_nuevo

que indique si un room es "nuevo" (1, se acaba de entrar) o es "viejo" (0)

Ajustar  una alarma = 1 (un solo paso) solamente cuando se entra a un room, para cambiar la variable room_nuevo de 1 a cero

en SETEP se debe "monitorear" la posición del jugador en todo momento y guardarla, excepto cuando una habitación es nueva
if (!room_nuevo)
{
   pos_previa[0] = obj_player.x
   pos_previa[1] = obj_player.y
}


IF (room_nuevo)
{
    obj_player.x = pos_previa[0]
    obj_player.y = pos_previa[1]
}
1939
Saludos, comunidad makera. Les planteo mi duda.

Me gustaría, si no es mucha molestia, que los makeros entendidos me recomiendaran una opción buena y barata para registrar un dominio, según su experiencia.

Estoy interesado en registrar un par de dominios .net  o .org para ir subiendo cosillas relacionadas con mis andanzas y cuitas en el desarrollo. Por supuesto que he estado buscando en google, pero las ofertas son muchas y no quiero comprar algo en una empresa "patito" como decimos acá en méxico  :D.  Cualquier info se agradece

Saludos.
1940
Cita de: harrymx en Febrero 07, 2014, 05:39:52 AM
otra duda, sabes en donde puedo encontrar todo los comandos que se pueden utilizar en los script?



Ese botón abre el manual con todas las funciones y palabras reservadas
1941
No estoy muy seguro de que por usar un archivo de texto para definir las habitaciones, el tamaño se vaya a reducir.

Acabo de hacer la prueba, hice una demo de una sola habitación con un fondo en ella, el tamaño del del archivo gm81 fue de 23 KB

Luego hice otra demo con 15 habitaciones, en cada una usé el mismo fondo de la primer demo, el tamaño del gm81 resultó de 25 KB. Esto indica que lo que más impacta al espacio en disco  es el número de recursos individuales (y el tamaño de los mismos), no el número de veces que esos recursos se usan (hablando de habitaciones, tiles y fondos, no de instancias)

Aunque uses un archivo de texto, los fndos y tiles todavía son necesarios para "armar" la room. Esos fondos ocupan espacio y el usuario los tiene que descargar, no hay vuelta de hoja. Al final el espacio en disco de todo el proyecto es el mismo, ya sea que los gráficos estén en el exe, o estén en carpetas, o los bajes de internet por separado.

Cargar recursos gráficos de manera extrerna ya no es muy recomendable en GM:S.

La única manera de reducir el tamaño del gif es quitarle subimágenes o re-escalarlo para hacerlo más pequeño. Generalmente, un video "normal" (avi, rm, wmv) ocupa menos que un gif de la misma duración, el detalle es que el soporte para videos en GM:S es muy malo, más bien inexistente. Es increíble que a estas alturas haya shaders y que no se pueda cargar un simple video en la room.
1942
Es buena tu propuesta, pero suponiendo que se creara la nueva sección que propones, Iros.

¿Qué pasa con la vieja y olvidada sección de ejemplos? ¿Se borra?

¿Qué garantiza que la nueva sección de ejemplos no se convierta con el tiempo en otra vieja y olvidada sección de ejemplos? (si se hace igual que la actual, creo que pasaría lo mismo)

En mi simple opinión, lo mejor es RENOVAR la vieja sección de ejemplos, porque el problema con ella no es que no sea útil, sino que nadie le hace caso. Por ejemplo, cambiar el enfoque en que se usa:

"Actualmente hay disponibles 2053 descargas"

Ordenar todas esas descargas, categorizarlas, si hay ejemplos muy viejos, desechar los que ya de plano no sirvan o adaptarlos a GM 8.1 y GM:S, meterles comentarios. Siendo sincero, en lo que llevo aquí en GM, he usado una o dos veces  la sección de ejemplos, por que no me gusta hacer una búsqueda y tener que leer entre un montón de resultados para ver cuál tiene el ejemplo correcto.

O que en la página de INICIO aparecieran ejemplos al azar, o una sección de "los ejemplos más visitados", etc.

Son sólo ideas arrojadas así nada más. Del dicho al hecho hay mucho trecho. Se necesitaría de la colaboración de muchos makeros comprometidos para hacerlo, no creo que los administradores tengan tiempo  :-[
1943
Cita de: TLT96 en Febrero 06, 2014, 10:05:18 PM
Por ejemplo, yo hice un barajeo de deck (Luce muy pro pero mientras mas leas mas WTF se pone xDD)

Mmm no sé bajo qué efectos estabas cuando hiciste eso, hay maneras más eficientes y sencillas de hacer un barajeo  :o Todos esos while se podrían resumir dos repeat anidados o dos for anidados, y a lo mejor ni eso haría falta
1944
Preguntas y respuestas / Re:que es un surface
Febrero 06, 2014, 09:59:04 PM
Puntos a tener en cuenta


  • No todas tarjetas gráficas soportan superficies, aunque en la mayoría de los casos deberían funcionar.

  • Las superficies no se limpian automáticamente, como la pantalla, lo que dibujes se va encimando en ella (lo cual es bueno si eso es lo que quieres)

Pasos para usar una superficie: (Intencionalmente no voy a poner las funciones, para que consultes el manual y veas las funciones que hay)

1. Crear la superficie
2. Cambiar el destino de dibujo (de la pantalla por defecto a la superficie que creaste)
3. Limpiar la superficie (pueden contener "basura", incluso si no se ha dibujado nada en ellas todavía)
4. Dibujar lo que quieras (sprite, fondo, etc)
5 Volver a ajustar el destino de dibujo a la pantalla.
6. Dibujar la superficie en DRAW
1945
Las matrices y arreglos sirven para organizar mejor información que de otro modo estaría "desperdigada" o sería más dificil de interpretar al estar almacenada en variables "sueltas"

Ejemplo. No sé si todos los castlevania, pero juegos como Symphony of the Night y Aria of Sorrow tienen una tabla de experiencia que sirve para saber cuando subir de nivel, Esa tabla sería muy engorrosa de manejar si se hiciera con variables normales, pero con un arreglo quedaría

tabla_exp[0] = 100
tabla_exp[1] = 300
tabla_exp[2] = 800
tabla_exp[3] = 1500

suponiendo que haya una variable "mi_nivel" que indique el nivel actual del jugador y unavariable "mi_exp" que indica la experiencia actual del jugador

if (mi_exp > tabla_exp[mi_nivel])
      mi_nivel += 1                              //Subir de nivel cuando se sobrepase la experiencia del nivel anterior



Otro ejemplo, suponiendo que en tu juego puedes cambiar el personaje entre un mago, un ninja y una sacerdotisa, y que cada personaje tiene frases distintas que dice de vez en cuando

En este arreglo, un 1 significaría que ese personaje es el que está activo actualmente. Define en GM tres constantes. Mago = 0, Ninja = 1, Sacerdotisa = 2
personajes[Mago] = 0   
personajes[Ninja] = 1     
personajes[Sacerdotisa] = 0


Una matríz con los diálogos:

frases[1, Mago] = "Frase 1"   
frases[2, Mago] = "Frase 2"   
frases[3, Mago] = "Frase 3"   
frases[1, Ninja] = "Frase 1"   
frases[2, Ninja] = "Frase 2"   
frases[3, Ninja] = "Frase 3" 
frases[1, Sacerdotisa] = "Frase 1" 
frases[2, Sacerdotisa] = "Frase 2" 
frases[3, Sacerdotisa] = "Frase 3" 


Saber qué personaje está activo
var i, p_activo;
for (i = 0; i < 3; i+=1)
{
     if personajes[i] == 1)
     {
          p_activo = i                    //p_activo guarda la posición del índice del personaje activo (0, 1 o 2)
          break     
     }
}


Elegir una frase al azar:
frase_actual = frases[choose(0,1,2), p_activo]

Cita de: Jangse en Febrero 06, 2014, 07:47:12 PM
¿Que es mejor?

-Grandes porciones de código GML en pocos eventos.
-Trozos pequeños de código en muchos eventos.

Esto mismo lo has preguntado 3 o 4 veces anteriormente de distintas maneras. Y todas las veces los makeros te han respondido que no hay una manera "mejor" (sin contar cuando de plano tienes un bug enorme).

1. El código no se puede repartir entre MUCHOS eventos. Un código que dibuje algo, irá en DRAW y no lo puedes meter en ALARM. Un código que vaya en STEP no puede ir en CREATE, así de simple.

2. Si tienes 300 líneas de codigo STEP, son 300 líneas que GM tiene que ejecutar, no importa si están en STEP, o repartidas entre BEGIN STEP y END STEP.

Casi podría decir que tienes una rara fijación con el volumen de código  XD. SI tienes código ineficiente, lo vas a saber cuando se te vuelva una tortuga tu juego. Entendería que te preocuparas tanto si viviéramos en la época del atari o el nintendo, ahí sí que tenías que andar con mucha cautela para no escatimar recursos. No pienses tanto en el volumen del código y preocúpate más por no saturar de instancias una habitación o por no abusar de las funciones más lentas de GM
1946
Si es sólo multiplicar xp por un factor, hay varias maneras de hacerlo, pero se me ocurre.

crear un mensaje en pantalla que solicite al usuario introducir el factor

factor = get_integer("Qué factor usar en el sistema de coordenadas?", 2)

Crear un script "operacion()" que realice la operación (valga la redundancia). El código del script sería
var factor0, xp0, yp0;
factor0 = argument0,
xp0 = argument1
yp0 = factor0 * xp0
return yp0


El script lo debes llamar en STEP, después de haber leído el valor del factor (mediante el mensaje en pantalla)
yp = operacion(factor, xp)

En esencia esa es la idea, pedir un valor, ejecutar un script que use el valor que se introdujo, devolver el resultado. Obcviamente no está completo, falta hacer que el factor sólo se pida una vez, no cada STEP, por ejemplo.

if (factor == 0)
     factor = get_integer("Qué factor usar en el sistema de coordenadas?", 2)


1947
¿Por qué quieres definir la operación?

¿Cuántos tipos de operaciones distintas quieres definir?

En casos como estos he visto que una opción popular es usar la función execute_string(str,arg0,arg1,...) aunque últimamente he leído que no es conveniente, pues  es una función lenta, y facilita el uso de código malicioso por parte de otros usuarios para por ejemplo, hacer trampa en el juego o robar recursos del mismo
1948
Preguntas y respuestas / Re:ayuda com GML
Febrero 05, 2014, 08:28:26 PM
El GM:S incluye tutoriales para instalar que resuelven esas dudas que tienes.
1949
Preguntas y respuestas / Re:GMS FULL
Febrero 05, 2014, 08:46:49 AM
Pues no es por desanimar, pero esa licencia de la página de facebook no te va a servir para Android & iOS.

" les invito a que adquieran el profesional totalmente gratis con licencia y legalmente"

Esa no es una licencia Android ni iOS, es cierto que si introduces esa licencia te deja el GM:S en estado "Profesional", pero NADA MÁS te habilita el módulo Tizen. Todavia necesitarías pagar por Android e iOS.


EDIT: Aunque recuerdo que hace poco otro makero preguntó por la oferta para tener GM:S Standard, a lo mejor esto le sirve
1950
dices que cuando  global.movimientoC == 1, el enemigo avanza hacia el jugador. Y que cuando el jugador deja de contactar la línea de visión, el enemigo se para.

Cita de: 7sixerCF en Febrero 05, 2014, 07:25:13 AM
Solucion
Necesito hacer que cuando el jugador deje de colisionar con el objeto "Linea de vision" la variable global.movimintoC se mantenga en 1 hasta que sea cambiada por otro Set Variable y no

pero es que no somos videntes ni magos, si la variable global.movimintoC no se mantiene en 1, es porque tú le estás indicando que no se mantenga en 1, y esto no hay manera de saberlo dónde lo haces (en el objeto enemigo, en el objeto jugador, en el objeto línea de visión, etc) sin mirar el código del proyecto.

El hecho de que el jugador dejar de colisionar con la línea de visión no hace que GM ponga la variable global.movimientoC  en cero automáticamente. Al salir de la colisión, la variable debería mantener su valor en 1. El regreso a 0 sólo pasa si en algún lado (un evento STEP o ALARM) se escribe global.movimientoC = 0, ya sea mediante código o mediante D&D. Y si dices que

Cita de: 7sixerCF en Febrero 05, 2014, 07:25:13 AM
si el jugador sale de esa linea de vision aunque el enemigo este en frente de el este deja de seguirlo

Es porque en algun lado estás probando si hay colisión, y cuando esto es falso, estás haciendo global.movimientoC = 0

De ahí se deduce que revisar si hay colisión sirve para iniciar la persecución, pero no para detenerla. Para detenerla se tendría que usar

a) una alarma que tras un tiempo haga global.movimientoC = 0
b) determinar si el jugador se alejó lo suficiente del enemigo para qué éste deje de seguirlo
c) otro método que se ajuste a cómo quieres que se comporte el enemigo (cosa que ignoramos)