Are We Screwed? Episode #2 – UI Madness

How to deal with user interface madness… or fail doing so.

If you are new to this dev blog, and want to catch up, check out the previous episodes:

Development Update

Can you hear the roaring sound of the alpha? No? Well, that’s because there is no sound in the game yet. However, gameplay-wise we are getting there!

We Are Screwed! features a unique split-screen view that shows you both the inside of your spaceship as well as what’s going on outside the ship. For a long time we had a rather polished inside scene right next to a more or less blocked out version of the outside/surroundings. In the last couple of days, things finally started to come together, check out this sneak peek:

Welcome to the Space Scrapyard!
Welcome to the Space Scrapyard!

We tried surviving the hottest days of the year (so far), and we partially succeeded. Could you all comment “I’m ok” so that I know for sure? We don’t have AC in the office, but luckily, a big metal fan was there to help out – as can be seen in last week’s stream recording:

As with every blog post, I wanted to choose a topic that we had to deal with during the sprint. First, I wasn’t sure what to pick, but at one of our super rare meetings at the coffee machine, Felix strongly confirmed that we must talk about…

User Interface Madness

In the last two blog posts I wrote a lot about planning and time estimations. Let’s now come to the most underestimated type of them all: User interfaces. When you start planning a project, you typically have a ballpark figure in mind when estimating all the tasks. In almost all our projects, user interface is typically the thing that does not get enough time in schedules.

So I asked a few people on the team what they thought about estimating user interface creation…

Estimating the creation of user interfaces is the root of all evil.

Everyone on the team
Not fake.

But why is that? Let’s take a look at it step by step. Before starting the actual work on the UI, there is the situation were you have to block out a certain amount of time in your schedule. “Alright, let’s just assume 20 hours for this, it’s just this simple menu”, is something to be heard at that time. The dilemma is right there: You have no idea how the UI is going to look like, how the user interaction works in detail – hell, you don’t even have a mockup.

So someone on the team will start working on a mockup for it, eating up time from the original estimation. Most of the times, it needs a second iteration for getting this right. Next, maybe someone else starts implementing that mockup, and there comes the next issue: Mockups are never complete. They are always lacking something. Maybe there is this additional panel when you click on this button on the second subpanel of the third tab, or you realize that mockups are often just static images that do not show any animations, effects, fading, or timing.

Then, when you have the first version working in the game, you realize that it needs another iteration because it does not work as smoothly as expected, or some things are not clear to the player – and so you put yet more time into it. How much is now left of those 20 hours?

And so the new UI makes it into the actual game and is being tested for the first time. There is more feedback and more little details where improvements can be done.

It just takes so many iterations to get everything right.

It can help a lot to look at other games, and how they solved similar menus, HUDs, widgets, or UI panels. Sometimes you don’t have to reinvent the wheel. Also, make sure to playtest with fresh players who have not seen any of the previous iterations, otherwise they might be biased or used to what they were experiencing before.

Here is a magic rule of thumb for estimating UI tasks. First, think of all the steps and number of iterations it is probably going to take. Be aware of the fact that mockups are never complete, usability needs to be discussed once you created those mockups. Break down UI work into granular tasks, don’t assume any hours before thinking about specifics and details. Ask yourself about the level of quality and polish you are aiming for. Think about the workflow and the people needed to actually create it – sometimes it’s not just one person, but a lot of people involved as you have to deal with mockup creation, implementation, animations, and effects.

Then, together with the team, do a conservative estimation of the work to be done, and correct it as follows:

  • Optimistic developer? Double the estimate.
  • Experienced developer? Still double the estimate.

We would love to hear your thoughts, and discuss your experiences with creating or dealing with user interfaces – feel free to reach out, write a comment here, or hang out with us on our Discord.

And now, for the fun of it, here is a comparison of how the options screen evolved in We Are Screwed!

Oh wait, why is the “Apply Screen Settings” button highlighted in green here?! Oh no, we need another iteration – this needs to be fixed!

To be continued…

In the meantime, please feel free to reach out via:

It took us 39870 coffees to get this far.

Are We Screwed? Episode #1 – Let’s Discuss Discussions

Curious what happened last week? We Are Screwed! Also, let’s discuss discussions!

Welcome to another episode of our We Are Screwed! production blog. If you missed the introduction, here is episode #0.

Development Update

We work in two week sprints. Typically. Well, wait, there are some public holidays, then there are people on vacation… so the current sprint was only running for 7 work days. Adding bridge days to the team’s schedule isn’t a good idea either, so sometimes sprints are just shorter.

As we are getting closer to alpha, of course we have been bugfixing a lot in this sprint.

Hunting a bug – it could be here, here, or here.

Some of those bugs were discovered in the playtesting stream at the end of the previous sprint. It’s actually quite useful to create clips on Twitch as you encounter issues. Thanks to our nice community for helping us out with that!

If you missed the stream, here is a recording:

We Are Screwed! playtesting session – are you OWLright?

Play Austria

We exhibited the game at Play Austria in Vienna last week, and needed to decide which build to show there. So we evaluated the build from the previous sprint, and then prioritized issues and bugs to be fixed for the event.

It’s always a good idea to have an older build ready to use as a fallback (and you will have one once you manage to survive at least one event!), but aside from a rare outside screen/possible camera issue, using the latest one went well for us this time. We received a lot of great feedback at the event – thanks to everyone who came by to play We Are Screwed!

Let’s Discuss Discussions!

Imagine you want to implement important feature A in the coming sprint. The team is confident that it can be done within just a couple of hours, and there is enough time left in the schedule. Should you do it? Well, it depends.

  • Are all the prerequisites met to go ahead and implement this?
  • Is the feature specified well enough, both technically and gameplay-wise?
  • Are there any dependencies to be resolved in the same sprint?

What happens a lot, is that when discussing the tasks for the sprint, you are not exactly sure what the game design looks like in detail for a feature. Most of the time, you have a basic idea where you want to go with this, but the details may not have been fleshed out yet.

“Ah, let’s just discuss this when we get there, and it will still get done in this sprint, right?”

No. In almost every instance, there are multiple people involved in this discussion and the decisions to be made. If you have the discussion and the implementation planned for the same sprint, it is very likely that it is not going to be implemented. The reason for this is very simple: Discussions tend to be postponed a lot, because people are busy. They are working hard on the game, fixing bugs, and adding great pieces of art. When asked to start a discussion, the answer is always something like in a couple of hours, tomorrow, or even next week.

What we are trying to do here, is to have discussions scheduled for one sprint, but the implementation of its outcome in the next one. That enables the team to move around the actual date of their discussion meeting to their liking – and it’s not an issue even if it’s right before your TGIF round of beers.

However, there is another important lesson to learn about discussions: You never know how long they will take. It might be the rare case to decide something within five minutes, but in general, you don’t know whether it will take you one hour, two hours, or maybe six. At first, we tried to plan discussions as tickets, and give them our best guesstimate. It just didn’t work. So we changed the workflow here a bit, and while we still have tickets in our system for discussion, there are no time estimations on those tickets. They only act as reminders – and it’s a good thing to be reminded that we need to discuss something like the stage 1 boss, right?

We also don’t log work hours to those discussion tickets, because this would tamper with the burndown chart. The idea is to log discussion hours somewhere else (we do this via Toggl), so that you are able to reevaluate the overall discussion vs. work percentage. Only schedule a certain percentage to development work, and leave enough time for discussions. Taking a look at previous sprints’ actual percentage will help you plan for the next one.

To be continued…

In the meantime, please feel free to reach out via:

It took us 39684 coffees to get this far.

Are We Screwed? Episode #0 – Time Estimations

At Rarebyte, we are always working on multiple projects at the same time. Some of those projects are contract work, while some others are our own IPs. Developing games can be a risky business, and that’s why we – and probably a lot of other studios – chose this strategy for surviving as an indie studio.

After more than 12 years in the industry, we have to announce that…

…is the title of our latest game!

Yes, I might have used that kind of introduction (with a distinct pause) at the Subotron Live Pitch event which we won last year – and thanks to the organizers, we will be showcasing our game at the Indie Arena Booth at this year’s Gamescom.

We Are Screwed! is a space action local coop game, and we have been working on it for about 10 months now. If you have been following its development, you might have already seen it in one of our playtesting live streams (or a recording on YouTube).

We Are Screwed! Playtesting with Nef

You are the rag-tag crew of the worst space vessel in the galaxy, but that is exactly why you are destined to boldly go where no one has screwed up before!

The game was originally a prototype by Felix, one of our programmers, who created a first playable in his spare time, which we then turned into a Rarebyte project, and added more people to the development team. There has been a long period of prototyping, experimenting, and pre-production.

We Are Screwed! Prototype Trailer with “Programmer Art Style”

While it is a good thing to be able to experiment a lot before moving to (full) production, it can be a bit chaotic when trying to coordinate everything for an upcoming deadline, playtest builds, or for showcasing the game at an event.

As we are now getting closer to an alpha version of the game, we decided that this is the right time to add an internal producer. I was taking care of the business side of the project before, and also streaming our playtesting sessions (sometimes with great guests in our studio, sometimes with the nice people from our community), but from now on I will also be responsible for internal producing.

As We Are Screwed! is our own IP, we will be able to share a lot about the game, its development, and the overall process of creating it. We’ve now started working in two week sprints – and just by changing the process, the typical problems come up.

Time Estimations

“Give me 2 days!”

Scotty

Although we might be repairing and pimping space ships in our game – just like Scotty! – getting time estimations right is a very difficult task. Motivation and optimism are good ingredients for development in general, but really bad ones when it comes to planning and schedules. Estimating tasks is nothing you will get right from the very beginning. It relies on both the time estimation skills of the developer looking at a task, and the producer gauging the developer’s estimation.

Good questions are:

  • How much overhead will there be for discussions?
  • What is a good target work load percentage for a developer?
  • Is there any time scheduled to be used up by unforeseen events (e.g. sick leave, or an annoying crash bug)?
  • What are the dependencies of multiple tasks to be done by multiple developers?

All those questions cannot be answered in the first sprint. It needs time, data, and (re)evaluation to be able to get better at estimating tasks and making schedules. It really is a continuous process.

In the coming weeks, I will create more posts for our freshly revived dev blog, and hopefully write down some insights we gain during the development of We Are Screwed!

To be continued…

In the meantime, please feel free to reach out via:

reK ReplayKit Plugin for iOS and Unity 5.3.x

If you are experiencing problems with version 1.0 of reK ReplayKit Plugin for iOS running in Unity 5.3, here are some technical details and a quick fix while we re-submit a fixed package to the AssetStore for review.

The problem is that Unity 5.3 introduced some changes to how [ExecuteInEditMode] and DontDestroyOnLoad() works, which results in the destruction of the reK prefab instance whenever you open a test scene in the editor or drag the prefab into your own scene.

In order to fix this, just locate the Awake() call in UnityReplayKit.cs and change this

if (dontDestroyOnLoad == true) {
  DontDestroyOnLoad(gameObject);
}

into

if (Application.isPlaying == true && dontDestroyOnLoad == true) {
  DontDestroyOnLoad(gameObject);
}

and you are done.

The fix will ship with the next update of reK.