System Design on PREY
One of the best parts about working on the systems for "Prey" was just the sheer variety of things I had a chance to work on. From managing our prop database to setting up the loot drops for a lot of the game, I left my fingerprints on many parts of the game. My work also often had me coordinating my tasks across different disciplines so that by the end of my time at Arkane, there were few people I hadn't had the chance to work with.
Prop Database
In many ways, Prey's hundreds of physics props were the lifeblood of the game. This largely due to the fact that any object that isn't nailed down can be:
To that end, it was my job to make sure our many objects had
- Picked up by the player and thrown
- Recycled into crafting components using the Recycler or a Recycling grenade
- "Mimicked" by the player, where they turn into a copy of any object smaller than a chair
To that end, it was my job to make sure our many objects had
- Proper collision and didn't clip
- SFX when hit or dropped
- Appropriate mass and carry position for realistic carrying and throwing
- Leverage power requirements (for heavy objects)
- And many more settings
|
|
Getting this many objects to all behave appropriately took massive amounts of documentation, as I found it helped me communicate better to other people what kind of work still needed to be done in certain areas. As time went on, I learned to generate documents like this faster using either existing scripts or ones that I would write myself.
|
Loot Balancing
Prey uses a set of loot tables to randomly generate the loot inside every desk, locker, and other containers when the player first enters a level. The possibility of getting certain items was determined by the items' probability weight in the loot table. The issue we were facing was that due to the random nature of the potential loot spawn, it was difficult to know if, say, a player might end up finding way too many baseball gloves in one room. On one hand, this looked odd from a narrative perspective (the Talos I baseball team was a running joke in the studio) and on the other, it was difficult to calculate how much of each resource a player was getting since these junk items could be used to craft other items. This is where I came in.
I used a custom made script to automate loot generation in each level across hundreds of instances, something which would have taken hours to do by hand. Using that information, I was able to tweak the probability of certain loot dropping to create averages that fit better with the theme of the level and the resource balance we wanted. Take the Hardware Labs level for example:
On the left, you can see that for starters, there are no empty containers in the level, which means the loot is spread out too thinly. In addition, there is a glut of things like Banana and Lemon Peels. It's fine to have some in the kitchen trash cans, but this tells us that they're probably being put in containers that don't make narrative sense or the kitchen trash can is overflowing, which isn't great either.
On the right, you can see that using the information that I gathered, I was able to empty a few containers and cluster that loot into fewer containers. Additionally, we've addressed the pruned down the prevalence of some junk items.
On the right, you can see that using the information that I gathered, I was able to empty a few containers and cluster that loot into fewer containers. Additionally, we've addressed the pruned down the prevalence of some junk items.