Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿Limites en Unity o Godot?

Iniciado por Neo_one, 24 de Septiembre de 2017, 01:02:21 PM

« anterior - próximo »

Neo_one

Hola buenas.
Veréis, actualmente me encuentro desarrollando, terminandolo más bien, mi primer juego con AGS (Adventure Game Studio) y me he encontrado de bruces con un problema serio; el motor no puede importar más de 2GB de sprites.
No entiendo esta limitación que por suerte pude sortear comprimiendo el fichero donde se guardan los sprites.
Para mi próximo juego quiero utilizar un motor que no tenga ningún tipo de impedimento y estoy mirando entre este Unity y Godot. En un principio sería solo para el desarrollo de juegos en 2D.
Mi pregunta es:¿tiene Unity algún tipo de limitación en cuanto a número máximo de imágenes o ficheros de audio, etc...?
Gracias

XÑA

2GB supongo que es el límite del tamaño del archivo, tiene toda la pinta de ser una limitación de 32 bits.

Así que supongo que cualquier motor 64 bits tendrá ese límite superado... Unity es 64 bits, y Godot, pues no lo sé, pero ahora sale la versión 3.0 y tiene buena pinta. Pero te será más sencillo con Unity por la gran comunidad que hay detrás y el inmenso número de tutoriales...

[EX3]

#2
Cita de: XÑA en 24 de Septiembre de 2017, 07:50:40 PM
2GB supongo que es el límite del tamaño del archivo, tiene toda la pinta de ser una limitación de 32 bits.
De ser eso, el limite serian 4GB, no 2GB. Me extraña que sea por eso, ya que seria tan fácil como repartir los assets en varios paquetes (contando con el que el motor tuviera dicha capacidad) y esto es algo que ya hacia el motor del Doom y el primer Quake.

En Unity de todos modos no cargas todos los assets del juego, solo los que estén referenciados en la escena o escenas que cargas (y no creo que AGS cargue TODO el contenido del juego, seria raro hacer algo así) y aun asi, 2GB de assets (entre gráficos y demás) debería poder cargarlo la versión de 32bits sin más problema que la RAM/VRAM que tenga el hardware del usuario.

No se como va la gestión de assets en AGS, ¿Has mirado que no estés cargando todos los assets en vez de los que necesitas en la escena? (¿o es algo que gestiona automáticamente AGS?)

Cita de: XÑA en 24 de Septiembre de 2017, 07:50:40 PM
Pero te será más sencillo con Unity por la gran comunidad que hay detrás y el inmenso número de tutoriales...
Amen a eso. De elegir una tecnología, busca siempre la que más comunidad tenga (y también la que más se vaya actualizando con el paso de los años).

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Neo_one

#3
Gracias a ambos.
Os explico, AGS guarda todos los sprites en un fichero; según lo veo lo que hace es cargar todos los sprites al inicio para luego utilizarlos según la escena que le toque.
En otras palabras, está mal hecho.

En Godot me han comentado que tiene el límite de 1gb de RAM (la v2, la 3 no sé cómo estará) y una vez llenada comienza a crasehar. No lo consideran óptimo para juegos de escritorio.
https://github.com/godotengine/godot/issues/8279

Así que sí, me quedo con Unity para siempre. Ya están probando la beta de la versión actual para Linux.
Tampoco volveré a AGS, te quitará mucha labor según que temas pero te limita demasiado.

XÑA

Ex3, tienes razón, peroooo... https://en.wikipedia.org/wiki/2_GB_limit

Y creo que ese problema en realidad viene dado porqué la gente desde el principio suele utilizar 'int' y no 'uint' ( Yo formo parte de ese problema  :D ). Entonces para evitar problemas, establecer el límite en 2GB y así no tienes sorpresas.

Neo_one

Que va, si también pasa con la versión de 64 bits.
Molesta un poco porque te venden el oro y el moro con las bondades de un motor y luego al afrontar proyectos serios te encuentras con estas trabas.

[EX3]

Cita de: XÑA en 25 de Septiembre de 2017, 05:37:41 PM
Ex3, tienes razón, peroooo... https://en.wikipedia.org/wiki/2_GB_limit
¡Touche! No caí en ese detalle ^_^'

Cita de: Neo_one en 26 de Septiembre de 2017, 11:11:23 AM
Que va, si también pasa con la versión de 64 bits.
Pues eso ya es raro. A saber de por que esa limitación. En fin, pásate a Unity y tira a seguro.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Neo_one

#7
Por si alguien más tiene dudas, la nueva versión que está por llegar (3.0) seguirá igual.
Pregunté por twitter y esto me respondieron. "eso parece afectar cuando se llega a 1-2gb (32/64bit) dentro de una función, tal vez alguna limitación del propio C++"

Edito. Me han especificado aún más el tema. "no,si en una única llamada a alguna función ocupas cierta cantidad de memoria(dentro de la función)da error,en varias llamadas parece que no"

No sé que tipo de función bestial tiene que ser para que te ocupe más de 2GB (siempre hablando desde el desarrollo 2D).
Yo de todas formas me quedo con Unity.

Neo_one

 Vale, estoy de nuevo hablando con alguien sobre el tema por Twitter y me ha especificado más el tema, cito: "Esto ocurre cuando se intenta usar más de 1-2 GB (dependiendo de la arquitectura) en una sola función llamada (un problema malloc), he intentado llenar una matriz en muchas llamadas y nunca se estrelló."
No sé por qué ni cómo se puede chetar tanto la memoria con una sola función. Creo que hay que ser muy bestia o si es solo para temas 3D (Vectores, carga de texturas, rigging, etc...). En todo caso creo que se debería usar más de una función siempre.

Neo_one

Seguimos conversando ya a lo que deduje antes sobre si es un tema 3D me responde: "las mallas pueden ser enormes y éstas tenían una fuga; la asignación de textura grande no parece tener problemas, supongo que el gestor de recursos está optimizado para ese tipo de datos (y puede ser transmitido ahora); y las grandes escenas se pueden separar y cargar en trozos (en segundo plano)"

"Algunos juegos 2D (como los juegos de lucha de alta resolución) puede dar problemas a cualquier motor, y no hay escape en el tratamiento de las optimizaciones spritesheet (en particular, para la gran cantidad habitual de grandes marcos)"

Reconozco que me estoy perdiendo bastante.

XÑA

Pues como no sea porqué la memoria puede estar segmentada.... En el Amiga 500 recuerdo que a veces quedaba memoria libre, pero no contigua, con lo cual no podía darte lo que pedías.

De todas formas, ya te digo que el límite ese es porqué todo el mundo programa mal, y usa un 'int' en lugar de un 'uint'.


Neo_one

Gracias XÑA, ahora me quedó claro.
Quise volver con el tema porque me parecía muy raro, y sobre todo que no se comentara nada en la rama de desarrollo sobre este asunto, que un motor así pudiese tener este tipo de problemas.
Ahora que voy a tener esto como un hobby me gustaría tener un buen motor 100% libre y gratuito; estuve mirando Game Maker 2 pero los 100€ escuecen un poco y la comunidad se redujo bastente debido a las pesimas últimas decisiones tomadas por Yo Yo Games.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.