Skip to content

NoahBurkholder/wiki-noah

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 

Repository files navigation

Wiki Noah (Soon WikiBee)

🌺 Version 1.5.6 (Hibiscus) - August 22nd, 2018

  • Quick new section on the Vergence-Accommodation Problem.
  • Added quick section on manually merging scenes and prefabs in Unity.
  • Added Logan Buchanan as a contributor and author.
  • Logan has written a great section on monetary ethics!
  • Currently slowly learning shaders, and writing about them slower.
  • About to start work on a small AI ethics section.
  • About to start work on a game aesthetics section.
  • Also planning to open up a few pages on the fundamentals of Procedural Generation, Machine Learning, Evolutionary Algorithms, and Blockchain concepts.
  • Going to rename this Wiki to WikiBee soon since it is becoming a collaborative effort!

❓ Noah, What Have You Done?

In short, Noah is writing a Practical Resource For New Game Developers. It is also a Case Study for Students Entering Game Dev, a Reminder to Myself That What I Do Is SUPER COOL, and hopefully a Place to Share Passions and Expertise. (Click to expand.)

Basically, at work I've been writing a bunch of documentation for Git, Unity, C#, Game Design, and just general industry stuff and useful shit for game developers and dev-adjacent people. It was meant for onboarding co-op students who are still in school and need a big, easy to understand overview of some practical development concepts.

One day I got home and Minh (Hi Minh!) asked me a Game Dev question relating to coroutines. I realized I had written about it earlier that day. Figured I'd basically just write a public version with all the work-specific stuff taken out.


👋 Welcome

Welcome to my Wiki repository to which you are reading. I will be updating this relatively often with new stuff I learn through practical work at my job, as well as things I've learnt from the various senior developers I talk to at game dev meetups.

Icebreaking, or How I Learned to Stop Worrying and Love the Game

Okay. Don't freak out is my first advice. (Click to expand.)

The most unanimous feeling in all of game development is crippling imposter syndrome.

I have literally never heard someone in Game Development say they don't feel feelings of inadequacy. It's almost just assumed of and by everyone. So much so, that developers will often talk to you about how they're fighting their feelings of inadequacy before talking to you about their game. It's kinda just a good icebreaker, honestly. Guaranteed common ground, and one of the many reasons game developers have eachother's backs.

"Impostor syndrome is a concept describing individuals who are marked by an inability to internalize their accomplishments and a persistent fear of being exposed as a 'fraud'."

- Wikipedia

The truth is even the most beginner programmer is only a few months hard work from being a game-industry-professional. When I first talked to a professional in the field, I was able to comprehend what they were talking about, even after just learning the basics of polymorphism. It's not unattainable.

Everyone is struggling to push their own boundaries, and they're only struggling because nobody teaches anyone else shit.

- Me, I said this.


Now, by working as a game developer, you're also a game designer. You will need to make on-the-fly calls about what is best for the player's experience. (Click to expand.)

For this reason, one of the most important reads for you is The Basics of Fun. This is perhaps the most valuable one-pager you'll read on the wiki, because it will affect how you do everything during development. It's based on a soft understanding of various famous works including Steve Swink's "Game Feel" as well as analysis of some of my own favourite games, and what makes them tick.

I recommend taking the time to learn good protocol surrounding Git, as well as refresh yourself on the basics. This is especially important since I'm going to talk about Git using the commandline interface. There is no guess-work involved, and there aren't any confirmation boxes saying "ARE YOU SURE?". This is mostly because it's how I learnt Git, but it comes with the added benefit of feeling like a hacker-wiz, and you also gain a better understanding of the underlying operations simply because each command is deliberate by nature of the command prompt.

Additionally, on this Wiki there is a boatload of fantastic and less-than-obvious tips, tricks and tools relating to Unity and C# which I have poured my souls (plural) into.


If you're relatively new to the game development field this Wiki is for you. If you went to school with me in SIAT then this Wiki is for you. (Click to expand.)

It doesn't teach you the basics of programming (yet), but it gives you enough extra knowledge that you can rub shoulders with seasoned developers. I know - I was surprised too. This is because games are so broad, not many developers can really afford to go super super deep into one line of research. Therefore often the best thing to do is identify what few things you need to 'learn to be okay at' for a particular project, and 'be okay' at those things for the duration of the project. The most universal knowledge is what I'm going to prioritize in this wiki. Namely, code, design, and the industry.

Frankly, since I wrote this for fellow coworkers in software development positions, it skips a lot of the basics of coding, and that is something I hope to remedy in the future when I have more time. Let me know what concepts in particular - fundamental or otherwise - you'd like covered and I'll prioritize those first.


I have no plans of neglecting this wiki in the future, and I want this resource to grow based on your experiences and expertise too. If you have anything you'd like to add to this documentation, I'll add you as an author! (Click to expand.)

In general I'll only accept contributions if:

  1. I've met you in real life.
  2. You do creative stuff.
  3. You're not an asshole.

And in general I want to encourage you to contribute if:

  1. You're passionate.
  2. There's a gap in the wiki's knowledge.
  3. You're nice.

Things which I don't know how to write about that YOU might.

  1. YOUR OWN PROJECTS
  2. Marketing
  3. Self-Promotion
  4. Animation
  5. 2D Art and Pixel Art
  6. 3D Art
  7. Level Design
  8. Audio Design
  9. Audio Systems
  10. Funding Projects
  11. Funding Studios
  12. Finding Jobs
  13. Networking, Events, GDC
  14. Ethical Guidelines I'm Not Aware of or am Otherwise Underqualified to Talk About
  15. Mental Health
  16. Professionalism
  17. Contract Work / Freelance Work
  18. Initiating Collaboration
  19. Lifestyle Stuff
  20. "How much should I be getting paid?"

And many more!

But I think I can find a place for just about any topics, especially if they pertain to all creatives, and especially if the content is game-applicable. That said I don't want to limit this resource exclusively to games when so much of it is transferrable to other mediums.

If you're interested in contributing there are a few ways to do that, and I'm open to all of them:

  1. Literally teach me something.
    1. I'll write my interpretation down for you!
    2. You'll get acknowledgement and thanks on the wiki!
  2. If you're not comfortable using Git yet, just send me plain text!
    1. Super easy.
    2. I'll worry about adding you as an author, and any images and formatting!
  3. Make a pull request!
    1. You get full control of the markdown (.md) files!
    2. Your name will be etched into the commit history and Contributors section!
    3. You're an author now too!

Thanks in advance, and I hope you'll join me in this little project.

My Favourite Topics

Okay. Now let's dive in. I'm going to point to a few of my favourite sections which you won't necessarily be stoked about or even understand, but maybe there's a spark in there. There's a good chance it'll expand your understanding, even if most of it is putting the cart before the horse.

  1. 👾 The Basics of Fun
  2. 🐙 What Makes Unity Great
  3. 👶 Git Basics
  4. 🌱 Violence as a Tool, Violence as a Crutch

📑 Table of Contents

🚚 Logistics

💰 The Industry (50% Complete)

  1. 👍 The Pros
    1. Community
    2. Dreambuilding
    3. Transferability
  2. 👎 The Cons
    1. Hollywood Has It Easier
    2. Job Security Who?

📁 Git (80% Complete)

  1. 👶 Git Basics
    1. How does it work?
    2. What is a commit?
    3. Okay, so what does the repository look like on my computer?
    4. Committing + Pushing
    5. Pulling
    6. Checkout
    7. Scrutinize Your Commit Messages
    8. Merging
  2. 👹 Advanced Git
    1. Repository Protocol
    2. Feature/Issue Branching Methodology
    3. Resolving Conflicts Manually

🔧 Development

📐 Design (40% Complete)

  1. 🌱 Game Ethics

    1. Violence as a Tool, Violence as a Crutch
    2. Representation, Identity, and Puppeteering
    3. Exploitation, Whales, and Dice
    4. Drawing Artificial Lines
  2. 👾 Game Design

    1. The Basics of Fun
    2. XR-Specific
  3. 📷 Case Studies

    1. Shadow of The Colossus
    2. Dark Souls

🎲 Unity (75% Complete)

  1. 🐙 What Makes Unity Great
    1. Live Updates
    2. Inspector Gadget
    3. The Profiler
    4. Reference IDs
    5. Multiplatform as Hell
  2. 🎻 Best Practices
    1. Know the Costs of Unity Methods
    2. Take Update Loops Seriously
    3. Unity Timesavers
  3. 🏭 Building
    1. The Basics
    2. The Output
    3. Building for Android
  4. 📈 Optimization
    1. The Basics
    2. Noah's Hit-List

Code (50% Complete)

  1. 🎼 C#
    1. Singleton Managers
    2. Coroutines
    3. Enumerators

🐉 Shaders (3% Complete)

  1. 🐜 CG
    1. What is this? A Language For Ants?
    2. Shader Structure
      1. Deferred vs. Forward Rendering
      2. Papa's Proper Use of Properties
      3. Subshader? I Barely Knew Her!
      4. Vertex Shaders, Fragment Shaders
      5. Falling Back
    3. Shading
      1. NdotL
      2. Light Processing
      3. LUTs
      4. Matrix Multiplication
      5. Viewing Angles
    4. Case Studies
      1. Cel Shading

✒️ Authors

Noah Burkholder - http://noahburkholder.com
Logan Buchanan - http://loganbuchanan.com
[Your Name Here]

🙏 Acknowledgments

I'd like to thank Google, as well as the following people:

  • Tony Pacheco - Who helped me write up the first version of the Wiki materials you're reading, especially around Git Methodology and Building. He's really good at sword fighting and sometimes brought his longsword to work.

  • Minh Buinhat - Who reminded me that maybe some people can relate to my passions and would benefit from anything I can teach. Discovered he could ask me about Unity and I would give him 3 hour long tutorials.

  • Logan Buchanan - Who encouraged me to the point I'm comfortable sharing this Wiki. He basically got me through half of my education, whether he knows it or not.

As well as Meri, Stephanie, Andy, Helen, and Bryan for being my first partners in crime.

Additionally I want to thank IndiePod in Vancouver for being an endless source of knowledge, inspiration, community, and talent. I wouldn't consider this Wiki valuable if I hadn't learned a lot of it from you all.

About

Noah is writing about games.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published