It teaches you about programming map entities, weapons and such. It will help you if you know C++ programming fairly well from the start.
You can also check out programming tutorials here on TWHL.
Also hi, I made that
HUD_TempEntUpdate
has a cl_gravity
parameter,pmove_t
has a gravity member,CWorld::Spawn
sets the value of sv_gravity
CWorld::Spawn
if each level is essentially randomised.save
into the console and work around it, it's an engine-side console command. I'm not sure how to work around that, probably some very ugly hack.ACT_
in HL SDK.dlls/activity.h
you have all the activity IDs defined:
Further, elsewhere you will find given situations or events where animations are looked up by activity:
So for example, when the grunt does a "victory dance" i.e. enemy is dead, it looks for an animation with the ACT_CROUCH
activity. And then more of them later.LINK_ENTITY_TO_CLASS( Cus_Char, charizard );
would link it to a "Cus_Char" in the FGD, whilst expecting a "charizard" C++ class.LINK_ENTITY_TO_CLASS( monster_charizard, Charizard );
as Erty said.sound/common/null.wav
. So, ambient_generic is your only option.entities
command. It'll report like this: Here you can see there's 452 entities in c2a1.bsp
.env_spark
emits sparks, and is itself an entity. But the sparks it emits are tempents, so those don't count.env_explosion
indeed creates an explosion which consists of multiple things (explosion sprite, explosion smoke, sparks, decals etc.), but only that one env_explosion
counts, cuz' the rest are on the client.func_breakable
and others though, don't count, they're tempents.-num_edicts 2048
regardless of Steam or WON, so yeah, the server has to do it. Otherwise you're limited to a total of 900 entities, regardless of if they're brush or point entities. -num_edicts
parameter you can bump it up to 2048.monster_barney
(or to all NPCs) to make them change their classification (friend vs. foe).0x00FF0000
is pure red (255,0,0) and so on.CBaseAnimating
and handle animation switching manually.(V*d)
on top of N? Hell yeah, we're GETTING somewhere now! (actually you should subtract to get this result, because remember, the dot product is negative in this case)N - V*d
let's actually try -2N*d + V
and see what happens: This expression can be simplified a bit: V - 2*N*d
const float doubleDot = 2.0f * direction.Dot( normal );
return direction - (doubleDot * normal);
If you don't believe me, here's how some engines & maths libraries do it:Vector Reflect( const Vector& normal, float normalBias = 1.0f )
{
const float doubleDot = 2.0f * normalBias * Dot( normal );
return *this - (doubleDot * normal);
}
And then have a random number on each bounce to simulate surface imperfections. I guess you don't want that, but it's just a fun thought.Properly explain how to set up JACK for mapping, ensure things like getting up-to-date compile tools [...]For years I wanted to rewrite "In the beginning" and basically update a buncha mapping guides into a modern context. I think I could attempt something soon enough.
Ideally tutorials would be split into 2 lists: ones that are known to be up-to-date and relevant and archived ones that are outdated, possibly referencing obsolete tools or older methods.I agree, it would be nice to categorise those.
[img:https://i.imgur.com/aAJoIXF.png]
Otherwise I'm doing fine, thanks! What about you?NULL
to forcibly do this, but they don't really make a difference if your map is compiled without leaks, unless in some more special situations like with func_detail.-chart
option: