> Hello to all the respected established coders of this list. My names
Richard
> and I'm yet another one of those annoying newbie coders who has 100
questions
> but I'll them brake down to one.

<snip>

There isn't any kind of "overall reference" or "API reference" to the
Half-Life SDK.  Fully understanding the SDK requires a medium to advanced
level of knowledge in C++.  The only way you will learn how things work is
by looking at and playing with the SDK source code.  You will run into MANY,
MANY times when something doesn't work (the game crashes, goes into an
infinite loop, or doesn't do some effect that you are trying to do).  In
fact, you will find that there are more times when something doesn't work
than you have when something does work.  You will learn by trial and error.
Some of these errors you will repeat over and over and will eventually learn
not to do those things (via negative reinforcement).

The best way to become completely frustrated with the SDK is to start out by
ripping out 70% or 80% of what's there and completely replacing it with all
your own code.  You will find that you get dozens/hundreds of compiler
errors and when you finally do get rid of all the compiler errors, the game
crashed deep inside the Half-Life engine (where you can't determine what
caused the crash).

The best way to NOT get frustrated with the SDK is making very tiny small
changes one by one to the SDK source code and testing things out after each
small change.  Once you begin to understand how the variables, classes and
functions are used, you will find yourself making much larger changes at a
time and will find that you have fewer and fewer problems with new code.
The time span for this learning curve can be anywhere from 2 or 3 months up
to 6 months or more, depending on your skill level in programming and your
experience with programming in C++.

Also, ALWAYS save backup copies of stuff that you are about to change so
that you can easily roll back to a working version when you completely screw
something up (which you will do more than once).

When browsing through the SDK source code, it's useful to have several
editor windows open at once to view the .cpp and .h files in the dlls folder
and also to be able to view the .h files in the engine and common folders as
well.

Start with the thing that the engine deals with, the edict_t structure.
This can be found in the engine\progdefs.h file.  Every entity created in
the game has one of these structures.  It contains things like origin (3D
world coordinates), health, velocity, angles and so on.  This edict_t
structure is pointed to by a class member variable called "pev".  Wherever
you see "pev" used, just think "edict_t".  For example you'll see
"pev->health", or "pev->angles" or "pev->velocity" used all over the place.

Every entity in the SDK source code is based on the CBaseEntity class and
every other class inherits directly or indirectly from this CBaseEntity
class.  Look in the cbase.h and cbase.cpp files for the member variables and
functions for this base class.

Everything else is just inheritance of the CBaseEntity class with stuff
throw in for that specific type of entity (for example, weapons contain
ammo, players have weapons, etc.).  Pretty much all "basic" C++ type stuff.

If you can resist the urge to try to change too much stuff at once and try
to understand one small piece of the puzzle at a time, it won't be too long
before you are getting up to speed on how to create your own MOD with the
SDK.

Jeffrey "botman" Broome

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

Reply via email to