Cyberspawn? What's that?
A rather long while back, nearly a year ago, I wrote about a small scale first-person shooter project I had undertaken. At that time it was using a renderer I had implemented in software, and it looked sort of groovy:
![](http://www.student.cs.uwaterloo.ca/~swhitmor/cyberspawn/cs_img3.png)
![](http://www.student.cs.uwaterloo.ca/~swhitmor/cyberspawn/cs_img4.png)
![](http://www.student.cs.uwaterloo.ca/~swhitmor/cyberspawn/cs_img10.png)
I didn't really discuss it, but the basic premise for the game was to blur a little of the lines between cyberpunk greats such as Shadowrun and Deus Ex. The player was to take on the role of an amnesiac freelancer in a dangerous city, trying to determine what went wrong with his last job, and who he has to eliminate to set things straight. The story might not be entirely original, but it's general enough that I would have a ton of room for artistic maneuvering. My goal was to spruce the storyline aspect up, with elements like Morrowind-styled conversations, and flexible inventory/implant management. Things got busy with Skirmish again, however, so Cyberspawn went to the backburner.
Recently motivated to try and get Cyberspawn going again, I loaded up the ancient code, blew off some proverbial dust, and went to it. My first order of business was to add some more level features. Two such things were sloped floors and stairs, which I'm thrilled about [grin]. I also changed the rendering system; I broke it down by making each level a list of sectors, and each sector a list of faces. Each face could then be rendered, with all of the pre-computation (there's a bunch of sector-touching-adjascent-sector logic to make things look right) done on boot-up.
Anyways, the most important part was when I had the level essentially broken down into a big list of faces. Because of the nature of how it works, this put me in a position where a certain feature, lightmapping, would not be a stretch to implement. I won't go into the details of how lightmapping works in this post, but can discuss it later if there is any interest.
The important part is that lightmapping is something I have wanted to implement for a *long* time. Lighting is such a HUGE part of making a 3D game look proper; levels almost look freakishly boring without it. For example, these shots look boring, right?
![](http://www.student.cs.uwaterloo.ca/~swhitmor/cyberspawn/cs_img13.png)
![](http://www.student.cs.uwaterloo.ca/~swhitmor/cyberspawn/cs_img14.png)
Sprinkle on some lightmaps -- even just these basic ones -- and things start to look much prettier. [smile]
![](http://www.student.cs.uwaterloo.ca/~swhitmor/cyberspawn/cs_img16.png)
![](http://www.student.cs.uwaterloo.ca/~swhitmor/cyberspawn/cs_img17.png)
The current lighting model is very simple. Quadratic fall-off for light attenuation, and collision detection with the map to create shadows. Radiosity is still out of reach for the moment, but it is yet to be seen whether this model is good enough for the game.
Now, armed with features like stairs and lightmaps, I am very eager to start working on the actual game. This will mean teaching myself to model better, as well as use tools like GIMP more effectively to create game art. While I've always leaned heavily on my artistic comrade, Dean, for artistic assistance, I'm very excited to tackle the game art on my own ground, and try and learn how to create an immersive experience from both sides: the code and the paintbrush. [grin]
Stay tuned for more updates.
![](http://www.student.cs.uwaterloo.ca/~swhitmor/cyberspawn/cs_img18.png)
(PS. I have erected a small development gallery for Cyberspawn, for anyone interested in gleaning the history of its progression.)