Procedural City, Part 7: The Street-Level Trap

By Shamus Posted Thursday Apr 23, 2009

Filed under: Programming, Projects 65 comments


Now it’s time to round out the scene with lights. But in order to place the streetlights, I need to know where the streets are. In an earlier step I reserved street space, but now I’ll take that space and divide it up into sidewalks and specific lanes.

That done, I can have it scan over the world and look for places that need streetlights.


Bloom Lighting

I add another render pass for doing bloom lighting. The effect is of course striking, but unrealistic.


I don’t want to embrace or discard the feature, so I make it so the effect can be toggled off and on. Naturally enabling it causes a performance hit, but I can’t really appraise how bad it is until I get some of the more egregious slowdowns fixed and the overall performance optimized.


Now for cars. Since I have the lanes defined, I can just drop cars randomly onto lanes and let them figure out which way to go. They then select a speed and drive in a straight line until they get to the edge of the map, and then they randomly appear in a new location and repeat the process. The program draws a simple 2d panel at a car’s location. If the car is heading away, it draws it red, otherwise, white. This would look crazy if you were looking straight down on the scene, but up here in the News 5 chopper it looks okay.

I thought it might be cool to have the cars engage in more elaborate behavior. So I wrote a bunch of code to have them switch lanes if they find themselves behind a dawdler, and randomly make turns when they come to an intersection. I spent over an hour fussing with a couple of intersections and tuning the car behavior to make lane changes and cornering look natural. It was still a little stiff, but I was confident that with a bit more tuning I could make it work.

Then I pulled back to the city-wide view and found that all that work was almost completely unnoticeable. It was actually hard to spot a car doing something interesting. On the rare occasions where I was looking when a car made a turn, the robotic movement actually hurt the verisimilitude of the scene instead of helping. Both turns and lane changes actions are very complex. Turns are not linear. Cars decelerate before the turn, increase the rate of turn as they go, and begin to accelerate again before the turn is completed. This is aside from the fact that steering with the front wheels produces some fairly noticeable differences between the movement of headlights and taillights. Worse, the tiny bit of AI I’d written was slowing the program down. It was small and simple, but multiplied by hundreds and hundreds of cars it was causing a measurable performance hit.

So… I wasted a bunch of time writing code that slowed down the program and looked terrible when you noticed it at all.

Click & drag over text. Press delete.

This is a classic case of oversimulation. The programmer (me, in this case) sits down and thinks “oooh! I know how this system works, so I’ll write a simulation of it!” It’s a deadly trap, because once you start simulating one thing (cars changing lanes) then you suddenly need to simulate other things (making visually believable lane-changing movements for automobiles) which requires still other things (turning behavior of a car) and pretty soon you’re coding some sort of time-devouring boondoggle when all you wanted was to write a few simple rules about going around slow people.

John Carmack talked about this at Quakecon in 2004. (That article is long. The relevant passage is about halfway down.) During development of Doom 3, they had a programmer write a complex audio / acoustics engine that would try to propagate sounds realistically. It was supposed to make big rooms echo, dampen sounds in other areas, and so on. In the end, the result was worse than the simplistic system it was supposed to replace. It was actually easier to have artists manually specify how things ought to sound and how far particular sounds could travel than to have the game try to intuit it. They scrapped the audio simulation and replaced it with more conventional videogame sound behavior. Luckily for me, my losses were only a bit over an hour. Theirs was months. Then again, I might have incurred the worse losses as a percentage of total budget. (An hour and a half is about 5% of my budget, assuming I stick to it. (Although I’ve lost track of how many hours I’ve sunk into it. Weekends do that, particularly since I had a lot of Left 4 Dead mixed in with the coding hours. Still I’m going to take a wild guess and say I have perhaps three or four hours left before I hit my 30 hour goal. Maybe.))

Street-level detail

I pull back and assess the view now that all of the key details are in place, and I’m not happy with the result. I’d looked at a lot of reference pictures where the streets were pure black, and only streetlights and car lights were visible. But the same effect is not working here in my city. I look down in the blank areas between the buildings and I expect to see a street. The black void looks unnatural.


Looking at the reference photographs again, I realize that the “black street” effect is something you only get at extreme distances. Looking down from above, the streets are always brightly lit. As a test, I make a cheap texture map to slip under the city. It’s a single huge texture that just shows all of the streets. It’s of such low detail that a lane of traffic is just one pixel wide.


The street is awful, cheap, lo-res, and doesn’t even fit in with the buildings. And yet it still looks better than the pitch black. My original concept for the streets is unacceptable. I need to somehow depict the streets in this world.

Cheap, 1-pixel lanes, no lines on the road, no surface detail, nothing.  But it still looks better than black.
Cheap, 1-pixel lanes, no lines on the road, no surface detail, nothing. But it still looks better than black.

But this is almost dragging us back to the problems that come with oversimulation. I wanted to just hint at the streets. The last thing I wanted was to draw the eye down there with a bunch of detail. Making streets that are illuminated is fundamentally different from my intent, which was to leave things in shadow and get by using smoke & mirrors. If I make a well-lit street, then this will draw the attention of the viewer. My light-source cars will no longer look right, because it won’t be black cars on a black background, it will be invisible cars on a light background. If I add little cars, then the user will probably notice that the streets are barren – no traffic lights, lines, or crosswalks. If I add all of that, then my high-detail streets will look out of place next to the silhouette buildings. If I add a bunch of storefront-type detail, then those blank areas around buildings will stand out more. What will I do then? Add little parks and parking lots?

This sounds like a lot of fun, actually, but adding all of that detail would obliterate my time budget. In fact, each of those elements could turn into a week-long project in itself, all to simulate something I did not want the user to see in the first place!

I need to think about this.

I think the next step should be to begin optimizing performance. I’m down to 30 frames a second (varies) at this point, and so this needs to be done. (Remember my budget is ~100 FPS.) Once I have that finished, I’ll know how many CPU / GPU cycles I have to waste on street details. And maybe I’ll get some good ideas in the meantime.


From The Archives:

65 thoughts on “Procedural City, Part 7: The Street-Level Trap

  1. Sydney says:

    This actually explains something that annoyed the snot out of me back in the N64 days. In Spiderman 64, the story included the totally random fact that the entire city had been flooded with deadly (and opaque) green gas. I raised a lot of objections to this – is everyone dead, then? Why are all the NPCs acting as if life is going normally? How are people getting from building to building, if only Venom and I can web-sling? Furthermore, later levels allowed Spidey to actually go down onto the ground, without explanation. What the hell?

    I thought maybe it was so they could have an excuse to have falling off a building be insta-death, making the web-slinging more exciting. I figured that landing on the street and climbing back up would be boring, so they just obliterated the streets.

    But it seems more likely that it was to avoid the “street-level trap”. Huh.

  2. Debaser says:

    Sounds like you’re having more troubling restraining yourself to your time limits than you are having trouble with the coding.
    Just a question, would this potentially be available as a screensaver? It seems like a nice idea for one.

    Edit: Oh my, that is a uniquely horrifying little avatar I’ve generated there

  3. Primogenitor says:

    Possibly only put fragments of street, e.g. small circles directly underneath streetlights. The eye may do an automatic join-the-dots trick for you.

  4. karln says:

    To me the third screenshot down looks fine, I don’t think I really notice that the streets should be visible close to the camera. It all looks pretty awesome, although I have to say I’m not fond of the street light graphics; shouldn’t they look sharper than that? As it is they look like some kind of sci-fi magic floating orbs of illumination or something :/

  5. @Sydney:

    In Spiderman 64, the story included the totally random fact that the entire city had been flooded with deadly (and opaque) green gas.

    You’re mixing up Spider-man for the N64 with Superman for the N64. The developers of Superman put thick “Kryptonite fog” in the “virtual metropolis” to hide the abysmal draw distances.

    Superman was also a steaming pile of dung. From what I’ve read, Spider-Man was quite good (and based on the Tony Hawk engine, which ran pretty well on the N64 if I remember correctly).

  6. Mark says:

    Driving on the highway or flying at night gives you a good perspective on cities. I think: if you go with the totally black roads, but the yellower color for the street lights, and then make the street lights a lot narrower and less fuzzy, you could be on to something.

  7. Shishberg says:

    Haven’t looked at any reference photos, but to me the black street only looks wrong because the sky is bright enough to be dawn, which makes me expect to see more detail. Maybe try darkening the sky so it’s more obviously nighttime and see if it looks better?

  8. Harvey says:

    Kind of a tangent, but if you ever need to link to something in the middle of a text page, also include a keyword to search for that will take the reader to the passage you want.

    For the section on the Carmack discusses audio, CTRL+F “universal” (without quotes)

  9. stringycustard says:

    Hey Shamus, that’s a tricky situation to be in… I was looking at some night time city scenes, like: and

    In both, the streets are an orange-grey (colour bleed from the lights) but the cars are imperceptible as shapes – only their head and tail lights are noticeable at the levels of zoom (so you may have to limit the minimum height/zoom of the camera).

    So your panels should be ok, particularly with a heavy bloom on (can you limit the bloom so it only affects the cars themselves? I’m guessing that would need three render passes or something – one for scene, and bloom of the scene, one extra for cars only for extra bloom – although this could be pure overkill and I’m thinking 3 hours is not enough time to try do that).

    You won’t need colour to represent the cars, lights by themselves allow the user to fill in details, even with non-black streets. At worst you can use flat black panels with 2 dots for lights. Most colours look black or deep grey at night but I don’t think you’d need to do any actual representation of the body. Also, streetmarkings seem to be hinted at in those 2 shots with just traffic flow (I can’t really make out any traffic lines in the photos).

    Hope that helps somewhat. I think the extra bloom I was talking about is probably fairly unneccessary – maybe large circles of colour for head/tail lights will help in that.

  10. DaveMc says:

    First of all: this whole thing is *drenched* in Awesome Sauce.

    For some reason, my eye interprets the lines of streetlights in the first three screens (especially the third) as being really high in the air. I know they’re supposed to be just a bit higher than the cars on the street, but for some reason they look to me like they’re maybe a quarter the height of some of the nearby buildings, so that ends up looking like they’re floaty science-fictiony lighting orbs. If that changed somehow (smaller lights for the streetlights, maybe?), I think my eye would be completely satisfied with the black streets. It’s amazing how good the cars look, for being little dots of white or red.

  11. Henebry says:

    Streetlights cast their light down, not up. From the air, the light should be visible from the area it illuminates, not directly. Lights further away might be visible from the side.

    Also, the lights aren’t fading with distance in a way that looks realistic to me. The lights further away look bigger and brighter than the ones close by.

    Finally, most modern streetlights cast an ugly orange or a slightly less ugly teal light, not the wholesome sun-yellow of your streetlights. Some car headlights have recently moved to teal, but many older ones still cast a sun-yellow light.

    [edit] Boy, do I sound grumpy this morning! Sorry, I blame the allergies. [/edit]

  12. Yar Kramer says:

    Hm. You know, I kind of feel like the streetlight-glows are a bit too big. And they’re definitely too high in the third picture, yeah …

  13. Jiapa says:

    Watching your thought processes and coding progress is amazing, and I’ve been really impressed with what you’ve done.

    That said, the building look cool, the sky looks cool, the cars look cool, the street map looks cool, and the street lights, in my opinion, don’t work. They’re too big and too bright relative to the lights in the windows. In my experience, all the street lights have an opaque cover on their top, so looking down from above, all you see is the bloom of light on the ground, which isn’t markedly brighter than the lights from the windows.

    In the closeup, the lack of that dark area from the top is quite noticeable, and DaveMC is right — they look light floating space blobs.

    Maybe you could shrink/dim the streetlights and see how that works? Would adding a darker patch (even a pixel or two) in the middle make them more street-light-y?

  14. Lazlo says:

    I think primogenitor and Henebry are onto something there… Streetlights generally point down, so flying above them the actual point source light should be fairly dim (only what escapes around the baffles) or completely invisible. What’s visible is the light pool they throw on the ground. So I’d think, build your texture, but have it un-illuminated except for regularly spaced circles. You do still have the problem of cars turning into disembodied lights floating down the street, but maybe just a block of color attached to those lights would be good enough. Maybe it’d look horrible. You’ve got the skill and ability to try it out, and so far all of your choices have lead to Awesome (or been discarded).

    And in case I hadn’t mentioned it, thanks for sharing this! It’s fantastic and cool. :)

  15. JFargo says:

    I’ve been really impressed with this whole project so far, until you added those lights. Those lights are just horrid. I’m sorry. Everything else is absolutely awesome.

    I’d suggest shrinking and dimming the streetlights to get them into better perspective with everything else.

  16. Anachronist says:

    Awesome. The clouds still bother me (see my post #47 in your last chapter, in which I suggested using a fractal landscape for opacity texture) but this is really shaping up impressively. I totally envy the fact that you have the freedom to experiment with projects that I’ve thought about in the past but never had the time to really contemplate.

    The 1-pixel road details might be fine if you dimmed it down a bit, so that the details are just hinted. Looking forward to seeing how you complete this experiment while maintaining your fps budget. -Alex

  17. Jos Metadi says:

    Right now the problems with your streets and street lights are standing out because they are too bright and attract attention.

    Darken the streets significantly. They are usually close to black and even reflecting street lights, the brighest they get is a very dark grey. Dark the street lights themselves and increase the blur size. Most of the light goes straight down; very little light goes straight up.

    quick and dirty photoshop of darker streets.

    The car lights should stand out more. If darkening the rest isn’t enough, then brighten them up a little.

    1. Shamus says:

      I had been growing the streetlights in an attempt to cover up the blackness. I hadn’t considered shrinking them and yet growing the car lights.

      Does help to have a fresh set of eyes look at it. Thanks.

  18. Factoid says:

    You should try using a dark dark grey street and instead of those white bulbs for street lights try casting a light cone down onto the street. The effect would be little pools of lit road next to stretches of dark. Make the lights dimmer and more yellow and it should be believable. Street lights shouldn’t look like that from a helicopters…they don’t cast light upwards, they cast it down onto the street.

  19. Jos Metadi says:

    For cars, you don’t see the actual car itself, what you see is the primarily the headlights, the headlight’s effect on the road, and the tail lights. If you’re willing to add a single triangle to each car sprite (at a right angle so it’s on the same plane as the road), you could significantly increase the realism as at minimal cost and effort.

    again with the quick and dirty photoshop

  20. Fosse says:

    I’ll second the poster who mentioned that the sky makes it look like dawn or sunset, and not night. In fact, in the third and forth pictures the dark part of the sky cannot be seen at all, and it appears that the picture was taken during a brightly lit day. The gradient just doesn’t look like night, and it doesn’t look like reflected city light either.

    I think that you’d better off with a dark blue and black sky without stars (or with only a handful of stars). Reflected city light would be much harder to pull off and much more prone to failure.

    As for the street. The light gray color looks like it’s midday, again. If the street were a very dark grey, almost black, and only illuminated by the streetlamps and headlights it would look better. Make the streetlamps cast the very ghastly orange color seen in the reference photos stringy custard posted. Then, when the lamps cast only straight down we’ll see the dark texture in that garish orange, and where a light isn’t hitting the road it will fade away close to black.

    The cityscape looks great, by the way. I really like the non-bloomed images.

  21. Jos Metadi says:

    Hmmm… just came up with another suggestion for the streetlights. Real life streetlights are similar to the windows in that they vary in brightness (the lights are at different points in their heat cycle) and color. Adding in a small amount of randomization from your window generation code could help the lights look less like clones.

    I apologize if any of my ideas came across as demands. They weren’t intended to be anything more than suggestions to improve the overall look without drastically increasing the scope of the project.

  22. JMcNeely says:

    I’m going to throw out the idea that the street maps would work a lot better if they were colored a much more muted dark gray. The problem I see with it is that the streets are too bright. You had originally said that you wanted to get away with mostly smoke and mirrors and as such going with a darker color could help steer you away from a lot of the complex lighting issues you are having. In my mind I’m envisioning having the streets being a very very dark gray (barely able to stand out from the black).

    Other than that, I really liked the sky in the first image on this page. Also, the clouds work better in that image than I remember them looking from your last chapter.

    Finally, I won’t say anything about the street lights other than to agree with the prior posters on the ‘downward lighting’ and having pools of light where the street lights hit the ground. Oh and the cars look nice; attaching a block of color to them would do wonders, especially as they travel through light sources as that would help convey the illusion of a real car.

    Good job so far and I look forward to seeing the final product!

  23. Joseph says:

    Again, I fail to read the comments before posting one.

    Hey, so, first of all, turn off every other street light. Most towns alternate streetlights except on major roads (read: highways.) Part of why the streetlights don’t look right is that they are lined up instead of alternating.

    The other problem comes in when you add the texture. The reason the streets are normally lit up is because of light from street-level buildings (generally only in heavy commercial areas) and streetlamps. Your streets are glowing internally. I don’t know how hard it would be to apply your street-lights to the road texture… But it might be easier to use a more complex texture which functions both as pavement and lights… Leaving the unlit areas of the streets dark or even black.

    My thoughts du jour.

    EDIT: Oh, yeah… And one more thing…
    Parked cars. I shall say no more.

  24. Neil Polenske says:

    Stringy’s post showing the reference pictures of cities made me realize there’s something they have that yours lack.

    The underlight.

    Looking at those pictures you will notice that on the majority of the buildings, there’s a soft but clearly noticable orange ambience eminating from the street below. It’s fairly even and constant throughout the entirety of the urban landscape.

    I’m not a programmer, and while it is very entertaining to see the results of your hard work, I have not clue one as to how any of it was accomplished (cept for the texture mapping). I say this to indicate that I do not know how much work adding a soft orange universal ambient light coming up from the streets would take.

    I’m just saying I think it’ll add alot.

    Also, seconded what people are saying about the streetlights. Proportionally speaking, they are absolutely IMMENSE. If nothing else, you’ll definitely want to scale them down a significant amount. But otherwise awesome work!

  25. I found this image:

    Which I think may be sort of what you’re going for, right? I think the problem, if you want to do dark streets, is that your street lights are too bright and too close together–they should be lines of single orange dots that demarcate but don’t illuminate, with the car headlights and taillights being about the same brightness/size.

    They’re also WAY too high off the ground, they should be only 2 or 3 stories up AT MOST.

  26. Gary says:

    Brilliant work! The city looks EVEN better than before! I love the buildings, the sky, the cars!

    My only critique is (as others have noted) the street lights. At first I thought you had put in a 20th floor raised highway passing through the city. I think if you did the streetlights more like you did the car lights that it would be sufficient to add the illusion of depth you are looking for. I don’t think you need to banish the darkness, just decorate it ;)

    Also, the muted orange glow which was mentioned above sounds like a stellar idea.

  27. Derek says:

    On top of some of your buildings, you have spires/antennas. However, they all look exactly the same, which makes the tallest building feel exactly the same to me. I think you need to vary the height/shape of them.

  28. Blackbird71 says:

    Welll, it’s interesting to read the article, form some ideas, and then see those same ideas repeated throughout the comments. So, I won’t retierate too much here, I just wanted to echo a few suggestions that I think would help.

    Road texture – it’s way too light of a gray. Go for something near-black and I think you’ll see a huge difference.

    Light directionality – the streetlghts definetely need to be pointing downward. If possible, light cones for the headlights would be another improvement.

    Lamp height – I can’t tell if they really are positioned as high as they look, or if it’s an illusion, but they definetely seem to be higher than they should.

    Lamp coloring/brightness – too birght, wrong color for streetlamps – try for the orange others have mentioned

    Lamp positioning – someone brought up the point about the lamps alternating on opposite sides of the street, and I have to agree it would look a bit more “real”

    There’s one other thing that I can’t quite put my finger on. The streets somehow look too open? wide? It’s not as much of an issue without the road texture, but once the street level is so visible, it seems to diminish the buildings, making them look smaller. I’ve noticed that many of the lots for the buildings have a lot of empty space in between the building and the street, maybe this is adding to the effect? I don’t really know what I’m tyring to get at, there just seems to be too much open space. Maybe changing the lighting effects as suggested will dim out the street level enough to where it’s not noticeable anymore.

    Anyway, I hope these comments are at least somewhat helpful. Good luck with the project, overall it’s looking great so far.

  29. Julian says:

    I think that a little degree of randomness in streetlights would help. As it is now, streets look like landing strips with all-white PAPI lights. As many have said, they should be smaller, less bloomy and not so high of the ground.
    It seems like you’ve put a bit more work into the sky, am I right? Perhaps it’s the new colour, but right now it looks a lot better than the last post, particularly the very first screenshot.
    Perhaps you can still simulate turning cars, but in an unrealistic way. The kind that looks OK when you see it but doesn’t survive close scrutiny. A nice, perfect quarter-circle turn would look really well from a News 5 chopper view.

    Hmm… that post sounds a bit whiny. Let’s just add that the city looks amazing, and this series of posts made me notice a lot of techniques I would have otherwise ignored (my favourite being the black noise to suggest people and furniture in windows)

  30. Bryan says:

    One thing I thought of: If you use a darker color for the streets it won’t draw so much attention. Not black, of course, but maybe a dark blueish-grey or dark orange-grey. That way the streets are only slightly noticeable compared to the buildings.

    If the street lights were a little dimmer and a little more turquoise you would have sodium lamps. Mercury lamps (the most common right now, but being phased out for environmental reasons) cast an orange-brownish light. Also, most street lights have a top cover, so from the air the lights would be slightly dimmer towards the center.

    Overall, the city is starting to look very good, though.
    Add me to the screensaver vote!

  31. David V.S. says:

    IMHO, he issue your write about at the end is because you are writing a “procedural downtown” and trying to use it as a “procedural city”. Give the eye a more captivating and realistic upper view and it will more easily neglect the lack of crosswalks.

  32. Jos Metadi says:

    BTW, the reason streets appear so bright in nighttime city photos you see around is generally because of long exposure times. You’re seeing the cumulative light of streetlights and headlights on the roads over time. In real time, they are darker, and you see patches of light where the headlights are currently shining, not everywhere they will shine over 10-60 seconds.

  33. AGrey says:

    There is someone above who said to make the street a much darker grey, and i agree on that point.

    is it just me, or do the streetlamps look unrealistic?

    is it possible to turn them into a cone of light (more directly aimed at the ground) then a ball of light?

    another option would be to make the street naturally lighter wherever there is a streetlamp. say, use the shades of grey you have now only where there is a streetlamp directly above it, and fade the streets to black wherever there is no light from the lamps.

    something else you might want to consider: get rid of all the little streets, and just put a big highway through the city if we only saw the one major boulevard, we’ll just assume all the alleys are there.

  34. Michael says:

    Forgive me if it’s been mentioned already, but perhaps some sort of “headlight flood” light in front of the cars, to give the impression that the lights are casting on a road in front of them?

    Edit: heh, Jos just said it :)

  35. Rick says:

    This is a pleasure to read… it’s great hearing what you’re thinking throughout the process. Thank you for sharing.

    In regards to the comments above, I think the streetlights only appear to be too tall while the street was dark. In your last two screenshots you can see that they’re at the right height (or even lower than normal). I guess that’s an example of smoke and mirrors fooling your eyes the wrong way.

    I agree with a couple of comments about street lights facing down, the road being darker, headlight cones, streetlights fading more with distance etc… but I’m sure you’re tinkering with it already.

    Once again, thank you for sharing.

  36. malachite says:

    This entire thing epitomizes the outsourcing of work. Fun as heck, though. Awesome idea too, and working out really well if i can say so myself.

  37. Rick says:

    Also, your window lights look perfect now. The ‘noise’ in them, density, colour, brightness… Absolutely perfect.

  38. ngthagg says:

    I love what the light bloom does to the buildings. By fuzzing out detail, it keeps the eye from looking too closely at any one building, and instead looks at everything. It fixes (for me, at least) the “can’t see the city for the buildings” problem.

  39. mookers says:

    +1 for the screensaver.


  40. sporksmith says:

    I’ve really enjoyed following your progress on this project.

    I think it’s interesting that you’re budgeting your coding time to 30 hours, while as far as I can tell not budgeting your thinking time. This seems to be forcing you to take a step back and rethink things rather than endlessly screwing around with the code. I know I sometimes fall into the trap of ‘just keep tweaking it until it works’, which can turn into a big time sink :).

  41. Sydney says:

    No, Ian B. I’m not. Superman 64 had it too, but it wasn’t the only one.

  42. Tosscobble says:

    dude, Shamus…. I am soo glad I found this website! Keep up the good work, but don’t sweat the small stuff too much!


    @ Debaser… lol, I like my Avatar!

  43. vdgmprgrmr says:

    I recommend that instead of having the full texture of the street, make it so that only faded circles under the streetlights are visible, and the rest is really dark, then slip it under the city.

    Also, those white circley thingies floating all over the place are just ugly, man. I’d remove them if they’re supposed to be streetlights, and add, perhaps, transparent white/blue cones or maybe top-pinched cubes or cylinders to show the streetlight beams, because that’s all you would really be able to see from above or even to the side.

    As for the red car lights, they are way too small. I had to look really hard to find them. Also for cars, I think you should have four different directions for their potential looks. If they’re moving across the screen toward the left, show a front light and a back light going from left to right, reverse for if they’re going right, then have the two back lights or front lights if they’re in front of you and moving toward\away from you.

  44. Caffiene says:

    Very cool.

    Im amazed how so few changes can make such a big difference to the image. Really impressive. Makes me want to get my own butt into gear and make some more progress on my own little 3d engine.

    Personally, I like the bloom. Id maybe turn it down a bit… it looks imho like its in overdrive a little bit. And Id maybe tweak the streetlights as others have commented.

    I hope you let us see the source! Then I can tweak to my heart’s content and admire your work at the same time.

  45. Octal says:

    Another problem with the streetlights is that they look too disembodied. They look like spherical balls just sort of floating in midair. Maybe actually having the streetlight fixture–nothing fancy, just an upside-down L shape would probably look fine at that distance–would make them look a lot more realistic and get rid of some of that “how high are they” issue (since you’d be able to see something *above* them).

  46. Eltanin says:

    I just want to chime in and say that I think that the clouds and sky have really come together since part 6. They are looking really great!

    I second the motion to have you ‘whip up’ a little code to make this a screen saver. Yeah! Do it! Shouldn’t take more than another 20 minutes, right?

  47. zimboptoo says:

    The street lights look rather unnatural, more like magical orbs. As far as I can tell from looking at pictures, most street lights are covered from the top and only really shine down, so you see them more as light reflecting off the road. I am guessing that if you just have a really basic, really dark street (the exact darkness could maybe be based on the lightness or darkness of the sky? That seems like it would make a difference) with slightly brighter spots at regular intervals, that would make a big difference. Also, maybe making the car headlight rectangles into 3d blocks, with the already existing headlights side and in front of it a roundish blurry area of the same color as the illuminated pavement under the street lamps, to simulate the headlights illuminating the road. I don’t think it would cause significant slowdowns, and it would make the scene look a lot more believable without having to illuminate the roads too much.

  48. Cuthalion says:

    I like the third shot best, with the black streets and bloom lighting. Though the sky is unrealistically bright and technically it would look more realistic without the bloom.

    I didn’t even notice the pitch black streets until you said it. With the street texture on, it looks like the streets are in a floating platform city with the buildings coming up between them.

    When you added the street texture, the whole flavor of the lighting changed. Neither better nor worse, imo, but just different.

    1. Kill the street texture or make it much darker.
    2. Shrink the street lights so they don’t look so high and magic-orby. And more like street lights.
    3.Darken the sky, at least when the bloom’s on. Even though 3’s my fave, the sky looks like daytime or Northern Lights.
    4. Keep up the awesome.

    That’s all been said before, so I guess I’m just adding a vote right now. Also, the cars and their lights look perfect in the 3rd shot, imo.

    Oh, and the random noise to suggest stuff in the windows is possibly the most effective eye-fooler in this entire series. If you thought of it yoursefl, that was brilliant.

  49. Alan De Smet says:

    I really like the bloom effect. It looks like a very faint fog, or a light misty rain to me, and totally sells the scene. It has the “just barely real” look of an arty (and possibly retouched) photo spread from a magazine. Total win.

  50. Griffin says:

    Looking awesome overall, especially the buildings, but the sky keeps subtly bothering me. I think the problem is that the illuminated clouds should be scattering light back down and faintly illuminating the buildings, which of course you want to avoid. The sky might fit better with the buildings as a clear, starry sky, pretty dark, maybe just a faint glow around the horizon if you want to suggest that the city goes on forever. =)

  51. Kronski says:

    It looks really cool so far. I have some suggestions about the street lights, but other people seem to have that covered.

    There is something a but iffy about the sky, though. Usually skies above cities are a sort of orange-ish color from light pollution. The light blue you have on the horizon looks kind of funny.

  52. Leyic says:

    Suggestion: Rather than painting the streets grey, paint them dark orange, fading to an even darker shade towards the center, and do away with the streetlights completely. This would allow for the suggestion of street glow without the need to fuss with light placement, road details, etc., details which are probably mostly lost at a distance anyhow.

    It may also help to increase the density of cars to break up the monotony of the roads.

  53. Apologista says:

    The roads look like landing strips at night, and everyone who’s flown or seen more that one movie knows what those look like. That to me is what breaks the physical part of the city.

    Mentally, I know from the sky it’s dawn, but I know from the number of cars that it’s 3am, and I know from the windows that are still lit up that it’s 10pm. Make up your mind on that one.

    Uh… I mean make up your mind in a friendly way, with no clue at all of the difficulty of what you’re doing. But the immersion would be much greater for me with just a matt black sky, right now. At night, you don’t see much light from the sky. If you’ve lost night vision because you’re looking at bright lights elsewhere, then you will only see clouds if there’s a bright moon. From the inside of a news chopper? Hah.

  54. Zapata says:

    Shamus, this series is one of the most fascinating things you’ve written in a long time. Your writing is almost always entertaining & interesting, but this takes it a step further.

    I’d like to see more of this if the mood strikes you again.

  55. Mik says:

    You might get some benefit by ‘fading’ the road in the opposite way to landscape fading; as hills recede further into the distance (under daylight), they wash out and lighten. As the streets recede, they should wash out and darken (loss of detail, introduction of atmosphere, and accumulation of interference from more vertical objects in the line of sight). Perhaps slipping a transparent-to-50%-black radial gradient under the camera’s focal point and on top of the street texture would add some ‘grit’.

    This is impressive, though – and I hope it stays enjoyable!

  56. Marmot says:

    I just had a second look and noticed that it is not the black street that looks wrong for me, it is the effect that it has on building lights (it makes them looks ghastly vampire-pale and not what you’d expect from window filtering). Going with the classic turned out much better.

    In particular, that large building in the middle-right of 3rd picture, between two streets? It might be optical illusion or real color, but it seems a lot more realistic because its lights/windows are more “yellow” than those around it.

  57. Groboclown says:

    A few notes, building upon what others have mentioned.

    I think that a possibly good answer would be to keep the street black, except for where the lights are shining on it. That would mean:
    – Making the streetlights only light up a circle on the street, nothing else (part of the “streetlights point down” bit)
    – Make the car headlights light up a cone on the street, but the taillights be kept as the shiny dots.

  58. Osvaldo Mandias says:

    Your streetlights are too big. They (1) call attention to the street level and (2) make it seem like the street level is close and (3) make it seem like the street level is extremely well lit, all of which contribute to your problem.

  59. Ermel says:

    How about adding a little variety to the car lights? I.e., let’s have some cars with their taillights vertical and up beside the rear window; some with cinemascope-y taillights; and some like the ones you already have. Also, maybe add orange marker lights to the front of the cars (for US scenes, i.e. configurable). And maybe fail a light in one car out of fifty or so.

    Re streetlights: from all the comments, I think the idea of making the street bitmap a very dark orange, and possibly doing away with the actual streetlights in favour of lighter-coloured spots on the street bitmap, is the way to go. Also, you want the crossroads illuminated brighter than the straight stretches in between.

    But it’s an awesome project, by any means. Add me to the screensaver vote!

  60. James Pope says:

    I think varying the actual light coming out of the street lights somehow would also help. Not only are real streetlights not as uniformly placed and symmetrical as you’ve got, with a different color light, but they have differing levels of maintenance which means that there should be a random distribution of lights that are jittery (I think this would simulate flicking lamps, but just guessing), dimmer thanks to bad power and/or cruddy coverings, and out completely. Even if the sample was such that any given render only produced one or two of those things, you might end up with something interesting.

    Also, now that you’ve got streetlights you’ve almost certainly committed yourself to stoplights at intersections and maybe even some random color light/noise coming out from the buildings at street level to even out that intuition you’ve got going that streets are always lit.

  61. Viktor says:

    I don’t know exactly where you live, but if it’s near a city, try driving out there one night. The difference between reality and static images may be part of the uncanny valley you’re running into.

  62. Michael says:

    Hi, this is a really impressive project, you mentioned that you are looking for an idea or project to put it to good use, while I do agree that it would in fact make for an awesome screen saver, you might also want to take a look at the open source FlightGear project, which is GPL’ed cross platform flight simulation software, see for details or to get in touch with other developers.

    They are using C++ and OpenGL (OpenSceneGraph) and there has been lots of talk about improving their autogen support to create better scenery, even if only 10% of your work could be added to FlightGear (it being a real time simulation after all) it would be a magnificent addition because it would help populate the scenery realistically and you would ensure that your work would live on in another project.

    Also, there seems to be lots of interest and momentum about PixelCity, so another -more general- possibility might be to get in touch with the OpenSceneGraph community ( ) to turn your work into an OSG plugin (e.g. “OSGCity”), it seems there are enough people interested in PixelCity to make this a viable option and by going this route you would ensure that many other projects can reuse your work.

    all the best

  63. Celebrity xxx porn a person’s acquaintance additionally
    casting dad according to a pit or absolutely along with to a person’s sea
    am so bucks.

Thanks for joining the discussion. Be nice, don't post angry, and enjoy yourself. This is supposed to be fun. Your email address will not be published. Required fields are marked*

You can enclose spoilers in <strike> tags like so:
<strike>Darth Vader is Luke's father!</strike>

You can make things italics like this:
Can you imagine having Darth Vader as your <i>father</i>?

You can make things bold like this:
I'm <b>very</b> glad Darth Vader isn't my father.

You can make links like this:
I'm reading about <a href="">Darth Vader</a> on Wikipedia!

You can quote someone like this:
Darth Vader said <blockquote>Luke, I am your father.</blockquote>

Leave a Reply

Your email address will not be published.