|In the series|
DESIGN: CARGO INTERACTION
To date, Star Citizen’s Arena Commander module has put much of the focus on pure action: the thrill of deep space dogfighting. While space battles are a core element of the Star Citizen experience, they are the beginning and not the end of creating a vast, interactive world. And one of the next, most important steps is developing a cargo system that allows players to more fully interact with their environment than any previous space game.
On first consideration, making cargo sexy might seem like a difficult challenge. The excitement of combat is self-explanatory, while shipping goods from star to star is a different kind of challenge, potentially more of a slow burn. The average pilot would be forgiven for having more interest in a dogfighting module than a cargo demo… but the reality is, cargo is deeply important to expanding Star Citizen’s gameplay. Whether you’re using it to customize your environment, to build a shipping empire or to run black market goods from Advocacy patrols, a comprehensive cargo system is going to enable Star Citizen to build a real world full of varied gameplay opportunities.
How do we do it? In the past, space games have solved this problem by separating the player from what was being transported. Shipping a load of tungsten in Privateer or hydrocarbons in Freelancer meant selecting an icon in a menu and being told your ship had been loaded with that particular good. For Star Citizen, we wanted to do more than just give you a cargo manifest; it stood to reason that in our First Person Universe, you would need to be able to fully interact with whatever you happen to be shipping! With this in mind, we’ve set out to create a system that allows for maximum interaction directly with in-game objects.
HOW INTERACTION WORKS
The Star Citizen design team has determined that there are five essential ‘use cases’ for cargo objects in the game environment. Each of these cases must be developed in the game to give you full control over your cargo and items. Uses cases are as follows:
- Player to Item: The player must be able to physically manipulate objects in the game world. Whether it’s a frag grenade, a Chairman Roberts bobblehead or a Xi’an space plant, your character must be able to grab objects with one or two hands and then place them where desired.
- Player to Massive Item: In development terminology, a massive item is any one that is too large for a player to reasonably interact with themselves. Think a ton of steel, a replacement Hornet wing or a multi-meter torpedo. Massive items differ from standard items because they will require in-game tools for handling: anything from cargo drones to loader suits.
- Player to Container: Current Star Citizen pilots are likely most familiar with the Stor-All container found on some models of Aurorae. Under the hood, there are two types of containers: crates and tanks. Crates are containers that can hold the loose items used in the previous use cases. You might fill a container (like the Stor-All) with anything: weapons, electronics, artifacts, personal effects… even live animals! Tanks are an alternative form of container that hold anything the player wouldn’t naturally interact with: fuel, ore, scrap, nitrogen and the like. To simplify the loading process, every container in Star Citizen will include a port for a cargo jack allowing it to be manipulated directly using an array of anti-grav pulsers. Players will load their containers (or acquire them pre-loaded) and then position them aboard or attached to their spacecraft.
- Player to Pallet: Especially important for larger ships (like the Hull C, D and E) which would otherwise take ages to load, the player to pallet use case is how you will be able to stack alike containers. This allows containers to move as a group, as long as the stack is entirely within the locking plate on the top of the lower container. This holds true for grav pallets, which are giant mobile locking plates, and allows for cargo to be moved in bulk.
- Player to Cargo Bay: This final state is how players interact with their entire collection of cargo on any given ship. This is where we develop formal mobiGlas and environment tie-ins to give pilots control over their entire cargo manifest. From the manifest view, they can view and track all containers and items on a particular ship.
All of the above use cases are built atop one requirement: the ability for the player to manipulate individual component items at will. To enable this biggest technical hurdle, we have created a system called Grabby Hands. We’ve put together four demos to show you exactly how Grabby Hands works and what it lets you do!
Looking at an item and then pressing F will pick it up. The appropriate animation will play and the item will be attached to the players’ hand. The item is now held! Looking down at the item again and press F will put it down. A raycast at shoulder height will determine where the item will be put, and the appropriate animation will play to put it there. While holding an item, look down at it and press and hold F will enter precision placement mode. In this mode, an AR indicator allows the player to choose the location where the item will be put. While in precision placement mode, clicking and dragging will allow the player to rotate the object around pitch and yaw. Make no mistake, this is more than just a system for picking up and putting down objects. With this process in place, we don’t need to create a unique animation for every single object in the universe; the game adapts to interact with what you’re doing, the way you want!
Two-handed objects are reoriented automatically when picked up to simplify the attachment points needed for these animations. Beyond this exception, two-handed objects work exactly like one-handed ones do.
Here’s where Star Citizen’s physics engine really shines! By interacting with items, you can manipulate them in a realistic manner that takes into account your environment (and its respective gravity and other conditions.) What that means in this case is that you can use Grabby Hands to manually flip a coin! Moving up while releasing the coin will cause it to flip, at which point it can be caught again. Holding still or moving down while releasing will simply drop the coin. Multiple coins can be picked up and flipped simultaneously, causing it to rain coins and make a mess. Groups of coins set down together tend to be much more organized. But this isn’t just about coins: it’s about creating a system that gives players more control over their universe. It will create new ways for players to express themselves through their interactions in the ‘verse!
When holding a useable item, look down at it and double tap [F] to use the item. While an item is in use, double tap [F] to unused the item and return it to the cargo state. This means that any personal item you might use (such as a gun, or a flashlight) can also be stored as cargo.
ITEMS AND CONTAINERS
Every container has two key statistics: Standard Cargo Units (SCU) and Number of Ports. These define everything the game needs to know about loading a container onto a pallet or attaching it to a ship. SCU defines the exterior dimensions of the container in cubic meter increments, while the number of ports defines how many discrete slots into which items can be placed are available. Ports are 0.25m spaces.
In this example, the container is a 2SCU, 63Port container (a 2.5m x 1.25m x 1.25m container with a 2.25m x 1.0m x 1.0m available interior space.) Items are also rated in the number of Ports they occupy when placed into a crate: a pistol is 1p, a rifle is 2p, a missile is 6p and so on. When an item is released inside the containment field of a crate, the item latches onto the nearest port and animates into place.
CONTAINERS AND PALLETS
As noted above, pallets are used to move more cargo in fewer trips. Loading fifty individual containers of ore would be no fun (and ultimately wouldn’t be realistic) and so a system must be put into place to allow bulk loading of same cargo. The player will interact with very large containers and pallets, often so large that they will obscure visibility. To counter this issue, the cargo jack includes a UI interface depicting the local area to the player, much like the landing assist UI recently premiered in Arena Commander. This ultimately allows for precise and intentional manipulation of cargo.
The SCU value introduced earlier defines the exterior dimensions of containers, which is important to note because it allows the number of SCU a ship is rated for to actually correlate with the SCU value of all containers which can be placed inside that particular cargo bay. Containers are placed in a locking grid of sorts, which marks out (floor to ceiling) where cargo can be stored onboard a ship.
The technology that drives these locking plates only require power to change state, and will secure even unboxed cargo as long as it is fully within the locking area. This means that only cargo containers can stack while disallowing infinite bridges, and that turning off the power plant won’t shred the ship with instant cargo shrapnel. Active locking plates are lit gold, although the light will change to red if there is something wrong: the cargo bay is too damaged to maintain lock, any of the items atop the plate cannot be secured and so on.
Finally, as included in the final use case players must be able to interact with their cargo from the ship’s onboard manifest. Using the manifest, you can activate and deactivate locking plates (to jettison cargo), set orders for arranging cargo and see the effect that all of your items are having on your center of mass (unlike previous games, your ships’ performance will be tied to the mass and volume of what you decide to load aboard her!) We are in the process of developing the UI for this system today, and are proud to present a mockup of the current version.
CARGO CONCEPT GALLERY
This gallery of images were created internally to pitch the cargo concept to the team.