Garry's Mod

Garry's Mod

63 ratings
Como crear un mapa
By vorbis
Una guía para hacer tu propio nivel con el editor de niveles Hammer.
Te enseñare varias cosas que se sobre el editor, si sabes ingles también puedes consultar con la guía de desarrolladores de la comunidad de Valve https://developer.valvesoftware.com/wiki/Category:Level_Design
Tiene muchos temas y sobre otras cosas que no son sobre diseño de niveles, recomiendo muchísimo ver.
Esta guía también sirve para todos los juegos hechos en Source.
5
   
Award
Favorite
Favorited
Unfavorite
Lo básico
Para empezar, haz click derecho en garry's mod, toca administrar y ver archivos locales


entra a la carpeta "bin" y busca "hammer.exe".

En la parte superior izquierda, haz click en "File" y luego "New" o puedes apretar la tecla "Ctrl" con "N"

Verás esta pantalla


Haz click izquierdo en el bloque que esta frente tuyo en la cámara 3d y aprieta "Supr" o "Del". Si no tienes la tecla, ve a una de las vistas, haz click derecho y selecciona "delete"


Ahora, haz click en cualquier parte de la camara 3d, si aprietas la "Z" puedes mover la camara como si fuera cualquier juego 3d.

Si aprietas "Shift" y "Z" puedes maximizar la vista seleccionada.

Ahora, para crear bloques aprieta "Shift" y la "B" (o haz click en este boton en el menu izquierdo)

y manten click izquierdo en las vistas


Toca la tecla "Enter" y habrás creado tu primer bloque, yo recomiendo que el piso de ubique debajo de la línea azul y que el nivel en si no toque cualquier línea azul.

Si cometiste algún error al crear el bloque o no te gusto como quedo la medida, aprieta "Shift" y "S"
o este botón en el menu de la izquierda

Ahora selecciona el bloque (si mantienes apretado "Ctrl" podrás seleccionar mas de uno) y podrás editarlo de la misma manera que lo creaste.

Antes de cambiar la textura quiero explicar que la textura que tu bloque tiene actualmente (nodraw), se utiliza para optimizar, al compilar el nivel esta textura es eliminada completamente junto a los polígonos. Esta textura sella el nivel (Explicare esto después).

Para cambiar la textura, ve al menú de la derecha y en dale a "Browse" en la sección "Current texture"


En el menú que se acaba de abrir, ve abajo y en el campo "Filter" busca el nombre de la textura que quieras en siempre en inglés.

Algunos ejemplos:
  • grass = pasto
  • concrete = concreto
  • wood = madera
  • tile = baldosa (pisos, techos)
  • stone = piedra
  • glass = vidrio
  • brick = ladrillo

Haz doble click en la textura que quieras

Y con el bloque seleccionado, haz click en este botón del menú izquierdo


Como se esta viendo mi nivel con lo que vimos hasta ahora:

Para cambiar la textura de alguna cara en específico, aprieta "Shift" y "A" o este botón.


Selecciona las caras que quieres cambiar (si mantienes apretado "Ctrl" puedes seleccionar mas de una), selecciona "browse" y busca tu textura. Luego toca el botón "Apply".

Si no aparece la cara que seleccionaste, toca "Hide mask".

Puedes cerrar el menú.


Para colocar el punto de inicio del jugador, aprieta "Shift" y "E" o este botón del menú izquierdo

y haz click en cualquier parte de la cámara 3d.
El cielo
Recuerdas que dije que nodraw puede sellar niveles? esto es porque
Los niveles no deben conectar con el vacío.
Nada, absolutamente nada, debe estar en el vacío.


Para colocar un cielo, sella el nivel con bloques de textura "skybox"

  1. Busca la textura "toolsskybox" si utilizaras un cielo con características 3d (explicare como se hacen después)
  2. Busca la textura "toolsskybox2d" si utilizaras un cielo sin características 3d (lo que usaremos ahora)
  3. Haz bloques hasta que no puedas ver la oscuridad del vacío.


Ahora, el cielo por defecto es "sky_day01_01" que sería este


Para cambiar el cielo,

  1. puedes buscar el nombre del cielo que quieras de esta lista https://developer.valvesoftware.com/wiki/Half-Life_2_Sky_List
  2. copia el nombre del cielo que te guste
  3. no cierres esta página, ve a hammer
  4. en la barra de lo mas arriba del programa, toca "Map"
  5. luego la última opción "Map Properties..."
  6. pega el nombre del cielo en el campo "SkyBox Texture Name"

  7. toca "Aplicar" y cierra la ventana

Ahora, ya seleccionamos nuestro cielo correctamente, pero no tiene iluminación.
Para poner la iluminación,
  1. Aprieta "Shift" y "E" pero NO hagas click en la vista 3d (todavía).
  2. Ve a esta sección del menú de la derecha

  3. Toca en donde dice "info_player_start" y escribe "light_environment"
  4. Toca en cualquier parte del nivel en la cámara 3d (recordemos que no puede estar en el vacío).
  5. Haz "Shift" y "S" para entrar en el modo selección y haz doble click sobre la entidad que acabas de crear
  6. Vuelve a la pagina de la lista de cielos, y copia el valor de tu cielo "Ideal Sun Angle"

  7. Luego en hammer, pega ese valor en "Pitch Yaw Roll (Y Z X)"

  8. Hacemos lo mismo con los demas valores

El orden es así
(orden) Pagina de cielos = Equivalente en hammer
  • Ideal Sun Angle = Pitch Yaw Roll (Y Z X)
  • Ideal Sun Pitch = Pitch
  • Ideal Brightness = Brightness and Color
  • Ideal Ambience = Ambient Color and Brightness
  • Ideal HDR Brightness (Scale) = Brightness Scale (HDR) (solo copiar ultimo numero entre paréntesis de la página)
  • Ideal HDR Ambience (Scale) = Ambient Scale (HDR) (solo copiar ultimo numero entre paréntesis de la página)
  • Ideal Sun Spread Angle = Sun Spread Angle

Le damos a aplicar y cerramos la ventana.
Ejecutando el nivel
  1. Apretamos "F9" o vamos a la barra superior, tocamos "File" y luego "Run Map..."
  2. Guarda el mapa con algún nombre sin espacios.
  3. Deja todas las opciones en Normal.
  4. Activa HDR.
  5. Si quieres que el juego se abra después de compilar el nivel, desmarca "Don't run the game after compiling"
  6. Haz click en OK y espera que se compile.
  7. Abre garry's mod y busca el nombre de tu nivel.



Personalmente, no me gusta la iluminación a pesar de que lo saque de la pagina de cielos, puede que cambie la configuración.
Añadiendo modelos
Los modelos son entidades como el info_player_start o light_environment.

modelo = prop

Existen 8 tipos de props:
  1. prop_static: Geometría estática - un prop que no se mueve en ningún momento, no contiene información física aparte del modelo de colisión, produce sombras lightmap, no se puede romper, y no puede tener animaciones. Es barata para renderizar.

  2. prop_detail: Geometría de detalle - un prop que no se mueve, no tiene nada de información física, ni colisiones, no produce sombras lightmap, no se puede romper, y no puede tener animaciones. Es la geometría mas barata para renderizar y en computadoras de bajos recursos puede que ni siquiera aparezca.

  3. prop_physics: Modelos con propiedades físicas, se mueve y colisiona utilizando el sistema de físicas de cuerpos rígidos. Puede ser configurado para ser roto. Produce sombras dinámicas. Caro de renderizar y mover. Funciona peor con sv_turbophysics 1

  4. prop_ragdoll: Props físicos con esqueletos con físicas de muñecos. Tiene todas las propiedades del prop_physics y tambien utiliza el sistema de físicas de cuerpos rígidos. Muy caro de mover y renderizar.

  5. prop_dynamic: Props que pueden tener animaciones y muy configurados, producen sombras. Mas caro que un prop_static pero menos caro que un prop_physics.

  6. prop_physics_multiplayer: Props físicos que utilizan un sistema de físicas mas simple, diseñado para juegos multijugadores. Son menos pesados para el internet que los prop_physics comunes. Funciona mejor con sv_turbophysics 1

  7. prop_physics_override: Tipo de prop especial usado para cambiar propiedades compiladas en el modelo en sí. Tiene el mismo costo de un prop_physics

  8. prop_dynamic_override: Tipo de prop especial usado para convertir un modelo diseñado para ser prop_static, y darle propiedades de un prop_dynamic. Tiene el mismo costo de un prop_dynamic.

Para crear un prop

  1. Selecciona el tipo de prop de la lista de entidades, yo utilizare un prop_static.
  2. Colócalo en el mundo.
  3. Doble click para abrir el menú de propiedades.
  4. Busca la opción "World Model" y dale al botón "Browse".

  5. Busca el nombre del prop (en ingles) en la caja "Filter"
  6. Selecciona el prop de la lista blanca (Si le das a la pestaña "Info" en la derecha, podrás ver los tipos de prop compatibles)
  7. Dale a "OK"
  8. En el menú de propiedades, dale a aplicar y cierralo.

Para rotar el prop (y cualquier otro objeto), haz un click izquierdo en cualquiera de las vistas 2d y utiliza los círculos. Se puede usar "Ctrl" y "Z" para deshacer el último cambio.
Achicar / agrandar la cuadricula
Recomiendo mucho hacer la mayoría de un nivel en la cuadricula tamaño 64 o 32.
Para cambiar el tamaño, se utilizan estos 2 botones ubicados en el menú de arriba.


Puedes "desactivar" la cuadricula apretando "Shift" y "W".
Pero si de verdad quieres desactivarla, cosa que yo no recomiendo para nada, solo mantén pulsado "Alt" mientras estés moviendo algo. Pero de nuevo, no lo hagas pues hammer tiene perdida de precisión al guardar bloques con vértices en ubicaciones decimales (los puntos en las esquinas están fuera de la cuadricula).
Añadiendo luces
Debido a que Source utiliza "lightmaps" para la iluminación, es mejor tener luces sin nombre para que sean consideradas completamente estáticas y que nunca se apagan o prender. Es decir, solo se crea 1 lightmap porque la luz solo tiene 1 estado, si se prende o apaga, se generan 2 lightmaps aumentando memoria de disco, ram, y videoram.

Hay 4 tipos de luces:

  1. light: Es una luz estática omnidireccional. Se le puede cambiar de color, prender y apagar. Genera lightmaps.

  2. light_dynamic: Es una luz dinámica omnidireccional / direccional, Funciona igual que un "light" o "light_spot" solo que no genera lightmaps, se actualiza en tiempo real con los lightmaps que ya existen. Es la única entidad de luz que puede moverse.

  3. light_spot: Es igual que un "light" excepto que en vez de ser omnidireccional, es direccional.

  4. light_environment: Es una entidad que controla la luz emitida por la textura "toolsskybox" y "toolsskybox2d"

Los 3 primeros valores del campo "Brightness" (255 255 255) son de color y el ultimo valor (200) es la intensidad.

Ejemplo de luz:
https://steamproxy.net/sharedfiles/filedetails/?id=2909007765
Brushes (bloques) complejos
El nombre real de los bloques, es "brush". De ahora en mas me referiré a los bloques por su nombre real.

Los brushes en Source solo pueden ser convexos, no cóncavos. Que quiere decir esto?

Básicamente, todas las caras de un brush tienen que ser completamente planas. Si ves que tienes un brush con una cara "hundida" o "salida", ese brush es cóncavo.

Entonces, cuidado al hacer brushes complejos.

Tenemos 2 opciones:
  • Herramienta de cortar
  • Herramienta de manipulación de vértices

Herramienta de cortar

Para utilizar esta herramienta apretaremos "Shift" y "X" o selecciona este botón.


Luego simplemente seleccionaremos por donde queremos cortar.


Lo que está marcado en rojo es lo que se eliminará, lo blanco se quedará. Para invertir la selección, simplemente se selecciona la herramienta de nuevo. (Shift + x o tocar el boton)

Se aprieta "Enter" y listo.

Manipulación de vértices

Cuidado al utilizar esta herramienta, pues es fácil hacer brushes cóncavos.

Para utilizarla, aprieta "Shift" y "V" o este botón.


Y ahora podemos mover los vértices libremente.
Si juntas 2 vértices, te saldrá un cuadro que dice:


Aprieta "Sí" para que en vez de tener 2 vértices en el mismo lugar, solo tengas 1.

Ejemplo de brush cóncavo hecho con la manipulación de vértices
Superficies deformadas (displacements)
Esto es un displacement.

Usualmente es cóncavo, pero técnicamente no es un brush, por lo que no importa.

Para crear un displacement, se necesita que la cara que quieres que sea displacement, tenga mas de 4 vértices, es decir, un triangulo no funcionará. Los pasos son:
  1. Abre el editor de caras (Shift + A)
  2. Selecciona las caras que quieres que sean displacements.
  3. Ve a la pestaña "Displacement" que se ubica arriba de la ventana a la derecha de "Material"
  4. Toca "Create"
  5. En "Power" (nivel de detalle) recomiendo dejarlo en 3, 4 abre la posibilidad de que el juego se crashee y hace que las físicas anden mal y 2 es de baja calidad.
  6. Despues de seleccionar el nivel, dale "OK"
  7. Ahora para mover la geometría, selecciona "Paint Geometry"
  8. "Distance" cambia la distancia en unidades de hammer en la que puedes mover el displacement, "Radius" cambia el radio de la esfera para mover el displacement.
  9. Cuando estés listo, cierra todo, no hace falta darle "aplicar" a nada.

También hay que mencionar que los displacements, al no ser brushes del mundo, NO
sellan el mundo, por lo que detrás del displacement habrá que poner un brush nodraw.

Parece estar sellado, pero no lo esta.


Si queremos cambiar entre 2 texturas, tendremos que usar texturas especiales con esta funcionalidad. Para encontrarlas, simplemente busca "blend" en el buscador de texturas y selecciona alguna. Luego en la sección "Displacement", selecciona "Paint Alpha" para pintar con la otra textura, si quieres invertir el dibujo, selecciona "Invert Alpha".
Añadiendo reflejos
Tenemos 3 tipos de reflejos.
  1. cubemaps: Son como el cielo, 6 imágenes que forman un cubo y se mueven con el jugador. Son muy baratas de renderizar.

  2. agua: Refleja todo menos el cielo 3d y el modelo del jugador en primera persona. Se puede desactivar completamente. Su gasto de recursos depende de la configuración actual del jugador. Es en tiempo real.

  3. espejo: Funciona igual que el agua pero no se puede desactivar, refleja el modelo del jugador en primera persona y el cielo 3d. Su gasto depende de cuantas cosas están siendo reflejadas. Es en tiempo real.

No se puede tener 2 reflejos en tiempo real a la vez. Pueden existir varios en el mapa pero el problema llega cuando ambos reflejos tienen que funcionar al mismo tiempo, ya sea espejo con agua, agua con agua, o reflejo con reflejo.

Reflejos con cubemaps:
  1. Busca en la lista de entidades, "env_cubemap"
  2. Colócalo 64 unidades arriba del piso (la mitad de 128 unidades que es el tamaño ideal de una pared) y preferiblemente en medio del área.

  3. Compila el nivel y abre el juego.
  4. Abre la consola y escribe "building_cubemaps 1" y luego "buildcubemaps" sin las comillas.
  5. Una vez terminado, ya se habrán guardado.

Los cubemaps no muestran modelos con físicas. Solo geometría estática.
Puedes utilizar los comandos "sv_cheats 1" y luego "impulse 81" para recibir un objeto con el que puedes probar los cubemaps.


Agua
  1. Primero haz un brush nodraw.
  2. Selecciona la cara superior.
  3. Busca una textura "water"
  4. Selecciona una textura.
Es importante no hacer el brush del agua una entidad.

Espejo
  1. Haz un brush nodraw.
  2. Selecciona la cara que quieres que refleje.
  3. Busca la textura "reflectiveglass001" y aplicala
  4. Selecciona el brush
  5. Aprieta "Ctrl" y "T"
  6. Busca "func_reflective_glass" en el campo "Class"

  7. Tienes varias opciones para cambiar, yo destaco "Solidity" para hacer el brush solido, lo dejo en "Always Solid" y "Allow Physics Gun" en "No" para que el jugador no mueva el espejo con el arma física.
Optimizacion - brushes skip/hint
Source calcula la visibilidad en "cuartos", si un cuarto es visible con otro, ambos cuartos se renderizan. En el caso contrario, no lo hacen. Imagina que tienes un espacio como este.

Uno se da cuenta de que no se pueden ver al otro lado de la pared, por lo tanto no se debería renderizar. De todos modos, Source hace que estos "cuartos" se extiendan hasta que choquen con el cielo. Algo así.

En este ejemplo, lo negro son los brushes y los bloques de colores, son los "cuartos". Como se puede observar, todos los 3 cuartos se ven al mismo tiempo. A Source no le importa en que parte del cuarto estas, siempre contara como que estas ahí por lo que los cuartos que lo tocan, se renderizaran también. Entonces ahí entran los brushes hint/skip. Estos permiten manipular como se crean estos cuartos para que en situaciones como esta, solo se renderize lo que se ve de un lado de la pared y no de los 2 al mismo tiempo.

Para crearlo hacemos:
  1. Busca la textura "skip"
  2. Haz el brush donde sea necesario.

  3. Selecciona la cara donde sucederá el corte, porque la textura "skip" en sí, no hace nada. En mi caso, la cara correcta es la inferior.

Ahora, los cuartos se verán así.

Estando de un lado de la pared, no se vera el otro pero estando en el cuarto verde, se verán ambos lados.
Optimizacion - occluder
El occluder es una entidad brush. Lo que esta entidad hace es parar el renderizado de los modelos que están atrás de este brush. No importa la distancia, si esta detrás del occluder, se ocultará. Cabe mencionar que solo oculta modelos, nada de brushes o displacements. También, esta entidad es en tiempo real, por lo que hay que usarla cuidadosamente o puede empeorar el rendimiento en vez de mejorarlo.

Para hacer un occluder:
  1. Busca la textura "toolsoccluder"
  2. Haz un brush donde sea necesario (no lo pongas dentro de otro brush)
  3. Haz el brush una entidad con "Ctrl" y "T"
  4. Busca "func_occluder"
  5. Dale a "Aplicar" y cierra.
Optimizacion - props que se desvanecen
Desvanecer props es una buena manera de optimizar un nivel, para hacerlo:
  1. Selecciona el prop y abre su menú de propiedades
  2. Busca la propiedad "Start Fade Dist/Pixels" (donde empezará a desvanecer el prop) y toca el botón de la camara.

  3. Después cambia la propiedad "End Fade Dist/Pixels" (donde terminará de desvanecer) y colócalo mas lejos.
  4. Haz click en "Aplicar" y veras las esferas de desvanización.

Puedes apretar este botón ubicado cerca del final del menú de arriba

para visualizar como se ve la desvanización.
Optimizacion - func_detail
Ya vimos como los brushes crean "cuartos" y si bien esto sirve muchas veces, existen ocasiones donde sería mejor que no se separara.


Ahí es donde entran los func_detail, estos actúan igual que los brushes pero no interactuan con vvis (el proceso de compilación de visibilidad), es decir, no crean visleafs (cuartos) innecesarios.

Para esto es muy fácil:
  1. Selecciona el brush que quieres que sea func_detail
  2. Haz "Ctrl" y "T"
  3. Cierra la ventana

Si quieres hacer un func_detail (o cualquier otra entidad brush) en un brush del mundo, pulsa "Ctrl", "Shift" y "W".

Cabe mencionar que la cara que toca con el mundo (en mi caso, la inferior) no sera eliminada como si fuera un brush del mundo. La solución es hacer la textura de la cara nodraw.
Optimizacion - func_areaportal
Imagina que estas en un túnel y estas subiendo por ese túnel, al final hay una puerta, llegas y sales ves muchos arboles pasto y rocas. Nos fijemos en la puerta, un agujero que separa el interior con el exterior, ¿No habrá una forma de optimizar esto?

Si, la hay, el areaportal es perfecto para esta situación.
Piensa del areaportal como un occluder inverso. solo puedes ver lo que esta detrás del areaportal, lo que no, no se renderiza. Es calculado en el proceso de compilación por lo que mejora mucho el rendimiento. El areaportal debe sellar 2 lados completamente, es decir un lado del areaportal, no debe tocar el otro.

Areaportal mal hecho:


Areaportal bien hecho:


Creación del areaportal:
  1. Crea un brush con la textura "toolsareaportal"
  2. Haz "Ctrl" "T" marcarlo como entidad y busca "func_areaportal"
Tamaño de lightmaps
Si quieres que las sombras de una superficie de un brush sean mas definidas (o menos), puedes cambiar el tamaño de los lightmaps.
Cambiar el tamaño implica hacer el tamaño del mapa mas grande por lo que debe hacerse inteligentemente, pero así como puede subir, también puede bajar.
  1. Selecciona la herramienta para aplicar texturas a las caras
  2. Selecciona las caras que quieres cambiarle el tamaño los lightmaps (en mi caso, todas)
  3. Y busca "Lightmap scale", un menor número indica mayor calidad pero mas peso. Un mayor numero es al revéz. Yo lo pondré en 8.

  4. Haz click en "Aplicar"

Para visualizar los lightmaps haz click en este botón oculto y selecciona "3D Lightmap grid"


Mientras mas grande sea el tamaño del lightmap, menos calidad tendrá y menos espacio gastará. Intenta usar lightmaps de gran tamaño en areas donde la iluminación no sea tan importante para optimizar el tamaño del nivel y el tiempo de compilación.
Añadiendo una puerta
Primero vamos a hacer el marco correctamente, busca la textura "door" y selecciona cualquiera. con el tamaño de cuadricula en 64, crea el brush.


Ahora, en el menú de arriba aprieta este botón.

Esto sirve para que la textura no se mueva cuando movemos el brush, por lo tanto, ahora podemos hacer la puerta 8 unidades y acomodarla donde queramos sin miedo de arruinar la textura.


Ahora, para hacer el agujero donde esta la puerta, tenemos 2 opciones
  1. La herramienta de sustracción "carve"
  2. Hacer el agujero manualmente

Aparentemente, utilizar la herramienta carve puede traer muchos problemas, hasta donde sepa, no pasa nada si la utilizas con brushes completamente en la cuadricula y creo que gran parte de los problemas están arreglados en garry's mod.

Si quieres hacer carve, aprieta "Ctrl", "Shift" y "C". Yo haré los brushes manualmente.
Ahora, con el agujero hecho, hay que hacer el marco. Para eso, simplemente hay que transformar el brush hasta que solo quede el marco, es decir, así.

Hacemos lo mismo con la izquierda y la derecha, recuerda que puedes mantener shift al mover para copiar y pegar rápido.

Como se puede observar, a los costados, esta negro. Esto es porque en la textura de la puerta, hay partes negras. Arreglaremos esto después.

La puerta en sí

Para la puerta utilizaremos un prop, busca en la lista de entidades "prop_door_rotating". Abre su menú de propiedades y en world model, busca "door01_left"

Si tocamos la pestaña "Skins" tendremos un menú donde podemos seleccionar una textura que se acomode mejor a la textura del marco que ya tenemos. Muchos props tienen diferentes skins. En mi caso el skin correcto es el 6.

Dale click en "OK" y antes de aplicar, puede que quieras cambiar la velocidad con la que la puerta se abre, para esto, busca la propiedad "Speed", yo la cambiare de 100 a 200. Haz click en aplicar y acomoda el prop al marco de la puerta.
La herramienta de aplicación de texturas (a profundidad)
Abre la herramienta de texturas.
Tenemos en Material:
  1. Texture scale: Sirve para cambiar la escala de la textura en X e Y.
  2. Texture shift: Sirve para mover la textura en X e Y.
  3. Lightmap scale: Sirve para cambiar la escala del Lightmap.
  4. Rotation: Angulo en cuanto rotar la textura.
  5. Justify: "L", "R", "T", "B" y "C", son las que menos vas a usar. Estas sirven para mover la textura.
    "Fit" sirve para ajustar la textura al tamaño de la cara. La caja "Treat as one" sirve para tratar multiples caras como una sola.
  6. Align: Sirve para cambiar la dirección de la textura en la cara.
  7. Replace: Reemplaza una textura con otra. Puede ser configurado para también cambiar en objetos ocultos.

Si haces click derecho en una cara con otra cara seleccionada, alinearas esa cara con la seleccionada.
Si haces click derecho mientras mantienes "Alt" en una cara con otra cara seleccionada, copiaras todos los valores de esa cara a la cara seleccionada.

En Displacement tenemos:
  1. Select: Para seleccionar el displacement.
  2. Paint Geometry: Para mover el displacement.
  3. Paint Alpha: Para pintar otra textura.
  4. Invert Alpha: Para invertir las 2 texturas que hay en el displacement.
  5. Remove Faces: ¿No parece hacer nada?
  6. Sculpt: Es como "Paint Geometry" pero para cosas mas específicas.

    (ejemplo de Valve Developer Community)
  7. Create: Sirve para crear el displacement.
  8. Destroy: Sirve para eliminar la cara con displacement y la hace parte del brush nuevamente.
  9. Subdivide: Sirve para "suavizar" 2 displacements o mas. Los brushes de estos displacements tienen que estar conectados para que esto funcione.

    (fíjate como los brushes están unidos.)
  10. Noise: Mueve cada vértice del displacement entre los números especificados.

    (En el ejemplo usé "Min: 0" "Max: 50"
  11. Sew: Sirve para "sellar" 2 o más displacements en caso de que halla una apertura. Solo funciona si los brushes están unidos.

    (Displacement con brushes unidos pero displacements separados)

    (Los mismos displacements después de hacer sew)
  12. Casilla "No Physics Collision": Hace que los objetos físicos no colisionen con el displacement.
  13. Casilla "No Hull Collision": Hace que cualquier jugador y NPC no colisione con el displacement.
  14. Casilla "No Ray Collision": Hace que los "ray casts" (disparos de bala, etc) no colisionen con el displacement.

Ejemplo de alineación de textura:

En la puerta que hicimos hace rato, hay un problema de alineación de textura. Arreglemos eso.
  1. Selecciona las caras en negro.
  2. Utiliza "Texture shift" hasta obtener un resultado que te guste. En mi caso X=32 Y=0.
Triggers
Los triggers son entidades brush que al tocarlos, hacen que algo suceda.

Esto sera por así decirlo, una introducción a la logica en Source.

Hay 2 tipos de trigger principales:
  1. trigger_once: Un trigger que solo se puede activar una vez.
  2. trigger_multiple: Un trigger que se activa multiples veces.

Empecemos con algo muy básico, un trigger que al activarlo, rompe una pared.
La pared:
  1. Primero, selecciona el brush que será la pared que se rompe (recuerda que como es una entidad, no sellara el mapa)
  2. Ctrl + T
  3. Busca "func_breakable"
  4. En la propiedad "Name" ponle algún nombre.
  5. En "Prop Data" selecciona el tipo de gibs que tendrá el brush. (en mi caso, "Stone.Large")
  6. En "Material Type", selecciona el tipo de material que tiene el brush. (en mi caso, "CinderBlock")
  7. Si quieres puedes poner "Allow Physics Gun" en "No" para que el arma física del jugador no interactúe con esta entidad.
  8. Ahora ve a la pestaña "Flags" en la parte superior de la ventana y marca "Only Break on Trigger" para que solo se rompa en el trigger que vamos a hacer.

  9. Haz click en "Aplicar" y cierra la ventana.

El trigger:
  1. Busca la textura "toolstrigger"
  2. Haz el brush donde quieres que este el trigger.
  3. Ctrl + T
  4. Busca "trigger_once" (en este caso conviene mas el "once" que el "multiple" porque la pared se rompe y no vuelve a aparecer)
  5. Ve a la pestaña "Outputs" en la parte superior de la ventana.
  6. Haz click en "Add..."

  7. En "My output named" pon "OnTrigger" para que al activarlo la pared se rompa.
  8. En "Targets entities named" selecciona la pared, para esto te dije que le pongas un nombre. Yo le ♥♥♥♥ el nombre "pared" por lo que a mi me aparece así.
  9. En "Via this input" pon "Break" que traducido al español directamente es "Romper".
  10. Haz click en "Aplicar" y cierra la ventana.

El trigger quedaría algo como "Al tocarlo, haz que pared se rompa.".
El resultado sería así.

Video:
nav mesh y node graph (donde la inteligencia artificial puede caminar)
El nav mesh y el node graph es por donde caminan los bots. El node graph se hace en hammer manualmente y el nav mesh es generado en el juego con comandos automáticamente.

Para hacer el node graph:
  1. Busca en la lista de entidades "info_node"
  2. Ponlos de mas o menos esta manera

    Los nodes pueden estar hasta 720 unidades separados.
Yo los coloqué de esta manera.

No es necesario que los pongas de la misma manera que yo. Lo mejor sería usar lo menos posible.

Para hacer el nav mesh:
  1. Compila el nivel.
  2. Abre el juego y el nivel.
  3. Ya estando en el nivel compilado, abre la consola y escribe "sv_cheats 1"
  4. Ahora escribe "nav_generate" (esto puede tardar mucho dependiendo en el tamaño del nivel)
  5. Escribe "nav_analyze"
  6. Escribe "nav_save"

Los png que te siguen ahora funcionan en tu nivel.
Montar otros juegos
Montar otros juegos te permite:
  1. Añadir modelos de otros juegos.
  2. Añadir texturas de otros juegos.
  3. Añadir sonidos de otros juegos.

Para esto:
  1. Abrir los archivos locales.
  2. Abre la carpeta "garrysmod".
  3. Abre la carpeta "cfg".
  4. Click derecho en "mount.cfg"
  5. Abrir con > Bloc de notas

Tienes que montar los juegos aqui

entre los "{" "}"

¿Como saber que nombre poner?
tienes que poner el nombre de la carpeta del juego, no del juego. Es decir, si quiero montar Left 4 Dead 2, no ponde "Left 4 Dead 2" pondre "left4dead2" porque ese es el nombre de la carpeta del juego.


Aprieta "Tab" (tecla a la izquierda de "Q") una vez, entre comillas pon el nombre de la carpeta del juego, haz otro tab y entre comillas pon la dirección de la carpeta del juego. No de la instalación, del juego.

Ejemplo de Left 4 Dead 2


Recuerda decir en la descripción del articulo de la workshop que necesitas tal juego.
Cielo 3D
Los cielos 3D ayudan mucho para bajar el tamaño del mapa y hacer parecer que el mapa es mucho mas grande de lo que es.

  1. Primero, abre el editor de caras
  2. Toca cualquier cara del cielo 2D
  3. Toca "Replace..."
  4. En el cuadro de la derecha busca la textura "toolsskybox"

  5. Haz click en "OK", "Aceptar" y cierra la ventana.
  6. Busca en la lista de entidades "sky_camera"
  7. En cualquier vista 2D, haz click en el centro del mapa, es decir, donde todas las lineas azules se tocan.


  8. Haz click derecho en el cuadro verde y dale a "Create Object"
  9. Selecciona el "sky_camera" y brushes de referencia que te ayudarán a crear el cielo. En mi caso, las paredes.

  10. Haz "Ctrl" y "C" o click derecho sobre tu seleccion y darle a "Copy"
  11. Haz "Ctrl", "Shift" y "V" o ve a la barra de arriba, toca en "Edit" y luego "Paste Special..."
  12. Déjalo así por si no lo tienes así.

  13. Haz click en "OK".
  14. Ahora mueve tu selección a otro lado para tener una copia.

  15. Activa el botón "tl" o "Texture Lock" en el menu de arriba y el boton de la derecha "<tl>" o "Scaling texture lock".
  16. Aprieta "Ctrl" y "M" o haz click derecho en una de las vistas 2D y hazle click en "Transform".
  17. En "Mode" pon "Scale" y en los tres valores, pon.
    0.0625
    Porque este numero? porque la skybox multiplica lo que este adentro por 16 (este valor se puede cambiar desde la entidad "sky_camera) por lo que 1 dividido 16 es igual a 0.0625
  18. Acomoda el resultado, si no esta alineado con la cuadricula, aprieta "Ctrl" y "B" o click derecho en la selección y aprieta "Snap to Grid"
  19. Empieza a crear la geometría del cielo 3D pero NO pongas brushes del mundo, es decir solo entidades (props, etc) y si vas a poner brushes que sean func_detail o func_illusionary. Puedes utilizar displacements.
  20. En las texturas, utiliza una escala de
    0.015625
    para X e Y
  21. Sella el skybox con "toolsskybox2d"
  22. Elimina el sky_camera ORIGINAL que se encuentra en medio del mapa. (donde se juntan las lineas azules)

Ya tienes tu cielo.
Añadiendo sonido
Con un ambient_generic puedes colocar sonidos a tu mapa.
En su pestaña "Flags" tienes estas opciones:
  • Play everywhere: Haz que el sonido este en todos lados.
  • Start Silent: El sonido empieza sin sonido (no empieza tocandose)
  • Is NOT Looped: El sonido no se repite infinitamente.

En la propiedad Sound Name podemos elegir el sonido que queremos. Recomiendo bajar mucho el volumen de los altavoces o auriculares.
Volume dejalo en 10, usualmente es un buen valor
Compilación final
Viste que en el cuadro que aparece al apretar F9, sale un cuadro de parámetros?
Hay una gran lista de parámetros pero nosotros nos enfocamos en
-final
Este parámetro hace algunas cosas como por ejemplo añadir rebotes de luz extra. Lo mejor sería usarlo cuando ya creas que tu mapa se ve bien y decides que es la versión final.
Hacer un icono del nivel
Yo recomiendo muchísimo usar este mod
https://steamproxy.net/sharedfiles/filedetails/?id=1918233489&searchtext=thumb

Ya que es mucho mas rápido que usar herramientas de edición de imágenes.

  1. Instala el mod.
  2. Abre el juego y el nivel.
  3. Ponte en una buena posición.
  4. Presiona F8
  5. Selecciona los números en "Map icon size (in pixels)" y reemplazalo por 512
  6. Ajusta la caja como quieras siempre y cuando de nuevo, este en 512.
  7. Haz click en "Save Map Icon"
  8. Cierra la ventana y el juego
  9. Ve a los archivos internos del juego (como si fueras a hacer un mapa pero NO entres a "bin")

  10. Entra a la carpeta "garrysmod"
  11. Luego a "data" después "mapicons" y "thumb" (para mi es esta dirección C:Program Files (x86)SteamsteamappscommonGarrysModgarrysmoddatamapiconsthumb). Deberías ver tu foto con el nombre de tu nivel.

  12. Haz click derecho en el archivo y toca "copiar"
  13. Vuelve a la carpeta "garrysmod"

  14. Entra en la carpeta "maps"
  15. Entra en la carpeta "thumb". Si no la tienes, créala.
  16. Pega la foto aquí.

Listo, este es el resultado
Publicar tu mapa
Empieza creando una carpeta en cualquier lugar de tu computadora y fíjate que la dirección no tenga espacios. Por ejemplo:
  • C:Nueva carpeta
    esta mal
  • C:Nuevacarpeta
    esta bien

No usen "C:", recomiendo ponerlo en otra carpeta como en el escritorio.
Abre la carpeta y crea un nuevo documento de texto. Si el archivo te sale así

es decir, sin el formato de archivo. Ve al menu superior y toca "Vista"

Luego activa la casilla "Extensiones de nombre de archivo"

  1. Renombra el archivo a "addon.json"

  2. Haz click derecho, ve a "Abrir con" y selecciona "Bloc de notas"
  3. Pega esto en el archivo:
    { "title" : "Mi guia", "type" : "map", "tags" : [] "scenic", "movie" [], "ignore" : [ "*.psd", "*.vcproj", "*.svn*" ] }
    importante eliminar los "]" "[" del texto

    para que quede así

  4. En "title" cambia el nombre. Este es el nombre que aparecerá en la página del workshop.
  5. En "type" puedes cambiar el tipo de addon. Nosotros estamos haciendo un nivel, por lo que lo dejaremos en "map"
  6. En "tags" podemos poner hasta 3 tags. Estas pueden ser
    "fun" "roleplay" "scenic" "movie" "realism" "cartoon" "water" "comic" "build"

Entonces, mi archivo quedó así.

Ahora podemos cerrar el archivo y volvemos a la carpeta.
Tenemos que pasar archivos del juego a esta carpeta
entonces ve a "C:Program Files (x86)SteamsteamappscommonGarrysModgarrysmod" o tu equivalente
  1. En la carpeta donde esta "addon.json", crea una nueva carpeta y llamala "maps". Entra a esta carpeta

  2. Abre la carpeta maps del garry's mod (C:Program Files (x86)SteamsteamappscommonGarrysModgarrysmodmaps)
  3. Busca tu nivel, necesitas 2 archivos. Estos son "tunivel.bsp" y "tunivel.nav". Copialos y pegalos en la carpeta que hicimos.

  4. En nuestra carpeta maps, crea la carpeta "thumb", entra y copia la foto de tu nivel desde la carpeta "thumb" del juego.
  5. Vuelve a nuestra carpeta "maps" y crea una nueva carpeta llamada "graphs", entra y pasa "tunivel.ain" desde la carpeta "graphs" del juego.

Ahora ve a la carpeta bin de garry's mod, donde hammer.exe esta ubicado
mueve tu carpeta que contiene addon.json hacia gmad.exe

Esto nos dara un archivo .gma


Antes de publicar el archivo, necesitamos una foto. Esto es si o si.

Usando paint
  1. Directamente podemos usar la foto que usamos para nuestro nivel. Así que copiala fuera de la carpeta.

  2. Abre paint
  3. Abre la imagen y expórtala como jpg.

Usando Photoshop / GIMP
  1. Abre la imagen que usamos para nuestro nivel.
  2. Guarda la imagen como un jpg en formato Baseline y chroma 4:2:0

Ahora, a publicar el mapa.
  1. Abre la carpeta donde hammer.exe esta ubicado.
  2. Copia la dirección del lugar (en mi caso, C:\Program Files (x86)\Steam\steamapps\common\GarrysMod\bin)
  3. Abre el Símbolo del sistema

  4. En la consola, escribe
    cd C:\Program Files (x86)\Steam\steamapps\common\GarrysMod\bin
    o tu dirección equivalente.
  5. escribe
    gmpublish.exe create -icon lugar/de/la/imagen512x512.jpg -addon lugar/del/gma.gma
    reemplazado las direcciones con tu equivalente. En mi caso, seria así
    gmpublish.exe create -icon C:\Users\a\OneDrive\Escritorio\aaaa\guia5.jpg -addon C:\Users\a\OneDrive\Escritorio\aaaa\addon.gma
  6. Ahora espera a que se suba.
  7. Cuando se suba, ve a tus artículos de workshop, y tu sabrás que hacer desde ahí. Añade fotos, descripción, etc.
Final
Gracias por leer esta guía, espero que te haya servido y si tienes algún problema con algo o tienes alguna idea que te gustaría que explique, por favor, déjalo en los comentarios e intentare explicarlo. Muchas gracias. Siéntete libre de añadirme a tu lista de amigos si prefieres que te explique algo por privado.
31 Comments
TunderYMony 13 Aug @ 11:19am 
Ok, gracias
vorbis  [author] 13 Aug @ 7:06am 
en la vista 3d, ve hacia la esquina superior izquierda, haz click izquierdo y selecciona 3D Shaded Textured Polygons o 3D Textured
TunderYMony 12 Aug @ 6:49pm 
A ver, no se si tengo un problema, es cosa del programa o es que soy pendejo, pero no me salen las texturas en el editor, Osea le intento poner un textura a un bloque pero no se ve con la textura puesta. Entonces bueno... ayuda
vorbis  [author] 27 Jul @ 7:38pm 
no hay problema, igual que pena que no se soluciono pero que se le va a hacer:emofdr:
ZARTH THE WOLFITO 27 Jul @ 7:26pm 
pues lo de eliminar la carpeta bin y verificarla luego
al terminar la descarga no hay cambio alguno
seguro si o si se arregla con el hammer ++
aun asi muchas gracias por la ayuda we :spycon:
vorbis  [author] 27 Jul @ 5:37pm 
no estoy seguro si eso funcionaría, igual tu decides
vorbis  [author] 27 Jul @ 5:36pm 
que raro que solo funcionen en ciertos lugares, muy probablemente se arregle instalando hammer++. Pero si quieres puedes intentar borrar la carpeta bin y despues darle a verificar archivos en steam para que se vuelva a descargar
ZARTH THE WOLFITO 27 Jul @ 5:14pm 
acabo de intentarlo y no simplemente no hay nada
solo funcionan la sangre la ventana y ese faro despues el resto simplemente no aparecen
y si tambien se lo de overlay pero
se solucionaria si le instalo el hammer ++? o de verdad hay otra manera?
vorbis  [author] 27 Jul @ 7:23am 
De lo que encontré, es un bug de hammer, pero puede que se arregle si nada mas lo mueves al decal. Como nunca tuve ese problema, no se si te va a funcionar pero si quieres también puedes usar overlays en vez de decals, aunque si puedes, usa decals en vez de overlays porque los overlays cuestan mas para renderizar.
ZARTH THE WOLFITO 26 Jul @ 6:23pm 
tengo una pequeña duda
por que cuando uso la herramienta "decals" al darle clic a cualquier pared la imagen No aparece pero, únicamente es visible cuando esta dentro del juego
hay algo que pueda hacer para solucionar eso?