Snow Crash

Oh. Yes. I am going to start off this post by talking about the absolutely brilliant book by Neal Stephenson (see Cryptonomicon), Snow Crash. The book that popularized the use of the word “avatar” as it applies to the Web and gaming. The book that inspired Google Earth. And despite being 20 years old, it is more relevant than ever and uses the cyberpunk theme to hilarious and thought-provoking extents. It paints the picture of an Internet/MMO mashup, sort of like Second Life, based in a franchised world. Governments have split up and been replaced in function by companies; competing highway companies set up snipers where their road systems cross, military companies bid for retired aircraft carriers, and inflation has caused trillion dollar bills to become nigh worthless.

In the book, a katana-wielding freelance hacker named Hiro Protagonist follows a trail of mysterious clues and eventually discovers a plot to infect people with an ancient Sumerian linguistic virus. The entire book is bizarre, but it has some great concepts and is absolutely entertaining. Stephenson never fails to tell a great story; his only problem is wrapping them up. Anyways, I highly suggest you read it.

Well, I’ve been thinking about games again. I have two great ideas in the works, and one of them is “hacking” game based roughly in the Snow Crash universe. It doesn’t really use any of the unique concepts from it besides the general post-fall world setting and things like the Central Intelligence Corporation. It probably won’t even use the Metaverse, although it depends how much I choose to expand the game from the core concept. The player does play, however, as a freelance hacker who may or may not wield swords (not that it matters, since you probably won’t be doing any running around).

I’m writing up a Project Design Document which will cover all the important points of the game:
Download the whole document


Portal 2 Element-Based Level Generation

This is not going to be a full post. I just wanted to bring to your attention that the Portal 2 team has just recently launched something they are calling the Perpetual Testing Initiative. It essentially allows players to use a simplified in-game editor to create test chambers, and then immediately build and play them. It adds in aesthetics, detailing, and essential level elements completely procedurally.

It is, as I would like to believe, a response to the post I made a while back about Procedural Level Generation, in which I outlined a similar idea. This reinforces my theory that anything brilliant I say will be executed in a year or less by someone else. I’d also like to take this opportunity to point out how brilliant it would be to build more nuclear power plants. Oh wait, I’ve been saying that for years. And they just recently started planning for a new one.

On a side note, I think the entire idea of the Steam Workshop is an excellent idea. Steam has broken PC barriers and surpassed game consoles, but now they’ve really done it with this amazing forum for player-generated content. I’m excited to see how else they will use it in upcoming games.

OpenGL and Geometry Generation

Today I was thinking about 3D rendering (in part because of the recent work I’ve been doing with ray tracing). I worked out all the math for drawing a polygon based on a list of vertices and a camera. I was considering coding it up, but then I realized that I was very unfamiliar in working with Windows (because I sure as hell wasn’t going to do this in Java). So I spent the greater portion of the afternoon reading a tutorial on Windows programming and using OpenGL, at which point I abandoned my original. I was just going to finally figure out how to use OpenGL.

I had worked with GLUT before when working on a Parallel Computing lab. However, I only used pixel control in that case; I was rendering subsections of a Mandelbrot set. However, that was easier because all the requisite libraries were already installed in the major lab at school (which has workstations with Gentoo installed). Working at home, I have been confounded. I just can’t get the linker to use all the requisite libraries.

The whole thing that got me thinking about 3D engines was my working on a HL2 level. Often I will import brushwork (pieces of the level) from the game’s campaign levels; it saves time and adds a nice level of detail to the environment. However, I was thinking about common elements such as stairs, doors, windows, and grates. It’s a multi-step process to cut a hole in a brush, unless you use carve (but nobody uses carve because it doesn’t give you control over how the geometry cuts). Doors are tedious to cut out and then line up with the texture. Non-solid stairs are the most painful to make, however. You have to arrange the steps and make sure the sidings match up, and for each new type of turn you have to rework the geometry. The whole idea of hand-making all the geometry in a level is ridiculous. I haven’t seen a single FPS level editor than lets you define procedures for geometry generation.

A screenshot of the Hammer UI

A screenshot of the Hammer UI

I feel like it would be relatively simple to define a generation process for buildings, for example. Each building is spaced a certain distance in from the sidewalk. There are maybe two or three justifications for things like planters and doors. Then windows are spaced evenly apart, with buffer spaces on either side of the building. You could attach balconies or planters on to every windows, awnings above doors, and even outdoor area layouts for cafes. After meticulously defining a couple of building styles, you could almost instantly generate entire blocks. Then come the nested procedures. A street, for example, would have periodic drains and manholes, distributions of building types based on the neighborhood type, and junctions to more streets. Signs, traffic lights, road markings, and crosswalks would all be placed correctly at street corners. Coul-de-sacs could fill up empty space. Interiors could be set as well for buildings. Floor plans could be modular. Rooms with distributions of room types and different layout permutations would combine into floors. A building type could have a sequence of floor types defined, such as bottom level stores and top level apartments. Central structures like stairwells would only need to be made once.

Although the procedural parameter definitions might take a while longer than making regular geometry, it would be a huge time saver. Not only could full geometries be generated, but intricate, custom-designed battle areas could be laid out faster. Common terrain pieces like walls, fortifications, stairs, railings, gates, and hedges could be created with the use of a single spline. Suddenly a task like designing the maps for my strategy game becomes less daunting. The pipeline for map production is shortened. General map layouts can be quickly sketched out and then directly generated. Beta testing would be infinitely easier, as map adjustments could be made in hours, rather than days.

%d bloggers like this: