Unity, como crear niveles?

vincen

Pues llevo un par de dias tragandome tutoriales de unity y me esta encantado.

Pero los tutos que veo son niveles basicos con un plano y 4 cubos.

Bien.. la pregunta es.. como creo niveles? Con terreno en unity? planos y cubos?
Aprender modelado 3d y modelarlo fuera?

la cosa es que lo que quiero es aplicar texturas BIEN.

Ejemplo: quiero crear una calle con bordillo/acera y 1 edificio en el cual se puede entrar, y ponerle la textura a cada cosa.

como se hace esto?

EnderFX

Modelar + definir texturas y uv mapping = Editor 3D (Blender, 3DSMax, etc.)
Luego en unity puedes, a través de materiales, cambiar texturas y colores, pero el mappeo para que la textura coincida con las coordenadas, lo tienes que hacer en el editor 3D.

Pensando en el futuro, intenta reutilizar todo lo que puedas, ya que ahorrarás espacio/memoria, tiempo, y ganarás en rendimiento.

PD: Soy un noob, probablemente la gente que tenga más y mejor experiencia con Unity te podrán ayudar más que yo en este aspecto.

1 respuesta
vincen

#2 Lo que me imaginaba, usar un editor 3D externo y después importarlo, yo soy programador, vamos que tengo que aprender a modelar, definir texturas y uv mapping que todavía no se lo que significa, guay.. xD

Reutilizar en que sentido? Me puedes poner algún ejemplo?

Un noob? Pues de momento me has aclarado bastante, gracias :)

Se aceptan todos los consejos o mejores formas de hacer esto, ya que yo si que soy noob en crear videojuegos (Vengo de PHP) y llevo 3 dias tocando unity.

2 respuestas
squa1o

#3 UV mapping sería convertir el modelo 3D en una superficie 2D sobre la que poder proyectar la textura.
Y con reutilizar supongo que se referirá en que si tienes que poner 20 muebles, hagas 3 o 4 y los utilices varias veces. Y si más adelante necesitas algo parecido en otro proyecto, ya lo tienes hecho.

2 respuestas
B

Para casas y habitaciones, había una herramienta que te permitía construirla y luego importarla a unity.

SweetHome3D creo que se llama.

Gracias a este programa hice esto

Lo suyo es crearte las habitaciones por separado para facilitar la creación de prefabs y no tener montones de cosas duplicadas.

Luego ya puedes tirar de Blender para otros elementos.

1 respuesta
vincen

#4 Vale, creo que ya entiendo como funciona.

#5

Por cada color has creado un prefab y entonces después añades y juntas los prefabs con distribuciones distintas para cada nivel, no?

El programa ese me permite por ejemplo, crear rodapiés o paredes curvas? o solo puedes crear cosas planas?
Los marcos de la puerta como los has hecho? Con UV mapping de ese?

Gracias a todos <3

1 respuesta
EnderFX

#3 Yo también soy programador, llegué al mismo punto en el que estabas tú, y me tiré un par de días viendo cómo iba el tema... y decidí hacer 2D :P. Más que nada, por la cantidad de tiempo/recursos que requiere hacer modelos 3D de calidad, lo que no quita que si quieres hacer un edificio, por ejemplo, no puedas hacer uno sencillito rápidamente con geometría aditiva y "substractiva?"
Por ejemplo, hacer un prisma rectangular que sea el edificio, hacerlo "hueco", con cierto grosor, y "restar" de ese prisma otros cubos que serían los agujeros de las ventanas, y otro para la puerta. Si te quieres poner a hacerles alféizares, rodapié y demás... Pues a tragar tutoriales.

El UV mapping es lo que dice #4. Como ejemplo:

Por un lado va el modelo en 3D con su geometría, al que le vas a aplicar una textura plana. Mediante UV mapping relacionas (insisto, soy un aficionado) vértices del modelo con coordenadas de la textura, de forma que sepas dónde se va a proyectar cada vértice y cómo se va a apilcar la textura.

En cuanto a reutilizar, también como te han dicho: quieres hacer una calle en la que quieres meter 5 banquitos y 4 cajas de madera. Modelar y texturizar 5 bancos y 4 cajas implica 9 modelos + 9 texturas distintas, simplificando todo (estos modelos y texturas hay que cargarlos en memoria, por ejemplo). Lo lógico sería que tuvieras 1 banco y 1 caja, y múltiples instancias (en unity, los metes en un prefab, y luego creas copias de ese prefab) de cada uno de ellos.

Las texturas, tanto en Unity como en el editor 3D que uses, irán asociadas a un material. En unity podrías entonces, por ejemplo, cambiar en una de tus cajas, en el material que uses, el color base, para hacer que tenga un color distinto. O podrías, en una de las cajas, reutilizar tu modelo pero aplicarle una textura distinta, para tener una caja con otro aspecto. O si hicieras un coche, tener un material distinto para la carrocería y otro para las ruedas. Dos instancias de ese mismo modelo podrían compartir, además del modelo, la textura/material para la carrocería, pero a uno de ellos le aplicas una textura distinta para las ruedas, con otro color, patrón, etc.

Es el mismo principio que aplica para el 2D: no creo que nadie dibuje, en un juego de tamaño considerable, cada pequeña parte del background (o foreground) de los niveles. Haces un fondo que puedas repetir en mosaico (tile), por ejemplo.

1 respuesta
B

#6 Al ser una construcción fija y reutilizable, si. Si quisiera poner la zona amarilla donde está la roja, sólo tendría que hacer giros en ella para poder ponerla en esa posición.

Para las puertas, tengo prefabs de paredes de 3 unidades, de 4 y de 5 unidades y sustituyo esa pared por una que contenga la puerta.

1 respuesta
vincen

#7 Wow, muchas gracias, ahora si me has resuelto bastante la duda del UV mapping y se me acaban de quitar las ganas xDDD

Pero me niego a hacerlo 2D, no juego a los juegos 2D como para ponerme a hacer un juego 2D , 0 motivación xD.
No se que haré con el tema de las texturas.. igual tiro a lo SuperHot

que usa modelos basicos, colores basicos y luego juega mucho con la iluminación, no? (Creo que es lo que hace)

#8 okay!

Muchas gracias again, creo que ya mas o menos se como hacer los niveles, cuando me toque ponerme a hacerlos me tendre que chupar unas cuantas horas de tutoriales para saber como manejar todos los programas extras xD, solo toqué 3D en Cinema3d studio para crear mi nombre en 3D hace años.. xDD

esto de ser programador se aprende si te gusta, pero el arte hay que tener un don y yo ese don lo tengo en -10.

2 respuestas
B

Es que lo normal es que una persona diseñe el juego en papel. Otra persona o personas pasen ese juego a código y su estructuración mientras los diseñadores gráficos dan vida al arte :).

Es mucho curro a medio-largo plazo.

Hace unas semanas yo me puse con el blender y crear los esqueletos con lo que se movían los personajes. Eso es un tiempo en el que no le estás dedicando a la programación. Ahora ando con el GDD y la historia + diálogos del juego y eso se lleva otro tanto.

1 respuesta
vincen

#10 Es lo que toca.. no tengo amigos que sepan programar/diseñar/dibujar etc..
No tengo amigos en este mundillo, pero lo suyo seria eso que dices, juntarse 4 amigos y repartirse la faena.

Y ya sabemos que la frase "Busco persona que sepa modelar y me cree los personajes de mi juego a cambio de que si el juego funciona le doy un %" no esta bien vista.

A si que como no tengo amigos en este mundo, toca tirar sólito con todo, por que no hay ni un duro para invertir en esto :)

B

Si lo que vas a crear es algo para aprender, pilla assets gratuitos como hago yo para ir tirando.

1 respuesta
vincen

#12 Ahora es aprender, pero estoy viendo tutoriales y lo que aprendo lo aplico a "mi juego" directamente, la cosa es aprender al mismo tiempo en el que hago "mi juego".

Si, ya he visto la shop de unity, hay un montón de cosas free que para dev están bien, pero si algún día termino el juego y quiero hacerlo ya sea free o intentar venderlo, no vas a poner el modelo del personaje free xD.

Por eso digo, que igual tiro a lo SuperHot que a simple vista me veo capaz, ya veremos xD

B

Lo que te recomiendo es que uses un proyecto como cajón desastre donde tengas assets, scripts y escenas de un montón de cosas que trabajes como puedan ser UI, movimientos y física, scripts de carga de objetos y desactivación de estos.

Luego tener un tutorial medio que esté estructurado con su VMC, Modelo, Extensiones, Enums, Estados y trabajes sobre ello, aprendiendo a como se relacionan cada cosa. Porque si no haces esto desde el inicio, puedes darte que tienes un buen montón de cosas que has ido recopilando que funcionan, pero a la que quieras cambiar algo, te tocará trastear entre todo ello y puede que acabe más liado de lo que estaba antes.

Yo empecé como tú y lo que hice fue hacer un Ajedrez. Crear el tablero, cargar las figuras y sus colores, asignar a cada figura su movimiento, los estados para los cambios de turno.

1 respuesta
vincen

#14 Si, ya lo tengo, me paso con la primera prueba que hice, llene el proyecto de mierda en 0,

La putada que toda la docu oficial es en ingles y ando justo de inglés, en español hay poca cosa :S

Y que opináis de esto?

Vaya locura y vaya pasada! Afecta al rendimiento tantos objetos? xD

2 respuestas
B

Depende móvil o pc, pero ya hablaríamos de tener en escena más de 10k gameobjects o más para verse afectado.

1 respuesta
EnderFX

#9 Al final, como te dice #16, o te juntas con más gente, o te planteas un desarrollo de lustros, o buscas una solución alternativa.

En mi caso, ha sido ponerme a hacer 2D y de una manera simplista pero que pueda ser efectiva. Me explico, como dibujar Pixel Art también es complicado (parece que es ponerse con el paint, pero tiene mucha miga: paletas de colores, sombreados/dithering, etc.), mi objetivo es que los gráficos del juego sean tipo Patapon: utilizar 2-3 colores a lo sumo por cada scene. El fondo del color del nivel, con alguna variación, y todos los elementos que no son background principalmente en negro. De esta manera, reduces la creación de gráficos a dibujar siluetas con más o menos detalle, y crear animaciones (a partir del editor de Unity) más o menos efectivas.

Para muestra, un botón:

En cuanto al 3D, el vídeo que has puesto en #15 es un buen ejemplo. Si aspiras a crear modelos al nivel de los que puedes ver en Uncharted, te puedes tirar años sólo aprendiendo. Sin embargo, si logras dar con una estética simplística y efectiva (por ejemplo, en Minecraft sólo es necesario que diseñes cubos y formas muy básicas, con texturas sencillas), te puedes quitar de encima gran parte del peso del diseño.

Como te dice #16, y como hemos hecho casi todos... Créate un proyecto de prueba y experimenta con ese: entiende los conceptos básicos detrás del modelado, animación 3d, creación de niveles y código, etc., y una vez te veas con buena base empieza con tu idea de juego y código limpito.

Si necesitas ayuda, ya sabes, Google is your friend, y si no das con ello, para eso está este foro, en el que hay mucha gente dispuesta a echarte una mano en lo que podamos.

FernandoA

#15 Si andas justo de inglés deberías tratar de aprender lo máximo que puedas pues, aunque hay cosas en español, los mejores cursos/tutoriales/documentación que te vas a encontrar van a estar en inglés.

Tantos gameobjects si que afectan al rendimiento (y bastante) aunque se puede optimizar uniéndolos todos en un unico Mesh (obviamente los objetos fijos, con los animados ya no, pues ya no podrías moverlos de manera independiente). Hice un post en su día en el que hablaba justamente de ese tema y de como lo hice en uno de mis juegos, (aquí)

De todos modos si de verdad quieres desarrollar un juego en 3D vas a tener que ponerte con modelado 3D, texturizado y animación. Si el modelado te parece dificil te aseguro que el texturizado es aun peor y la animación el hardcore level. Si lo que pretendes es hacer un juego realista (visualmente) te recomendaría que desistieras de esa idea (aun más si no tienes conocimientos de diseño 3D) y al menos hicieras unos primeros proyectos menos ambiciosos para ir aprendiendo y cogiendo fluidez con el motor y con las herramientas de modelado.

Y a tu pregunta principal en #1. Básicamente los escenarios en 3D en Unity se crean de dos maneras, con Terrains y con Geometría. Los Terrains son los propios GameObjects/Componentes de Unity y sirven básicamente (y casi exclusivamente) para crear suelos irregulares (principalmente de amplias zonas abiertas). La Geometría es directamente modelos 3D creados con un editor 3D externo. Normalmente los escenarios se crean, o bien solo con geometría (si van a ser escenarios cerrados no queda otra) o bien con una mezcla de Terrains + Geometría.

Y sobre tu frase en #9: "esto de ser programador se aprende si te gusta, pero el arte hay que tener un don y yo ese don lo tengo en -10." He de decirte que estás completamente equivocado. El talento influye tanto para la programación como para el arte, pero para cualquiera de las dos cosas el aprendizaje, la práctica y el esfuerzo/perseverancia es completamente necesario. El talento solo puede hacer el camino un poco más fácil pero nadie nace aprendido.

vincen

Gracias a todos..

Me habéis resuelto muchas dudas, también habéis hecho que ponga mi idea en standby y quizás dejar esta idea para más adelante, no sé.

Ahora estoy pensando a ver si se me ocurre alguna idea de juego 2D para moviles, algo simple pero que sea buena idea y que crea que tiene un posible % de éxito, pero ambas cosas son difíciles, el mercado del movil esta super saturado.

Yo sin motivación no puedo programar, si voy a programar algo que no me gusta pero que igual me ayuda mucho para aprender, no puedo. Prefiero programar el doble con cosas que me gusten a programar algo en lo que no estoy interesado.

Vamos que no se que hacer, toca darle al coco un par de días y pensar alguna idea.
No se si hacerlo para movil que en teoría es mas simple, algún juego para echar el rato y ya, o hacerlo para PC que entonces si o si te obliga a que esté más completo.

No sé xD

Me habéis bajado de mi poni de arcoíris, cosa que agradezco!

B

Es que tienes que programar porque te guste, si piensas en crear algo para monetizarlo mientras aprendes, te vas a llevar un chasco grande.

Crea algo que pases a tus amigos y prueben, recibe feedback y mejora.
Añades nuevas opciones de juego o probar otro estilo de juego y seguir el mismo paso anterior.

Convicción y perseverancia.

Usuarios habituales