# Lessons Learned from Building a Game with MongoDB and Unity

Back in September 2020, my colleagues Nic
Raboy, Karen
Huaulme, and I decided to learn how to
build a game. At the time, Fall Guys was what
our team enjoyed playing together, so we set a goal for ourselves to
build a similar game. We called it Plummeting People! Every week, we'd
stream our process live on Twitch.

As you can imagine, building a game is not an easy task; add to that
fact that we were all mostly new to game development and you have a
whirlwind of lessons learned while learning in public. After spending
the last four months of 2020 building and streaming, I've compiled the
lessons learned while going through this process, starting from the
first stream.

>
>
>📺️ Watch the full series
>here
>(YouTube playlist)! And the
>repo is
>available too.
>
>

## Stream 1: Designing a Strategy to Develop a Game with Unity and MongoDB

As with most things in life, ambitious endeavors always start out with
some excitement, energy, and overall enthusiasm for the new thing ahead.
That's exactly how our game started! Nic, Karen, and I had a wonderful
stream setting the foundation for our game. What were we going to build?
What tools would we use? What were our short-term and long-term goals?
We laid it all out on a nice Jamboard. We even incorporated our chat's
ideas and suggestions!

>
>
>:youtube]{vid=XAvy2BouZ1Q}
>
>Watch us plan our strategy for Plummeting People here!
>
>

### Lessons Learned

-   It's always good to have a plan; it's even better to have a flexible
    plan.
-   Though we separated our ideas into logical sections on our Jamboard,
    it would have been more helpful to have rough deadlines and a
    solidified understanding of what our minimum viable product (MVP)
    was going to be.

## Stream 2: Create a User Profile Store for a Game with MongoDB, Part 1

>
>
>
>
>

## Stream 3: Create a User Profile Store for a Game with MongoDB, Part 2

>
>
>
>
>

### Lessons Learned

-   Sometimes, things will spill into an additional stream, as seen
    here. In order to fully show how a user profile store could work, we
    pushed the remaining portions into another stream, and that's OK!

## Stream 4: 2D Objects and 2D Physics

>
>
>
>
>

## Stream 5: Using Unity's Tilemap Creator

>
>
>
>
>

### Lessons Learned

-   Teammates get sick every once in a while! As you saw in the last two
    streams, I was out, and then Karen was out. Having an awesome team
    to cover you makes it much easier to be consistent when it comes to
    streaming.
-   Tilemap editors are a pretty neat and non-intimidating way to begin
    creating custom levels in Unity!

## Stream 6: Adding Obstacles and Other Physics to a 2D Game

>
>
>
>
>

### Lessons Learned

-   As you may have noticed, we changed our streaming schedule from
    weekly to every other week, and that helped immensely. With all of
    the work we do as Developer Advocates, setting the ambitious goal of
    streaming every week left us no time to focus and learn more about
    game development!
-   Sometimes, reworking the schedule to make sure there's **more**
    breathing room for you is what's needed.

## Stream 7: Making Web Requests from Unity

>
>
>
>
>

## Stream 8: Programmatically Generating GameObjects in Unity

>
>
>
>
>

### Lessons Learned

-   As you become comfortable with a new technology, it's OK to go back
    and improve what you've built upon! In this case, we started out
    with a bunch of game objects that were copied and pasted, but found
    that the proper way was to 1) create prefabs and 2) programmatically
    generate those game objects.
-   Learning in public and showing these moments make for a more
    realistic display of how we learn!

## Stream 9: Talking Some MongoDB, Playing Some Fall Guys

>
>
>
>
>

### Lessons Learned

-   Sometimes, you gotta play video games for research! That's exactly
    what we did while also taking a much needed break.
-   It's also always fun to see the human side of things, and that part
    of us plays a lot of video games!

## Stream 10: A Recap on What We've Built

>
>
>
>
>

### Lessons Learned

-   After season one finished, it was rewarding to see what we had
    accomplished so far! It sometimes takes a reflective episode like
    this one to see that consistent habits do lead to something.
-   Though we didn't get to everything we wanted to in our Jamboard, we
    learned way more about game development than ever before.
-   We also learned how to improve for our next season of game
    development streams. One of those factors is focusing on one full
    game a month! You can [catch the first one
    here, where Nic and I build an
    infinite runner game in Unity.

## Summary

I hope this article has given you some insight into learning in public,
what it takes to stream your learning process, and how to continue
improving!

>
>
>📺️ Don't forget to watch the full season
>here
>(YouTube playlist)! And poke around in the code by cloning our
>repo.
>
>

If you're interested in learning more about game development, check out
the following resources:

-   Creating a Multiplayer Drawing Game with Phaser and
    MongoDB
-   Build an Infinite Runner Game with Unity and the Realm Unity
    SDK
-   Developing a Side-Scrolling Platformer Game with Unity and MongoDB
    Realm

If you have any questions about any of our episodes from this season, I
encourage you to join the MongoDB
Community. It's a great place to ask
questions! And if you tag me `@adriennetacke`, I'll be able to see your
questions.

Lastly, be sure to follow us on Twitch
so you never miss a stream! Nic and I will be doing our next game dev
stream on March 26, so see you there!