All About Ink

If you’re a creator in Rec Room, and have spent some time making custom Rooms, you’ll have noticed that everything you create in a Room has an Ink cost and there’s an Ink limit in each Room that determines the amount of stuff you can put inside it. If you’ve noticed this, it’s probably because you’ve “run out of Ink” and asked yourself something along the lines of “why can’t I have more?”, and then subsequently things like “why does this or that cost so much!?” or “why does Rec Room hate my creativity??”

I will try to explain a little bit about why the Ink system exists, how it works, and hopefully answer some of these questions.

Why do we have Ink limits?

Unfortunately computers (including consoles and smartphones) are finite machines and they can only do so many things within a certain amount of time. Everything you put in a Room has to have its position updated and synchronized with other players, it needs to be stored in memory, calculate collisions, be drawn and painted on the screen, etc. more than 60 times per second to keep the game running smoothly and without crashing.

The Ink limit is basically our rough ballpark measurement of “how much stuff you can put into a Room without the experience degrading too badly or crashing.” Why is it rough and ballparky? Because each specific object that you can spawn in a Room has a different impact on the device’s resources. Some props take longer to draw on the screen (render) than others. Some Gadgets require a lot of memory or processing power, but don’t take as long to render; and so on.

Since there are so many variables that affect the impact of a specific object on different devices’ performance, we’ve chosen to simplify all of them into a single variable that addresses the overall impact of each object into this Ink cost, which roughly translates to: “how many of this thing can you have in a Room before your device explodes?”

Why is the Ink limit so low? My gaming PC can definitely handle some more Tubes!

Rec Room is available on multiple platforms with drastically different capabilities in terms of processing power and available memory, and we strive to be radically cross-platform. This has a ton of benefits for creators and players such as having all platforms be able to play together, drastically increasing the potential audience creators have for their Rooms and Inventions, and providing a larger playerbase for matchmaking in all games and rooms. However, it also demands that content created by Players runs reasonably well on all available platforms. Lower-end platforms like iOS, the Quest headset, or PS4 have less memory and slower processors and graphics cards, which naturally means the experience in any given Room in Rec Room will degrade (or even crash) on those devices with a smaller amount of stuff in it than for higher-end machines (PC Screens & VR).

image2.png

Usually multi-platform support of a game requires careful optimization of hundreds of different things (assets, code, rendering), tuning of what is shown on what platforms and how, or even making parts of the game different depending on the device. This process is painstakingly hard and requires very specific tools, expertise, and a lot of context about the game that is being ported. 

In the case of Rec Room games (i.e. Rooms), we can’t really know in advance almost any context about them or what parts of it will perform better or worse on different platforms. The tools we provide for Players to build their worlds are currently not meant as professional game development tools, so we don’t expect creators to have in-depth knowledge of programming and game optimization to be able to use tools designed for this type of thing, and even if we had them available to players, it would be unrealistic to expect creators to test their rooms on a variety of different platforms and hardware. Instead we try to limit the things that can be created by Players to things that will, given our best estimates, run reasonably well on all our platforms. This is what the current Ink limits represent.

That’s okay. I don’t mind my Room not being available to everyone. I’m fine with only Players on PC VR being able to come into my Room. Can’t you just make restrictions on Rooms by platform or by hardware power?

This is a common sentiment expressed by creators, especially those that are constantly pushing the envelope in terms of what can be achieved with the Rec Room creation tools. We've thought about this issue a lot. There are two important reasons we currently don't take this approach:

The first is that creators frequently underestimate the amount of players that are on lower-end platforms compared to the amount on higher-end devices. Many dedicated creators play Rec Room through VR on PC (Oculus or Vive) and tend to have lots of friends and connections inside the game that also play on those platforms. This tends to give the creator community a skewed perception of the distribution of players across platforms, giving more importance to high-end platforms. The reality is that an overwhelming majority of players play on lower-end machines, and if a large group of the creator community decided to make high-end-exclusive content, most of the content would only be available for a tiny minority of the player base. This would be bad for both creators (their content would have a much smaller audience) and players (they would have much less content to play).

image1.png

The second, which dovetails with the first, is that we want to make Rec Room a fun and welcoming environment for people from all walks of life and we’ve worked very hard to make the game as “radically cross-platform” as possible to achieve this. It’s not just a company principle, but also a business strategy. The whole Rec Room ecosystem is only self-sustaining and functional as long as we have a critical mass of engaged players, and the biggest drivers of engagement are other players and a wide variety of content to play. Dividing the player base by platform would make most player’s experience worse and go against all these goals. In general we’re always striving to make all features in Rec Room more accessible and cross-platform rather than more exclusive. When you’re sharing the stuff you’ve made, we want you to be thinking about just sending an invite or sharing a link rather than having to care about what platform they’re on.

What affects the Ink cost of objects?

Like I said before, Ink is a very ballpark-y estimate of the amount of computational resources an object uses when it’s in a room. But the fact that it bundles up a bunch of different factors, makes it a bit of a fuzzy concept. Broadly speaking, it’s decided based on a mix of four main factors: Computation cost (CPU), Rendering cost (GPU), Memory cost, and Networking cost. Often, though, the cost might be decided solely on the most significant of these for a certain object if it eclipses all others (e.g. Holotars take up so much memory that all their other costs are insignificant in comparison).

Computation (CPU): How much an object taxes the processor of a device. Objects that have a lot of logic that needs to run constantly or that use the physics engine, like Trigger Volumes or Shapes set to Physical, have their cost mainly driven by CPU cost.

Rendering (GPU): How expensive for the graphics card it is to draw a certain object on screen. Objects that have complex 3D meshes, like a forest made of Tubes, or transparent materials have their cost mainly driven by GPU cost.

Memory: The amount of space an object requires in the device’s memory (RAM). Objects that contain a large amount of data, like Holotars and Drawing Surfaces, attribute their cost mainly to memory concerns.

Networking: The amount of data an object needs to send to other Players to function correctly. This includes positional information as well as any additional information about the object that needs to be synchronized across all players (e.g. Health). Objects that move or have a lot of information everyone needs to know about, like Gizmos and CV1 Chips, have their cost driven mainly by Networking concerns.

As one can imagine, cramming this much information into a single variable creates some weird cases. Having multiple objects that require a lot of Memory in your Room might create worse performance than having some that use a lot of Memory, others that use a lot of CPU, and others that use a lot of Networking, even if both combinations cost the same amount of Ink. These types of situations require us to be relatively conservative in our estimates of resource requirements for objects and make it so some things cost more Ink than they’d need to in most cases (but do in the worst case). It has also allowed some objects that were costed thinking of the “most common scenario” to be abused and degrade performance in Rooms.

How are you going to give me more Ink?

The main way we aim to “give more Ink” to creators is by reducing the cost of having certain objects or categories of objects in a Room in one or more of the cost “buckets” described above. We’re constantly trying to optimize the performance of the different systems that comprise the UGC creation ecosystem to make them run better and use less resources. Usually when we make a breakthrough in this regard, we forward these gains in performance back to creators as more Ink or lower cost on the affected objects. For example, when we implemented the LOD system or the Environment/Decoration modes for Maker Pen Shapes, since those improvements made Shapes cheaper to render and computationally less expensive, we made Shapes in general cheaper on Ink and even cheaper when set to Decoration mode.

Another way we might look to allow creators to have more stuff in their rooms is by moving away from a single-variable cost for objects (i.e. getting rid of “Ink” in favor of something else). There are no concrete plans for this yet, but we’ve been experimenting with things like this in areas like Circuits V2 (where we use “Heat” and “Network Heat” to measure Computation and Network costs) and AI management (managing amount of AIs without having them in the scene a-priori). Switching to resource management systems like these could allow for greater control by creators and establish a baseline for resource limits that is closer to what is actually being used in a Room rather than having to rely so heavily on a “worst case scenario” calculation.

Do you have any tips to save Ink while creating?

Yes! Our in-house Creator and Maker-Pen-extraordinaire Meriesa made a nifty video about this exact topic. It has tips about the stuff that will save you the most Ink in your Rooms, especially if you’re starting out!