Why Isn’t Academia: School Simulator Selling as Well as Other Games?

Sorry for the rather clickbaity title! This will actually be a rather dry and boring dissection of why our game hasn’t done as well as similar games, and ideas for doing better.  Academia : School Simulator (henceforth known as Academia) has been out since September 2017 and has done pretty well for Squeaky Wheel. It recently went past the 50000 unit mark and was making a decent profit, at least until the dreaded Steam Algocalypse of October 2018, from which it never truly recovered.  We do have some savings built up and we’re more or less breaking even every month. Being on that knife’s edge of profitability does keep me up though, and I’ve recently started wondering, why hasn’t Academia been quite as successful as other, very similar games? I decided to do a deep dive and compare notes with some other trusted indie developers.  These are the results.

PS: I want to make it clear that we realize how lucky we are to be one of the few devs that are even surviving relatively comfortably. I’m just thinking of this an experiment, ie all things being equal why would one game do worse?

The games to be compared are:

We are comparing these games because they are the most directly comparable to Academia in these ways:

  • Graphics: All of them have a graphical lineage from Prison Architect (for which I was the artist), with some variation.

  • Team Size: Relatively similar team sizes

  • Marketing : Similar marketing output, which is to say that aside from doing their own marketing, none of these games have really gotten big marketing pushes.

  • Originality : These games are building off a relatively established framework. Obviously they are unique in their own ways, but they are different mostly in theme, not gameplay.

  • Launch Timing : These games came out within one year of each other, so for the most part the timing argument can be said to be neutral (ie one game does not have a huge advantage over the other due to being first).

  • Early Access : All these games are currently in Early Access.

  • Quality : I am coming in with the assumption that all these games are of relatively equal quality. That is to say one of these games is not clearly superior to the others at first glance.

We are excluding the following games from this comparison :

  • Prison Architect

  • Rimworld

Prison Architect can be said to have reintroduced the business sim genre to the world when it came out, and was wildly successful for a variety of reasons.  We cannot compare to that. Rimworld, while having similar graphics, is essentially a storytelling game similar to Dwarf Fortress, making it a massively different game.  Both games also came out much earlier, which means they have the benefit of not dealing with any “sim fatigue” that may be creeping in. In short, these super successful game are not a good comparison to Academia.

Assumed Units Sold

The goal of this exercise is to figure out why Academia hasn’t quite sold the same amount of units as these other very similar games.  We will not be measuring actual units sold, but merely comparing the number of reviews and using that as a proxy for units sold.

As of June 29, 2019, these are the numbers of reviews per game:

  • Academia : 522

  • Sim Airport : 1740

  • Airport CEO : 1772

  • ABITM : 982

Based on the above numbers we can say that very roughly, ABITM has sold twice as many units as Academia, and Airport CEO and Sim Airport have sold 3 times as many units as Academia. 

Pricing

  • Academia : $20

  • Sim Airport : $20

  • Airport CEO : $16

  • ABITM : $15

In terms of pricing the games are pretty close to each other.  ABITM’s lower price point may have helped give it an edge over Academia, but it has sold less than both Sim Airport and Airport CEO, so lower pricing doesn’t seem to necessarily lead to more units sold.

Launch Date

  • Academia : 8 Sep, 2017 avg. reviews/month to date = 24

  • Sim Airport : 7 Mar, 2017 avg. reviews/month to date = 62

  • Airport CEO : 29 Sep, 2017 avg. reviews/month to date = 81

  • ABITM : 4 Nov, 2016 avg. reviews/month to date = 30

The most striking thing here is that Academia and Airport CEO launched at basically the same time, but given that amount of time Airport CEO averages 81 reviews a month and Academia averaged 24 views a month.  

Trailer Comparison

There has been a lot of talk about how important trailers are to a game’s launch. Mike Rose in particular has mentioned in one of rhe GDC talks (I can’t remember which one in particular) that a good launch trailer is key to success. So let’s compare the numbers between the launch trailers of each game on Youtube:

These are current numbers, as I’m not aware of any way to access historical data.  There are some interesting comparisons to be made here.

  1. Airport CEO had the most views at almost 3x the number of views of Sim Airport, however this did not translate to 3x more sales.

  2. Academia had about 1.3x more views and ABITM had about 2x more views versus Sim Airport, but Sim Airport has outsold both Academia and ABITM

My conclusion is that while it is very important for your trailers to hit a certain mass (say above 20k views), after that a lot of other different things come into play when it comes to unit sales.

Sum of Top 5 Video Views on Youtube

While the launch trailer aims to measure initial impact and interest, this aims to measure long term interest in the game.  I am aware that there is a better way to do this via Steamspy, but I currently do not have an account set up with them so this is a proxy. I will add the top 5 videos for each game based on viewer count and compare them.

  • Academia : 9584000

  • Sim Airport: 2240000

  • Airport CEO: 1104000

  • ABITM: 1577000

Academia is clearly the winner here, with an almost 5x lead over Sim Airport. Our sales data also shows that we unit sales peaked during the times when these major streamers (jacksepticeye, DanTFM etc.) played our games. It seems clear that despite having a good lead in terms of views, it hasn’t guaranteed that Academia would do better over the other games.

Theme Comparison

When we made the decision to do a school-themed game, the thought process was that it would be relatable since everyone has (in the economic class that can afford to play games for leisure) has been to school. 

Clearly this was not a winning strategy, as it seems running a mall and running an airport (despite the fact that two games are duking it out) are still making more sales than a game about running a school.

Some developers did mention that the theme of the game did not particularly draw them. While the power fantasy of running an airport or mall may stoke entrepreneurial dreams, running a school may not quite hit those same notes.  It could be that there is a mismatch in theme and genre here, and that a school game might have worked best as an adventure game or even a visual novel, since this is where the story elements of running a school might shine.

Marketing Comparison

I am not aware of the actual marketing spends of any of these companies.  However I am on friendly terms with all of them, and as far as I can tell, none of them have made any real investments in marketing, whether it be purchasing ads or even showing up at conventions.

I know for a fact that the Sim Airport guy is very averse to going to conventions, he wasn’t particularly keen on going to GDC.  He’s also mentioned he hasn’t done a lot marketing, adhering to the belief that people buy the game “because it’s good”

ABITM is a dev based somewhere in France who also doesn’t really do the convention circuit, although I’m not aware of any marketing or ad spends in his part.

The only time I heard of Airport CEO in media or conventions was when Jason Rohrer mentioned it in his talk at GDC.

As far as I know none of us are doing any major efforts in terms of marketing, ad spends, or conventions, and yet Academia  has sold the least of the four games.

Youtube subscribers on company account

Another form of marketing is having your own Youtube account and pushing out videos.  This is something that Prison Architect and Production Line have used to very good effect.  Academia did this very well early on but we have lapsed.

Airport CEO has a very clear lead here, with Sim Airport coming a distant second. You could make the argument that community engagement through having a Youtube channel is a key thing we could be improving on.

As a counterpoint however ABITM has a meager 235 subscribers but has twice as many sales as Academia.

Another interesting point is that Airport CEO and Sim Airport have chosen to make channels out of their games, while Academia and ABITM are using their studio channels.  There is a case to be made that a game having its own channel increases the chances that people will find it, and also helps with brand building for the game.

Game/Company Website

These are links to company or game websites with little analysis except to say that Sim Airport recently updated their website, while ABITM seems to be the simplest website of them all. None of the websites seem to convey any advantage to any of the games.

Review Score Percentage

Review score are a touchy subject when it comes to games on Steam.  Steam reps will insist to their death that review scores have zero effect on their algorithm while indie developers like Cliffski will yell at you to get your total review scores percentage back up to 70% because it’s THAT IMPORTANT. 

When I first wrote this, the review scores were:

  • Academia : 68%

  • Sim Airport: 77%

  • Airport CEO: 78%

  • ABITM: 82%

Overall ABITM is in the lead here, but not by much.  And despite this, both Airport games have easily outsold ABITM. So while Review Score must have some psychological effect on a player’s decision to buy a game or not, in this case there is no clear correlation.

Recently Academia’s total review score percentage hit 70% again, so it will be interesting to see if this has any effect on future sales.

Deepest Discount

One could argue that one of the games might be doing deeper discounts to pick up more units.  During the 2019 Steam summer sale these were the discounts of each game:

  • Academia : 25%

  • Sim Airport: 40%

  • Airport CEO: 30%

  • ABITM: 40%

We assume that the Steam Summer Sale is the most recent and therefore the deepest discount for each of these games, since it would be very hard to try to discount to 75% to try to boost units but they go back up to 40% off.  Once players know that it was discounted so deeply, it creates an anchoring effect, and they will simply wait for the game to go back down to 75% off.

Regardless, the differences in deepest discounts seem close enough that it seems safe to shrug this off as having any meaningful effect on sales.

Conclusion 

Based on the varied feedback, it seems that Academias’ biggest issues when it comes to sales are a poor fit between theme and genre, An average trailer, and possibly less depth and retention than the other games.

There is very little we can do about the theme, although we could work that into the game more so that anyone who *wants* to feel like they are running a school really gets into the game.  More depth will be added as time goes on, and once that’s done, a new trailer will hopefully entice people to try the game out.

This kind of comparison is really difficult unless there are vastly similar games to yours out there, however it has been useful for our team in clarifying what kind of mechanics we should focus on adding to the game in the near future.  We hope it’s been helpful for you as well.

Thanks for reading, and hope you found this useful! If you're interested in Academia, you can buy the game now! If you're not ready to buy, please sign up for our mailing list, join the Facebook group, follow us on Twitter, or subscribe to our Youtube channel and help us spread the word!


A Guide to Modding in Academia : School Simulator

modAnnouncement.gif

We recently added Steam Workshop to Academia : School Simulator, and we’re super excited to see what mods our players will create.  We already have an explanation of the actual process of creating and uploading a mod to the game here, but this article will go into more depth on how we manage the art in the game so you have a better understanding of how to create visual mods.

Objects and UI images

Objects are the most straightforward things to change, since they are individual images.  Simply replace the current object image with one of your own, making sure that every rotation of that object is included.  Also make sure that your modded image has the exact same size as the original image.  For example, if you want to mod a chair, which is 128x128, make sure your modded image remains 128x128.

Walls

These are a little bit more difficult.  Each wall image is a 512x512 image divided into 4x4 tiles, with each 128x128 tile being one section of a wall.  Each section of the wall is properly aligned to each other so it’s important to stick to this alignment to make sure that the walls render properly in your mod.  Here is a helpful image to help you better visualize how each section connects with each other.

WallExplanation.jpg

Once you are comfortable with how the walls interconnect with each other, you can start making some more radical changes, like maybe making the walls thinner, and seeing how that looks in the game.

Characters

The characters are where you can get really creative with your mods, but it takes some understanding of how we put the characters together in order to get the best results.  
Our characters are separated into four parts (Hair, Head, Body, Hands) as seen in this image:

CharacterParts.jpg

We have a few “types” of each part, which we mix and match randomly in the game to create unique characters.  As you can see from the image below, it doesn’t take a lot of art to create quite a bit of variety:  

StudentCharacterParts.jpg

You can see we’re severely lacking in variety in terms of skintones and body types, and so we’re planning a substantial update to this in the near future.  We also separate male and female hairstyles, faces, and bodies, so that female type parts will exclusively be combined with each other, and same for male parts.  As with the objects and walls, you cannot create “new” body parts, you can only “replace” them.  So based on this image, you could only create two different male body types by replacing the standard ones.  If you added a third male body type to the image, there is no code as of yet that will extract that image to display it in the game.

Body Orientations

CharacterOrientation.jpg

Another important thing to note is that each body part has 4 orientations: (facing)down,up,right,and closed. It’s important to keep this in mind in case you want to do a full change of all of the images in the character spritesheet.

Prison Uniform mod

PrisonUniforms.jpg

While the current character spritesheet can be fairly limited in terms of modding, there are definitely ways to get creative with it.  The first mod I thought of making was the Prison Uniform mod.  When we were talking about what mods to make I immediately wanted to make this.  It’s both an homage to Prison Architect, and a slight dig at people who insist that Academia is a mod of Prison Architect.  The idea of creating a Prison Architect mod for a “mod of Prison Architect” just tickled my funny bone.

This mod was pretty basic, we can call it a “uniform” mod.  All I did was change the uniforms of the students to prison jumpsuits, and that was it.  This is a great, quick mod with minimal effort.  Our most popular mod so far is a Gryffindor mod which basically uses the same process.

Green Aliens mod

GreenAlien.jpg

I wanted to push a little further with this mod because I wanted to show just how creative you can get with it if you spent some time on the images.  For this mod, I basically deleted the faces and bodies of the students, being careful to make sure my new images still kept to generally the same size.  I wanted my students to be “bald”, ie have no hair, so I went and deleted all of the student hair.  In game terms, the game code will still “draw” the hair on the students, but since the image is empty, it will draw empty space, making them look bald.
Why did I do this?  To make our system of matching hair to faces work, we have to be very strict about the positioning and dimensions of our face and hair.  So if I want to make a “taller” face, it would mess with this system.  Deleting the hair means I have a little bit more leeway with the face shapes.  In fact, if you wanted to, you could delete the hairstyles and add hair directly onto the face types.  This would reduce the amount of uniqueness/randomness when generating students, but would allow much more creativity with the designs.

So there you have it!  I hope this blog has been useful to you and made you excited about the prospect of making mods for Academia : School Simulator!

Here are some files to help you out with making mods:

Character texture PSD

Wall texture PSD

Thanks for reading, and hope you found this useful! If you're interested in making your own mods, you can buy the game now! please sign up for our mailing list, join the Facebook group, follow us on Twitter, or subscribe to our Youtube channel and help us spread the word!

Learning and Using GOAP (Goal Oriented Action Planning) For Squeaky Wheel's Next Game

Ryan: We've been working on a new game the past couple of months and this is the first time we're going to be talking about it.  You can find out more about the game by watching the video above, and then geek out over the AI by reading Marnielle's post below.

I’m excited that we’re making a builder type of game in the likes of Prison Architect Banished, and Rimworld. I love playing such games. Our’s is a school management game where you can design classrooms, offices, hire teachers, design curriculum, and guide students to their educational success.

For every new game, it’s always my aim to try to implement a new algorithm or system and learn something new. I’ve always been fascinated with an AI planning system called Goal Oriented Action Planning or GOAP. If you’re not familiar with it, here’s a simple tutorial. I haven’t developed such system myself as the games that I’ve made so far have no use for it. I think it’s the perfect AI system for builder games. I hope I’m right!

Why GOAP?

The primary reason is I’m lazy. I don’t want to wire and connect stuff like you do with Finite State Machines and Behaviour Trees. I just want to provide a new action and my agents will use it when needed. Another main reason is I’ve reckoned that there’s going to be a lot of action order combinations in the game. I don’t want to enumerate all of those combinations. I want the game agents to just discover them and surprise the player.

Another important reason is the AI system itself is an aide for development. There’s going to be lots of objects in the game that the agents may interact with. While I’m adding them one by one, I’ll just add the actions that can be done with the object and the agents will do the rest. I don’t have to reconfigure them much every time there’s a new action available. Just add the action and it’s done.

Tweaking The System

While making the system, I had some ideas that would make the generic GOAP system better. They sure have paid off.

Multiple Sequenced Actions

Per GOAP action, instead of doing only one action, our custom GOAP action contains a set of modular atomic actions. Each atomic action is executed in sequence. This is what it looks like in editor:

By doing it this way, I can make reusable atomic actions that can be used by any agent. A GOAP action then is just a named object that contains preconditions, effects, and a set of atomic actions.

GoapResult

I incorporated the concept of action results like how it is in Behaviour Trees. An atomic action execution returns either SUCCESS, FAILED, or RUNNING. This is what the atomic action base class looks like:

public abstract class GoapAtomAction {

    public virtual void ResetForPlanning(GoapAgent agent) {
    }

    public virtual bool CanExecute(GoapAgent agent) {
        return true;
    }

    public virtual GoapResult Start(GoapAgent agent) {
        return GoapResult.SUCCESS;
    }

    public virtual GoapResult Update(GoapAgent agent) {
        return GoapResult.SUCCESS;
    }

    public virtual void OnFail(GoapAgent agent) {
    }

}

When an atom action returns FAILED, the whole current plan fails and the agent will plan again. A RUNNING result means that the current action is still running, thus also means that the current plan is still ongoing. A SUCCESS result means that the action has done its execution and can proceed to the next atomic action. When all of the atomic actions returned SUCCESS, the whole GOAP action is a success and the next GOAP action in the plan will be executed.

This concept makes it easy for me to add failure conditions while an action is being executed. Whenever one action fails, the agent automatically replans and proceeds to execute its new set of actions.

Condition Resolver

Condition Resolvers are objects that can query current world conditions which you need during planning. I implemented this as another base class in our system. The concrete classes can then be selectable in the editor. This is what the base class looks like:

public abstract class ConditionResolver {

    private bool resolved;
    private bool conditionMet;

    public ConditionResolver() {
        Reset();
    }

    public void Reset() {
        this.resolved = false;
        this.conditionMet = false;
    }

    public bool IsMet(GoapAgent agent) {
        if(!this.resolved) {
            // Not yet resolved
            this.conditionMet = Resolve(agent);
            this.resolved = true;
        }

        return this.conditionMet;
    }

    protected abstract bool Resolve(GoapAgent agent);

}

Note here that it has logic such that Resolve() will only be invoked once. Concrete subclasses need to only override this method. Such method may execute complex calculations so we need to make sure that it’s only called once when needed during planning.

This is what it looks like in editor:

All conditions default to false unless they have a resolver which is used to query the actual state of the condition.

Usage

Once the conditions, resolvers, and actions have been set up, all that’s left to do is to add goal conditions and invoke Replan().

 

void Start() {
    this.agent = GetComponent();
    Assertion.AssertNotNull(this.agent);

    // Start the AI
    this.agent.ClearGoals();
    this.agent.AddGoal("StudentBehaviour", true);
    this.agent.Replan();
}

If there are new goals to satisfy, the same calls can be invoked to change the goal(s) for a new plan to be executed.

So Far So Good

Our custom GOAP system is working well for us… for now. I now have working worker agents and student agents. More will be added later on, including cooks, janitors etc. Here’s hoping that we don’t need to revamp the system as we’re already so deep with it.

Thanks for reading! If you'd like to be updated on the latest Squeaky Wheel news, please sign up for our mailing list, join our Facebook group, follow us on Twitter, or subscribe to our Youtube channel! Please let us know if this is something you would be interested in supporting via Early Access!  Any feedback on that would be most appreciated!