FGD
You can help by finishing the translation.
Also, please make sure the article tries to comply with the alternate languages guide.FGD significa "Forge Game Data" (inglés para datos forgja de juego). Es la extensión para los archivos de definición de juego para Hammer . Definen todas entidades de un juego así mapeadores pueden seleccionarlos del editor. Es necesario entender que los FGD son nunca más que una fuente. No puede crear o cambiar entidades por editar los FGD, sólo cambiar lo que busca en el juego. A veces editar revela características o entidades escondidas, pero estos siempre estaba allí y pueden usarse sin FGD actualizados. Para archivos de FGD a medida funcionar en el Hammer, necesitan añadirse en "Tools > Options".
@include "base.fgd"
al inicio de su FGD y se carga antes de base.fgd
, puede tener errores.Contents
Historia
Mientras Hammer originalmente se llamaba Worldcraft, se desarrollaba bajo el nombre "The Forge" (la forja, de ahí que el nombre "Forge Game Data"). Por problemas de marca registrada, el nombre no puede usarse para la versión final de Hammer. Sin embargo, la extensión permanece.
Formato de archivo
Un archivo de FGD sigue un formato más o menos sencillo. Es un archivo de script que monta estructuras y relaciones de entidades para Hammer. Las partes diferentes del FGD de Half-Life 2 (encontrado en su directorio de binarios de SDK, por ejemplo [ruta a Steam]/Steamapps/common/Source SDK Base 2013 Singleplayer/bin/
) se explican a continuación.
//====== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======= // // Purpose: Half-Life 2 game definition file (.fgd) // //=============================================================================
Comentarios se definen por empezar una línea con //
. Pueden precederse por espacios o tabulaciones.
@include "base.fgd"
Si el juego para que escribe su FGD tiene mucho en común con un otro juego (p. ej. Half-Life 2 y Counter-Strike: Source), puede include (incluir) un archivo que tiene todas las estructuras comunes definidas en él. Los FGD para tanto Half-Life 2 como Counter-Strike: Source incluyen el archivo base.fgd
y el FGD para Half-Life 2: Deathmatch incluye el archivo halflife2.fgd
.
@BaseClass base(BaseNPC) = TalkNPC [ UseSentence(string) : "Use Sentence" UnUseSentence(string) : "Un-Use Sentence" ]
Una BaseClass se usa para montar estructuras que se usan por múltiples entidades diferentes. Se mencionan en una estructura por añadir base(BaseClassName)
a la línea de definición principal de la estructura. La estructura BaseClass se define igual que una entidad tradicional en todo sentido. La diferencia sola es que no aparece en las listas de entidades de Hammer. (La estructura de entidad completa le habla a continuación.)
@PointClass base(Targetname, Origin) studio("ruta/modelo.mdl") = entidad_de_ejemplo : "ejemplo" [ spawnflags(flags) = [ 32 : "Un flag" : 0 // 0 significa el flag no se pone por defecto 64 : "Otro flag" : 1 // 1 significa el flag se pone por defecto ] foobarname(string) : "Nombre" : : "Nombre de foobar" foobargroup(string) : "Grupo" : "Squad1" : "Nombre de grupo de foobar" foo(float) "Número de punto flotante" : "100.7" : "Puntos decimales = divertidos" algo(integer) readonly: "primer número" : 0 : "Esto es un número que no puede editarse manualmente" algo2(choices) : "segundo número" : 0 : "Su elección de números!" = [ 0 : "Defecto" 1 : "Algo" 2 : "Otra cosa" ] // Entradas input HagaAlgo(void) : "Haga algo" // Salidas output OnAlgoPasó(void) : "Dispara cuando algo pasa" output OnOtraCosa(void) : "Dispara cuando otra cosa pasa" ]
Arriba está un ejemplo genérico de una estructura de entidad como definido en los FGD. Lo analicemos poco a poco, empezando con la primera línea:
@PointClass
- El tipo de clase de entidad llama a Hammer como esta entidad puede colocarse.
@PointClass
- Esta entidad existe a un punto en particular no arbitrario. Típicamente se llama un "entidad de punto " (o "point entity" en inglés). Estas entidades se colocan en Hammer por usar la herramienta de entidad ("Entity Tool", ⇧ Shift+E).@NPCClass
- Esto es una forma de entidad de punto de sastre para entidades de NPC . Es útil junto con el tipo de propiedadnpcclass
, a continuación.@SolidClass
- La área de esta entidad se define por el sólido en que se pone. Típicamente se llama un "entidad de sólido " ("brush entity" en inglés).@KeyFrameClass
- Usado pormove_rope
ykeyframe_rope
. Esto causa la propiedadNextKey
conectarse cuando la entidad se copia.@MoveClass
- Usado porpath_track
y entidades similares. Esto causa la propiedadtarget
conectarse cuando la entidad se copia.@FilterClass
- Usado por las clases de filtro para definir cuales entidades pueden interactuar uno con el otro por alguna razón. Esto principalmente hace que la entidad muéstrese en propiedades con el tipofilterclass
.
base(Targetname, Origin)
- Cosas entre de la declaración de tipo y el carácter "=" ayudan definir propiedades de una entidad y como va a actuar y mostrarse en Hammer. Hay múltiples cosas que pueden usarse aquí. Más que uno de estos pueden usarse si cada separarse por un espacio.
base( 1Base, 2Base, … )
- Esto lo permite pegar BaseClasses definidas previamente a una entidad. Puede especificar múltiples BaseClasses, separadas por una coma.}bbox( min,max )
- Ajusta el tamaño de la caja de rodear de la entidad.Confirmar:is "caja de rodear" the correct translation of "bounding box?"
obb( min,max )
- Idéntico a bbox pero orientado a los ángulos de la entidad.color( roj vrd azl )
- Este configuración cambia el color de la caja de wireframe en las vistas 2D de Hammer. Si no está presente, el color se ajuste a magenta. Los valores aquí son los valores de RVA de un color y cada nombre tiene un rango de 0 a 255.iconsprite( "ruta/sprite.vmt" )
- Si esto se usa, el sprite especificado se muestra en la vista 3D de Hammer en lugar de una caja de color. Esto funciona junto con los comandosstudio()
ostudioprop()
. Si no nombre se ajusta, la propiedadmodel
se usa. Las propiedadesscale
,rendermode
,_light
yangles
afectan el sprite (si existen).sidelist( nombrepropiedad )
- Resalta superficies de sólidos en la propiedad dada (como una lista de identificaciones separada por espacios). Si no se especifica, la propiedad usada essides
(en español, superficies).sphere( nombredepropiedad )
- Si una entidad tiene un radio de efecto, p. ej. un ruido, una esfera se muestra en las vistas de Hammer. Si no especifica una propiedad, Hammer busca para una propiedadradius
(en español, radio).studioprop( "ruta/modelo.mdl" )
- Si esto se usa, la entidad se muestra en la vista 3D como el modelo especificado. Si no especifica un modelo, Hammer busca para una propiedadmodel
. Múltiples modelos pueden definirse. Si existen, las propiedadesskin
yrendercolor
afectan esta propiedad, similar aprop_dynamic
.Nota:Si tiene una entidad con la propiedadangles
que quiere poder girar en Hammer por el ratón (en lugar de solo por editar propiedades) puede necesitar añadir esta propiedad.
studio( "ruta/modelo.mdl" )
- Idéntico astudioprop()
pero la caja de rodear alrededor de la entidad ignora este modelo. Esto es útil para entidades que no muestran el modelo en juego.lightprop( "ruta/modelo.mdl" )
- Idéntico astudioprop()
, excepto que la inclinación del modelo es revertida.line( color, clave_comienzo, valor_comienzo, clave_fin, valor_fin )
- Dibuja una línea entre de dos entidades. Las propiedadesvalor
aquí dan los nombres para buscar en las propiedadesclave
en otras entidades.clave
generalmente se ajuste atargetname
. El color ajusta el color de la línea mientras la entidad no está seleccionada. La segunda entidad se ajusta a esto si no es especificada.cylinder( color, clave_comienzo, valor_comienzo, radio_comienzo, clave_fin, valor_fin, radio_fin )
- Dibuja un cilindro entre de dos entidades. Esto es similar aline()
, pero con la incorporación de dos propiedadesradio
que se buscan en las entidades. Estas definen el tamaño de los comienzo y fin del cilindro.lightcone( cdv_interior, cdv_exterior, color, escala_inclinación )
- Representa el cono usado en entidadeslight_spot
.cdv_interior
es la clave para la sección más interior ycdv_exterior
es la más exterior.escala_inclinación
permite invertir el ángulo de inclinación para representar el cono. Valores se traen de_inner_cone
,_cone
y_light
paracdv_interior
,cdv_exterior
yescala_inclinación
respectivamente si no se especifican. Esto lee muchos valores otros de las propiedades delight_spot
.frustum( cdv,cerca,lejos,color,escala_inclinación )
- Crea un cono rectangular que extiende de la entidad.cdv
define el ángulo de difusión (0-180).cerca
ylejos
definen cuales distancias se resaltan.color
define cual color el cono es.escala_inclinación
permite invertir el ángulo de inclinación mientras presentar el cono. Los cuatro primeros valores deben ser nombres de propiedades, mientras el último es un número. Valores se traen de_fov
,_nearplane
,_farplane
y_light
paracdv
,cerca
,lejos
ycolor
respectivamente si no se especifican, yescala_inclinación
se ajuste a -1.halfgridsnap
- Mientras mover esta entidad, snapa a la mitad del tamaño del cuadro. Esto es un poco especial porque no trae ni argumentos ni paréntesis.Pendiente: what is the correct translation of "to snap" in this context? and is "argumento" the correct translation of an argument to a computer function?
wirebox( min,max )
- Dibuja una caja para dos propiedades. Debe definirorigin()
para permitir mover los puntos.size( -x,-y,-z,+x,+y,+z )
- Define el tamaño del cubo por defecto usado cuando ni modelo ni sprite se especifica.origin( propiedad )
- Permite posicionar una propiedad de vector en la mapa.vecline( propiedad )
- Permite posicionar una propiedad de vector en la mapa. También dibuja una línea de la entidad a la posición.axis( propiedad )
- Permite posicionar dos puntos conectados por una línea en la mapa. El valorpropiedad
se ajuste a "x1 y1 z1, x2 y2 z2".worldtext()
(solo en ) - Presenta los contenidos del keyvalue "message" en la vista 3D.Los ayudantes siguientes no traen argumentos y son solo para tipos especificas de entidad:
Confirmar:is "ayudante" the correct translation for a "helper" in this sense?
decal()
- Presenta una calcomanía en superficies próximas. Esto usa la propiedadtexture
para ajustar la material para usar. (Parainfodecal
)Confirmar:is "calcomanía" the correct translation for "decal" here?
overlay()
- Presenta una cubierta en una superficie. (Parainfo_overlay
)overlay_transition()
- Presenta una cubierta en las intersecciones entre de agua y la costa. (Parainfo_overlay_transition
)Confirmar:is "cubierta" the correct translation for "overlay" here?
light()
- Presente enlight
. Su uso es desconocido.Pendiente: Descubra cual esto hace.sprite()
- Presta la material de sprite especificada en el keyvalue "model". (Paraenv_sprite
y sus variantes; para íconos de entidades, useiconsprite
.)sweptplayerhull()
- Dibuja prismas de tamaño 32×32×72 a dos puntos (point0
ypoint1
), después une esquinas para mostrar el espacio necesitado para una prisma mover a la posición de la otra. También añada ayudantesorigin()
para esas propiedades.Pendiente: ¿es para cuales entidades?instance()
- Presenta la instancia en la mapa. También genera entidades adicionales dinámicamente en acuerdo con los parámetros de la instancia. (Parafunc_instance
)quadbounds()
- Automáticamente ajuste las cuatros esquinas de la cara texturada a guardar. (Parafunc_breakable_surf
)Pendiente: ¿también controla esto el keyvalue "error"?Confirmar:is "a guardar" the correct translation of "on save" here?
entidad_de_ejemplo : "ejemplo"
- El nombre de la entidad, seguido por una descripción. La descripción se muestra en Hammer cuando hace clic en el botón Help en el diálogo de propiedades de entidad. Para facilidad visual, la descripción puede atravesar múltiples líneas por unir bloques de texto por el signo más (+). Por ejemplo:
@PointClass = entidad_de_ejemplo : "Esto es un descripción de ejemplo para"+ "esta entidad de ejemplo. Aparece"+ "en el diálogo de ayuda para esta entidad." [ propiedades de la entidad van aquí ]
- propiedades de entidad - Todo entre del conjunto principal de corchetes se usa para definir las propiedades de la entidad, incluyendo sus entradas y salidas. Esquemas individuales de propiedades consisten en un nombre, una declaración de tipo, un nombre de mostrar, y una descripción. Las propiedades más comunes son:
string
- Esto indica una propiedad del tipo "string" (cadena de caracteres).
nombre(string) : "Nombre de mostrar" : "Defecto" : "Nombre de mostrar en juego."
integer
- Esto indica una propiedad del tipo "integer" (entero).
número(integer) : "Número de cosas" : 1 : "Número de cualquier tipo de cosas."
float
- Esto indica una propiedad del tipo "float" (coma flotante). Aunque trata números, su esquema es similar al tipo string. Debe haber comillas alrededor del valor por defecto.
coma_flotante(float) : "Número de coma flotante" : "1.5" : "Número que necesita un punto decimal."
boolean
(en todos juegos desde )(también en ) - Esto indica una propiedad del tipo "boolean", con un menú desplegable para si/no. Para versiones más viejas de Hammer, usechoices
en lugar de esto.
condición(boolean) : "Verdad" : 1 : "Si es verdad o es falso."
- También hay dos tipos comunes de propiedades especiales,
choices
(elecciones) yflags
, que siguen un formato un poco diferente. No funcionan como tipos de entrada/salida.
choices
- Una propiedad de este tipo le permite a Ud. establecer una cantidad de elecciones distintas. Su formato es similar a los otros tipos:nombre(choices) : "Nombre de mostrar" : "1" = [ 0 : "algo" 1 : "otra cosa (defecto)" 2 : "algo completamente diferente" ]También puede usar cadenas de caracteres o
float
s como valores en lugar de enteros, así:modelo(choices) : "Modelo" : "models/algo02.mdl" = [ "models/algo01.mdl" : "algo" "models/algo02.mdl" : "otra cosa (defecto)" "models/algo03.mdl" : "algo completamente diferente" ]
flags
- El tipo de propiedadesflags
le permite a Ud. establecer que aparece en la porción "Flags" del diálogo de propiedades de entidad. Se establece similarmente al tipochoices
. Los flags todos son potencias de 2 (2⁰=1, 2¹=2, 2²=4, etc.), y sus valores son o 0 (apagado/falso) o 1 (encendido/verdad). Si no defecto se especifica para un flag, se considera ser apagado.spawnflags(flags) = [ 1 : "algo agudo" : 1 2 : "otra cosa" : 0 4 : "⸘dijiste qué ahora‽" : 0 8 : "nada" : 1 ]Nota:spawnflags
siempre es el nombre de esta propiedad. Crear una propiedad de tipoflags
con cualquier otro nombre resulta en ella apareciendo como un keyvalue de tipo entero normal.
- También hay una cantidad de tipos de propiedad de propósito especial que modifican la IU de diálogo de propiedades de entidad para permitir navegar fácilmente para archivos o manipular más fácilmente propiedades complejas (como colores o ángulos).
axis
- Añade un ayudante de eje relativo de 2 puntos.angle
- Añade un artilugio de ángulo para esta propiedad a la IU de diálogo de entidad.angle_negative_pitch
- Idéntico aangle
, excepto que la inclinación es invertida.color255
- Añade un botón que abre la IU de elegir color, que traduce el color que Ud. selecciona a un valor RVA de tres números. Permite parámetros extras, p. ej. brillo.color1
- Idéntico acolor255
, excepto que usa unafloat
[0,1] en lugar de un entero (0,255).filterclass
- Marca la propiedad como ser el nombre del filtro para usarinstance_file
- Añade un botón que abre el navegador de archivos para permitir Ud. navegar para archivos de instancias.instance_parm
- Usada enfunc_instance_parms
para definir variables de arreglar.Confirmar:is "variables de arreglar" the correct translation of "fixup variables?"
instance_variable
- Usada enfunc_instance
para ajustar variables de arreglar.material
- Añade un botón que abre el navegador de materiales.node_dest
- Añade un cuentagotas para seleccionar un nódulo en la vista 3D.node_id
(en todos juegos desde ) - Nódulos usan esto para el keyvalue "Node ID" para incrementarlo automáticamente con cada nódulo colocado consecutivamente. Parece que no funciona cuando otras entidades lo usan.npcclass
- Añade un menú desplegable poblado por entidades del tipoNPCClass
.origin
- Añade un ayudante de origen.particlesystem
(en todos juegos desde ) - Añade un botón que abre el navegador de partículas para permitirle a Ud. navegar para sistemas de partículas.Template:Bugfix:espointentityclass
- Añade un menú desplegable poblado por entidades del tipoPointClass
.scene
- Añade un botón que abre el navegador de sonido para permitirle a Ud. navegar para archivos de escena.script
(en todos juegos desde ) - Añade un botón que abre el navegador de archivos para permitirle a Ud. navegar para VScript s .scriptlist
(en todos juegos desde ) - Añade un botón que abre una lista de VScripts, con botones para añadir/quitar scripts y abrir cada archivo.sidelist
(lista de superficies) - Añade un cuentagotas para seleccionar una superficie (múltiples con Ctrl).sound
- Añade un botón que abre el navegador de sonido para permitirle a Ud. navegar para scripts de sonido o sonidos crudos.sprite
- Idéntica amaterial
, excepto que sustituye automáticamente su filtro de búsqueda consprites/
cuando abre el navegador de materiales, y añade.vmt
al fin del nombre de la material.decal
- Idéntica amaterial
, excepto que sustituye automáticamente su filtro de búsqueda condecals/
cuando abre el navegador de materiales.Nota:A veces, la material que Ud. quiere va a estar enoverlays/
o una carpeta totalmente diferente.studio
- Añade un botón que abre el navegador de modelos.target_destination
- Indica que la propiedad es eltargetname
de una otra entidad.target_name_or_class
- Indica que la propiedad es eltargename
oclassname
de una otra entidad.target_source
- Indica que la propiedad es un nombre que otras entidades pueden enfocar en.vecline
- Añade un ayudante absoluto de eje de 1 punto, similar aorigin
.vector
- Vector 3D
Otras secciones de archivos
Listas de exclusión de materiales
Estas listas definen rutas que el navegador de materiales de Hammer no va a usar cuando muestra un selección de texturas. No afecta cuales archivos son actualmente disponible a una mapa.
models/
siempre se excluye, a pesar de que ajusta aquí.@MaterialExclusion [ // Nombres de los subdirectorios de que no queremos cargar "debug" "engine" "hud" "vgui" ]
Personalizar auto-visgrupos
Esto permite personalizar la pestaña de visgrupos automáticos de la barra de herramientas Filter Control . El primer título es el nombre del "progenitor", y el siguiente es los "descendientes". Por fin están una lista de clases de entidad que van a colocan en el visgrupo. Si el progenitor ya existe, la entrada nueva va a unirse con las previas (incluyendo la lista de grupos por defecto). Esto permite crear "árboles" con múltiples niveles de agrupación. Si un visgrupo se vuelve totalmente vacío, no va a aparecer en la lista.
{{Note|Puede añadir entidades a grupos existentes. Si el progenitor de un auto-visgrupo es el nombre de un grupo existente, p. ej. "World Details", puede listar su propio entidades juntos a los miembros existente (p. ej. añadir func_brush
a esa lista al lado de "Props" y {{ent:es|func_detail).
@AutoVisGroup = "Progenitor" [ "Descendiente 1" [ "nombre de entidad 1" "nombre de entidad 2" ] "Descendiente 2" [ "nombre de entidad 2" "nombre de entidad 4" ] ]
Ejemplo:
@AutoVisGroup = "Sólidos" [ "Disporadores" [ "trigger_once" "trigger_multiple" ] "Sólidos de herramientas" [ "func_areaportal" "func_viscluster" ] ] @AutoVisGroup = "Sólidos de herramientas" [ "Vis Clusters" [ "func_viscluster" ] ]
Enlaces externos
- SE FGD's FGDs actualizados unos juegos de Valve.
- Forge Game Data Language Resaltado de sintaxis de FGD disponible en formato textmate (compatible con SublimeText)