Post news RSS From The Darkness

Today, I am going to talk little about some lighting challenges I had in From Earth. In the Source Engine 2007, the lighting for non static props is kind of limited. The biggest problem really is without projected textures, the models are not self-shadowing. The lighting is done by having the engine calculating the lighting from a single illumination position on the model.

Posted by on

If you haven't heard about From Earth before, read the outline of the project here.

Today, I am going to talk little about some lighting challenges I had in From Earth. In the Source Engine 2007, the lighting for non static props is kind of limited. The biggest problem really is without projected textures, the models are not self-shadowing. The lighting is done by having the engine calculating the lighting from a single illumination position on the model.

This created a problem in our intro sequence with Zenaida's Space Pod. The sequence would start from space, in complete darkness. The monitors were going to turn on one by one and Zenaida was going to wake from her fifty year slumber. After that she was going to land the Space Pod on the planet and walk out. This was all to happen in a single map. There was only one problem: when the Space Pod was placed on the map, on the crash site, the lighting inside the Space Pod was super bright.

Spacepod (Earth Tech)

Changing the lighting outside so that it was night wouldn't have helped much, because the ambient lighting still would have gotten inside the pod. I also didn't want to change the mood of the exteriors just because of that. Not to mention the fact that I didn't want to have the map change when the door opens, because I felt that would have interrupted the fluidity of the scene, and there would have still been a noticeable jump in the lighting.

The first thing I tried was adding block light textures around the model, only to realise that those were of course only for the lightmapping and wouldn't work on non-static props. Turning the model into a partly non-static model was not going to work either since the door and the monitors, not to mention the player model, had to be non-static.

So, one thing I tried to do was use a lighting origin, something that was built into the CBaseAnimating base class. I also programmed it so that when the player is inside the Space Pod, the player uses the same lighting origin as the Space Pod. In the map, I placed the lighting origin in a separate, completely dark room. At first this seemed to work. The spacepod was now in complete darkness like I wanted, but I then realised that the dynamic lights on the monitors were no longer illuminating the player or the spacepod when the monitors were turned on.

This made sense since the lighting origins were in the dark room on another part of the map, but the dynamic lights were still in the original positions of the model. So, I programmed a way to calculate the offset for the dynamic lights, using the illumination offset and lighting origin of the Space Pod model. When I tested it with debugging boxes, I seemed to be calculating the offset correctly, the boxes were appearing around the place where I had placed the lighting origin. But the Space Pod and the player were still not affected by the dynamic lights. The problem was that the lights were too far away from the model for the light to be considered as touching the model. If I didn't offset the light's positions however, the model was probably being illuminated by the light, but its polygons were too far away for there to be any difference.

What I ended up finally doing, after a suggestion from BioHazard, was suppressing the normal engine lighting inside the spacepod, and then use the info I had on the monitor lights to create local lights dynamically in the DrawModel() function. This worked very well indeed. Finally the Space Pod was dark before the monitors were turned on. The only problem remaining was that when the door opened, the interior was still dark even though the sun should have gotten in. To solve this, I used a projected texture that faded in and out as the Space Pod door opened and closed. I also had it shine only on the Space Pod and the player, if the player was inside the model. With this combination of normal environment lights, dynamic lights, projected textures, and overriding local lights, there was only a small jump in lighting, when the player was exiting the Space Pod.

Of course, the exterior of the spacepod would have to be still bright in sunlight. First I thought about using self-illuminating textures, but this would have looked bad, and it would also have meant that I’d have to change the lighting on the texture depending on the map we were making. An easier way of doing this was to divide the model's interior and exterior into two different bodygroups and then draw the model in two passes. First, hide the exterior and show the interior, and draw the interior with the overriding lighting method, and then hide the interior and show the exterior and draw the model normally. The lighting in the exterior is now normally lit by the map lights, while the interior can be dark. be dark.

With the problem finally solved, my only fear is that somehow someone has already solved a similar problem in a lot simpler way.

Looking for help

We are still looking for people. If you are interested to apply, you can send me a message on Moddb, Twitter, Facebook, or e-mail me at

We are looking for a dedicated an experienced writer to help us finish the story and the script for From Earth. While we have a good idea for the basic plot, there's still a lot to figure out. We need someone who has a lot of time and interest for the project.

Level Designers
We are looking for two different types of Level Designers. Firstly, we need people that can bring existing levels an aesthetic quality, and are experienced with lighting, texturing, and the general make up in Hammer. Screenshots and/or example maps are required.

We are also looking for puzzle designers, such as anyone who has a lot of experience designing different types of puzzles for games like Portal 2. Source engine or Hammer experience is not necessary.

Concept Artists
Most of the concept work will revolve around the industrial era Alien technology and architecture. Samples of previous work required. We already have a strong set of existing concept art for you to draw on.

Voice actors and actresses
Although the script is nowhere near ready, we are looking for people to play the parts of Zenaida, Anthony, as well as the generic voices of aliens, both male and female actors. All voice actors applying should provide some kind of samples. You should be able to do big range of emotions. Some lines might be delivered at a later date.

The aliens will be speaking an alien language specifically designed for this mod. Their dialogue is partly already written and ready for recording. Examples will be provided if you are interested.

We are interested on getting any help we can get, especially world texture creators and prop modellers.


getting out of the pod in-game is amazing <3 so much work for just a couple of seconds but when you get it right, it really makes a mod memorable

Reply Good karma Bad karma+8 votes

It's the little things. +1

Reply Good karma Bad karma+2 votes

This mod looks very promising. Will be watching for further developments!

Reply Good karma Bad karma+5 votes

You are certainly a good coder!

Reply Good karma Bad karma+2 votes
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.