Buenas tardes amigo, tengo una duda sobre como optimizar el juego en si.

Revisando de cuando hice el juego de la brujita, he visto que sué mucho script, y aunque ese juego solo tenia 9 niveles, contaba con 9 rooms, una por cada nivel.

Mi duda es:

Si pongo por ejemplo una sola room para niveles, ¿puedo poner un contrololador que mire el nivel que toca jugar y desde ahí que llame a un script donde ejecute el código para crear los objetos con sus funciones?

¿Esto ahorraria peso en el resultado final?

¿Sería más agil?

El tema de que un juego para móvil pese poco es de lo más importante y no sé si al final el tener 9 rooms con sus objetos dentro pesa más que tener una sola donde se vayan creando los objetos por scripts.


Gracias de antemano.

Con lo que dices, se ahorraría peso en el disco, pero aumentaría considerablemente el gasto de procesador y RAM.
alaberga regué el café.

BA:STFW&RTFM

Yo creo que el peso de la aplicación y el uso de RAM es igual en los dos casos, pero es más difícil armar los niveles con scripts.

Es mas factible comprimir texto (scripts) que el resto de los recursos, como Roms, Sprites y Sonidos. Pero como bien dijo NiuWeb, gasta mas recursos, y limitas tu juego solo a móviles rápidos. Con la otro opción tu juego pesa mas, pero lo pueden disfrutar mas personas

La verdad es que depende mucho del contenido de la room que tiene que cargar el script. Pero aún así, no es tanto el gasto en RAM.

Lo del controlador en realidad es lo más eficiente y lo usan todos los juegos que veas. Algunos cargan inclusos los sonidos, sprites y backs que usará el nivel y luego los desechan cuando sales de éste, por eso muestran una barra de loading antes de comenzar cada nivel.

Pero si lo que quieres haces es solamente crear instancias en lugares específicos, no necesitas de una barra de carga porque es algo relativamente liviano. Yo lo hago siempre en juegos para móviles y para PC.

Si quieres entrar incluso en más detalles, puedes aprender a agrupar los sprites en texturas, de modo que cada textura contenga los sprites de un nivel, así GM carga las texturas sólo cuando las vas a ocupar.

Saludos
Vota nuestro proyecto en Steam Greenlight:

Estudios Naicura Ltda

Pues espacio en disco sí se ahorra; el gasto en memoria sería el mismo, ya que siempre se tendrán que pasar los objeto a memoria, ya sea que estén desde la compilación o se generen en tiempo real; el todo caso el gasto extra (Más de procesamiento que de memoria) sería al generar la nueva room en tiempo real. Pero siempre será más eficiente generar en tiempo real los elementos del juego que tenerlos en disco y cargarlos a memoria.

Incluso se puede llegar a que solo esté en memoria aquello que se esté utilizando, y las cosas que estén "lejos" de la vista y que no tengan funcionalidad, ir destruyéndolas; e ir creando solo los objetos que corresponden al momento... aunque esto es más talachero  :P

Los rooms ya de por si son solo una serie de instrucciones que el juego sigue cuando debe armar uno: es de este tamaño, con esta velocidad, y este color de fondo, se pone este objeto acá, estos otros acá, estos tiles de este lado, etc. En otras palabras, GM genera los rooms por código por si mismo.

Aún así, asumiendo que tu código sea mejor que el código interno de GM, la ganancia en generar tus rooms con tu propio código es mínima, por ejemplo, viendo la fuente de 10 Second Ninja, un juego que pesa 176.7 MB, las rooms, 85 en total, solo pesan 1.8 MB. Aún si pudieras crear un código que pueda reducir el tamaño a, digamos, la mitad de lo que ocupa un room normalmente, el tiempo invertido en ello es tiempo que podrías usar mejorando tu juego en lugar de reinventando la rueda. Hay casos donde generar rooms con código es útil, ahorrar espacio no es a mi parecer uno de ellos.

Si quieres disminuir el peso del juego tienes que concentrarte en recursos gráficos y sonoros, eliminar sprites redundantes y espacio innecesario en ellos, o quizás disminuir la calidad del audio a un punto que no sea notable al oído humano común, pero que disminuya el peso final del archivo. Y si una buena parte del peso de tu juego esta en recursos gráficos agregar gml_pragma con PNGCrush cuando estés listo para compilar el juego final.

si tienes un script que cree varias instancias y otro que mueva esas instancias, estarias salvando memoria persistente pero estarias aumentando la memoria RAM en la ejecucion.

un script sirve para crear funciones que nos permitan ahorrar codigo ( osea no repetir mucho ), el como se guarda espacio en memoria persistente o RAM, depende del diseno que hayas implementado en tu juego.
Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala