Wait, it's April?
Since the last post, I set out to ensure weapons were damaging the player properly. However, During my testing.. It became clear that it was going to be easiest to introduce an NPC bot that I could test much quicker vs waiting for Roblox to load multiple clients. So I had some fun with that.
For the past month, my focus turned into:
Iron out any bugs from introducing 3rd person camera across all weapons
Update all weapon models to the new standard for consistency
Ensure each weapon and grenade can damage the player
Make an NPC bot that moves around to test weapon damage.
Resolve inconsistencies with roblox physics and raycasts for weapon shots/grenades.
Make Bullets visible when shooting
Bullet System Overhaul
So I found Roblox raycasts and physics systems are fairly unreliable on their own in a multiplayer environment.
I would often see bullets not register as collision/raycast hit because they were going too fast, or unknown reasons that were difficult to debug. I realized WFR needed a more reliable approach to raycasting to resolve inconsistent hit results.
I also wanted to consolidate how I approached weapon shots vs grenade throws so that they used the same system.
After multiple versions of R&D, I found the most accurate results using the FastCast api, which has now been integrated into the current weapon system. Weapon shots are now 100% reliable and always hit where they should.
Yes, this unfortunately means I threw away my original custom Projectile and Hit Scan modules that I was very proud of 8 months ago. Oh Well!
Why did I choose FastCast?
Custom Physics Implementation Support
Raycasts in custom defined increments
Results in the most accurate hit detection
Debug Mode is very useful (see right image)
Well written and reliable API that many games use
Elegantly integrates into existing weapon system
Gunner Shrapnel Grenade
What's a good use case difference with bullet visuals? Well, the first thing I noticed was the Gunner's shrapnel grenade explosion feels much better if you see bullets shooting out from the explosion vs only seeing them hit the walls.
I quickly proved out that using FastCast was a great decision for the direction of a Roblox FPS game, with the target audience I am aiming for.
Sniper Rifle Laser Device
One of the last things I implemented before jumping into damaging the player was the Sniper Laser Special Device.
Quake 2 Weapons Factory Laser was more of a large crosshair that showed up on the wall as a projection. Which was never really useful much, as it more or less made sure people knew you were nearby plus also lagged behind.
Similarly, but feels more appropriate, the laser is visible up to a certain point on the sniper rifle for an added "nifty" visual that is the color of your team(blue or red).
When you aim down the scope is when you see the laser project onto the walls, unless the laser collides with the wall up close and personal. That way the laser isn't going across the entire open map, but players can still see your laser endpoint for it to be effective, yet not a complete distraction. And ofcourse, it is toggable to be on or off at will.
Looking Ahead through April
What's next in Quake 2 Weapons Factory in Roblox
Since this update bled through more then half of April, I'll post an update towards the end of April as well to show updates on the below progress that were not ready today due to FastCast bullet visual integration.
Weapons doing damage to Bots and Players
Grenades doing damage to Bots and Players
Damage Indicator to your crosshair when being shot at by Bot or Players to determine direction being shot at
Damage sprite to show damage on player when hitting enemy with hit confirm sound (toggable in settings)
Custom Ragdoll on death, instead of current frozen stiff body death.
Allow Headshot for 1 shot kills with sniper. Allow Legshot to slow player down.
Sniper/Rail gun shoots through multiple players.
Dynamic switching of textures and sounds when health lowers over time.
Comments