Remote Game Dev: Life With and Beyond Apps
Whether you were a part of a corporate or just working on your dream out of your basement, no one could see it coming. Majority of game developers working out of their homes? Are you joking?
But here we are now. Everyone from corporates to small teams is not only getting introduced to it but are starting to embrace it. I am, of course, talking about the remote and work-from-home culture.
Now, I am not an expert to promote one style over the other, but as a six-year-old indie working remotely with people from all around the world, I have a thing or two to share which might make it easier for you to adapt to this new routine.
I’ve been thinking about writing it down for a while now, but no thanks to the current situation, I believe this is an excellent time to share something like this (and get relatively more hits /s).
You should note that
…this post is NOT a comparison between different tools or apps to find out which one is the best. It highlights a variety of tools I personally use, and that’s it. I strongly suggest that you play around with multiple tools of the same type to see which ones suit you best. Please don’t adapt to someone else’ work style just because they believe it’s the best.
With this post, I also want to highlight other things which have little or nothing to do with the tools you use. Embracing these things will not only help you efficiently make the most out of this WFH/Remote routine but also make you a better teammate.
Without further ado, let’s jump right in!
Chat and feedback
The heart and soul of game dev, doesn’t matter if it’s offline or online. Communicating with your team is not only crucial to align the project’s vision, but also to maintain the team’s chemistry. With a plethora of apps out there to connect you with your team, there’s one pretty common name – Slack.
What I really like about Slack is that it allows you to create a ‘Channel’ to bring all the members around a specific topic/designation/feature together. Think of it as a team-wide chat group which can either be Private (not listed under Channels) or Public (anyone in the team can see and join).
I usually use channels to unite everyone working on a specific feature. For example, in the screenshot above, you see a private channel called “bonus-pack”, which is a shared space for everyone involved in the bonus pack update to chat and share stuff. Alternatively, I use channels to create a link between artists and devs for them to brainstorm and solve problems while handing over the necessary assets.
If you prefer direct messaging, you have that too. And you can also create groups for DMs with multiple people if channels are not your thing.
Notice the number “2” next to the names – that’s a DM group with two members. Pretty handy if you just want an opinion quickly.
Another cool thing about Slack is ‘threads’. Every message in a group/channel/dm can be converted into a separate thread. Pretty handy when you need to direct your conversation to a particular topic or collect feedback on a specific thing.
Notice “3 replies” below the image? That means that a particular message is a thread, consisting of multiple replies. Now, whenever I want to know what exactly happened to that specific message, I can just open its thread and see all the responses. Pretty cool, right?
Slack also makes it easy to work with someone with a different time zone, as it’s often the case with us. A member can post messages or share an asset which requires feedback, and you can respond in your ideal time frame. Threads make it super easy to share feedback and stay on top of conversations. It even warns you when you try to send a message to someone who doesn’t share your time zone and might be asleep.
Moreover, Slack supports direct integration with popular apps such as Todoist, Asana, Trello, and Github. Though the one I use most often is the integration with Github/Bitbucket, which allows me to trigger messages whenever there’s a new commit in our project repo. That enables me to keep track of the repo progress and review it accordingly.
Slack has natives apps for iOS and Android, so staying on top of things is easy while you are away from your computer.
If you don’t mind paying a fee per month, you can even have a user as “Guest” which can only see specific channels/users on your Slack workspace. Quite useful for working with freelancers for a short while when you don’t want to share the entire workspace and all its messages with them. Alternatively, you can always create a new workspace for each game/project that you work on if you are working with different teams.
Though Slack supports audio and video calls, I’ve always find Whatsapp to be a great alternative. It just feels “quicker” to open up Whatsapp and call someone. We don’t call each other a lot, probably because we spend most of our day chatting on Slack. But there are times when you just can’t explain your innovation over chat, and that’s when Whatsapp calling comes to the rescue.
As a Game Designer and a Producer (woot!), it’s often my responsibility to plan out the timeline and make sure everyone is aligned to it.
My journey as a responsible Producer started with Trello, but soon I shifted to a wonderful tool called ‘HacknPlan’. It follows the same Kanban-style layout like Trello but provides better configuration for game developers with custom tags, and categories (game design, art, programming). Heck, you can even write and structure the entire GDD in it, but I’ve never tried it out.
HnP makes it very easy to categorise tasks in milestones, with each milestone having its separate board and timeline. Furthermore, each board can have its separate task (or a story which is like a collection of tasks) or sub-tasks. You can even add a dependency on a task, associating it with another task’s completion.
It does so much more, from logging time to estimations, HnP really is the most feature-filled task management I could lay my hands on because it does so many things out of the box. And when I need to catch up with recent updates from all team members and the project’s current state, I just open the Dashboard, and I’m treated with a set of fancy metrics.
The free plan has more than enough features to keep you satisfied, with the Premium plan extending the storage while providing some extra features.
I consider task management to be one of the most important responsibilities I have is because not all of us share the same time zone. Whenever someone wants to spend time on the project but doesn’t really know what to do, the HnP board helps them pick their tasks. Since I order all the tasks based on their priority, it becomes easy for a developer or an artist to figure out a solution to the “what’s next?” problem.
The only drawback that HnP has is that there are no apps for either Android or iOS so keeping a tab on your tasks while you’re out with the boys (or girls) can become somewhat tricky. But you can always load up the website via your phone’s browser, and it adapts to your screen, quite effectively.
Game Development involves a lot of game…data. Because we often deal with a massive chunk of sprites and 3D models, having a shared space to store and fetch assets is crucial, especially in times when the developer wants a specific sprite but the artist is sleeping because it’s 3 in the morning for them.
Some of the rules we like to follow with the assets:
- Proper naming conventions: A file’s name should be enough to convey its nature, even if it isn’t related to your field.
- Proper folder categorisation: Dealing with a lot of files can become a hassle even if the file name is sensible but isn’t categorised concerning its technical category. Each project is first classified into base categories with each category further expanded based on the discipline.
Google Drive Personal gives you 15GB of storage, which is doubled if you’re a GSuite user, which is more than enough to store assets of multiple projects. It’s also a good practice to have a local backup on a hard disk if things go wrong.
Apart from sharing assets, it should be super simple for anyone in the team to play and test the game in their Unity Editor. You can’t really compile and share zips whenever you make a change in the game’s codebase. One of the most widely used solution to tackle this is Git version control.
The game’s repository is hosted on either Github or Bitbucket, and we create separate branches for anyone who’s involved in the technical side of the game. One thing we learned early on is to restrict your master (or primary) branch and only allow updates to it in the form of Pull Requests. Having separate branches safeguards the main branch and avoid breakdowns. Having the main branch which reflects the stable version of the game also makes sure it’s easy to create/fix features without affecting the working copy of the game.
Some of the examples for having different branches:
- New content update
- Experimenting with a new Unity version
- Art tests
- New libraries
Life Beyond Apps
Earlier in this post, I had mentioned that there are things which I feel are essential to maintain a healthy-yet-productive lifestyle while working with a remote team. Using the right set of tools definitely helps you stay on top of this routine, but things like flexibility and your relationship with your team empower you to go beyond.
One of the prominent reasons behind someone wanting to work with you on your project (apart from how cool your project is) is because they prefer flexibility over strict corporate routines. There are times when we work with someone who might have other commitments, and their daily availability might not match with the team. In this case, it’s crucial to have an open mind and respect their routine. During the last phases of Possessions’ development, our artist was facing some financial difficulties which forced them to get a day job. Thanks to the well-structured tasks, they were able to smoothly perform their duties in whatever time they felt comfortable, as long as we met our deadlines. That sense of understanding helped us strengthen our bond and friendship.
It is also vital that the team understand timelines and the urgency that comes with working with publishers. Over the last few years, we are lucky to work with people who realise the importance of a milestone and make time for deadlines, despite promoting flexibility.
Everyone in the team, irrespective of their roles, should be informed about the project, pre and post-launch. It’s like pouring kerosene over a fire. Having a public task board helps them stay in sync with the state of the project and watch it come to life.
But it doesn’t stop there. I make sure that I share everything business or finance-related, at least with the core members of the team, to avoid keeping them in the shadow. Knowing about the game’s performance post-launch, whether in the form of media reviews or award nominations, acts as an emotional reward in exchange for everyone’s hard work.
Make love not war
Creating a game is a collaborative process, at least for most of us. It’s a long journey, and you meet a lot of people along the way. If you are setting up a team for a particular project, chances are you will be interacting with them for at least a year, if not longer. So it only makes sense to turn your teammates into your friends. Don’t just restrict your relationship to a professional arrangement, make time to have some fun together, at least virtually.
We worked on Possessions for more than three years, and there were days when we missed work, only to team-up and win battles in Counter-Strike and FIFA. Note that before Possessions, we had never met each, but during this tiring journey, I made new friends and now they are some of the best friends I have.
Before the release of Possessions, the core programmer behind the game took out time to travel to my city and spend a week on wrapping up the game. That one week is still one of the most fun weeks I’ve encountered in my game dev journey, even though we were crunching like crazy, for almost 14 hours a day.
I can’t stress enough on the difference between creating a game with your friends vs creating it with your colleagues. Since not all of us get the opportunity to make a game with their buddies, why not convert your teammates into one?
Like I already mentioned, choosing the right tool depends on a lot of factors and your personal requirements, and thanks to almost all of those tools offering free and trial versions, it doesn’t take a while to test them all and pick a winner. And that’s the easy part.
The hard part is finding like-minded people to work with and building a long-lasting relationship with them.
With that, we come to an end to this little but (hopefully) insightful post. I’d love to know more about your preferred tools of the trade and why you like them.