Concept: FPS sci-fi roguelike with bullet time

Make the parts of the videogame in seperate blends and then test each part with each other.You can use this system to see where the bugs are.

That’s a good suggestion for most games, since the bugs are often to do with level building or item placement. But most of the games I make are dynamically generated using procedural generation. There is only one blend, but it is automatically reconstructed in various different ways each time you play.

The complexity comes from the rules used to drive the game. it can be a good way to make a game with a lot of re-playability, but the downside is that it requires quite a lot of planning and a complex first setup.

With this project I’m hoping to avoid that by keeping it as simple as I can. :slight_smile:

A little more progress today. I added two more guns, a single shot rifle and a rapid fire submachine gun. These are just generic guns which can be modified to get some other types, using different sounds and visual effects. I implemented a fire control system so some guns run on the “tap” system where you have to let go of the trigger before you can fire again, while others can be fired in full automatic. The red plasma gun still has the route tracer, hold down the trigger to trace the route. Other guns can use this to have a zoom sight, or a laser sight or whatever, only firing when you release the trigger. The guns are set up so that recoil affects the gun directly, causing it to wander off target. It’ll automatically return to the aiming point given a little time.

Click the right mouse button to cycle through guns:
0 lightning gun
1 plasma gun
2 rifle
3 sub machine gun

as before up arrow sets bullet time at 100%, down arrow sets it at 20%

The next step will be to contain the gun data in dictionaries so that it can be integrated in to an inventory system.

I think that before getting dragged down with random level generation I’m just going to make a simple demo with a few enemies and some items to pick up. I’ll continue with that until I figure it’s ready then move on to making the procedural generation system for generating levels.

That is a good idea.

I just found something similar to the game but in real life lol

Ha! yes, very similar.
I read a bit about lasers in the past, how they have attempted to be utilized as weapons, and the problems involved.

One problem is that a single laser is pretty low intensity, you can ramp up the power supply to provide more heat output (=damage) but you quickly get to a point where the high intensity laser vaporises the air and dust in front of it, disrupting the beam and making it ineffective. So the traditional “beam” type laser is not practical.

One way round this is to use a bunch of lasers focused on a single point, each laser on its own is not hot enough to disrupt itself, but where they converge you get a very high localized heat output. The problem then becomes where to focus the beams. You can use a low powered range finding laser to set the correct distance (people already use such a laser commercially for measuring distance accurately) but this wouldn’t work for a target with specially designed light reflective or light absorbing qualities. In that case you could start with the lasers converging just a few centimeters from the end of the barrel and then quickly increase the distance of the convergence point along a vector away from the end of the barrel. Laser reflective materials wouldn’t be much use here as the damage is caused by a localized area of extreme heated air. In any case this would result in the “bolt” type laser you see in old sci-fi movies.

Another weapon is the laser tazer, which uses the laser as a carrier beam to conduct an electric charge to the target. Variations of this use highly energized particles or exotic radiation as a “bullet” conducted along the carrier beam.

Returning to the original beam type laser, there have been experiments with pulsed beams, allowing the vaporized air, dust and ablated target material to disperse before firing the next burst. These have had varied levels of success.

I don’t want tog et too bogged down in science here though, so I’m just making fun guns like “blue bouncy laser”, “red beam laser”, “green pulse laser”, “purple particle gun” etc… there will be a difference in game, but you don’t have to be a rocket scientist to decide which weapon to use.

Anyhow, this is mostly an experiment in developing a particle management system for my games, which can handle varied particle types and behaviour with minimal direct coding.

A bit of an update today. Click hereto download the demo from mediafire.

You probably won’t notice much difference, but I’ve moved the particle properties over to a stored dictionary. That lets me make new particle effects and change old ones more easily, as I can compare particle properties side by side and easily add more different variables. Particles, bullets and light hooks have now been merged, so there’s just one list being generated. This also means I can add an object which is an animated particle which emits light, or a bullet which emits light, or later with some more development, light emitting animated bullets maybe. :slight_smile:

I’ve added one more weapon, the shotgun. It was easy to add with the new organization.

I’ve developed bullet hole visualization a little more and added a bit of code to cull old bullet holes if too many appear. This was helped by the fact that new objects added to scene objects are added in order, so the ones near the end of the list are the youngest.

A few other things have been added, try walking up to a wall or enemy. If you get too close the gun will be lowered to point at the floor, this stops the gun model going through the scenery. It also auto aims to the closest hit object under the cross-hair, so guns are very accurate now, though watch out for recoil. I may add some aim deviation based on movement speed later, perhaps modulated by character skill or gun accuracy. For now it’s just the basic code added to get it working.

Mostly this demo has become about testing things like particles and ray casting that I couldn’t do in my main project. As it develops further, I get more and more interested in what it could be… But for now it’s going to be a test bed for particle effects and later AI. I’m getting close to developing a robust and speedy waypoint based navigation system that can work with generated levels and terrain, It seems like when I restart my roguelike RPG it’ll probably switch over to that system, rather than the old grid based one which was causing me headaches.

Anyway, now for some eye candy:

Fixed a problem with reflecting bullets, they need to be offset from the hitpoint slightly before calculating the next raycasting cycle, otherwise they impact with the same wall they just hit. Lights have also been offset to stop them being stuck in walls. There’s still a slight problem with bullet impact detection, I think I’ll probably get ricochets to calculate on the fly rather than in advance, because the slight offset is getting mixed up a little and introducing an error that increases the more times it bounces. I may also do some work to parent muzzle flash to the gun, so it doesn’t get left behind by the player as you move. In general muzzle flash is currently too long in duration, which causes the problem.

Wow your particle effects are just amazing! So cool to watch.

Thanks, there were some amazing points during testing where I forgot to set endObject() for particles when they hit a wall and they just piled up, generation after generation. It made me think about painting with particles, not just wall decals, but arcs and parabolas, lines and shapes, glowing and twisting across the room… the result is really trippy, but only interesting to see in 3d, where you can walk around and see things from different angles. In a static shot it loses a lot of impact.


It’s been a really fun experiment. There’s a few more particle types I want to investigate too so it’s not finished yet.
There’s lots of stuff here that could be ramped up in to a full project too, as i talked about earlier with the 3d printing and recycling concepts.