diff --git a/docs/lua/lua.md b/docs/lua/lua.md
index 1f9e57e0..b2f2b8b0 100644
--- a/docs/lua/lua.md
+++ b/docs/lua/lua.md
@@ -14,6 +14,7 @@ Lua scripts you make can be placed either the `mods` folder in the base director
## Tips
- When developing Lua mods, run the game from a console. Lua errors and logs will appear there.
- You can use the `print()` command when debugging. Your logs will show up in the console.
+- [Setting up Visual Studio Code](vs-code-setup.md) will give you autocomplete and other nice things.
diff --git a/docs/lua/vs-code-setup.md b/docs/lua/vs-code-setup.md
new file mode 100644
index 00000000..892e710f
--- /dev/null
+++ b/docs/lua/vs-code-setup.md
@@ -0,0 +1,43 @@
+## [:rewind: Lua Reference](lua.md)
+
+Setting up Visual Studio Code will allow you to have all of the modern benefits of IDEs like autocomplete.
+
+1. Install the `Lua` extension by `sumneko` in VS Code:
+
+![extension](https://user-images.githubusercontent.com/12403224/158046548-a8deba76-ca5f-4f35-aa73-62984820d290.png)
+
+2. Goto settings (`ctrl+,`) and type `diagnostics disable` in the settings search bar:
+
+![diagnostics](https://user-images.githubusercontent.com/12403224/158046741-3bcf513c-5da8-42ee-b3aa-ab2dbab0e3dc.png)
+
+3. Add a new item called `lowercase-global` and click `ok`
+
+![lowercase-global](https://user-images.githubusercontent.com/12403224/158046761-65883e86-fd17-4d90-a566-78fe93b4b51d.png)
+
+4. Type `workspace library` in the settings search bar:
+
+![workspace-library](https://user-images.githubusercontent.com/12403224/158046786-12b8a150-65a7-4f23-96c7-1508f8f80713.png)
+
+5. Add a new item containing the location of `/autogen/lua_definitions`
+
+![lua-definitions](https://user-images.githubusercontent.com/12403224/158046824-1894318a-7ce9-41ef-bacc-17f95fa05f31.png)
+
+6. Open a lua mod file be amazed at autocompletion and all of that good stuff
+![autocompletion](https://user-images.githubusercontent.com/12403224/158046824-1894318a-7ce9-41ef-bacc-17f95fa05f31.png)
+
+Note: For your custom functions you will need to provide type definitions to get autocomplete.
+
+For instance, this will not autocomplete for the mario struct:
+```
+function mario_update(m)
+ -- code here
+end
+```
+
+But this will autocomplete for the mario struct:
+```
+--- @param m MarioState
+function mario_update(m)
+ -- code here
+end
+```
\ No newline at end of file