Ultimate FPS Controller Design & Build

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] hey Charlie Patt here this episode I'm making a custom controller especially designed for first-person shooter games I've been into making custom controllers and input devices for computers since I was a kid so I'm really looking forward to digging into this project the main goal of this build is going to be to combine a track with a Gamepad to get the benefits of mouse aiming with the compact form factor of a console controller the mouse keyboard versus Gamepad control debate has been around for decades but I think it's commonly agreed at this point that Mouse aiming offers a competitive advantage over aiming with an analog stick in firstperson Shooters what gets talked about less is why this is the case I have an example here of using both a mouse and Gamepad analog stick to move a cursor on a computer desktop when you move the mouse the cursor moves proportion distance on the screen moving the same cursor with an analog stick is more difficult you have to anticipate cursor acceleration and deceleration As you move the stick in the direction you're trying to move the cursor it's way easier to over or unders shoot a Target and it takes more practice and concentration to get right in reality FPS games are pointing games on a computer desktop you're moving the pointer around a fixed screen in FPS games you move the desktop around a fixed cursor it's hidden behind the graphic implementation of the game but at the highest levels fpss are mechanically the same as clicking an icon on a computer desktop when it comes to aiming and shooting while the mouse may offer better aiming it's really unable to handle sustained movement to get around this FPS games on the PC use the keyboard for movement but that isn't a perfect answer either movement with a keyboard is limited to only eight possible directions using combinations of the AWS and D Keys Beyond this PC games have to add in movement mode to get the control Fidelity needed in most games holding shift to run or control to sneak are examples of this gam pads on the other hand don't suffer from any of these movement limitations you just push the stick in the direction you want to go the further you push the stick the faster you go in that direction with a simple analog stick input you can get much higher Precision movement and speed controls in a much more intuitive package so this is why I wanted to explore making a controller that combines the best aspects of a mouse and a Gamepad by combining a track ball for aiming and an analog stick for movement together in a single controller concept of combining a track ball with an analog stick isn't a new idea valve explored a bunch of these Concepts back in 2013 when they were developing their steam controller there's a really interesting promo shot that shows the Prototype development process and how many Design Concepts were explored in the end you can see they went with dual touch pads for inputs over the track ball Concepts going back even further I found this research paper from 2010 that that explores a similar concept of combining a traditional Gamepad with a track ball as well so I guess my question is why isn't this a Thing If integrating a track ball into a game pad is such a great control scheme then why doesn't this product exist I'm honestly not sure and that's what I want to find out by building this concept for myself first step on this project is going to be figuring out what the exact inputs and buttons are going to be on this new controller design I already know I want to maintain the functionality of a normal gam pad so I'm I'm going to keep pretty much everything intact as far as inputs go there the big change is that I'm going to be removing the right analog stick because that functionality is going to be replaced by my new track ball for the mouse inputs I want to maintain the left and right Mouse buttons but will be removing any additional function buttons or switches I did want to keep the scroll wheel in this design though navigating large linear menus is just so much easier with a simple mouse wheel and something I always miss on Console games when I move all the elements onto the new controller everything is roughly fitting into space so now that I know the physical inputs I want I need to dial in where they're going to be more precisely on a practical controller layout for this phase of the design process I'm going to model in some placeholder input objects in Fusion 360 and 3D print amount I just pulled the rough dimensions for these off an Xbox controller and mouse I had using calipers to roughen the shapes I need the next step is to take the physical buttons I printed out and put them into a clay which I can physically model into the controller shape I want for sculpting I'm basically just working the 3D printed buttons and components into a position that feels comfortable as I worked on the shape I realized I really wanted to have access to both the front and rear of the track ball the idea being that I could move the track ball with either my thumb from the top or ring finger from the rear while holding the controller this would let me do some fun moves with a controller once it's all built I could operate the abxy buttons at the same time I'm moving the track ball do micro adjustments with both fingers to get better aim or drag my ring finger on the back of the track ball to change the resistance of the motion these are all interesting options I really haven't seen done before so I'm going to be incorporating them into the design for sure with that Concept in place I just had to keep working the clay around until I got it into a comfortable position for my hands and all the inputs after some more work I was pretty happy with the way it was feeling I didn't bother cleaning up the surface or doing any advanced detailing in the clay this model was really about feeling right with the surface looks not really mattering at the moment with my clay model done I started prepping it for scanning for this project I did two sets of scans one with the controller oriented vertically on the turntable and a second set of scans with the controller laying flat I deleted the turntable from the scan data and then merge the point clouds together to generate my final mesh the end results came out really nice and this has more than enough resolution and detail for what I need out of this scan mesh with my clay model scan stand in the bulk of the remaining digital work on this project is going to be creating a working CAD model of my controller for 3D printing the steps in this project are to take in a scan mesh from my clay model clean it up convert it into surface geometry and then make a Precision engineered enclosure that will hold all my real world physical components for this project I'm going to be using Rhino 3D for my mesh cleanup and surfacing for the final product engineering I will need a parametric 3D modeler that is better suited for dimensioning parts and managing components for those parametric steps I'll be using Fusion 360 so with my digital tool chain figured out I'm going to start with my scan mesh pulled up in Rhino and I'm going to do a bunch of operations to clean it up so I can start doing my Surface creation over it first thing I'm going to do is import the cad models of the buttons I 3D printed and place them in their positions on the scan and Rhino these will act as references for building the rest of the model in later steps for the scan cleanup I'm going to be using grass topper which is a graphic programming language for Rhino from here I can bring in the buttons I placed in 3D space and subtract those from my scan to get just the body of the controller after that I run some smoothing operations using a voxal plugin called dendro and convert the output to surfaces this takes me from a pretty ugly scan mesh which I have no easy way of editing into a nice clean surface model for working on next up I'm going to use the clean scan data to generate a network of nerb surface patches that will Define the outer shell of the the controller defining these nerb surfaces is commonly called surface sculpting or Class A surfacing and is a whole subdiscipline inside the 3D modeling for manufacturing world this point I've worked over the surface patches and have a network I'm pretty happy with if I turn on the zebra stripe view I can see some minor warps happening but I don't see any major Jagged discontinuities going on or anything like that likewise with the environmental map turned on the reflections all look clean enough for what I'm going for in the end I'm going to be 3D printing priming and sanding all these parts so I don't quite need to be as obsessive as I would if these were going into production tooling and with that done I'm pretty much wrapped with my Rhino work from here I can export all this as 3D step files that I'll later import into Fusion 360 before I move on to the parametric CAD phase I need to figure out how all the electronics in this are actually going to work I want this to be a wired controller so I don't have to package the battery in the device itself beyond that I know I want this to be recognized as a standard Xbox controller and USB mouse on my PC I also want to stick to repurposing off-the-shelf components for all the electronics as much as possible with all that in mind I'm going to order a thirdparty Xbox controller and track ball to continue my testing I've got my controller and track ball in but before I tear these down I want to actually use them together and make sure everything works I'm going to be using the aim Labs FPS trainer for all the testing going forward so I need to verify this control scheme is supported before moving on I'm using my Xbox controller for movement and track ball for aiming here in AIM labs and everything seems to be functioning okay now that I know my Hardware will work for what I need I can tear the track ball and gate pad down and start figuring out how to integrate their internals into my new controller form factor starting off with a track ball the internals are looking straightforward and pretty good for what I'm trying to do the main button and controller PCB is a little larger than I'd like but the scroll wheel and track ball sensor are separated off the main board which is really good the scroll wheel is basically just a potentiometer connected by three wires I can extend those wires to position the scroll wheel anywhere I want in my controller relative to the larger board the optical sensor for the track ball is on its own mini board which is also great this is hooked up by a standard six pin Flex print connector I can just order some longer lengths of this standard ribbon and like the scroll wheel position the sensor however far away from the main board as I need so all in all the track ball internals are looking good so with that it's time to move on to the Xbox controller unfortunately this isn't looking as promising is the track ball main PCB on this is very large and won't even come close to fitting inside my controller design half my controller space is also taken up by the actual track ball so I can't have electronics that are anywhere near this size I could try ordering additional controllers to see if they have smaller boards but I'm pretty sure they would all be in a similar layout and form factor to what I have here my options on this one are pretty limited strategy I'm coming up with to get around this is to move the Xbox controller board to a breakout box and connect all the electronic components in my controller through a single multiconductor cable this will basically work like a bunch of extension wires coming off each contact on the Xbox controller board and going to a button in my custom controller once everything is done I should have a single cable running between my controller and breakout box and then a single USB cable that connects to the PC when I plug the USB into my PC I should see two devices Xbox controller and the track ball it all sounds good on page so I think I'm good to continue on through my design process it's a good time to put in some work on the industrial design of the product and establish the overall look and feel of the controller I can see the controller is being pretty standard on the left side with the right side being pretty weird ear want to ramp up the crazy on that right side so I'm going to Canever those side shoulder buttons off the controller as extended arms I also want an independent element containing the track ball this will help visually separate it from the surfacing scene on the rest of the game pad as I did more sketching I came up with a basic design theme where high contrast parts were holding in all the interaction elements with an overall picture of the form I want to explore I can move into Fusion 360 for my parametric CAD work for this section I'm going to be stepping through my parametric timeline in Fusion 360 to show my build process I've got my Surface design pulled in from Rhino the buttons and track ball aren't integrated into the form at this point my first step is to cut away a space for the track ball itself next I blocked in the lower area that will house the track ball sensor in the section view I've added an internal bracket to hold the sensor with that all roughed in I'm going to move over to the track ball cradle this is the actual element that will hold the track ball in place basically serves to isolate the track ball a specific distance from the optical sensor in the controller body the plan from here is to have adjustable pins that go in and hold the track ball in that cradle these pins are going to be set screws tipped with ceramic bearings and should allow me to make micro adjustments to the position and resistance of the track ball once it's all installed so yeah you can see the track ball holder isolated into its own separate body now so now I'm moving on to the design and placement of the ABX and Y buttons these will each work as their own subassemblies in this design I can load my tactile switches into this housing then push the outer button down to seat it they'll slide down onto this larger body that will be part of the outside of the controller that'll prevent these clips from bending back out essentially capturing this button in place that's the kind of problem solving and design you have to do on each of these components each part of the controller is its own little design and engineering challenge that you have to figure out and integrate back into the larger product so I'm installing all my buttons I'm constantly checking them against my original Source model from Rhino this is really important because it let lets me see the difference between my digital model button placements here in fusion and my real world clay model button positions next up I'm going to be building out the buttons on the left side of the controller I'm modeling in my left shoulder and Trigger buttons here the trigger is going to be pretty unique I kind of want it to swing down under the body of the controller I'm just kind of cutting and sculpting it until I have a shape that looks good with those buttons roughed in I'm moving on to the top surface of the controller I have my directional pad installed now really wanted to add these kind of tabs on the end of the directional pad I like the idea of being able to swap those out for longer or shorter ones depending on the performance characteristics you wanted out of the controller okay so now we're moving on to the analog stick install I've modeled that component out and built in a little bracket on the inside of that controller body I've also modeled out the actual analog stick hat for the outside of the controller up next I'm going to get into those can of lever buttons on the right side of the controller inside each of the arms is a little recoil spring that will add resistance to the button pull when you depress the button on the outside the lever arm pivots around a center pin and then this little internal Hammer comes down on one of those Mouse switches held in a bracket so the way most controllers work is the buttons and switches are spread pretty evenly throughout the controller Body by having all my right shoulder buttons on Canal levered arms I'm pushing all my switches to the left side of the controller I'm basically forcing all of my electronics components into this this little tiny area over here this is where product designers and product Engineers butt heads a lot of times I still have to get my left shoulder and Trigger button hooked up and running starting off with my left shoulder button I'm shelling and drawing in a post that this button will pivot around on the inside section view you can see how this will clip into place on the main controller body should be able to just press this one in from the outside of the controller doing assembly and it will snap right into place now that I have the left shoulder button installed I need to do the left trigger I can put the trigger on then slide 2mm Rod stock to lock it down it's going to be a recoil spring that I actually pulled off my donor Xbox controller that goes in here I still haven't hooked up the hardware for the left and right triggers yet for that I'm adding a canal levered Arm coming off the trigger this assembly will twist a potentiometer that acts as an analog input for the Trigger action the potentiometer will press F into this little internal bracket here the right trigger arm will do a similar action and rotate another potentiometer moving on to the cable entry on the controller my cable is actually going to be mounted on my track ball assembly just going to add a screw on clamp to secure the cable as it passes into the controller so yeah this is kind of the home stretch here the last step is to make a connection method for all these separate outside Parts the outside shell is just kind of floating in 3D space right now it needs to be linked together somehow this kind of all comes together like a complicated puzzle box the parts need need to be assembled in a specific sequence once they're all in place they should keep each other locked together so yeah with that we're all done if I kick on my old reference model you can see everything is pretty close to where it was in the clay model the important thing is that whenever I had to make a button placement change due to mechanics I was able to check it against the physical clay model button position this would let me know if that change would impact the ergonomics of the final design with my cad work done it's time for 3D printing for that I'm going to export my objects as step files to preform preform is the slicing program for my form 3 SL resin printer I had to do these in several print patches but the parts came out looking really good each of the print patches goes through an IPA bath and then a final UV cure with all those done I have the bulk of my final printing run complete I need to dry fit and test the entire controller to make sure it actually works before find painting and finishing so for that I'll need to do my wiring if you remember back to my wiring strategy I'm really just running extension lines off the Xbox PCB through a 24 conductor cable to the switches in my custom controller mapped out all the connection points I need on the Xbox PCB these will run through a smaller terminal board that I can plug my Dupont connectors into with all my wiring done and checked I can move on to my dryfit assembly and testing all right so you can see I've got my controller all dry fit together here all the buttons are hooked up to the main wire harness and everything should be running it's pretty awesome finally seeing this come together got this hooked up to a control tester and you can see all the buttons running so got AB XY up down left right analog stick and upper shoulders yeah everything's going the action on this really feels awesome like I love these sort of extended controller arms here it uses clicky switch from a mouse which is way more satisfying than the membrane Dome switches you find on a controller Mouse wheel is running that's awesome so yeah I basically have all the functionality of a mouse and a gam pad packed into one weird super strange controller which is exactly what I was trying to do it's great oh and I still have my old stick over here that works too nice yeah this is amazing sort of baffled that this worked on the first try did some Diagnostics and testing before but really uh yeah all the boards all the cabling everything's worked as long as I can figure out a way to cram all this in the enclosure uh I should be good to go but yeah that's my one concern now is I've uh the DuPont connectors there taken up more space than I expected so we're going to see it's going to be very tight in there but I'm pretty sure this will all come together okay in the end yeah again I just love these switches they're just like the most satisfying thing ever really liking the the track ball access on the back this is just so radically weird to be able to move the track ball and then also control it from the other side I can spin really fast and make these massive adjustments and then make fine-tune micro adjustments by sort of pinching it and just get this really nice control it's really cool too because I can access the buttons and still be aiming uh around which is super unique so yeah you can see right here I'm still operating the mouse and yeah also hitting buttons which you can't do with a normal controller the pin system I designed that allows me to adjust the strength of the resistance of the track ball is working fantastically I can just do little quarter turns on these screws to really tighten or loosen the resistance of the track ball and just get it feeling exactly the way I want I love the stage it goes from just being something abstract on the computer to being in your hands it's always a little scary you don't really know how it's going to come together or work out but man this is amazing can't wait to move on next step step is going to be to tear this back apart paint and then do a final reassembly so we'll go from there I have my parts broken back down for the painting and finishing step I ended up using some rattle can finishing paints for both my priming and color coats on these the detail level on these 3D printed Parts is great but it still requires priming layers and wet sanding before final painting there are lots of parts that need to be finished here but fortunately only the larger exterior pieces really need m mle priming passes to build up my primer and sand it back down I'm starting to get a really pristine surface on these final parts for final finish I'm going to leave the bulk of the parts as raw primer with a glossy clear coat the small bright blue components will get a matte clear I really like using different clear coats on different subcomponents it adds a nice texture variance to the finished design and makes it look like a more Complete product at this point I'm really happy with the way the final parts are looking so it's time for the reassembly of everything my final assembly steps go in almost the same sequence as the cad build I'm getting my track ball loaded into the cradle and making sure the action is working okay next up I'm loading my Dome switches into my abxy buttons left tolerances to account for the paint buildup but some of these need a light sanding to get them feeling right I also added a very small amount of lithium grease on all my moving parts to get a smooth action on everything from there I'm moving on to the left side of the controller it's really nice having the two sides as separate parts makes loading in all the components and switches so much easier all my left side components feel great so now I need to load in the extension arms for the right shoulder buttons with those in place I hook up the potentiometer for the right trigger and add in the button ends for those arms everything is feeling spot on and I can really see the controler coming together I'm plugging in all the DuPont connectors into my terminals double-checking to make sure all the plugs are going into the right pins next up I'm securing the main cable into the controller to make sure there is no tension put on those inner wires I'm piecing all the main parts together now the final little push the two halves of the controller seat together and it's all done the final little bit is to mount everything into my breakout Project Box and with that the build is done it's been pretty amazing taking this all the way from concept to finished design things took a lot of unexpected turns but seeing it all done and together is just so [Music] satisfying and with that it's time for the fun stuff going on to play testing I'm going to be running my testing three separate times once with a normal Gamepad once with a mouse and then with my custom controller for each of these different control methods I'm running three different scenarios in AIM Labs cluster aiming at Targets close together Dynamic aiming at a moving Target and then spread aiming at disperse targets I started with spread Target testing to kick things up off to be honest I was really struggling with the new controler at first I increased the track ball sensitivity high enough to get good direction control my Precision aiming became way too Twitchy and jerky if I lowered the sensitivity to get better Precision then my direction changes were way too slow fortunately I'd already been using an open- Source software called raw Exel for the controller raxel lets me adjust the input curves for Mouse aiming this makes it so I can have a stable and precise Crosshair while still being able to do quick turns with the track ball once I had my RO cell curves dialed in it really opened up the controller and it started feeling super comfortable and intuitive to use I logged my data doing 20 or so test sessions pulled in the top 10 scores and sorted them from worst to best none of this is particularly great from a data science point of view but it's sciency enough for what I'm going for here in spread aiming the custom controller top 10 scores averaged about 85% of my mouse performance my standard Gamepad average score came in at only 61% of my mouse average that difference was pretty sizable but it was really Amplified when I switched over to my fast cluster Target training this exercise requires really quick twitch aiming rapidly switching between targets my standard Gamepad performance really fell off a cliff on this bottoming out at only 37% of my mouse average custom controller stayed constant here at around 84% of my mouse performance in my final testing series I had to maintain tracking on a moving Target in the performance numbers the standard Gamepad came in at a much more respectable 76% average against the mouse and keyboard but I was generally shocked that I managed to put in a 93% comparable score with the custom controller feel like with the analog stick for movement I was more accurately able to match the motion of the target almost tur it into a stationary aiming exercise this gave me an advantage using both the custom and stock controllers ramping up their scores compared to using the keyboard for movement so what is all this mean well I've documented that I'm pretty bad at fpss with a standard Gamepad for sure custom controller was super interesting though I have who knows how many hundreds of hours playing games with normal gam pads and mouse keyboard combos I have probably four hours total play time with the custom controller at this point and despite that I was able to put up competitive numbers with it which is kind of crazy there are also moments with the controller where it would just sort of Click into place I would look at something on the screen and just be able to hit it sort of like when you're learning a new sport or musical instrument there are these moments where you can stop thinking about doing it and just do it definitely don't feel like I've hit my skill ceiling with the new controller yet so it's going to be exciting to see how far I can push it forward the thing that really struck me about this project is that good ideas are buried in the details there have been a bunch of attempts to make track ball controllers over the past 30 years but they were all abandoned for one reason or another I think what really made my design work was finding the right ergonomics and aiming software with the track ball without hitting on those things the performance would have been much worse and the new design just wouldn't have been fun to use turns out it's all about those details the other bigger question I have about something like this is where it would fit into the market as a product for consoles you need industry adoption for something like this to work that's where I feel like non-conventional controllers would struggle right now game developers and console manufacturers can balance crossplay between Mouse and controller players because those two isolated control types have been perfected over decades you throw something like this into the mix and all that balancing and play testing gets messed up that being said the industry is changing those lines between predefined input schemes are going to continue to blur and there's no way of stopping it I do know that when I cast games from my PC to my living room TV this controller becomes amazing PC casting setups are still kind of a fringe thing today but it's going to be more and more common in the future and it's always nice when you get those little glimpses of the future thanks for watching and see you next time [Music] yeah
Info
Channel: PyottDesign
Views: 2,024,600
Rating: undefined out of 5
Keywords: #industrialdesign, #rhino3d, #fusion360, #gaming, #controller, #formlabs, #3dprinting, #trackball
Id: Ug06dhahqg0
Channel Id: undefined
Length: 29min 6sec (1746 seconds)
Published: Thu Mar 28 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.