Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: fatalfury en Febrero 20, 2013, 03:22:53 AM

Título: ¿No entiendo que es una instancia?
Publicado por: fatalfury en Febrero 20, 2013, 03:22:53 AM
Buenas noches

Hablamos mucho de instancias pero no se que son, quiero dejar de ser ignorante.

muchas gracias
Título: Re:¿No entiendo que es una instancia?
Publicado por: walleta en Febrero 20, 2013, 05:44:44 AM
Pues segun yo una instancia es un objeto o entidad xD
Título: Re:¿No entiendo que es una instancia?
Publicado por: Creador de juegos GM en Febrero 20, 2013, 05:54:03 AM
una instancia es un objeto,por ejemplo,creo un obj_player,si pongo en gml instance_create(obj_player,x,y,)
estoy creando la instancia obj_player,o sea,el objeto obj_player
Título: Re:¿No entiendo que es una instancia?
Publicado por: penumbra en Febrero 20, 2013, 10:14:07 AM
Emm... en realidad, NO.

Es una muy buena pregunta, Fatalfury. Hay que aclarar una cosa, elemental y fundamental para cualquier makero. Un objeto no es lo mismo que una instancia. Estos dos conceptos suelen confundirse entre sí, incluso puedes llegar a terminar exitosamente tu juego, tratando ambas como la misma cosa, pero no lo son. Dependiendo de CÓMO programes o cómo quieras desarrollar cierto script, el no entender la diferencia, te puede llevar a quebraderos de cabeza (a mi me pasó). Intentaré explicar la diferencia, a ver si puedo.

Un objeto es un elemento "ideal" que posee un conjunto de características y cualidades que describe o define a otro elemento ( su(s) instancia(s) ). Es como una plantilla o un molde a partir del cual "salen" sus instancias. Si quieres que en tu juego, al personaje lo persigan 10 zombies, no es eficiente crear 10 objetos distintos, cada uno con una instancia. Es mejor crear un solo objeto zombie, con 10 instancias. Las instancias son entidades o REPRESENTACIONES FÍSICAS (hablando virtualmente) del objeto zombie. El objeto describe a su instancia, la instancia no describe a su objeto, lo representa

Cuando en el editor de rooms colocas un objeto, o cuando escribes instance_create(), en realidad estás colocando una instancia o representación del objeto. Esto indica que los objetos no pueden "interactuar" directamente con el mundo, sólo sus instancias.

No puedes cambiar ninguna variable de ningun objeto. LOS OBJETOS NO PUEDEN TENER VARIABLES. Cuando en game maker escribes algo como x += 5. No estás cambiando la variable del objeto, estás cambiando la variable de la instancia. Eso sí, puedes tener más de una instancia, cada una con coordenadas distintas.

No puedes manejar ni directa ni individualmente el evento de una instancia. LAS INSTANCIAS NO MANEJAN EVENTOS. ¿Si tuvieras 100 instancias de zombies, ¿te imaginas tener que especificar el evento step para cada una? Los objetos son quienes manejan eventos. Las órdenes en los eventos de un objeto se transfieren a sus instancias, no a la inversa (porque no es posible)

El alcance de los objetos es definir qué cosa son sus instancias y cómo se comportan a través del tiempo. La instancia hace lo que queda pendiente: representar "físicamente" en pantalla al objeto e interactuar con instancias de otros objetos. A ver si se entendió  :-[
Título: Re:¿No entiendo que es una instancia?
Publicado por: pucara en Febrero 20, 2013, 02:43:06 PM
Con el permiso de Penumbra, se puede deducir que:

Una instancia es la "copia" o "clon" de un objeto, las cuales pueden interactuar de formas diferentes, dependiendo del código del objeto.

Ese aplauso para el puca...  8)
Título: Re:¿No entiendo que es una instancia?
Publicado por: Mgbu en Febrero 20, 2013, 03:57:23 PM
A mi se me hace mas facil entenderlo así:

Un objeto es lo que uno programa, o sea un ejemplo de un objeto sería un obj_bala, que en Step se mueve, que en Colision con pared se destruye

Se le llama instancia cuando uno ejecuta el juego y ese objeto es agregado a la room, entonces se dice que cuando yo disparo, creo una instancia del objeto obj_bala. Se pueden crear todas las instancias del objeto obj_bala que quieras. Cada instancia va a tener sus propios valores de variables, lo que hace que todas las balas tengn diferente posicion y angulo.

Otro ejemplo: Para mi juego de plataformas hice un objeto que se llama obj_pared. Es un bloque de 32x32 pixeles de color gris que sirve para ser colocado de pared en la room, por ende el jugador no puede traspasarlo, debe caminar sobre el.
Luego para hacer mi nivel agrego muchas obj_pared para hacer un piso y varias plataformas que componen en nivel.
El objeto en este ejemplo es uno solo: es obj_pared, que tiene su color, su tamaño, y su comportamiento. Las instancias en este ejemplo son muchas: las paredes que agregaste en el nivel, esas instancias tienen las mismas caracteristicas que el objeto (tamaño, color y comportamiento) pero además cada una de esas instancias tiene su propia posición y valores de sus variables
Título: Re:¿No entiendo que es una instancia?
Publicado por: ferhand en Febrero 20, 2013, 04:45:58 PM
  Saludos makeros:

   Más bien como dice el makero penumbra, los objetos (objects) son como moldes, plantillas que describen cómo serán sus instancias.

  Las instancias (instance) son las representaciones de su objeto correspondientes.

  En otras palabras:

  1*  Una silla es un artículo de tres o más patas (variable número de patas), con un color definido (variable color) y una posición en el espacio (variables "X" y "Y"). Esto es un objeto.

2*  Una silla de tres patas, de color rojo y situada en las coordenadas (20,35). Otra silla de cuatro patas, color marrón y situada en las coordenadas (100,22). Estos son instancias.

El primero describe mediante características generales, el segundo describe a través de características específicas.

No se si logras entender mejor, pero es básicamente lo que expone el makero penumbra.

Espero te sirva de algo.  ;D   
Título: Re:¿No entiendo que es una instancia?
Publicado por: elviskelley en Febrero 20, 2013, 09:31:20 PM
A mi me gusta simplificar siempre a si que lo dire asi:
.- Un object: Es donde colocas todos los codigos y eventos que aran que VIVA!!! jajaja. A los objects puedes modificarles cualquier codigo y evento, y afectara de inmediato a todas sus copias (instancias)
.- Una instancia: Es la copia de un object dentro del room.
Título: Re:¿No entiendo que es una instancia?
Publicado por: totemalf en Febrero 20, 2013, 11:51:50 PM
Dioooos... cuanto lio, al chaval le va a explotar la cabeza.

Tu tienes un objeto pelota y lo colocas 20 veces en una escena, cada una de esas veces se llama una instancia de el objeto pelota.
Cada instancia tiene el comportamiento del objeto pelota. Ale, Fin.

Besitos
Título: Re:¿No entiendo que es una instancia?
Publicado por: pucara en Febrero 21, 2013, 02:28:05 PM
Ok, es cierto.

Cita de: totemalf en Febrero 20, 2013, 11:51:50 PM
Besitos

Pero reconoce que eso fue un poco gay  8)
Título: Re:¿No entiendo que es una instancia?
Publicado por: Mgbu en Febrero 21, 2013, 03:09:12 PM
Cita de: pucara en Febrero 21, 2013, 02:28:05 PM
Ok, es cierto.

Cita de: totemalf en Febrero 20, 2013, 11:51:50 PM
Besitos

Pero reconoce que eso fue un poco gay  8)
No se, ninguno de los dos puso si era hombre o mujer en el perfil :P
Título: Re:¿No entiendo que es una instancia?
Publicado por: fatalfury en Febrero 22, 2013, 03:41:34 AM
Entendi mas o menos complementando con lo que pusiron todos...les voy a poner algo


el

obj_objeto es un cajon donde se ponen variables generales que a medida de eventos o interacciones estas variables cambian.

cuando cambio una variable del objeto, estoy cambiando una instacia del objeto mas no el objeto ens i verdad? esto dice que las caracteristicas del objeto son sus instancias, como el sprite:index, o las variables escritas en el, cierto? es eso lo correcto?


CitarCita de: pucara en Ayer a las 02:28:05 pm
Ok, es cierto.

Cita de: totemalf en Febrero 20, 2013, 11:51:50 pm
Besitos

Pero reconoce que eso fue un poco gay 
No se, ninguno de los dos puso si era hombre o mujer en el perfil

bueno por si acaso soy hombre XD



Y por lo demas creo que muchachos logragron iluminar a muchos makeros (ironicamente penumbra tambien XD jeje) que cuando vean este tema les va a ayudar bastante

muchas gracias  a todos
Título: Re:¿No entiendo que es una instancia?
Publicado por: penumbra en Febrero 22, 2013, 08:32:03 AM
Citaresto dice que las caracteristicas del objeto son sus instancias

las características del objeto son las cosas que hacen que un objeto no sea otro. Como dice el makero ferhand, un objeto silla tiene cosas únicas que lo hacen ser silla (si es que el programador lo define adecuadamente). Lo que caracteriza al objeto pared, es que se comporte como una pared. Lo que caracteriza al objeto bomba, es que se comporte como bomba, etc.

Citarcomo el sprite:index, o las variables escritas en el, cierto? es eso lo correcto?

Sprite index o las variables que creas son PROPIEDADES DE LA INSTANCIA. Una instancia es una ENTIDAD a la que el objeto le hereda o le asigna un comportamiento. Fíjate, por ejemplo, que cuando hay una colisión, las funciones como collision_rectangle, collision_circle, etc devuelven la ID DE LA INSTANCIA, no del objeto.

Ojo, no quiero armar polémica, pero insisto en que una instancia NO ES una copia del objeto, según el manual de GM. Un vendedor es un REPRESENTANTE o ENTIDAD que se apega y se comporta siguiendo el lineamiento de su empresa, él se adhiere a las políticas de su empresa, pero NO ES UNA COPIA DE LA EMPRESA NI DEL REGLAMENTO DE LA EMPRESA. Igual pasa con los objetos y sus instancias.

Tambien aclaro que por si acaso, soy hombre.  XD
Título: Re:¿No entiendo que es una instancia?
Publicado por: fatalfury en Febrero 22, 2013, 03:34:26 PM
Mmmm

a ver hombre, en otras palabras

Un objeto define lo que hace, lo que es, como se comporta una instancia, entonces el objeto no es una instancia, mas bien define la instancia.

verdad?
Título: Re:¿No entiendo que es una instancia?
Publicado por: ferhand en Febrero 22, 2013, 08:04:53 PM
Cita de: fatalfury en Febrero 22, 2013, 03:34:26 PM
Mmmm

a ver hombre, en otras palabras

Un objeto define lo que hace, lo que es, como se comporta una instancia, entonces el objeto no es una instancia, mas bien define la instancia.

verdad?

   A ver...

   Un objeto en GML es "el cómo es". Describe los objetos como serán y que pueden hacer, etc.
  Ejemplo: una silla tiene cantidad de patas, color, posición en el espacio.

  La instancia es una, o varias, representaciones de dicho objeto. Representa el "quién es".
  Ejemplo: la silla número uno tiene cuatro patas, es de color rojo y está cerca de la ventana, la silla número dos tiene tres patas, es de color azul y está cerca de la cama, etc.

  Se que conlleva a enredarse, al principio me costó trabajo entenderlo. Lo interesante es que en otros lenguajes los nombres son más explicativos. Por ejemplo: El "objeto" de GML es "clase" en el lenguaje C#, las "instancias" de GML son los "objetos" en C#. Yo lo veo más claro así... ;D