My idea is less specific and more of a general tip for learning quickly. But try separating “buildings” from “building blocks” in your mind, metaphorically.
I’ll explain what I mean. Using the examples you included, Currency Systems, Shops, Kill Parts, Dobule Jump, Shift to Sprint, and First Person Camera are all examples of “buildings”. They’re specific ideas and designs created from smaller building blocks, and somebody who understands those building blocks will automatically know how to connect them to make all this stuff happen, either by memory or by checking the API reference for the relevant objects. For example knowing how to make a Kill Part without being taught could possibly be done by first learning about properties, numbers, the Character, events, Parts (which include collision events), and finally the Humanoid object, which includes methods like TakeDamage and properties like Health.
Tweens, RemoteEvents, Lerps and CFrames are all examples of building blocks. They’re functions and types that can be used as properties and arguments for other functions and types. From them, you can make an essentially infinite amount of of “buildings” (gameplay aspects, systems) by applying them creatively. If you learn the basic fundamentals then you automatically learn how to create any “building” instead of having to memorize specific finished structures.
A great way to learn as you go without having to fall back on tutorials is to use the API reference. I’ll take one of the things you haven’t learned how to do yet as an example (First Person Camera) and explain how I’d learn it for the first time if I were you. First I’d go to the Roblox page for the Camera object:
Then I’d check what it says up at the top, which is usually the most important info. Here you can see a paragraph that says:
In an instance of the game, each client has its own Camera object associated with it. Camera objects exist only upon the viewer’s client, residing in that user’s local Workspace, and therefore cannot be edited directly from the server.
Each client’s particular Camera object can be accessed through the
Workspace.CurrentCamera property of the
Workspace on that client.
The bolded text is new information. Now we know that we can get the player’s camera on their client (i.e. from a LocalScript) by referencing Workspace.CurrentCamera. So now let’s scroll down to Properties and Functions to see if there’s anything relating to the camera perspective, to help with the first person view…
Specifies the CameraType to be read by the camera scripts
This is the closest thing that looks like it could be used to change the way the camera’s perspective works. This property has to be changed to a
CameraType object, for which there’s a link. However, looking through the list of possible CameraType values, there doesn’t seem to be anything for first person, so that’s a dead end. What other game object could hold a setting for perspective? How about the Player object?
Indeed, upon looking through the settings, one pops out called CameraMode:
Changes the camera’s mode to either first or third person.
And now you’ve hit the jackpot: The link on that property leads to a full fledged article about how to change the way a player’s camera works, including a code sample for locking it into a first person perspective, and tips on how to use it effectively. So you’ve effectively learned how to do one of the things you wanted, without following any guides or tutorials, just by scraping through the API reference. And you learned a couple extra things by accident in the process.
I guarantee everything you want to do can be done using this method. Some things will require setting more properties and calling more functions, but everything will boil down to this. Honestly this is basic stuff but nobody ever taught it to me, I had to figure it out myself, because people forget what it’s like to be a beginner. I hope it helps.