Writing Game Mods Changed My Life
Tags: gamedev, typescript, javascript
Published: 2023-05-08 16:50:41

Modifying a game can be as simple as using existing tools that are supported by a game developer; to utilizing reverse engineered libraries. Being exposed to certain games and letting your creativity drive your learning can be a very rewarding experience. I went from working a part time job at a restaurant to becoming a full-stack developer that works as a blockchain engineer fulltime. 

I was learning about all of these games, and teaching myself while working part time and keeping my monthly needs at a minimum. There was a time in my life where I was only eating a single meal a day and renting out a room just so I could continue focusing on what I loved to do.

I spent a single semester in College before I decided that it was not the path for me, and wanted to focus on more fundamental parts of game design, programming, etc.

## What happened?
Around 16 years ago is when I really started dabbling in game development but I would only go as far as modifying game files or the game itself. I never thought I would be able to program because I could not get my brain to understand the concepts. I was young and around 14~ years old when I started teaching myself.

### Alien Swarm
Alien Swarm was a game released by Valve in 2010 that exposed me to the hammer editor and I was able to build a handful of maps utilizing this one tool.

Using this tool let me explore other tools such as Photoshop that would teach me about texturing objects, and brushes.

Building some maps actually got a handful of them featured in PC Gamer Magazine in 2011. Here's a horrible video of one of those maps.

{% embed https://www.youtube.com/watch?v=h7iPettGy4w %}

### Papyrus Scripting
This game was a gateway drug to getting exposed to other game communities with more complex mods. Games such as Skyrim, Fallout, [San Andreas Multiplayer](https://www.sa-mp.com/), etc. These communities gave me exposure to my first programming language which was Papyrus. This language was utilized in [Creation Kit](https://www.creationkit.com/index.php?title=Landing_page) which was supported by Bethesda. 

This one programming language allowed me to do very simple things such as pressing a button and triggering various game components based on that one button press.

A simple cause and effect.

{% embed https://www.youtube.com/watch?v=0KNlZlKHkGE %}

### 3DS Max
While learning these tools I got interested in programs such as 3DS Max which taught me more game development concepts and the 3D side of game development.

Here's a few things I learned just from 3DS Max:

- Rigging
- UV Mapping
- 3D Design
- Utilizing Game Model Files

{% embed https://www.youtube.com/watch?v=tNTNiwaVLCI %}

### GTA:V
Then GTA:V came along with third-party clients such as [alt:V](https://altv.mp/#/), [GTA:Network](https://www.gtanet.work/), [FiveM](https://fivem.net/), etc.

GTA:V itself exposed me to a plethora of new concepts and new programming languages. It was at this time when I started taking programming more seriously. It took me about a year to understand the basics of programming and actually write scripts that did something inside of GTA:V itself.

I was able to learn the following languages:

- C#
- TypeScript
- JavaScript
- HTML
- CSS

I was able to learn the following frontend frameworks:

- Preact
- Vue
- React

I was able to learn both NoSQL and SQL based databases at a minimum level. Everything from these simple GTA:V mods were some of the best teachers I have ever had. A little bit of documentation allowed me to create all sorts of fun scripts and game modes.

{% embed https://www.youtube.com/watch?v=K8vw1zBjieg %}

## Where Everything Exploded
At some point during my career I started mixing knowledge with real world usage. I mixed my love of game modding with a blockchain and suddenly I was someone who could be hired. I made an inventory system hooked into an EOS smart contract that would allow players to transact inside of GTA:V to buy / sell items. It was pretty much a non-fungible token smart contract. I just didn't know the term at the time.

This is where I picked up C++ since Smart Contracts on the EOS Blockchain are done with this programming language.

## Where I Headed
Posting some videos on Reddit of my work actually landed me a job out of **pure luck**. However, the work that I did before was not discounted as I was able to continue building off what I learned by doing game modifications.

I was working fulltime as a blockchain engineer while learning from my peers but also still learning more things through GTA:V's third-party game mods.

I started learning frontend frameworks and actually learning the systems that are utilized for creating backends. I was able to dig into oAuth2, create Discord Bots, build documentation websites, build tools and utilities.

Mixing my hobbies with my work actually proved to be a massive gain for my knowledge and ability to write anything that I could ever dream of.

## Tips for a Younger Me
If I could go back to the early years I wish I could have told my younger self that if you bang your head against a wall enough times you will eventually break ground. 

Don't give up so easily and keep pushing until it makes sense.

You will try a lot and you will fail a lot but when it does work it's almost like a switch has been turned on.

Nothing happens without putting yourself out there in a vulnerable position and trying to swim in a sea of problems.

Do something every day and you will get better at it, even if it you are not entirely sure what you are doing.

Work hard and you might just be a bit more successful tomorrow.