I know a lot of people are afraid of threads when programming. I kinda was for a long time. They are confusing at times and can get out of hand as well. The problem is to make a complicated game of any kind you have to learn them. You don’t have to love them, but you have to get used to them so you can do things that games need, like streaming content, animated loading screens, and much more.
In short threading is powerful, but without planning it will knock you on your butt.
In the early days of developing Violent Sol Worlds we did not use any threading. We quickly realized that to do a giant streaming world you would need them. The issue with plugging threading in is that it has to be planned. If you do not plan it out, things will get out of hand quick. The critical issue is design. When you start your game, make sure you think of it in terms of what has to be running on the main thread and what can happen, out of time, with the main thread.
content loading is fairly easy to have happen in the background
What do I mean about main thread? That is the main game loop, often times you care about rendering in that loop and player input etc. The other stuff, like loading content, physics, AI, other strange interesting game-like things, can all be done outside of the main game loop. I learned having something like content loading is fairly easy to have happen in the background.
How you ask? You need to plan that out well. If the game has a list of render entities that get drawn to the screen, you need to code that in a way that things can be added and removed from that list at a random time and not have things blow up. In this way you can have the main thread put requests out to the loader thread to load in and create entities to draw. The loader will work on them on its own timeline and eventually just pop them onto the list to be drawn to the screen.
In short threading is powerful, but without planning it will knock you on your butt. Keep in mind that if planned out from the beginning you will have a powerful tool at your games side. Often times some of the neatest things are done with threading and allow for a better user experience in your game. Happy threading everyone!