This page provides details about the Unisave pricing scheme:
- Free development
- Compute time
- Shared databases
- Quota enforcement
- Pricing tiers in detail
Unisave pricing is based on pricing tiers. You can switch pricing tiers for each of your games independently at any time. Each game starts in the Free tier. Each tier has a fixed price and resource usage quotas. The system will not let your game exceed these quotas. The last tier is auto-scaling, where additional consumption of each resource is charged at an additional price.
After the end of each calendar month the final price for all games and selected pricing tiers is tallied up and an invoice is generated. This invoice is then automatically paid by charging the payment method on file.
Each pricing tier has a set price for one hour. The final price at the end of the month is computed as the hourly price, times the number of hours that tier was used. Displayed monthly prices assume a month with 30 days (720 hours).
All tiers contain quotas for multiple resources, but the primary resource to watch is compute time. Other resource quotas are set in a way to cover the usage of a typical game. These resource quotas are not likely to be reached before the quota on compute time is.
Displayed prices exclude tax because tax rates differ by country. More information is in the Taxes section below.
You can try out Unisave and develop your backend for free. The free tier has quotas that should not pose problems during development in a small team.
The DAU resource (daily active users) is only tracked for requests sent from builds, not from the Unity editor. This lets you test the deployment to production on your first few players for free. For all paid tiers, there are no limits to the number of active users -- you only pay for the hardware resources consumed.
All features that Unisave provides are available (in some form) in the free tier. There are no features hidden behind a paywall.
The primary consumed resource is the compute time (execution of facets). When a request comes from your game, a worker instance (a small virtual machine) is claimed and it handles that request. If another request comes, this worker instance is re-used. When there are no requests for 5 minutes, the worker instance is deleted. There may also be multiple instances running if the traffic is high enough.
The total run time of all worker instances is the compute time resource. The quotas for individual pricing tiers may seem low (e.g. 8 hours per day), but they are based on numbers from real games. A hobby PC game targetting one country will see most of its traffic during the evening which may add up to only 4 hours. A mobile hypercasual game may only make a few requests regarding in-app purchases. Only a worldwide-known game will see requests coming constantly with less than 5-minute separation during all 24 hours of the day.
Note: A worker instance is a container, not a virtual machine. But it's a good enough analogy.
All worker instances are currently 250 MB in size (RAM). This may, however, change in the future (you will be able to choose various sizes for various tasks). For this reason, Unisave actually works with a resource called worker system allocation. Usage of this resource is computed as the number of seconds of runtime, times the size of the worker instance in gigabytes (unit
Gbs gigabyte-seconds). Therefore 1 hour of described compute time actually means 900 Gbs of allocation. But since compute time is easier to imagine, it's used throughout the documentation instead.
Unisave provides shared virtual ArangoDB databases (the database machine is shared by multiple games). The usage of these databases is tracked via secondary resource usage metrics, namely request count and disk usage.
Request count quotas are set in a way to not pose problems for most games. Database disk usage is also set in a way to accomodate most games. If you need to store large amounts of data in the database (like files), you should check out a third-party object storage provider (AWS S3, Digital Ocean Spaces) and store only object URLs in the database instead.
- One facet call makes on average 11 database requests.
- 1 MB of database space is roughly 100 - 1 000 entities. The range is so wide because it depends on how big your entities are.
In the professional auto-scaling tier, database disk usage is priced by the amount of disk being used and the duration for which it's used. The professional tier includes 500 Mb of database space. Say you perform a one-time operation that increases the disk usage to 1500 Mb for one hour and then the usage returns below 500 Mb. You've just consumed additional one gigabyte-hour (or 3600 gigabyte-seconds) of disk usage resource, which will be added to the invoice for 0.00139 USD.
Most quotas are enforced on a daily basis (UTC day). If your game is in a tier that allows 1 hour of compute time per day, the system tracks the usage from the beginning of the day, and when it exceeds the quota, further requests are rejected. When the next day begins, the usage is reset to zero, which is below the quota, therefore requests are accepted again. This approach averages out traffic differences throughout a day.
There are some quotas that are enforced continuously (such as database disk usage).
Pricing tiers in detail
The text above explained most of the complexities regarding pricing. The following table is an accurate description of all pricing tiers and their quotas:
|Price per hour||0 USD||0.01111 USD||0.03472 USD||0.04861 USD|
|(Price per 720 hours = 30 days)||0 USD||8 USD||25 USD||35 USD|
|DAU (daily active users)||10||unlimited||unlimited||unlimited|
|Worker system allocation per day||900 Gbs||7 200 Gbs||22 500 Gbs||28 800 Gbs|
|(Runtime of default-sized worker instace per day)||1 h||8 h||25 h||32 h|
|Database requests per day||20 000||30 000||100 000||200 000|
|Database disk usage||10 MB||50 MB||200 MB||500 MB|
The last tier provides autoscaling, which means that going over the quota will be added to the invoice based on the resource prices. This is the intended pricing scheme for games with large traffic or games that skew usage towards only a few resources.
Example: Your game is the entire month in the professional tier and consumes about 30 hours of compute time each day (the quota is 32 hours). On three days the compute time usage was 40 hours. The over-usage on each of these days is therefore 8 hours. Since it's three days in that month the total over-usage at the end of the month is 24 hours. The invoice will contain a line stating these 24 hours of additional compute time and it will cost 0.8 USD.
The following table lists the prices of individual resources in this auto-scaling regime:
|Actual price per unit|
|Worker system allocation||1 gigabyte-second (Gbs)||0.000037037037037 USD|
|Database requests||1 request||0.000000333333333 USD|
|Database disk usage||1 gigabyte-second (Gbs)||0.000000385802469 USD|
|Runtime of default-sized worker instace||1 day||0.8 USD|
|Database requests||1 000 000 requests||0.33 USD|
|Database disk usage||1 gigabyte for 1 day||0.03 USD|
Different countries have different rules for collecting taxes. They are all similar in the sense that a business doesn't need to pay taxes in a country unless the sold amount exceeds some threshold. Then a registration needs to be performed and taxes start to be collected and paid on transactions with this country. For this reason, prices listed on the Unisave website exclude taxes. For countries where Unisave is registered to collect a tax, the tax is added to the total amount to be paid on the invoice.
Note: I am currently a sole trader (sole proprietorship), a natural person doing business. I'm registered in the trade register of the Czech Republic (a member state of the European Union). I'm registered for the VAT tax in the EU, with an exception for Czech customers.
Taxes sometimes also depend on the customer type (a consumer or another business). If you are a registered business, you should provide your tax ID via the web console to remove certain taxes from your invoices (for example a business customer from the EU is required to pay the VAT tax themselves via the reverse charge mechanism).
The following is a list of countries with tax details (regarding Unisave). If your country is not listed, no taxes need to be paid. Should I become registered for taxes in a new country, I will notify all customers from that country in advance by email.
|Czech Republic||No taxes collected regardless of customer type.|
|The European Union||Business customers need to pay VAT tax of their country themselves via the reverse charge mechanism. Consumer customers do not pay the VAT tax.|