Well, a couple things. If you've removed every halflife entity, and are
going to code all your own from scratch,  then NOT starting with a stock
Halflife one is a good idea. ;)

Otherwise, start there. Learn a bit about mapping (the use of entities),
and you'll start to connect the dots as far as the things that are in the
FGD relate to what Hammer's UI shows the mapper. I think to code entities
for Halflife, you HAVE to be able to build a boxy room and make a couple
entities work. Otherwise, your entities will be too hard to use for most
mappers, as you won't be conforming to standard idioms of entity use possibly.

An FGD is simply a way of customizing entity properties in Hammer's UI, and
linking between your entity's code (Look at the KeyValue function to see
how the code deals with the properties), and the compiled .bsp.

Otherwise, an FGD is pretty much a C++ object's data members, or, depending
on your COM experience, it's like an IDL file -- not C++, but ways to
document what a C++ class exposes as methods and data types (in this case
more like a struct), it's an intermediate language.

The data types are pretty simple (number or string), why everyone says
start with Halflife's is that it will become self documenting once you
spend enough time reading it (yes, that's the hard part.. cause it looks
like gibberish the first go). @SolidClass or @PointClass just means 'is it
a brush based or point entity'. That is, does the mapper drop in a brush,
and convert it to an entity, or do they pick a point. Again, a basic level
of mapping will help here.

The rest is just a bunch of data stuff. If you can write a C++ struct, you
can pretty much write a description of your entity in the FGD file, by
looking at other entities for the 'data types' and/or UI features you want
to expose.

For example:

@SolidClass base(SomeBaseClass) = MyEntityName : "Mappers Pretty Name"
[
  myvalue (choices) : "Mappers Pretty Name" : <defaultvalue> =
  [
      0 : "choice 0"
      1 : "choice 1"
  ]
]

Things that the names may not make obvious:
(choices) - gives the mapper a dropdown (or combo box), the value is an int
in code
0 - the int value when mapper picks this
: "choice 0" - what mapper sees

MyEntityName - You'll use this in code in the LINK_ENTITY_TO_CLASS macro

In general, if it's quoted, then the mapper will see that value (there's
probably an exception I'm forgetting).

Copying and pasting is like inheritance is to C++ in my opinion. Wisely
used, it saves work and brain power for more important logic problems.
Poorly used, it's just a bloody mess.

That's about all I can think of that wasn't clear to me after mucking about
with it a bit.. and I don't know of any documentation per se.
http://www.planethalflife.com/hlsdk2 has something on creating an entity,
and he may go into the FGD there?

At 01:45 AM 11/24/2002 -0800, you wrote:
Howdy, I'm really interested in how FGD's work and such, I want to know the
real deal, is their some design documents, or
tutorials that are written on them, because I know everyone always says its
not hard just look at other peoples stuff,
but that just means cut and paste a stock halflife fgd if you aint got an
idea wth your doing, I have no idea how to
associate this stuff codewise, things like,
--stock fgd--
@SolidClass base(Door) = momentary_door : "Momentary/Continuous door"
--end of stock fgd--
means bloody nothing to me, how am i suppost to read this and just figure it
out ? see where im getting at ?
anyways it would be of so much help if theirs some sort of tutorials or
guides on writing fgd's (i.e. keys, syntax,
usage, etc) and hopefully, writing the code required portions and
everything, because i honestly don't feel right in
 giving out my mapmakers something i truly don't understand, which i want to
udnerstand myself.

Thanks ahead of time,
Paul


_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives,
please visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders
Pat 'sluggo' Magnan
Tour of Duty mod
http://www.tourofdutymod.com

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to