Landon McDowell
As game makers, we face the same problems. We want to solve them together.
At Believer, we firmly believe that building better games will come not just from the talent of our designers or the creativity of our artists, it will also come as the building itself gets better.
Every production has a finite number of build updates, build syncs, and playtests. Every developer knows the friction that comes with using and managing the pipeline that facilitates all of that work. In the end, we all answer to Time.
Enter Friendshipper, our best effort at solving the challenges we face, together.
To raise the ceiling, we need to improve the less-than-glamorous ways we update code, share builds, and validate our work. We all have to do it. And we all butt our heads against the realities of time. You can squeeze more in by delaying release, and plenty have tried by crunching their team and burning out creatives, but in the end, we all answer to time. To raise the ceiling for players, we need to radically improve the ways we test and refine our work.
How do we, as a developer community, reach a new frontier of excellence and player service? How can we work against time to elevate each other with the strength of our vision and designs? We change the math, then we share what we’ve learned. Enter Friendshipper: Our first charge towards changing the math.
What is Friendshipper?
Friendshipper is a Git-based platform we created to easily commit code, manage build versions, and distribute them to playtesters and teams. It allows for continuous deployment from multiple authors and easy, quick syncing with the latest changes. With Friendshipper, you can make a code change, commit, and conduct a playtest—even for a remote team—quickly and easily. It will even assign Discord channels to each playtest group.
Most importantly, Friendshipper is yours. The source code is open and available right now on GitHub, alongside other content management and workflow tools as part of our tools repository called Ethos. Thousands of hours have brought it to life, and future development will be no less demanding. But it’s all been worth it.
Just the other day, we were in the middle of a full-team playtest of our in-development cooperative multiplayer game. One of our dozens of testers found bugs that were significantly affecting gameplay. So the testers broke for lunch while a team of devs worked hard to fix the issues and save the playtest. By the time we returned, the bugs had been fixed, the change had been committed, the new build had been distributed to every playtester, and play resumed.
We built and use Friendshipper in our development pipeline, and it allows constant iteration and immediate feedback. We are spending more time discovering fun than fighting tools.
Things to Love
Friendshipper is just getting started (more on that in a bit), but today, we’re already reaping the benefits of its functionality. You too can take advantage of:
- On-demand playtest creation and game server provisioning. Play any build of your game with whomever you want, whenever you want.
- Git repository management for engineers and content creators. Lock files through Git LFS. Submit your work from the Friendshipper UI or from within the Unreal Editor via the Friendshipper Source Control Unreal Plugin.
- Easy distribution of your game and engine binaries. Track build progress and logs all from within the Friendshipper UI.
We built Friendshipper with our own technology stack in mind, so at the moment, it’s pretty heavily coupled to AWS (S3 + EKS), Unreal, and GitHub. If this technology stack matches yours, you should be able to deploy Friendshipper and all of its requirements with ease. If you’re on a different stack, but are interested in these features, come talk to us! We want to make the Friendshipper platform extensible and easy-to-use, and part of why we’re open-sourcing is to help other studios get on board.
Why Share This?
Current industry-wide workflows are old, lumbering, and byzantine. But why is it still this way?
Well, in part, it’s because as an industry we keep reinventing the wheel. Every time a new studio wants to playtest their game, they’re on their own to build a workable deployment solution, wasting effort solving problems that have already been solved. Let’s cut that shit out.
Building games takes guts. They’re massive, risky investments. In a world of large budgets, tight secrecy, and tough schedules, it’s really, really hard to take that first step, to be the first one to critically examine “the way things are” and be willing to spend the time and resources to create something better.
We’ve taken that leap, and now we’re committed to sharing what we’ve created to make the leap less scary.
Any thought of a “competitive advantage” to keeping Friendshipper in-house feels very short-sighted. We believe holding our cards close to the chest doesn’t do us any favors in the long term and degrades our ability to positively impact the player experience. Truly groundbreaking, generational games—in shapes and forms we can’t even imagine yet—won’t come by going it alone. We want our peers to iterate on what we’ve started, showing us new use cases, forms, and features we didn’t expect. We want Friendshipper to be poked and prodded by teams of different sizes, with different goals and existing workflows, so we can learn from each other’s discoveries.
By open sourcing and communicating with each other, we all stand to make more ambitious art in less time, elevating each other to greater heights of expression. Over in our Discord, we’re talking about this new frontier every day, sharing findings, using Friendshipper together, and charting a better path forward.
The result? Better outcomes for developers and, one day, for our players. Hopefully your players too.
What’s Next
We’re going to keep iterating on Friendshipper ourselves, and we pledge to continue opening our efforts to the developer community. You can follow these updates and dive into the code yourself on GitHub. While the source code is now publicly available, setting up and using Friendshipper from scratch has a lot of steps and dependencies. Moving forward, we’ll be spending some time making this process easier and better-documented.
We’ve already begun reflecting on the journey of building Friendshipper, which started with examining the relationship between Git and Unreal Engine, on this very blog. Check out Part 1 and Part 2 of this series and stay tuned for Part 3, where we’ll dive into the creation of Friendshipper itself.
Stay glued to our Discord for the latest help, to share questions with other users, and to talk shop with us.
We believe that both the game industry and the players we serve will benefit from transparency and willingness to challenge established norms. By doing so, we’ve created something that could change how games are made, and only by sharing and iterating will its true potential be realized.
Fearless creatives deserve the very best tools and an industry that doesn’t settle. May Friendshipper be our first vital contribution to this cause. We owe it our players, who dream of worlds only we can create.