Times, trials, and turbulence.
The spiel on “Cyberspawn”.
Hoy, it’s certainly been a while since my last update. There’s plenty to talk about, although it’s in a little bit of a different direction than usual.
I have a keen interest in software rendering, as several of my side projects have hopefully shown. A few weeks ago I was toying around with a particular algorithm for raycasting, sheerly for the spontaneous fun of it. Weeks passed by, and I found myself still steadily working on it, rather than Skirmish.
(The first phase of the renderer — no bells or whistles.)
The first step was to get the thing actually drawing. The idea was to adopt a Wolfenstein 3D sort of map format — insofar that it is tile-based — but allow for variable-height floors and ceilings, in addition to everything being textured. Getting this rendering fast has been a really interesting challenge.
Next up was getting in some better textures. I opted for the set that Dean drew from a project a few years back, which fit the theme I was going for perfectly.
The world was looking overly too bright and bare, so fog and sprites came next. The fog can be set to any colour, or fade distance, and the sprites can be scaled to any size and support animations.
don’t won’t want to mess with the Cyberpolice.)
Dean was nice enough to draw two neat characters for me (one human and one bot), and is slowly pushing towards getting one of them fully animated.
Next came the implementation of what I’m currently calling “mask walls”, which are essentially optional wall textures that can be on any of the 4 sides of any tiles that fit between the floor and ceiling of that tile. They support z-buffering and colour masking, so their purpose is to act as things like doors, steel bars, grating, or other semi-see-through-able walls. Door logic isn’t implemented yet, so the above is really just a hard-coded mock-up item. 🙂
The last graphical addition was a simple form of lighting, whereas each tile can be given a colour to modulate its textures by. Most lighting will likely be static, but I couldn’t resist adding this because of the neat benefits such as having energy-based projectiles or explosions that light up the surrounding area.
Cyberspawn, as the name may hint at, is to be a cyberpunk themed game. If you read over my entry a while back about my once-project Gloom, virtually everything from that applies to this project. The idea is a first-person game that explores an interesting cyberpunk world, and gives the player plenty of ways to approach the way the game is to be played.
Cyberspawn is, for the time being, taking the place of Skirmish as my primary project. I’ve felt more than a little burned out on the overhead shooter genre, which I think is understandable given my history of developed games. I’m jumping at this chance because it gives me a chance to do more work in software rendering, and finally an opportunity to work on components of game development my other games are rather devoid of, such as storyline and deeper gameplay. I think it will be a very interesting game to work on.
I packaged a small ‘demo’ of what I have so far, which isn’t too much by some standards, but certainly a solid start. Most of the player physics are implemented, allowing for running, jumping, and full collisions with the map.
Optimization is still a work-in-progress, so don’t be surprised if you get a less-than-splendid framerate. I manage a mere 60 on my 3.0ghz machine, but your mileage may vary. Framerate independent timing has been implemented, so it shouldn’t feel too sluggish for anyone. Controls might feel a little awkward though, since I have odd tastes in that realm. 🙂
- Arrow keys: Move forward/backward, and rotate
- W and E: Strafe left and right
- A: Jump
Fingers crossed that I haven’t forgotten any critical DLLs. 🙂
EDIT: Looks like I did. Install the Visual C++ runtime DLLs if it gives you a hard time.