(AKA teabagging.)
Procedural City, Part 12: Finishing Touches
You’ve most likely witnessed the thing in action already, but I thought I’d go over the final steps.
Building Logos
| Prefix | Business | Suffix |
|---|---|---|
i Green Mega Super Omni e Hyper Global Vital Next Pacific Metro Unity G- Trans Infinity Superior Monolith Best Atlantic First Union National |
Biotic Info Data Solar Aerospace Motors Nano Online Circuits Energy Med Robotic Exports Security Systems Financial Industrial Media Materials Foods Networks Shipping Tools Medical Publishing Enterprises Audio Health Bank Imports Apparel Petroleum Studios |
Corp Inc. Co World .Com USA Ltd. Net Tech Labs Mfg. UK Unlimited One |
The names themselves are generated by combining elements from the three lists to the right. The first column is for descriptive self-aggrandizing that companies like to give themselves. The second is generally the name of a good or service that a boring conventional company might use in its own name. And the third column is for for the dry descriptive that generally follow the name of a business. Pixel City generates business names by taking a random entry from the center column and pairing it with either a prefix or a suffix, but never both. So you might end up with “Vital Imports” or “Imports Tech”, but never “Vital Imports Tech”. Using all three works in some cases, but looks ungainly in others. It also gets hard to make sure it all fits on the texture. A bad roll could bring the three longest entries together and make something verbose like, “Monolith Enterprises Unlimited”. Which doesn’t sound nice and won’t fit on the texture. (The system I’m using to draw characters is pretty primitive and doesn’t have the ability to predict how long something is going to be before it gets drawn.)
Obviously not all names make perfect sense. (iPetroleum? Really? Are you drilling for oil on the internet?) But most names are plausible enough and have a respectable level of variety. It can make 1,221 unique names right now, and every once in a while I think of another entry to make it even more diverse. Note that some prefixes have spaces after them and some don’t, so you’ll end up with “iMedia” in one case but “Pacific Media” in another.
Streetlights
I’m still not happy with how the street-level lighting came out. If this was a Game Developer Magazine Postmortem, then we’d be explaining how this feature put us a year over budget. I spent more than a few hours writing different systems, tweaking them for a few more hours, and then deleting them to try something else. The problem here is that my initial idea of simple dots for lights didn’t look anywhere nearly as good as I’d hoped, and I lost a lot of time searching for another solution. In the end I came back to my original idea and just decided to live with it. Many people looked at the screenshots and suggested the lights be bigger / smaller / higher / lower/ closer together / further apart, but these problems are just emergent results of the underlying problem that light simply doesn’t behave the way the program depicts, and the break in fidelity attracts the eye and draws attention to the weakest part of the scene. Changing the lights by making them (say) higher would simply change the problem being reported by your eyes. “Oh, now it’s too small… Now it looks too bright… Now they look too far apart… Now they look too far off the ground… etc.”
It will be interesting to see what other solutions people come up with once the source is released. Perhaps someone will find the silver bullet solution that eluded me.
Roof lights and radio towers
| Image lightened in Paint Shop in order to make the towers more visible against the sky. |
The radio towers are a simple 4-triangle spike with a lattice texture applied. A blinky light is added to the tip. I have a blinkentower on almost every tall building, and I still get complaints from people to the effect of “you should have some towers on the tops of those buildings”. I think they’re just too hard to make out in the low-res screenshots and YouTube video. Spotting a few black lines against an almost-black background amidst a sea of compression artifacts is no easy task, but I think that when viewed full-screen they’ll look good enough.
Screensaver Behavior
When invoked, the program generates a city (unlike in the demo video, this is done behind a loading screen) and then the camera flies around it for a few minutes. There are a few keys that change the program behavior. There is a key to toggle wireframe, another to cycle through the special effects, from bloom to the “glass city” effect shown earlier. F1 shows the full list of keys. Pressing any other key just exits the program, as screensavers do. After a couple of minutes the scene fades out and another city is generated. Rinse, repeat.
Tomorrow: The source and the Windows Screensaver will be released.
Left 4 Dessert
The internet is a strange place where you can learn about things you need which you didn’t know you needed. For example, Left 4 Dead cookies.
Procedural City, Part 11: Demonstration Video
Here are the key points of the project, distilled into a short video.
Link (YouTube) |
Seeing the thing in motion really is more exciting than screenshots.
I know in the video I claimed it was released as source and a screensaver , but that step has been delayed and I’m to lazy to re-cut the video.
Soon.
Note that the stuttering apparent in the video is not from the program itself. It was running at 200-300fps with no slowdowns when I made this video. The stuttering either happened during video capture or during the encoding process, which I was obliged to do twice. (Cheapo Windows Movie Maker doesn’t support multiple audio tracks, so to get the typing sound and the music in there together I had to encode the entire movie with just the typing, then re-import that movie and add the music. There were probably better ways to have solved this, but all of them would have taken longer and I’d already spent more time on this than I’d intended.
The story of the cool cam is one many engineers (and by extension, programmers) need to take to heart, that marketing does not always deserve the scorn we give it, and that a little polish in presentation can go a long way to covering up the lack of polish in everything else. I applied that lesson to great effect here. The animated camera does a great job of showing off the cool stuff and hiding the rough edges.
Gamethread 5/1
Special today: Existing Steam users can play Left 4 Dead for free. Also, the game itself is down to $25.
I have a friend who is trying to get another server set up for us. It’s running, and it works well. But it doesn’t show up in the master server list, so you have to enter the IP directly. The server is behind a router, and apparently you have to jack into the port ROMs and resolve the webnet protocol drivers on the server matrix. Or something like that. My vision is for us to have two servers: One for survival mode, and another for campaign mode / versus. I know survival is intense, chaotic, and often cruel. It’s not everyone’s cup of tea, and the dangers of campaign mode seem placid by comparison. It would be nice if we could have access to both game types to suit everyone’s mood and play style. And also because 4 slots is just not enough for all 300+ of us.
Experienced Points: Reviewer, Amuse Me!
Attention game reviewers: Entertain me! Dance for my amusement! Say something witty! Engage in frivolous japery to wring a smile from my stony visage.
No? Then sod off.
Stolen Pixels #86: Left 4 Dumb: Part 8
People keep telling me they enjoy this series, but they can’t possibly be enjoying it as much as I am. It’s nice to have material that’s written ahead of time and to know I’ll be able to get the shots I need from the game. I seem to be coming to some sort of truce with Garry’s mod. Perhaps someday I’ll attain the lofty goal of becoming “competent” with the thing.
Do It Again, Stupid
One of the highest-rated games of all time has some of the least interesting gameplay.
Resident Evil 4
Who is this imbecile and why is he wandering around Europe unsupervised?
The Gradient of Plot Holes
Most stories have plot holes. The failure isn't that they exist, it's when you notice them while immersed in the story.
A Star is Born
Remember the superhero MMO from 2009? Neither does anyone else. It was dumb. So dumb I was compelled to write this.
The Best of 2019
I called 2019 "The Year of corporate Dystopia". Here is a list of the games I thought were interesting or worth talking about that year.
The Strange Evolution of OpenGL
Sometimes software is engineered. Sometimes it grows organically. And sometimes it's thrown together seemingly at random over two decades.
Starcraft 2: Rush Analysis
I write a program to simulate different strategies in Starcraft 2, to see how they compare.
Best. Plot Twist. Ever.
Few people remember BioWare's Jade Empire, but it had a unique setting and a really well-executed plot twist.
Starcraft: Bot Fight
Let's do some scripting to make the Starcraft AI fight itself, and see how smart it is. Or isn't.
Project Frontier
A programming project where I set out to make a gigantic and complex world from simple data.
T w e n t y S i d e d