Paul Alexander is a game designer at Camouflaj
République’s journey from Kickstarter dream to successful-but-imperiled mobile title has been well-documented on Gamasutra, but if you’ve been unclear about just what Camouflaj has been up to the last couple years, I wouldn’t blame you—Camouflaj has taken the most wayward of paths to complete République, and it hasn’t been easy.
While our team has remained more or less the same size since Episode 1’s release, the game’s scope increased dramatically over time. What we originally envisioned as a 4-6 hour experience for mobile titles ballooned into a 10-15 campaign on platforms for iOS/Android, PC/Mac, and now PlayStation 4.
In addition to producing new episodes for a passionate base of backers and fans, we’ve been critically examining how our 25-person Seattle-based team can not only stay afloat, but remain commercially relevant in an industry that is increasingly shifting, fracturing, and indie-pocalypsing.
It’s been about a year since we began the process of transforming République—a game we pitched as a “one-touch” stealth action game that would bring AAA production values to mobile devices—into a five episode, longform experience on PlayStation 4.
Camouflaj was just coming off a very demanding project: remastering République from the ground up in Unity 5 for our PC/Mac release, a process we painstakingly documented with help from Unity. At the time, we were convinced the incredible visual transformation and reworked controls would be enough to convince the skeptics that this was no mere mobile port.
République shipped on PC and Mac with three of its five episodes and a dramatic graphical upgrade to overwhelmingly positive reviews. I was riding particularly high, feeling so proud of what our team accomplished on a version of Unity that was still in beta. However, the commercial landscape of Steam was tougher than we predicted, which meant we had to get creative about how we would fund the remaining two episodes of the game. Unbeknownst to many team members, the wheels were already turning on what would become the next evolution of République.
What Went Right #1: Creating a Controller Prototype
In late 2014, while the team worked to complete République’s PC/Mac port, studio head Ryan Payton quietly commissioned work on a prototype of the game where players controlled Hope not through touch commands or a mouse click, but via a PS4 controller. Working remotely with Paulo Lafeta, one of the early members of Camouflaj, Ryan produced a test scene that mapped Hope’s movement to the left analog stick and camera movement to the right stick. (Here’s a video of it.) While it doesn’t contain many of the features we ended up shipping with, it pre-empted a lot of the speculation that can drag down big, blue-sky game design arguments—or so Ryan thought.
Almost immediately after Ryan revealed his controller prototype, the Camouflaj design team took issue with it, citing how a PS4 version would directly conflict with two of the game’s four pillars. The first pillar, “Hope Is Alive,” is all about how players influence Hope, but do not directly control her. We designed the game for players (the true heroes of the game) to be a sort of tennis partner for Hope, who has her own AI and opinion on what is unfolding. At times, the gameplay loop on mobile and PC reminded us of RTS controls, with Hope as your solo “hero” unit. Suffice it to say, when we discussed the idea of bringing RTS-like controls to console, it was easy to reference examples of strategy games that had struggled with this.
Another concern the team brought up was the game’s in-world cameras, and how transitioning the game to the DualShock 4 would conflict with another pillar of the game: “Become Big Brother.” République doesn’t have a conventional, over the shoulder third-person camera. Instead, players view the world through security cameras placed throughout the game that switch automatically when Hope enters a trigger volume, or manually change when players hack into another nearby camera.
While the controller prototype clearly pulled influence from Resident Evil’s fixed camera perspectives and auto-switches, the team remained skeptical—République was a stealth game where the slightest wrong move could get you caught, and if the cameras were detrimental to the precision of player controls, we would have a serious usability problem on our hands.
The team’s objections all came to a head during a conference call when Ryan was away in Japan negotiating the publishing agreement with GungHo Online Entertainment. Each designer, including myself, voiced concerns about the “one-to-one” direction of the prototype and suggested alternatives. “Could we place a cursor on-screen to act as a mouse?” “How about designing a new top-down, default camera to give players a better view of the game?” “Maybe Hope goes on rails and players just need to clear her way?” Although Ryan agreed that his “one-to-one” control scheme wasn’t exactly aligned with our pillars, he believed it offered us the best opportunity to broaden the game’s appeal. He noted that while the pillars were important, he had put the prototype in front of several non-developers who were intrigued by it, including the CEO of GungHo.
Screenshots taken while we explored the idea of an alternate camera system
Even though I wanted to experiment with the alternative control methods the design team suggested, I had to admit that the prototype was concrete proof that the game could work well with a controller. With little time to prototype new ideas, I put my ludonarrative dissonance-related concerns aside and focused on solving smaller issues related to the “one-to-one” controller version after Ryan officially signed the deal. With much of Camouflaj’s staff busy creating content for the final two episodes, it fell on me to take charge of the PS4 version and bring focus to its radical new direction.
Our first call was to our development partners at Darkwind Media, a talented engineering group out of New York who did an excellent job on our Android port, to ask if they’d be open to working on this ambitious PS4 version of République.
What Went Right #2: Working With Darkwind Media
Since we began working with Darkwind Media in 2014, we’ve thought of them not as an outsourcing house but as an extension of the core Camouflaj team. So when it came time to bring République to PS4, we kicked off the project with Darkwind by outlining key areas of concern:
- Getting OMNI View to control well on a DualShock 4
- Creating an entirely new movement and cover system for Hope
- Adding all the console-specific bells and whistles (UI, menu navigation)
As you can see in the prototype video, players explored République’s “detective mode”-like OMNI View by moving a cursor to highlight objects. We all agreed that this approach felt clunky, so we needed to explore alternative ways of giving players a sense of full control while in OMNI View. After a few false starts, we designed a system that would allow players to simply press buttons on the DualShock 4 that were assigned to onscreen objects.
We wanted players to internalize the system’s logic by grouping object types to certain buttons. For instance, cameras would only be assigned to the face buttons (Square, X, Circle, Triangle). Working with Rob Cigna at Darkwind, I spec’d out a system that revealed the buttons in a clockwise pattern to the player (Square, then X, then Circle, and then Triangle.) It took a few weeks of iteration, but the results brought the feeling of effortlessly tapping on a screen or clicking a mouse to the PlayStation 4. The under-the-hood logic for how the game chooses which button to show players each object is quite impressive, and all the credit goes to Rob for that.
Earlier OMNI View UI (above) vs final (below)
Getting Hope to move “one-to-one” with the controller was our next challenge, so while I worked with Rob on OMNI View, engineer Adam Romney and I partnered up with our animation team to build an improved animation controller for Hope. We began with an emergency motion capture session to get unique movements and poses for Hope that we never needed previously. We then polished her movements to make sure they had the proper weight and feel you’d associate with a third-person game.
Prototypes for a radar system to help players detect guards. Unfortunately, this didn’t make the cut
When it came to mapping Hope’s movements to the controller, the biggest challenge was implementing her new cover system. We experimented with a few approaches (including a system that forced players to press a button to hug walls) before settling on the final version, which abandoned any waypoint dependencies in favor of designer-authored, navmesh-based cover volumes.
Matt Gall authored a fantastic, designer-friendly setup while Adam stepped in and worked some incredible magic to smooth out crappy corner transitions and garish animation hitches. The strides he made between our PAX Prime build and middle-of-January beta were truly impressive, and erased any concerns the rest of the team had about the game’s controls on PS4.
Hope struggling to take cover
It feels great to look back at this aspect of production and be proud of what we accomplished given how many nights I went home, wracked with self doubt. Up until this point, my only in-engine work on République was level design work on Episode 3 - I was well aware that I was not “the best person for the job.” I was just the only person we had to tackle the PS4’s design.
Darkwind was patient with me throughout development and always communicated concerns they had in a thoughtful manner. I even felt something of a “mind meld” at times with people like UI programmer Richard Selneck who often had solutions to issues faster than I could write them up. In the end, the distance between the two studios (Seattle and New York) ended up not being an issue, and I was able to overcome the anxiety of leading something entirely unknown to me at the beginning.
What Went Wrong #1: Bugs and Instability
Yes, bugs are an unavoidable aspect of game development, but I would be remiss if I didn’t put a spotlight on the sheer amount of instability issues we faced with the PS4 version of République. As I mentioned previously, we upgraded to Unity 5.0 early last year to take advantage of the engine’s new physically based shading features—a herculean task that strengthened our game’s visuals but also resulted in months of extra work and headaches.
To make matters more complicated, we shipped on a beta version of the engine, so when it came time to begin work on the PS4 version, we had to upgrade to the most stable version of Unity. We then split our art pipeline to ease the burden of creating both physically-based (PC/Mac/PS4) and non-physically based (mobile) content.
A major problem related to our platform-specific setup was that every time our artists made changes to physically based content, it had the potential to break any non-physically based materials (and vice versa.) Unsurprisingly, this led to weeks of wasted time while we searched for issues to resolve. We eventually upgraded our Unity version once again (from 5.2.2p2 to 5.2.2p4) during PS4 development to resolve some of our mobile issues—engine-related crashes, incompatibilities between Unity and iOS9—which also cost us valuable time. And then there was a complication we could have never anticipated: something referred to internally as the “111 bug.”
The 111 bug was an issue in previous versions of Unity 5 that resulted in objects in the game world receiving coordinates such as “-.1111111, 1111.1111111, -1111.1111” when playing the game in editor, which would then be permanently changed after un-playing. This bizarre issue had been seen in the past, but only a handful of times in the span of three years. Suddenly, in the midst of PS4 development, it was spreading through the code like a plague. Sometimes it was obvious—a wall or floor showing up where it shouldn’t be—but usually people would unknowingly check the issue into République’s source control, infecting anyone who pulled the latest updates, causing a host of problems which then needed to be traced back to Patient Zero.
With some help from our friends at Unity, we discovered the source of the issue had been resolved as of Unity 5.4, but by then it was way too late to upgrade our project again and risk losing weeks of work. Instead, we were forced to work around it, which meant partaking in the excruciatingly slow process of going line by line and meticulously scanning files for signs of the 111 bug before submitting.
A sample room before and after the 111 bug. Lighting is broken, floor is missing, and walls have moved to the side
Aside from our engine woes, a lot of the code in our game was so deprecated by the time PS4 development began that it was no surprise bugs were appearing. I’m not a programmer, but when you’re routinely seeing comments in the code that say things like “hot fix for gdc 2013 lol DO NOT SHIP”, you’re bound to have some late night crises. If there’s any sort of silver lining to all this, it’s that the 111 bug prompted an eagerness to lay the groundwork for multiplatform support in a much more thorough manner.
What Went Wrong #2: Lack of Resources
In most ways, République’s episodic release model was a blessing. Most studios have a single crack at nailing each aspect of a given game’s production cycle, but with episode, Camouflaj was able to go through the process of shipping new content (and updating older content) on five occasions before shipping on PS4. We also had the advantage of working with the same pipeline and using more or less the same tools with each release, which meant we were getting faster and faster with each episode.
The flipside to all of this is that with each release, the game’s content offering was getting bigger and more complex. By the time we entered full PS4 development, we had five episodes worth of content to manage, but our QA team was the same size. Oftentimes with only two or three QA folks on the game, there just wasn’t enough time for adequate coverage.
We floated the idea of adding more QA members to the team, but the ramp-up time was a big concern. In retrospect it’s clear we should have invested earlier in QA to help us battle through the game’s six platforms and countless device-specific issues that come with the territory when shipping on mobile.
As the game’s final submission date loomed, the burden really fell on every able bodied team member to fix bugs and coordinate with QA folks who had access to the PS4 dev kits. Then, after a full day of work, some team members would come back to the office after dinner and a shower and run through a build from start to finish with no access to the game’s debug commands. By the time the rest of the team showed up for work the next morning, there was a laundry list of high priority fixes that needed to be made.
Despite all this, I never heard moans or gripes from anyone, and I think it boils down to the fact that our previous experiences had given us valuable perspective. It was demoralizing at times, yes; but we had been here before, and we knew we would make it out of the woods.
What Went Right #3: Investing in Smarter Processes
With so many things working against us, we knew it was important that Camouflaj and Darkwind focused on what we could control. When we began PS4 development, Darkwind cloned our existing project and began work in a separate branch, so team members at Camouflaj remained unblocked while we experimented and built the new features that would define our PS4 experience.
When it came time to merge the controller branch back into the main branch, Darkwind worked with resident source control guru Ryan Fedje to minimize the merge’s impact on Camouflaj’s content creation for Episodes 4 and 5. Our Unity 5 transition had actually prepared us for this in some respects, so we weren’t coming into things completely blind.
Speaking of going in blind, I was initially very nervous about single-handedly transforming the game’s five episodes worth of content to support the PS4’s features. Not only was this a monumental amount of work, but this also ran the risk of creating new instability issues across other platforms. Much to the credit of Darkwind, I had an excellent suite of tools that kept me relatively isolated from the rest of the project, so I could implement PS4-specific content—all I needed to do was put my headphones on, load up some Netflix on another monitor, and enter a zen-like state while transitioning the entire game to play nicely with our new controller-based navigation and controls systems.
In between marathon in-editor sessions, the team dealt with cripplingly long build times. At worst, generating a new build could take between 14 to 20 hours. For a Unity game, République is pretty huge, coming in at 529 unique scenes. (For comparison’s sake, Firewatch was 129.) Camouflaj has historically struggled with efficiently getting new builds of the game out and in testers’ hands in a timely fashion due to TestFlight’s finicky nature, but things started to get better once we published on Steam and established a more automated process.
The build times eventually turned a corner once we upgraded our Unity project to 5.2.2p4, began to properly separate physically-based and legacy materials, and invested in a more powerful machine that could create multiple builds simultaneously. When the demand for QA passes ballooned near the end of Episode 5, we were creating five or six builds a day, and our build times were down to around two hours. It was a real lifesaver, and something I wish we’d had for earlier releases.
What Went Wrong #3: Underestimated Work on Platform Specific Features
While many of us at Camouflaj and Darkwind have shipped console games, none of us had experience on PlayStation 4 when we kicked off development. Throughout the eight months of time we spent on the PS4 version, Camouflaj and Darkwind team members had to take on numerous responsibilities that we didn’t initially anticipate, partly because the barrier to entry compared to launching your game on Steam is relatively high.
There’s trophies, rumble support, optimizing the game for PS4, making sure your game’s “save area” conforms to televisions properly, to say nothing of the hundreds of TRC compliancy issues that caught us by surprise. We were forced to overcome lot of unique challenges that resulted from Republique having not been originally designed for console.
One of République’s guiding design philosophies during EP1’s development was that you aren’t just “playing a game”; that it should feel like what you’re experiencing is unfolding in real time on the other side of a phone or tablet. As such, we felt it should have a very minimalistic UI, so we ditched concepts like a pause menu that exposed “game-iness.” As we approached release on PS4, however, it became obvious that playtesters needed more feedback about what Hope was doing, so we threw the concept of “minimalist UI” out the window.
Because République originally shipped with minimal UI on other platforms, Darkwind didn’t have many tools at their disposal to solve issues with quick UI additions. To make matters more difficult, the PS4 version required dozens of unique modifications to play nicely with the DualShock 4, from OMNI View to all the one-off puzzles to the game’s main menu. We even went as far as implementing a heavy-headed, UI-based tutorial for the start of the game to help players understand how to play with a controller. Like many other games before it, UI became a high risk area during the final stages of development. With limited tools, there was really no magic solution, just countless one-off fixes to gradually make the game feel like a native console experience.
We relied heavily on Sony’s documentation and dev forums to power through development, and then received a lot of great PS4-specific feedback from GungHo’s QA team to help us pass Sony certification.
What Went Right #4: Publisher Accountability
When Ryan inked the deal with GungHo, the team was thrilled to be able to focus on completing République. With that excitement, however, came a sense of ambiguity about how this new relationship would affect the game’s development. Historically, the team opted to extend deadlines to increase polish on the game, but now that we had a publishing agreement, the team had to take its milestones more seriously.
PAX Prime 2015 was the team’s first big deadline with GungHo as it marked the official unveiling of the game on PS4 with its brand new control scheme. This was also Camouflaj’s first ever expo, so there was a lot of pressure to get things right.
When I walked onto the PAX floor the night before the show started, I knew we were off to a good start—our République booth was a massive, gorgeous sight that held ten different demo stations. After having several mild panic attacks while trying to get the build working, we were in business. Not only did the entire show go off without a hitch thanks to GungHo, we got a real sense of what big fans they were of our game. This was exactly the kind of support Camouflaj had been longing for.
More than anything though, GungHo’s feedback transformed the team’s thinking and preparation for release. By providing us with a rigorous build schedule, including several practice submissions before the real deal, we were able to catch showstopping items far earlier than we may have otherwise.
What Went Wrong #4: Underestimated Work Involved in Japanese Port
In addition to the feedback they were giving on the game in general, GungHo focused our efforts on streamlining the game for Japanese audiences. As we headed into the final stretch, they became more and more hands on with the game’s develop, providing much-needed scrutiny on the remaining areas of concern. Their Japanese QA team was relentless, sending massive bug reports every day.
It was exhausting to see them writing bugs from an outsider’s perspective, even going so far as to challenge some long-held notions on how certain parts of the game function. To make this more complicated, these bug reports were being delivered to us in Japanese, and came to us courtesy of GungHo’s bug tracking system. Managing bugs in one database was challenging enough, but now we had to juggle two of them.
In order for this to go smoothly, we brought in several Japanese speakers to help organize and respond to the multitude of bugs we were receiving. Many of these bugs were related to localization, another area of our game’s pipeline that had long been a major weak spot, which meant turnarounds on feedback weren’t as fast as we’d have liked. The feedback itself ended up being a big difference maker, despite the gargantuan task to translate and implement. Still, we’ve already begun carefully planning the localization pipeline for our next game...
What Went Wrong #5: Last-Minute Changes
One thing Ryan has done diligently since production on République began is frequently play the game and give detailed feedback. He’s fairly removed from the nuts and bolts of production, which gives him a critical eye.
When Darkwind team members and I would spend days toiling away on a feature, and critique it from the perspective of someone intimately involved, it might have seemed good enough. When Ryan walked to my desk, sat down with the controller, and tore it to shreds, it was tempting to feel a little resentful, but I knew he was operating in the players’ interest.
I’m conflicted about filing the last minute changes Ryan brainstormed under “what went wrong,” because I actually think they benefitted the game greatly. But it certainly would’ve lightened the already overwhelming load if some of these revelations had hit him early on.
We prided ourselves on not simply porting République to PC/Mac, opting instead to transform it from the ground up with Unity 5. While our PS4 version would see those upgrades as well, we still didn’t have a unique “it” feature lined up. When GungHo came to us with the idea of giving Hope outfits that she could change into—some of which could be offered as DLC—the wheels started turning in Ryan’s head. What if these weren’t merely cosmetic, but changed the way Hope and the game behaves? We first sat down with Camouflaj programmer Eric Bergen to keep our ideas grounded. We settled on some pretty cool concepts, which you can learn more about here.
While most of them would end up being offered as limited-time DLC, we had special plans in store for the Student outfit, which would come on disc and feature “Survival Mode.” Supporting Survival Mode was a truly ambitious and, if I’m being honest, slightly out-of-scope endeavor, but Ryan was adamant that Survival Mode could be the definitive play experience on PS4.
Eric seemed very energized by the idea (or maybe he was just happy to be working on something besides performance optimization), so progress was fast, and I was able to make adjustments and test the changes fairly quickly.
Ryan played through Survival Mode and we were all in agreement: it had made a huge impact. I was so relieved to be done with such a high risk feature so close to the release of the game...except I wasn’t. Emboldened by the feedback, Ryan now suggested we introduce a Resident Evil-type “arrange mode” and create a system that randomized the appearance of collectibles, so that no two playthroughs would be the same.
Again, I thought this was a ridiculous request to make at this stage, but I conceded that even though time was running out, “arrange mode” could be a pretty big win. I wish I had thought to sneak the late-night Domino’s Pizza delivery guy in the “Special Thanks” portion of our credits...
Although we had a plan of action for the outfit behaviors, getting them looking good and functional in the game was a tall order in and of itself. We limited our outfit concepts to those that wouldn’t radically transform Hope’s silhouette to avoid skin weighting complications and geo pop-in. I then connected with several talented artists on a Facebook group for Seattle-area indies, who were able to create the outfits far more quickly than our initial estimation.
Despite the last-minute headaches, the outfit feature ended up being a huge difference maker, both in terms of marketing the PS4 version and helping achieve what we initially thought may not be possible.
What Went Right #5: Building The Definitive Version of République on PS4
There’s no way we could have anticipated the bizarre road we’ve ended up taking towards releasing République’s five episodes. We spent years reverse-engineering stealth action titles that utilize 16-button controllers and channeling them into a “one-touch” scheme with our initial release. And then, we set ourselves up for the daunting task of reengineering the reverse-engineered République on PS4.
Playtesting République on PS4 was very difficult, and came way later than we’d hoped. Unlike PC/Mac, which we were able to begin showing to outsiders almost immediately, the PS4 version contained so many dramatic, system-wide changes that I knew we should hold off until they’d progressed past a certain point. It’d be a waste of everyone’s time if we just got feedback like “Hope’s controls aren’t good” and “the cover system feels broken.”
To complicate the time crunch in which we found ourselves, we were dealing with more République than ever. In earlier playtests, we had the luxury of calling up people who’d played previous episodes and asking for their feedback on our latest work. No one had ever played our game on PS4, so we were asking many people to commit 10-15 hours of their time while someone watched and took notes.
My affirmation that it had finally come together—not just PS4, but République as a whole—came during one of these marathon sessions. A friend of the studio (actually one of our designer’s Destiny raid group buddies) committed to playing through the whole game on PS4, one episode per night. He’s an extremely detail-oriented player and analyzes every