Change of pace. In the last week I’ve had an idea clawing at the back of my head, and it’s clear the thing isn’t going to leave me alone until I do something with it. I don’t usually blog about my little programming projects (with the exception of the Terrain Project) because I like to imagine this site has some sort of focus, but the choice here is for me to blog about this or leave the site fallow for a week. So I’m blogging it. Perhaps you’ll find it entertaining anyway.
There are several reasons for wanting to do this.
|It’s comical now, but this was a real eye-grabber in 1996.|
Way back in my early days of 3D development a lot of my work was focused on creating effects or finding tricks to make it look like there is more to the scene than what is really being rendered. A lot of work was being done by game companies to simply push the technology as far as it would go, but I enjoyed getting halfway there with technology and then going the rest of the way with a good facade and some lighting tricks. The techniques I used in the mid 90’s would seem laughably simplistic and trivial today, but at the time I remember getting a lot of “How did you do this?!?” type reactions to my work.
For example: I wanted to make a city, but the scene just couldn’t render things at a great enough distance to give you a “big city” feel. It just felt like a handful of big boxes next to each other in the middle of a featureless plain. So I set the city at night, scaled the buildings down so that they weren’t really much bigger than houses, and slightly pinched the tops of them so that the top of the (apparent) cube was smaller than the base. The reduced scale let me get a lot of buildings close together, the night lighting let me suggest more detail than was really present, and the skewed shape created a false impression of height. (The eye wanted to believe that these building-ish objects were cubes, and so when you looked up it made them seem taller than they were.) The scene was pretty astounding in 1996, although I doubt it would impress anyone today.
This sort of thing was an unusual blend of technical and artistic work, and I enjoyed it immensely.
My new graphics card is ridiculously powerful. While I’m working less and less with graphics these days, on the rare occasions where that sort of work crops up it’s still focused on getting more out of widely adopted low-end technology. So I haven’t worked with much new technology. (“New” being very relative. For me, anything younger than a kindergartner is new.) This makes me some sort of cutting-edge Luddite, pushing the limits of stale technology.
CPU’s have stagnated a bit over the last few years while GPU’s have continued to accelerate. (No pun intended.) This has moved a lot of the old bottlenecks around. I think it would be good for me to get to know one of these recent GPU’s and see what it’s like to work with them.
And finally, I love procedural content, but I never get a chance to work with it.
1. The goal is to make a nighttime cityscape that is mostly made of lights and suggestions rather than real detail.
2. The city will be entirely procedurally generated. That is, the program will contain no art assets. No textures. No models. Everything must be built from scratch at startup.
3. I’m budgeting a week of nights and weekends for the project. So, probably about 30 hours of time total.
4. I’m going to use only conventional rendering. While I’d love to muck about with pixel shaders and see what the new ones can do, I haven’t messed with that sort of thing since 2006. Just getting up to speed on the subject would blow my entire time budget. (Pixel shaders are special programs that run on your graphics card instead of on your “computer” with all of your other software. They are strange, amazingly powerful, and difficult to master.)
5. I’m aiming for something that will run on a broad range of machines. This will be a little tricky, since my current machine is pretty beefy compared to the average. (I’m talking about the average windows-based PC, not the average gaming computer.) It’s much easier to develop on an old machine than to develop on a new one and try to guess where the bottlenecks will appear when run on old hardware. All of our older machines around the house have been converted to Ubuntu, and running under WINE wouldn’t make for a very useful benchmark. So this goal will be difficult to judge. The best I can do is aim for the program running at at least 100 frames per second on my PC and hope that it can still manage 25 or so on an older machine. Even this is pretty dicey, but it’s the best I can do for now.
I don’t know what I’ll do with the program beyond the goals above. Give away the source? Turn it into a screensaver? Add more features? We’ll see where the project takes me and how interesting this is to people.
The first step in a project like this is to make a simple program to open a window, start up OpenGL, and provide some basic camera interface so that I’ll be able to examine my work. This involves gathering up a lot of boring boilerplate code, creating the project files, and adding a bunch of not-very-interesting low-level systems. The result is not very compelling:
Sorry for dragging you all this way only to show you an empty window, but this is how it often goes. I’ll make sure to have something more compelling to show you next time around. This series will run all week, assuming everything goes to plan.
Shamus Plays LOTRO
As someone who loves Tolkein lore and despises silly MMO quests, this game left me deeply conflicted.
The Best of 2014
My picks for what was important, awesome, or worth talking about in 2014.
Game at the Bottom
Why spend millions on visuals that are just a distraction from the REAL game of hotbar-watching?
The Disappointment Engine
No Man's Sky is a game seemingly engineered to create a cycle of anticipation and disappointment.
Joker's Last Laugh
Did you anticipate the big plot twist of Batman: Arkham City? Here's all the ways the game hid that secret from you while also rubbing your nose in it.
154 thoughts on “Procedural City, Part 1: Introduction”
Sounds very interesting. For me, your terrain project allowed me to take a look into the world of programming, in a way that wasn’t as boring as a manual or as utterly baffling as a conversation between two programmers.
And I’m curious as to what you can do with your new card, so I’ll be following this!
1. Make Procedural city
2. Implement basic character movement + crackdown Jump
3. Litter with agility orbs and set up high score table for collection speed.
Good luck with this, Shamus. I find procedural content generation fascinating.
Have you seen Introversion’s Subversion project? They’ve been getting pretty hardcore with procedural city generation, albeit along a different axis from how you’re doing it.
This sounds extremely interesting to me. PLEASE keep up with the blogging about it.
Always liked the idea of procedural content. Did find the terrain project a nice read too.
But then again, I’m a programmer :)
I’m excited to see where this goes. I write code on a daily basis (but for physics research) and have never really played with graphics or procedural stuff before. Should be really interesting and I look forward to seeing what comes of it.
I’m really looking forward to reading about this! Your Terrain series was what got me started reading your blog, so I’m always excited to see new programming sections/ideas.
This should be interesting. The terrain project was pre-DMoTR, with the limited commenting to match. With this project, I expect some of the comments will be as interesting as the original post.
I second Mark’s link to Subversion. If you haven’t played any of Introversion’s games, you’re missing out. They’re delicious little indy titles. All available on steam or direct from the company. They show up on sale on steam from time to time, especially Darwinia.
Uplink is not a particularly polished or technically excellent game, but it delivers a lot of OCD type of fun. There are some third party mods which really give it a boost.
Darwinia is their second game and it is sort of a real-time strategy version of Tron, only with a completely original story, for whatever good THAT description is worth.
Defcon is basically a playable version of Global Thermonuclear War from the movie Wargames.
Their next game is a multiplayer version of Darwinia, which hasn’t been selling well, but I think that’s because a lot of people like me are waiting to play it on XBLA.
Nobody really knows what subversion is yet, except that it involves a lot of procedural city generation and items in the city will be controlled via (I think) LUA scripts at the object level. They haven’t so much as hinted at what the gameplay will be like, but my guess is that it will be a simulation game where you get to be the “hacker” from the movies who hacks into building schematics and opens doors and shuts off alarms and stuff. Just a guess, though.
Have you considered the procedural city generation from .theprodukkt?
I think you mentioned them on this site before.
Next year I’m starting an Ingenieràa en Informà¡tica career (eh… Informatic Engineering? I think it’s called Computer Science in the States. It’s a lot like software engineering, but it also deals with robotics, machinery and stuff like that.) so I find this very, very interesting.
Oh, and I don’t know if you’ve posted this already, but what graphics card do you have right now?
I really don’t have the chops to even comment intelligently on this, but it somehow reminded me of this little (tiny) app that was my screensaver forever…
Drivey – a sub-300KB driving simulator.
I love tinkering; I often find out more by just poking around than by structured education.
Actually, WINE might not be such a bad idea for performance testing. I hear World of Warcraft loads and runs faster under WINE than it does under Vista (though that’s not saying much).
Mark beat me to it, but check out Subversion. Especially some of the videos of it actually generating a city. So beautiful.
Also, did you hear about Demigod and Gamestop (once again) breaking street date? Most recent stuff here.
Edited for html fail.
Looking forward to this series. I enjoyed your terrain series when I went through your best posts section. Any time I find a blog or article on programming that isn’t written in archaic notation I eagerly read it. With that said, I’ll sit back and enjoy reading the articles and the comments.
That theproduckkt demo is brilliant again! Should add a
7. Limit the exe to 64 kb to show those boys how it’s done.
I’m sure you’ve thought of this already Shamus, but just in case…
I’ve noticed that one of the big differences between _real_ cityscapes at night and images like the one you posted from L4D is that truly distant buildings in real life tend to show up as nothing but lights, while in games the artists never seem to be able to cope with the idea of people not being able to see the rectangles they’ve lovingly crafted. They make the night sky too light so that they’ll show up. Of course this applies fully only to the truly distant buildings, which paradoxically most games go out of their way to not show you in the first place by making the streets unnaturally twisty and convoluted (when they could be not showing them to you because its too dark, but then they’d have to render any lights….) Things in the middle distance are more fuzzy-edged, snapping into clarity in small patches where they occlude something bright or are right next to a lit window.
Given all that, I imagine that there is a lot of room for sneaky savings of the type you mention in a city with broader vistas (long straight streets, or hills) by simply procedurally generating the lit windows and/or signs are in the distant buildings at random and only rendering them – probably as point-sources of light only – maybe leaving some special code for rendering obvious major landmarks in the same location, Eiffel-tower-like. Course that may be beyond the scope of a 30-hour project, and maybe you’d still have to plot too many polygons just to work out where the lights go? I dunno, but the idea interested me, so I thought I’d mention it.
I’ve been playing with graphics hardware a lot recently, and it’s amazing what you can convince a GPU to do.
I recommend you look into stencil buffers. They’re simpler than shaders, everybody’s got one, and they’re horribly underestimated. I just did shadow volumes in them, for example.
Not sure what you’d do what you’d do with them in your project, but since they’re great for rendering a scene with varying lighting and you want to use lighting effects, it seems like a good fit.
I’m going to enjoy this. I *loved* the terrain series of posts :V
I’m looking forward to this series! I really enjoyed the terrain generator posts, and I imagine this will be equally interesting. But, uh, no pressure. :)
Sounds like a really interesting project. I’m looking forward to this series.
Randomly generated city? Beautiful.
And now you’re doing it again? Even more beautiful.
I have a fetish for procedural generation, so I think this next week will be totally awesome for me.
I have a request, though, Shamus. After you make your city generator, you should add zombies. (And a few basic weapons, and a simple health meter.)
You see, the zombie shooter with procedural cities is the zombie game that I have wet dreams about, and now you, inspired by L4D, are making a procedural city generator.
Please, Shamus. I will love you forever.
Actually, since I’m coursing Computer Science in college, this will be very interesting to me. And that nighttime cityscape you made in 1996 is still no small feat to me; at the level I’m at, I still wouldn’t even know where to start to get something like that (OpenGL? DirectX?).
Maybe there’s something obvious that I’m missing, but why not run it natively on the Ubuntu boxes? Mesa is the open source implementation of OpenGL I used when I was tinkering with it and it works peachily on Linux.
Nathon: Mostly because I have 15 years of Windows developemnt experience and zero Linux experience.
OpenGL itself is open, so that rendering code should be portable, but the window creation and interface stuff is going to be explicitly MS Windows specific.
I really wish there was a nice set of open-source wrappers so that I could write code that would have a reasonable chance of being portable. Then I could put it out and inevitably a Smart Linux Person would be able to come along and make it go.
There is SDL, which is pretty simple to use, which gives you everything needed to make a game. And it’s cross-platform.
Unless you for some reason use additional windows libs, that is.
Besides: Programming on Windows? Wow, I don’t think I could do that :D
I second vdgmprgrmr. Why settle for procedurally-generated zombie-swarms and item-positioning in pre-made locations when you can procedurally generate the locations as well!? I mean, I honestly don’t really notice the “differences in zombie-swarms” very much, all I know is “Okay, I’m familiar with this location, and around here and here there’s going to be either a Witch or a Tank …”
In fact, go a step further and create an entire free open-source alternative to Left 4 Dead, entirely procedurally-generated! I mean, sure, you’d need to have some pre-made set-pieces and make something more original for the special/boss infected, but for a writer like you that’ll be a non-issue! And then we’ll BRING VALVE TO THEIR KNEES! MWAHAHAHAHAHA! … *cough* Sorry.
I predict: at least 3 separate disasters, or mishaps that could be called disasters, happening before the end of the week.
I predict: the last post will show off the pretty cool results, but not all of the ideas had will be implemented for the sake of time.
I predict: at least 1 case of writers block, which can happen when you’re coding if only because they both use the keyboard.
And finally, I predict that this will be a series worth keeping an eye on.
Made entirely of lighting, huh? Reminds me a bit of Drivey, though they’re obviously quite different.
This is relevant to my interests. Curious to see where it goes from here.
Shamus, if you’re looking for a portable window-manipulation library that supports OpenGL, I happen to know of one: wxWidgets, which has been ported to approximately a zillion operating systems. Open source and everything. It is exactly what you described.
I really wish more graphic artists spent time taking advantage of the fact that our brains are far better graphical processors than anything on the market (or anything that will be on the market in our lifetimes) and employ those sorts of imagery tricks that work so well. I always love seeing something that at first, second, or even third glance looks highly detailed and realistic and coming along to realise that it’s actually a trick, and then finding out what the trick is. It’s fascinating, and allows more time to be spent on tasks that actually matter, rather than trying to recreate millennia of art design and replace the most powerful processor in the world: the human mind.
I think krellen makes a pretty snazzy point there. I’m pretty sure Shamus has mentioned it before — that tendency to go OMG SNAZZY GRAPHICS WITH PIXEL SHADERS AND PHONG SHADING AND ALL THAT, and then they never do anything that looks interesting to the casual (i.e. non-gamer) observer because it’s all browns and greys.
I second that you are much better off writing on a portable abstraction such as wxWidgets or the superior Qt. Or even just SDL. It may be that learning them takes too much of your budgeted time, but if all you’re doing is getting some mouse coordinates and keyboard input, it will take all of 5 minutes to copy an example. The payoff is that you will have portable code you can compile and run on your Linux, Windows and Mac machines, and so can get a much wider user and test base.
I second that.
I wish people just spent time on investigating the options instead of taking the first one they stumble across.
If you wrote a book on how to do this stuff, I would buy ten copies.
I have to say that your current rendering of martian people fleeing from a driving acid rain under a green kryptonite shield to be amazingly beautiful. I think you should just stop there – nothing can top it.
Re: the windowing code being explicitly Windows-specific:
Yeah, it was in the terrain project too. I spent a couple weeks a while back trying to port that to Linux (bare X/GLX: no toolkit, because I had decided it looked too hard to mash the Windows layer into any of them at the start :-( ). I was never actually able to get it to render anything; the entire design ended up being too Windows specific.
It’s much harder to port something that’s already been designed to a different architecture. It’s much easier to design it to work with something like wxWidgets or gtk+ (…assuming it has a GL widget, which I think is an addon) or qt in the first place, and not have to worry about having to redesign it while also attempting to port.
But separate from that, it would be nice to see the code as it is at each stage of the program. That should make a port easier, because if the first day’s worth of code is all that needs to be changed (just getting a window and GLX context up), it’s easy to apply day-to-day diffs to that code later.
It’d be even nicer if my ISP wasn’t retarded, and I could get Internet access without using the flaky citywide wireless… Boo.
Anyway, the short version: I’d like to try to port this to Linux native OpenGL. Dunno if I’ll be able to, though, but having the code at each step will help. :-)
Very interesting project! I’m also interested in generating various things procedurally, though I never actually tried doing it seriously.
We’ll see where it ends and plunder results if possible :)
This sounds like a very interesting project, and like everyone else I’m really looking forward to seeing more.
“I really wish there was a nice set of open-source wrappers so that I could write code that would have a reasonable chance of being portable. Then I could put it out and inevitably a Smart Linux Person would be able to come along and make it go.” – Shamus
Actually, this would be a legitimate use of wine! You can write for windows, but just test against wine. Most windows software works in wine, so if you just test against it, it should be easy to make software that will run well on linux. You could probably get lots of free testing from your readership ;) (myself included)
Please keep up this project. I have been a huge fan of procedural since I saw the works of http://www.theprodukkt.com/ many years ago (including the 96kb first person shooter).
I’m very very very interested.
I’m amused because I’ve been slowly working on a big programming project myself. The biggest time eater? Learning how to.
Anyways, long and short, it’s a turn-based Superhero RPG, and I am 99.9% positive reading over your shoulder while you do this will give me some ideas and / or tips and tricks. Heck, just going back and rereading your terrain project last week did a bit, though I am still approximately nowhere with the project.
Anyways, since I was planning on making residential districts procedurally generated and rather quest-empty (you can go there just because you want to) I’m curious to see how a talented and experienced programmer does it with much more complicated goals in mind.
Hey, isn’t that the Metaverse section of ActiveWorlds? You did that?
Screensaver! Though I’m trying to find a nice one for a three monitor setup now…
i hope this will last until the L4D SDK is out and we can expect some nice MOD for generating the next level on-the-fly.
I enjoyed the terrain project blog very much and look forward to this one also. Being “can-code-but-does-not-have-will-to-do-so” type i enjoy reading about other people projects and dev blog/diary is great stuff.
Well I am not a programmer, but I did enjoy reading the series on the terrain project.
I don’t intend this to be a ‘Yay cool idea’ comment, so I will try to offer some thoughts.
I occasionally need to employ programmers, so one of the things which interests me about this post is the way that I get to see the decision making process that goes behind making shiny things on the ‘puter work.
I think that this blog holds one of the best people to do this kind of explanation, because there are few people who have the knowledge of how to do something this technical, and yet explaing it in a way that meakes sense to us non-technical people, and very importantly: in a way that is easy to read.
P/s Yay cool idea.
PPS/ Irregular webcomic has set up a poll asking what the SECOND most important consideration when programming is:
Actually, have you considered linking against winelib? It’s just an open source implementation of the win32 API under Unix. From my understanding, you just take your source code for the windows program and compile under *nix with it. If you can’t be arsed because playing with new build processes would eat up too much of the alotted time, and you end up posting code, I’d be willing to try it.
Sounds like a fun project Shamus. Good luck!
This is going to be great! I love these sausage-making glimpses into guts of game making. More please! Do you know anything about AI? That would awesome, too!
Your Terrain Project is what brought me here in the first place, so I for one will be glad to see more programming-related content showing up now and again.
I love these escapades into programming, I can only speak for myself but it would be cool to see more of this :-)
(or even just a list of projects with a brief description of the idea- I always enjoy reading about what people are working on)
Iam new to this blog,but your work seems very interesting to me…thanks for taking your time to write about this.I really enjoy your posts on the escapist magazine.
Found your site through reddit -> youtube. Great work!
Things to consider consider:
1) taillights are usually less bright than headlights.
2) Also headlights tend to ‘cast’ some light on things in their path.
3) Cars should turn corners occasionally.
4) street level lit up signs (like above pizza places etc ).
5) stop lights ? ( controls cars ? )
6) many cities have boundaries defined by water….. NYC, SF, Rio, Hong Kong. Syndey.
Can you package this as XScreensaver thingie?
I’d love to be able to program little agents with a variety of basic behaviors, then clone thousands of them and let them loose in the city.
Anyway, well done, this was awesome!
This is very awesome, just saw the YouTube video. You ask if this stuff is any use. I know that at my university in Switzerland a start-up was recently founded in the procedural city generation scene, they are pretty successful.
See here: http://www.procedural.com/
Best of luck to you. Keep up the great work.
I had a dream about 3 years ago… I was walking around a city of lights and chatting with people. o___O’
I ended up in a Virtual Church on a hill over-looking the city, your project reminded me of that dream.
I’d love to see more details in the city, all random ofc.
Sure makes an awsome Screen Saver too!
I always liked to visit cofmeta, it was very inspiring.
Best of luck to you man! This looks awesome! :D
I just saw the work on your cityscape flythrough, and I really like it. You’ve probably seen the similar work on Peter Jackson’s _King Kong_. And you may want to have a look at the video “Rivers of Light” by the Grass Collective, which is a sort of ambient-video thing of footage shot over Los Angeles at night.
Which brings me to a suggestion. If you did this with enough high-res textures, you could have a nice program for people to run on their HDTVs as a kind of ambient, screen-saverish, nice-to-look-at video feed. Only instead of a pre-recorded sequence, it could run semi-randomly: let the user choose certain parameters, like speed, camera height and view angle, maybe let them play some music behind it, and let it rip.
Oh, and another thing: if you could get this to work in a game engine like Crysis’s, it’d be a nice boon to game designers.
Sounds like Chris Colefax’s City Generator for POV-Ray.
SCREENSAVER! PLEASE! FOR MAC OS X!
I wish a GTA or FPS game would use this
Amazing work, I was skeptical the car thing would look real – but it actually does. Should apply a bit of a blur to the streets over the cars that way it’ll increase the effect.
mate, whats the name if the application you used? is there any alternative software??
Hi, I’m studying engineering, & I was wondering if there was any way for me to study the code You’ve developed…
I do hope so.
U can find me @
Tks, see you.
PD. Congratulations, amazing work!!
Wow, that was pretty impresive.
Did you ever hear of demoscene? Demosceners create the same things as you.
Watch this procedural works:
Debris by Farbrausch
Rupture by ASD
Elevated by rgba/tbc, and it’s only 4kb.
Congratulations for this beautiful landscape. As a game player, my guess is that this would be the perfect scenery generator for low altitude inhabited planet approaches in Frontier Elite IV.
Hi Shamus! Great work! Amazing :)
Wow. Just wow. You need more recognition in the world my friend. Have a great day.
The only things I noticed that were missing in this amazing bit of work were rooftop lighting and aircraft warning lights. I guess if you wanted to add the stars and an occasional airplane it would really put it over the top, but if you do stars make sure to use real star charts as there are geeks way more attentive than most that’ll point it out.
If you do turn it into a screensaver do send it my way, it’s really good.
Akin to what Brian Siano suggests… how about an itunes visualiser?
1. The cities are built in relation to the music or
2. The music controls the pan/zoom…
Very nice. Now crack it down to a 4kb executable ;)
But you should definitely watch ‘Debris’ by Farbrausch!
I love this thing. The idea behind it really appeals to me. Unfortunately now that I have moved to Windows 7 it no longer works. Have you (or any of your followers) encountered this before? I’d be glad to work together to try and figure out how to make it work.
Hi! If you haven’t noticed you can noclip out of the map in Source games (like L4D) and you will find a small, downscaled room containing all those buildings and background stuff that you can’t reach, so that method is still used today. Sure, the Source engine is sort of ancient, being based on Quake and all, but it runs pretty well on most machines. :)
I hope Shamus Young reads this. I just watched your pixel city and that is the COOLEST thing I’ve ever seen. I’m an experienced computer user but not in graphics. Man, I’m so impressed. Is there anyway I can download that as a screensaver? I love it! Thanks for sharing it.
Great Wall of China is known as China\’s serpentine masterpiece thanks to its huge architecture and historical beauty.
I only wrote 748 glowing items about him in The New York Post
and in boxing magazines when he was trying to make his “bones” in the fight game.
I kind of doubt it but I would not go into any Sugar Shane shock over such bad news.
It’s a shame you don’t have a donate button!
I’d definitely donate to this brilliant blog!
I suppose for now i’ll settle for book-marking and
adding your RSS feed to my Google account. I look forward to brand new updates
and will talk about this site with my Facebook group.
This is awesome work I just ran across, your so talented. Keep up the excellent work. Sincerely, Garver
HellÎ¿ mates, how iÑ• the whoe tÉ¦ing, and what yoou Ôish fÖ…r to
say Ð³egarding this paragraph, in myy view Ñ–ts Ð°ctually remarkable
Ñ–n support Ö…f me.
Thanks for finally writing about >Procedural City, Part 1: Introduction – Twenty Sided <Loved it!
You can search from Tacoma to Seattle and never have the ability to find one other shop that can even come near matching our
low costs and grade A quality of hashish products sold right here at Highway 7 Recreational Marijuana Store.
This was the original post that brought me to this site, and how I started following Shamus. From here on I mostly lurked around, commenting from time to time. I only got a direct answer from him twice: once when I accused him of being a coward because of his religious beliefs (because I am a moron, I really felt bad afterwards, for weeks) and another one where I liked a meme video about Germany.
I will miss him terribly.
As above, I believe this was the first post that made me aware of Shamus. Well, the youtube upload of the footage from 13 years ago give or take. I didn’t even make the connection till now that this shamus, who is more well known for producing video game journalism related content, was the same guy as the one that made it. I will miss you a lot Shamus. Thank you.
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="http://en.wikipedia.org/wiki/Darth_Vader">Darth Vader</a> on Wikipedia!
You can quote someone like this:
Darth Vader said <blockquote>Luke, I am your father.</blockquote>