Mis Proyectos: MicroPixel(WIZ), iTunes App Store, Google Play Store
Principalmente añadir un sistema de entidades a un engine ofrece pues eso... gestión de entidades . Digamos que ofrece un nuevo nivel de abastracción donde las cosas del juego que tienen lógica (se creo este sistema para la capa de negocio y al final se ha extendido a todo) pasan a tener una serie de "trozos" (componentes) que al engancharlos a la entidad la convierten en algo diferente o añaden funcionalidad. Por ejemplo si tienes una entidad y le añades un componente tal como "pistola" pues resulta que le estás ofreciendo a la entidad la posiblidad de disparar con una pistola. Si le añades un componente de jetpack pues le ofreces a la entidad la posibilidad de volar, etc. Principalmente este paradigma viene a evitar muchos de los problemas de las ramas de herencia profundas típicas por ejemplo de juegos estilo RTS, etc. donde hay montónes de unidades diferentes con caracteristicas úncias pero que comparten mucha funcionalidad con otras que no están en su misma rama de herencia.
Otra ventaja que tienen este tipo de sistemas es que suelen ser bastante buenos en calidad de proceso y uso de cache al usar para el los distintos subsistemas de componentes básicamente pools contiguos de componentes homogeneos basados en arrays.
Una de sus desventajas es que se necesita una comunicación entre los componetnes y no suele ser barata en terminos de proceso. Antes, tenías una super clase con muchas cosas dentro para crear por ejemplo un tio que corra, salta, dispare, etc... la comunicación era muy sencilla al tener todos los sitemas metidos en la clase pero si se usa un ECS la cosa cambia ya que un componente debe estar (en teoría) totalmente desacoplado de todos los demás componentes. Es decir, no debería de tener dependencias externas o al menos las menos posible. Así que si quieres saltar, igual necesitas informaciónd el sistema de físicas para que te avise si estás tocando suelo, etc. etc. Puede ser una pesadilla .
Hay gente que para juegos simples en vez de montarse un ECS o usar uno de terceros, usa agregación en las clases y les va de perlas. Lo que viene a ser una serie de punteros o referencias a todos los tipos de componetes que puede tener una entidad. Y cuando arranca el juego solo "conecta" los necesarios.
@Eskema: Muchas gracias por ofrecer la beta para probarla. Me encantaría, pero voy de culo . De verdad que os deseo lo mejor. Hacer un juego es un gran esfuerzo y yo me he tragado muchos patinazos ya y se lo duros que son.
Lo que si que te agradecería si no es mucho pedir es que publicaras datos en los distintos stores y plataformas de como ha funcionado el juego. Temas como unidades vendidas, etc. son muy útiles para otros indies que quieran entrar o tienen pensando entrar en otros mercados.
Un saludo.
Última edición por notbad; 03/01/2016 a las 19:46
Gracias @notbad por la explicación
Esto mismo lo había conocido de forma más genérica como "Herencia por composición", aunque desconozco si es el término apropiado. Además, me da la sensación de que es la forma en la que precisamente trabaja Unity, donde tú vas agregando componentes a cada GameObject que irán definiendo la naturaleza y comportamiento de cada objeto.
Saludos
Mis Proyectos: MicroPixel(WIZ), iTunes App Store, Google Play Store
Ya publique metricas cuando salio en moviles y basicamente digo lo mismo que dicen todos, el apocalipsis de los juegos ha llegado xD. Fuera coñas lo cierto es que saturacion y demas.... compartir metricas NO sirve de nada pq al final un juego funciona de diversas maneras. Hay juegos que si ves las ventas no te crees que apenas hayan vendido 1500 copias con lo buenos que son y otras "mierdas" que hayan vendido 15.000... asi que compartir no sirve como referencia.
Lo unico que se puede aconsejar es que pases de metricas, y si quieres hacer algo (no hablo por ti) lo intentes y no te quedes con "fulanito ha sacado un juego parecido y no ha vendido, mejor no hago nada".
Por resumir, en moviles NO hemos ganado un carajo, hemos ganado mas pasta en Ouya que en moviles y mucha mas pasta en wiiu que en las 3 plataformas anteriores. Aun con todo el juego ha sido rentable, aka pagar el coste que ha supuesto hacerlo.
Tengo una dudilla ahora mismo que c# esta algo oxidado por lo que veo, estoy a ostias con un simple evento que me esta volviendo loco y sera una parida de cuidado:
A lo que tengo todo el rato este error:Código:public event Action OnBuyPacksClicked { add { this.OnBuyPacksClicked += value; } remove { this.OnBuyPacksClicked -= value; } } private void BuyPacksClicked() { if (this.OnBuyPacksClicked != null) { this.OnBuyPacksClicked(); } }
Alguna ayudita?Código:C# The event OnBuyPacksClicked can only appear on the left hand side of += or -=.
Salu2
“I have seen things in the original DOTA that you people wouldn’t believe”. “I have seen Windrunner attack Techies off the bank of the upper river and die; I have seen heroes on fire off the shoulder of the Tree of Life. I watched spells glitter in the dark near the enemy base. All those moments are lost in battle, like… items off a courier in an AOE nuke.”
Nunca he probado a poner un getter en un evento, asi que lo mismo no es posible... siempre tengo la clase que sea la que se suscribe al delegado en cuestion, pero nunca he puesto un getter/setter
Gracias por la info. De todas formas toda información es válida. Yo llevo desde el 2009 con móviles y creo que conozco como se mueve el mercado y así y todo es complicado hacer dinero, mucho. No soy de los que ve que la App o Juego X hace mucho dinero y pienso que si saco algo así me voy a forrar. De todas formas sirve para estudiar el caso de uso y ver cosas que en una primera instancia pasarías por alto. Ya sea la época en que surgio, como han evolucionado el nombre y el icono de la app/juego, cuanta pasta más o menos están metiendo en publicidad etc... Esta claro qeu luego te llega el flappy bird y lo parte todo pero vaya eso para mí es como comprar lotería. De todas formas, Flappy bird lo partio por una razón muy sencilla, alguien muy mediatico se hizo un video jugando a él. Al final todo tiene un porque y no se debería de desestimar datos de ningún tipo. Es mi opinión.
@turco: más o menos tu intuición no te ha engañado .
@IronArthur: Estás haciendo más trabajo del que debes. Si el Action ya te da un sistema de registro para que volver a montar uno encima? Lee tu += como add y -= como remove y quita la sintaxis rara que has puesto . Yo nunca he usado esa sintasis tampoco, es más, no sabía ni que se podía hacer un getter y un setter de esa forma . Realmente se puede? Me parece bastante raro :/
Un saludo.
Mi opinión sobre Flappy Bird, es que ha sido una campaña de Google / Apple para dar esperanza a los desarrolladores, y que éstos mantengan la ilusión de que un día la suerte les puede tocar a ellos. ¡Esas cosas no pasan en la vida real! jaja
P.D.: comentario de uno que no triunfó XDD
Mis Proyectos: MicroPixel(WIZ), iTunes App Store, Google Play Store
Efectivamente todo tiene un porque, yo tengo claro que los moviles (por mi experiencia desde 2009) son un fraude si no puedes invertir pasta en marketing y currartelo mucho. Cuando digo fraude quiero decir que son un mercado muy complicado..... que nadie vaya a entender cosas raras aqui....
Nosotros invertimos 0€ en marketing y mas allá de las tipicas notas de prensa NO hicimos NADA mas, ergo como es logico nos comimos los mocos.
Las consolas tampoco son mucho mejor si tampoco haces marketing, nuestro publisher no es que se haya matado mucho y no hemos vendido gran cosa.
No recuerdo en que web lo vi, pero decian que la media estos dias (en steam) para un indie eran entre 500 y 3k copias, viendo datos de steamspy me lo creo, el mercado esta muy reñido y hacerse visible es muy complejo sin moverse y darse a conocer.
Basicamente si tuviera que aconsejar a alguien le diria que en vez de gastar 20k o mas en un juego que lo invierta en otra cosa porque tiene pocas posibilidades de recuperar la pasta, ya no digo ni ganar algo... pero bueno, uno tiene que intentarlo todo, no quedarse en las puertas solo porque a alguien no le ha ido bien la cosa. Asi que venga cabr0ncetes ya os estais gastando 30k y haciendo juegos like a boss
Eso mismo que comentas Eskema se aplica a cualquier tipo de producto que vendas. No solo a juegos o aplis móviles. Si la gente no sabe de tu producto lógicamente no vendes xD Lo que pasa que hubo un tiempo que la gente se creyó que los móviles eran la gallina de los huevos de oro y nunca lo han sido. Pero esto mismo pasó cuando el boom de las webs en los 90 y antes imagino que con otros (hablando de nuestro campo que seguro que en otros tb hay estas mierdas).
Aviso que es una teoría totalmente subjetiva y sin fundamento ninguno
Para que las plataformas móviles funcionen, necesitan de nuevas aplicaciones constantemente. La renovación constante del market forma parte del atractivo de las plataformas móviles. Por lo tanto, al final, necesitan de desarrolladores que apuesten por tu plataforma. Si no tienes desarrolladores, no vendes (véase FirefoxOS, UbuntuPhone, etc.).
Si consultas a desarrolladores indie, verás que la mayoría opinan que esto no deja dinero; trabajas duro durante meses y eso pocas veces se ve recompensado. Pero entonces, ¿por qué lo hacemos? Pues porque todos tenemos la esperanza de, ya no digo hacernos ricos, sino que deje un dinero tal que merezca la pena el esfuerzo. Para mantener esa esperanza, se necesitan casos de éxito cada cierto tiempo... y ahí es donde entra Flappy Bird. Los tendremos cada cierto tiempo y, si no me equivoco, este año lo volveremos a ver . Con cada caso de estos que desafían a toda lógica, una nueva oleada de desarrolladores se lanzarán al ataque, la mayoría clonando el caso de éxito; y muchos clones también ganarán dinero, lo que ha su vez realimenta la esperanza durante un tiempo hasta que poco a poco todo vuelve a la normalidad.
Al final, el que una aplicación tenga éxito o no, no depende tanto de la calidad de la propia aplicación sino de la visibilidad que tenga. A mi se me parece al mercado de la música, donde las canciones que más suenen en la radio serán a su vez las más vendidas, independientemente de su calidad. Para el dueño de un market, hacer que una aplicación sea un éxito sólo le supone subirla al top durante unos días, los usuarios harán el resto. Y con todo esto, el desarrollador de turno sale beneficiado, pero el otro gran beneficiado es la propia plataforma.
Que mejor marketing de cara a los desarrolladores, que el caso de un semejante que ha triunfado...
- - - - - - - - - - - -
Antes de que me tiréis piedras, vuelvo a decir que esto es totalmente sacado de la manga y no tiene ninguna base real. De hecho ni yo mismo me la creo.
Saludos!!
Mis Proyectos: MicroPixel(WIZ), iTunes App Store, Google Play Store
Hola chicos, como dijo Mariano a Barcenas: "¡Sed fuertes!", programar videojuegos es una ardua tarea. =)
Espero poder terminar mi videojuego algún día, pero por el momento me estoy divirtiendo mucho, sobre todo repasando las matemáticas.
No uso Unity y no creo que lo vaya a usar nunca, pero la Asset Store es espectacular.
Nunca he usado corutinas, ni fibers, pero siempre se ha dicho que son muy muy ligeros, mucho más ligeros que los threads.Iniciado por Eskema
Por otra parte si te preocupa el rendimiento entonces tampoco deberías usar callbacks: un callback conlleva una indireccion, lo cual rompe la caché. =)
Última edición por Trabis; 04/01/2016 a las 21:17
*****, si nos ponemos así hasta un salto a una función rompe la cache así que todos a escribir código espagueti.
-----Actualizado-----
Es mejor tener codigo mas manejable, modificable y ampliable que calentarse la cabeza con optimizaciones tan brutas/absurdas, recordad que no estamos programando para un z80 o un 6502.
No es lo mismo tener diez años de experiencia, que tener un año de experiencia diez veces.
It is an undisputed truth that the Atari ST gets the best out of coders. No dedicated hardware, just the CPU and a frame buffer! Some call it Spartan, others name it Power Without The Price, and a select few say `challenge accepted'! --- by spkr from smfx
Es lo que yo siempre he dicho: hay que escribir código lo suficientemente ofuscado para que no existan saltos mayores que una línea de cache xDDDDD. Así si que se producen juegos con una jugabilidad exquisita y awesome graphics!. Viva el principio de la localización!
Fuera de coñas, lo de las corutinas y los fibers dependerá de su implementación. En caso de que por norma general sea verdad, imagino que un thread pool arreglaría mucho la diferencia.
@turco: por mi experiencia la gente no necesita ver cosas como flappy bird para alimentar su imaginación. Solo hace falta entrar a los stores y ver sobre todo en Android la cantidad de basura que hay en trending para fliparse .
Un saludo.
Última edición por notbad; 04/01/2016 a las 22:41
Marcadores