The Dam – E-1337ism
Firstly a big hello to ModDB, I’ve recently taken up an account there and will be duplicating my “The Dam” articles over on my personal blog there. This is firstly for my own personal sense of exposure and also to give the blogs somewhere to go when we faithfully release BM, and please, don’t try to construe the fact that BM is close to release from this. I signed up as a way to help team members deal with a spam problem I won’t go into and duplicating the blog seemed prudent, you’ll know when the mod is close to release. I intend to duplicate over my backlog of blogs from the Black Mesa Dev blog when it seems appropriate, but onto the controversial topic at hand, Eltism in the development scene.
The first thing at hand is to deal with your doubts that it exists in the first place and trust me its there. I won’t use names because then I’ll be insulting some scene’s and praising others before I tear them down to so I’m not going to name names, but there are websites that carry reputations. On more professional websites they’ve even been used as insults “Man tell that guy to go back to XXXXX”, “At YYYYY we expect high quality stuff, if your posting this you’d be best of at ZZZZZ”, or even “----ing AAAAA n00bs”. I’ve seen these in chats rooms and I’ve seen them in forum posts. There’s a general attitude that’s reached by those with skill that they don’t have time for those without and I’m here to call everyone one of you out and say shove it up your ---.
The great John Gabriel’s internet equation goes that
Normal People + Anonymity + an Audience = Total retard
However, this fails to take into account one major factor that modders love to swing around, their E-Rooster (k, follow? puns trying to keep it family friendly). With their E-Rooster at stake every person likes to prove how totally frigging awesome his Rooster is and this leads to an on going competition with no end in sight and no real score board to brag with. With no clear top dog there develops cliques of those who by measure of their rooster are better than everyone else, and thus starts the problem. Those who consider themselves better have 2 ways of dealing with it
1 – By building people up, offering help and advice to get the people where they need to be so that the entire community as a whole profits from better developed mods and extra content.
2 – Ridiculing those who don’t match you standards and directing them to the clique you think they belong to and relegating them there while constantly pointing out which clique you’re in.
So what do these Cliques resolve to in our modern world? Mainly it ends up being the websites I mentioned earlier. Being a part of a website or a community sets you inside that Clique of people and all the expectations thereof.
Now to a degree this is human nature, people love to be in charge and on top, but there are the 2 ways I mentioned to do that, the type 1’s and the type 2’s. What this blog is, is nothing more than a challenge to every single last 2’s who care about their rooster like it’s the only thing, to try being 1’s who build their community. Now people will argue it’s always been that way and it won’t ever change and I bring you to a lesson of history.
Anyone who did modding back in the days of things like GoldSource knew websites for prefabs/models, friends who would do them favors, mutual content swapping, and availability was rampant, this was a community of 1’s, people that shared their skill and advice and made it available for all. Nowadays most content websites are dead or cost you money, there’s no longer that willingness to share and there’s a desperate cling to your content and your content alone to deny others form having it because it’s your content. This no longer sounds like 1’s, it’s nothing but 2’s with the dream of breaking into the industry while viewing everyone as competition rather than an ally.
We all have things to share and learn, all I want to say is those so desperate to prove how much better they are than everyone need to stop and help others else they ruin it for everyone else, people should not be ridiculed or put down because they aren’t as good as you, instead you should show them what your doing that makes your work better so they can make better work too, that’s a far better example than a screenshot that looks like it should be from a professional studio.
The Dam – Anatomy of a Mod
And you guessed it folks its time for another exhilarating “The Dam”… well I was going to try carry the game show theme some more but man did it get old after about 2 sentences. Anyway this week is going to be more specifically focused on entirely what a mod is and how it’s implemented within source.
First we need to disassemble the engine, you’ll need some patience, a text editing program, a Hammer (newer than 3.4), and willingness to restart steam (again). The Source engine works on a client/server basis. The server part of the game receives and interprets information and dispatches it to the client to render and process, these are represented by bin/client.dll and bin/server.dll (duh). These contain all the game specific mechanics and functionality, but as some people with computer experience realize a .dll does not a game make. You need a .exe to actually run the game, in source that is hl2.exe and this is the game’s engine. The .dll’s contain all the game specific stuff like weapons/AI and the .exe is the engine itself that knows what to do with the games content. Whenever a new engine like the Orange Box is released there is a new hl2.exe that the game has to be run in, the slight changes to this file means that the .dll’s have to be compiled for that engine otherwise they wont work. When creating a mod for source you gain all the code needed to make the .dll’s, you gain absolutely no control over the .exe’s content, that and the ability to make money form your mod is what source engine licenses are for. What happens is that when steam starts up it reads 2 directories for any gameinfo.txts steamapps and SourceMods. The gameinfo.txt tells the game where to look for the .dll files and tells it what .exe to load it into primarily though the number known as an appid. In essence the gameinfo.txt is the game as far as Steam is concerned, a gameinfo.txt in a folder inside of source mods is a mod at its most base level.
So what does this mean for you? Realistically as far as the average gamer is concerned there’s 3 classes of modifications, any of which require you to have access to the Source SDK Base which we’ll go into detail about later.
- Map Pack
- Mod
- Total Conversion
A map pack simply leverages the existing game like HL2, has some new maps, maybe some new models but apart from new maps only the appearance ever changes. Mod’s take an existing game like HL2 and try to expand upon it while still requiring the original game to play it. A Total Conversion on the other hand takes nothing except what comes with the game, you don’t need anything to install a TC except whatever you’d need to play any mod.
Map Packs come in two brands, the ones where you install it inside your original game and have a huge mess, and the kind I’m talking about that show up like a separate mod. How this is achieved is by two factors. Firstly the Gameinfo.txt (when written properly) can load the existing .dll files of any game like HL2 and simply begin playing the game like another mod, no changes made. The second factor is how steam loads content, the entire retail game is usually packed away in a .gcf so normally if you would replace something you’d have to unpack the .gcf edit it and repack it which we can’t do. With steam the content found in the game’s folder supersedes anything found in the .gcf. So to make a map pack, you simply load the game itself through your GameINfo.txt and simply extract and edit anything you want to be different, that is unless you want to edit the code.
Mods work pretty much like Map Packs, they load another game content and overwrite it with their own, but the biggest distinction is that mod’s have code. In order to make a mod you have to get the source code, compile it and then create the .dll files. As a mod doesn’t fall back on a game for all its content it can have problems being run or started if not everything’s been put in place; however, like Map Packs mods require a game to be installed to be run. Without that game essential parts of the mod will be missing rendering it useless. In order to remove that pre requisite of owning a game you have to move into the realm of Total Conversions.
Total Conversions basically rely on nothing but themselves and the Source SDK Base that I’ll take a moment to explain. Source SDK Base and Source SDK Base – Orange Box are nothing but wrappers. They’re just fluff to surround the EP1 engine and the OB engine respectively, there’s lots of ways to gain access to them but without them you cannot run any type of mod. This allows a mod to load only the engine and non of the existing game’s content to keep a nice clean install and a wider target market as anyone can install it, the easiest way to tell a Total Conversion is it’s appid, in order to load only the SDK Base and nothing else then it uses an appid of 215 or 218 to show the EP1 or OB engine respectively.
Some may try to debate these terms but that’s how I use them and you may find lots of people using them interchangeably, for the record heres a few examples. A few good Map Packs are things like Mistake of Pythagoras, Rock 24, or Minerva; a few good mods are things like Synergy, Source Forts, or HL2:CTF; and a few good total conversion are things like Team Fortress Forever, Project Valkyrie or BallMen (not like that, get your mind out of the gutter and try it out).
The Dam – Bump bump, Bump bump
So were up to the second week of displacements, people have
often asked why I don’t cover more advanced stuff or the in depth stuff and really
it’s for the simple reason I feel the need to build core topics and set
precedence for my terminology and way of describing things. I have so much
information I could spend years on just 1 advanced topic because I haven’t said
anything before about how to handle the intermediary steps. To keep blogs
intelligent and brief I’m building up a base of topics that I will move past
once I believe enough has been said for a more advanced topic to be handled.
Without having some good way to group together the pieces of ideas you end up
with articles like last week that only laid ground work. This week should prove
to be much more advance and useful; we’ll start with the 3 major sins of
displacements.
The first thing that people often get wrong when doing
displacements is that they displace the entire brush, this is a mistake, there
are very few circumstances where you want the entire brush a displacement. The
best thing to do is cover the entire brush in nodraw, then select only the
visible faces and apply the grass/rock texture and displace those faces. The
reasons for this are 2 fold, optimization and lighting. Displacement faces are
a lot of triangles and should be avoided when then their not going to be seen
for simple FPS reasons. The lighting issues come from a point I mentioned last
week, light is always blended between the vertices on a displacement when they
line up, and this creates a sort of smoothed look. Below is a picture that
illustrates the problem. The left is a normal brush, the middle is just a
displacement brush, notice the rounded edges, the last is four displacement
brushes together, as I haven’t removed the hidden faces the lighting is
smoothed with those faces, as those faces are dark it creates a dark seam
between the displacements which I’m sure everyone has seen a post about in a
forum if not made It themselves. If only the visible faces were displaced this
problem would not occur.
http://members.shaw.ca/dvdgillen/BMS/Dam_DispShade.jpg
The next major sin of displacements is the displacement
power. So you all will know the seriousness of my warning, I shall say this in
English. You do NOT need 32 power 4 displacements to make that field, just no.
You work at the lowest level of power you can get away with and only increase
it when you find the shape you’re trying to make needs more resolution. You
start coarse and work your way to fine. In fact ignore displacements for a
second, YOU ALWAYS start coarse and work fine, you will never have your final
effect first time round and you can’t build the details for a map until you’ve
built the rest of it. Hammer out the rough shape (get it) and if it’s too rough
increase the power, if power 4 isn’t good enough, you’re either doing something
horribly wrong or you need to split the brush into several pieces. Heads will
roll if I catch any of you ignoring the above.
The third and final sin of displacements is “placement failure”.
To create realistic displacements that have few to no lighting glitches all
your displacements should be able to sew to the other displacements, this
creates a form of continuity that you can see and it helps form the terrain as
one cohesive whole rather than a bunch of faces put together, it also allows
several of the advanced features to work. In order for faces to be able to sew
they must have matching edges or half of the edge must match. To take an
example below, the first is what not to do, some people start with that then
paint geometry until it looks put together properly, don’t be one of those
people people! The second shows the matching edge version where all the edges
line up, a good solution. The third shows a closer approximation to the first
because it uses the half edge rule to allow some extended faces beyond the
second examples, a layout like that might be necessary if regular brushwork
were adjacent to the displacements.
http://members.shaw.ca/dvdgillen/BMS/Dam_DispAlign.jpg
Now we’ve covered the major things done wrong lets show you
how to do some things the right way. The first thing is the subdivide tool,
this simply ignores any geometry painting you’ve done and smoothes out the
selected displacement edges that can be sewn. With something like a Cube it
forms a sphere; with an L shape it would form a hockey stick like shape. Any
edge that cannot be sewn to another selected face is not subdivided. So a tall
brush with only the sides displaced and not the top/bottom makes a cylinder
that goes form the original square into a rounded cylinder and back into a
square again. It’s a very useful tool for 1 thing alone. Saving Time. A
subdivide does not make a displacement, it will save you the time it takes to
manually round an edge but after subdividing you still need to adjust the
displacement either by trimming off excess with the clip tool or by adding more
interesting and realistic shapes. For those unsure what a Subdivide might do
below are a few examples of before and after; however, an important note is
that subdividing does not like half edges and concave shapes. The more of
either included before you subdivide the more likely an incorrect shape will be
created.
http://members.shaw.ca/dvdgillen/BMS/Dam_DispSubd.jpg
Now I’ve told you manually editing displacements will need
to be done so lets tell you the best way to do it, and that’s think small. The
bigger the type of change you try to make at once the more problems you’re
going to run into. I’m not talking radius of effect I’m talking move distance,
instead of things like 15 and 20 as your move distance you should be working at
about 1 or maybe even 0.2, the gradual movement of the vertices allows you infinitely
more control and the ability to correct your mistakes quickly. Another reason
its important is because of the soft edge when geometry painting, unless your
affecting a large area the adjacent vertices will move little comparatively to
the vertex your actually painting, this means your prone to creating a very
jagged effect when moving things large values. The best process is to use the
small value and move your brush across the surface that you want to build up,
slowly building up the brush moving it across the area you want to build up,
this takes a bit longer but usually produces an uneven effect that lends
realism but also keeps the vertices very close to one another preventing sharp
ugly drop offs. The smooth tool is another that requires small amounts. It
takes the height of every vertex within its radius and averages them and moves
them close to it relative to the smooth value. Values of 1 can completely
flatten some cliff faces. As it flattens along the axis it’s rarely used as it
will demolish smooth curves by instead turning them into angular steps when used
by an inexperienced hand. The final note is that the paint geometry tool does
not like decimals, it can use them fine but whenever you adjust a setting it
will convert your move distance or radius to an integer, working at 0.2 that
changes it to 0 meaning your painting no effect at all.
Now when you get down to using displacements practically there
are a couple of tricks most people hadn’t realized. When the episode one engine
was introduced there became a whole big mess about the collisions on
displacements. The functionality was added to ignore certain types of
collisions on displacements; this unfortunately meant that any map compiled for
a pre ep1 game with the ep1 tools had non solid displacements unless they added
–novirtualmesh to their compile parameters. Because of the whole kerfuffle over
that issue most people missed the capabilities of the new displacements, being
able to choose solidity added new and interesting ideas like having snow in
your level that people actually sunk into. I have yet to see a map take full
advantage of it so here’s a picture of Antlions in the snow with Santa hats.
http://members.shaw.ca/dvdgillen/BMS/Dam_DispCollide.jpg
Another thing to remember is that not every piece of rock
everywhere is nice and smooth, some have jagged edges, having a sharp turn in
your rock doesn’t always need more polys thrown at it so it can be smooth, to
create the most realistic rock pick a type of rock or a geographical area, then
study pictures. Some rock formations are sharp and pointy everywhere, others
are nice rolling subtle hills, and others are like steps where the layers in the
rock have eroded differently. I can’t ever say “make natural rocks by doing X”
All I can advise is going to the source for inspiration.
One of the final things I’m going to advise on is dealing
with stretch marks, each vertex gets a U/V co-ordinate on the texture, this
means no matter where the vertex moves that part of the texture will remain
with it. There’s not really much you can ever do about texture stretching in
fact the only way to solve it is to make the problem worse. When a single row
of your vertices gets moved too far from another then the texture stretches,
the only thing to do is move that vertex closer, but then that stretches the texture
with the vertex behind that. In order to “fix” it you adjust all the vertices
so that the stretching present is actually uniform in its manner. When the
texture is equally oversized/undersized along its length then it will look like
it doesn’t have a problem at all, it only looks like a problem when the stretching
is uneven across the face, the picture below shows the problem and solution on
an easily visible texture.
http://members.shaw.ca/dvdgillen/BMS/Dam_DispStretch.jpg
And finally don’t do too much with one face, really. It will
allow you to keep detail in your face and prevent texture stretching. Say for
example you want to make a sharp hill ridge; you try this with one face and to
get any height you either have horrendous texture stretching up the side, an extremely
high power displacement, or have it build up slowly so people could walk up it
defeating the purpose. Instead of trying to pull the shape of that 1
displacement out sooooo far, instead block out the shape you want. In the
picture below the blue lines represent the underlying faces.
http://members.shaw.ca/dvdgillen/BMS/Dam_DispMulti.jpg
Now that seems simple enough but re read everything that’s been
said, matching edges, blocking things out, all the technical things to track.
It makes you wonder how anything like a cave ever gets built out of
displacements, and the answer is simple “I hope you like jigsaws”, some people
instead build the displacements out of cube building blocks but this creates a
lifeless uniformity that requires too much work to break IMHO. Always keep in
mind that it takes 4 displacements of the same power to equal one displacement
of a higher power, and with that I’ll leave you with a shot of BM related
jigsaw if you can guess where it’s from.
http://members.shaw.ca/dvdgillen/BMS/Dam_dispjigsaw.jpg
The Dam – Just for 2 weeks, let’s all do the bump
Man MC Hammer references will never get old. I missed last week’s article for no other reason than Personal Issues. This week, I’m going to be talking about displacements and how to use them, rather than post a rather monolithic blog it’s going to be split up into 2 parts, this is the first one and lays down a lot of the basics I’m going to assume people understand in the second blog so forgive me if it is a little basic.
The first big question regarding displacements is why you should bother. The main design for displacements was for use in Terrain, back in the old GoldSource days terrain was achieved by making a huge batch of triangular prisms and then vertex editing them into shape, yeah no really you young punks have it easy *shakes fist*. Displacements took the process and turned it into a much easier and better process, now one face can hold all that information and more. Because of this design their also useful for creating destroyed surfaces, uneven concrete/paving, and even for creating curved surfaces like a rounded edge. I recommend only using displacements when you have an uneven surface or a complex curve, using them for simple effects like cylinders and rounded edges is a waste (as many forum arguments have debated) as a lot more polys are used to make the displacement than would be needed by a cylinder primitive, which is one of several things that should be noted about displacements.
The first major thing of note is that a displacement always has to have 4 sides, the reason they have the quadrilateral is because the engine forms smaller quadrilaterals inside based upon first the power of the displacement and second the angles of the edges. With more or less sides the program would not be able to devise a neat and intelligent algorithm without a lot more program for honestly, very little gain, as many modelers know with the right touch and a sideways logic you can make nearly anything out of 4 sided shapes alone. The power affects how dense they are and the gain is exponential, a power of 2 gets 32 polys, 3 gets 128, and 4 gives 512. Powers should be used carefully but I’ll talk about that more next week Source has a way of handling all these polys known as “batch processing” to keep it cheap at even power 4.
Batch processing is what keeps displacements cheap, when several polys are on the same face, like a displacement, source will render them all in one batch instead of one by one. This cuts down the number of times the render needs to be initialized making the process go much faster. Batch processing isn’t use for every polygon at once because a few assumptions are made that could not be made about every polygon in a level, well that is unless your level sucks but I digress These assumptions are just one of the tricks used on displacements.
Another trick used on displacements is their lighting; the lighting is automatically smoothed between displacement faces that share an edge. When displacements are made incorrectly it can cause shadowing and other effects to appear in the wrong place on the surface. The lighting density on a displacement is also affected by how it’s made the surfaces with a low power and large surface area cannot handle small light map values. In fact you may find Hammer adjusting the light map value for you sometimes because of this much to my early frustration before I understood what was going on. Displacements use their vertices to extrapolate some of the lighting creating smoother lighting from a higher light map grid. This can be both an asset and a problem depending upon the situation.
The vertices on displacements can also be used to blend between two textures in a special blend material, displacement surfaces are the only faces capable of doing this blending so they may often be used just for the blending of textures though it’s often a waste a polys, time and effort when a few seconds in photoshop can do it for you. Textures on displacements are mapped onto the face on a per vertex basis. This means that parts of the texture will follow the vertex which means as you move vertices close/further apart the texture will get stretched smaller/bigger respectively. This stretching is often the main contributor to poor looking displacements.
Last but not least is a quick reminder that displacements don’t seal void so you will need walls behind them, techniques for that will be next week. So I know this weeks been a little bit of a dry Wall ‘O’ Text but that’s cause I’ve had to save most of the good stuff till next week. So till then my apologies and a reminder not to dismiss this info as it will be expected to be understood next week.
Black Mesa, New & Improved!
Posted on 01 Apr 2008 by cman2k
You guessed it guys and gals, this was a big (not so elaborate) april fools scheme. Now chill out, cause we're still working hard and nothing has actually changed. Hope you had as much fun with this one as we did!Hello and welcome once again to another Black Mesa news update!
The Black Mesa team is proud to announce that we've been purchased by EA! Early in February an EA representative contacted us regarding a possible deal. After a short round of negotiations, we agreed to merge with EA and take orders from the company regarding the development of Black Mesa. Obviously we are VERY excited to be sponsored and we know this is really going to take Black Mesa off the ground!
EA is trying to get some competition with the popular multiplayer game, Team Fortress 2. As such, we've been directed to redo Black Mesa's art style to be similar to Team Fortress 2. We think this captures the over the top, hilarious arcade style shooting that Half-Life was so famous for, and Black Mesa should prove a real draw for enticing people away from Team Fortress 2.
Since we need to make use of Valve's customized Lighting Equation used in TF2, plus random assets from Episode 2 and Portal, we'll be adding The Orange Box as a requirement to play Black Mesa, bringing the requirement set to: Half-Life 2, Counter Strike: Source, Half-Life 2: Episode 2, Team Fortress 2, and Portal. All these games must be installed on the machine or Black Mesa will not function.
In addition, EA has set up an intuitive "charge by chapter" system wherein the first chapter of the game (Inbound) is free, and each additional chapter will be available for the low price of $9.99 USD.
Here is a preview of what you can expect from our new TF2 art style. This shows pictures of well known Black Mesa areas after the transformation!


But don't take our word on it, play the game! That's right.. EA has set a release date for.. TODAY! So the first 2 chapters of the mod are being released in all their cartoony glory and are available for purchase right now!
sorry, looks like our comments link is broken. here is a working one.
comment on this article!
<< Previous 1 2 3 4 5 6 7 Next >>