I’m currently developing a Multiplayer FPS Engine for Java (nicknamed SteveTech1 in tribute to Id’s naming convention) after spending way too much time playing Overwatch & TF2 and wanting to see if I could create a multiplayer FPS engine of my own. It’s designed to be something like Source engine but written in Java and have all the code required to write a proper multiplayer FPS.
There’s still plenty work for me to do and it’s not been thoroughly tested in The Real World ™, but the bulk of the difficult coding is done and it has the following main features:
Authoritative server
Client prediction
Lag-compensation
TCP and UDP
Collision detection & simple physics
Hitscan & projectile weapons
Entity system
I’ve written one game so far, to demonstrate the features, called Undercover Agent:-
(Excuse the jerkiness, my poor laptop is running a server and 2 clients and recording the desktop).
It’s all fully open-source (available at https://bitbucket.org/SteveSmith16384/stetech1 ) so if you fancy writing an FPS, feel free to clone/copy it or just have a look. Once the code has bedded down, I aim to write a tutorial on how to use it, but the example game gives a good idea as it is.
My multiplayer FPS engine is still going strong. I’ve used it to start remaking the classic strategy game Laser Squad (the precursor to X-Com) as a multiplayer FPS:
I’ve also started a small tutorial on how to use this engine. It’s almost pretty straightforward to create an FPS using it. The only problem is getting good 3d models!
I’ve just started using my Java Multiplayer FPS engine to write a multiplayer “Alien Isolation” type game, although I could only find a zombie model to use.
It’s not much to look at at the moment, as most of the work is on the zombie AI, to get them to act just as they would in real life. . Even zombie’s don’t have eyes in the back of their heads, I assume.
I’ve been flitting from project to project that use the multiplayer FPS engine, so I hopefully avoid the inevitable boredom that comes from working on the same project for so long. This is also good for ensuring that the gine can handle a wide variety of game types.
Thus it was only a matter of time before I started a PUBG/Fortnite battle-royal type game:-
This is just me playing against 49 other AI’s to see how it would cope with all the entities and collision detection (and the fact I don’t have enough computers or friends to join me ).
For my next trick, I’m starting a multiplayer game called “Replicant Hunter”, which will use a simple procedurally-generated Cyberpunk city which the players have to race around to be the first to find and kill the evil replicants. I might see if I can procedurally generate some emotionally moving final words when each replicant is killed.
I don’t think I mentioned it here, but I’ve written a small and pertinent tutorial on how to use SteveTech1 to create multiplayer FPS games, found at https://multiplayerfpstutorial.blogspot.com/ .
In addition, SteveTech1 now has built-in support for voxels, and (I finally gave in to pressure) now also uses Maven for its dependencies etc…