Project Approval
After getting a personal project approved to work on unrelated to the company I work for, I set off with a 3 month milestone to learn how to develop a game for the Roblox Platform. Lua is easy to pick up and with such a large community of developers active on the forums, I could see this being very similar to how easy it was to pick up the now deprecated "UnityScript" within Unity back in 2015 when I was working on a mobile game for 2 years.
Status as of April 2021
It’s been 3 months since starting to test work on this project in a Roblox Environment, which means we reached the end of the first milestone estimated for “Acquire the feel of Quake 2 Weapons Factory” including running, jumping, strafe jumping and grapple physics in a blocked out test environment based off of the map 0fear.
Progress
A first prototype is underway with the marine player physics, which closely grasps the goal of milestone 1. The marine was chosen because this class not only includes typical motion and strafe jumping of all other player classes, but also includes acquiring the feel of a “Monkey Grappler”.
The Tasks it took to complete Milestone 1
Run and Jump stud speed feels really close, subtle tweaks could be done, but it’s in a good spot to move forward. Attributes are setup to subtly tweak later if needed.
Run/Jump Friction toggle has been setup to mimic what occurs in Quake2. Meaning if I’m running forward and jumping at the same time, and let go of running forward, i will maintain my run speed while continuing to jump forward until i stop jumping which adds friction over time. This feels pretty accurate as is, but attributes are setup to tweak as needed.
Strafe Jumping feels pretty good, the player gains a certain amount of speed over time as they jump with left/right arrow keys, and mouse angled a specific way against the key direction they are pressing. This isn’t 100% perfect yet, but it feels close enough to move forward, I’d say 90% close enough for now. Attributes are setup to adjust speed and tweak as needed.
Physics sliding on angled objects as we are in strafe jump motion, feels pretty good as well. Unsure how else to improve it atm, bugs may be found later on for different scenario’s, in which if necessary we could tag specific angled objects that are “slidable” instead of detecting angle on the surface normal like we are now.
The Grapple Hook implementation mimics the monkey grappler feel in Q2WF. The player is able to quickly get to places it could not otherwise, in a fast paced motion, nonstop, including sliding across angles surfaces, and the continuation of velocity as the player slides off. The key to grasp the monkey grappler, was to include the velocity in the main player controls lua file, in which we add velocity on the humanoidRootPart based on the vector direction we are grappling. This stands true to the quake2 physics feel. Attributes are setup to tweak speed as needed later on.
Time Reference
This project was conceived back in 2021 and this status represents 3 months into the project. I then spent another 3 months making more progress and learned alot about client/server communication and preventing exploits, but then I failed to commit to a good work/life balance. I got engulfed into the development of World of Warcraft for Patch content in Shadowlands and then Dragonflight. I however, kept dreaming of coming back to Roblox. My dream has arrived, where I am committing to a couple nights a week in 2023.
Comments