ReactiveDrop / reactivedrop_public_src

Alien Swarm: Reactive Drop game source code and issue tracker.
https://reactivedrop.com
126 stars 36 forks source link

Strange + Contracts #508

Open BenLubar opened 1 year ago

BenLubar commented 1 year ago

Strange

This will be a system similar to Team Fortress 2's Strange Weapons, Counter-Strike: Global Offensive's StatTrak™️, and Dota 2's Inscribed Gems.

Strange Weapons (and Strange marine suits) do not cause any gameplay or cosmetic changes when equipped, but they do cause statistics to be displayed to other players in the lobby based on which Strange Devices are attached to the item.

Example item:

Chainsaw (Customized)

Missions: 246
Aliens Killed: 13,579

A civilian chainsaw, used for cutting through wood or other soft materials.

Strange items can drop rarely at the end of missions, but usually you'll get some kind of crafting material that can be used towards crafting a Strange item.

Crafting

The crafting item categories are:

So far, the defined items in my local draft are:

The two tools are functional (or would be if I had written the UI for them and also uploaded them fully to the inventory schema). There are no other exchange recipes defined.

I did a simulation of the drop probabilities here: https://github.com/BenLubar/toy-steam-inventory/blob/main/example_output.txt

Contracts

Random drops won't be the only way to obtain cool stuff! We're also going to add a system similar to TF2's ConTracker, CS:GO's Operations, or Dota 2's Quests, and to a lesser extent, Deep Rock Galactic's Performance Pass.

Basically, there's a web of item rewards and you can progress through it by playing on official servers. You can only make progress in one node of the web per mission, and you need to complete the mission (success or fail) to store your progress.

Each reward would have 3 objectives that each reward a number of points every time they are completed. The second and third objective must be completed a certain number of times to unlock "stars" that can be used to unlock additional nodes, and there's a star and an item reward that can be earned by completing the "primary" objective of earning a total of 100 points from the three options.

Example from TF2:

Pyro (root node; no requirements to unlock)
Primary: Score [Source Engine scoreboard] points as Pyro: 2 points
Bonus: (4 times) Kill with a reflected projectile as Pyro: 15 points
Bonus: (2 times) Dominate a player as Pyro: 15 points

Getting 5 kills with reflected projectiles and nothing else (that is, somehow not scoring any points as Pyro for simplicity of this example) would make you end up with 75/100 points and one star. Getting one domination and scoring 5 points on the scoreboard would net you an additional star, whatever item is attached to the node, and allow you to unlock nodes connected to the Pyro node with stars.

(That is, you can only unlock a node if you pay the required number of stars and also have 100/100 points in each of the nodes connected to it. Connections are unidirectional.)

There's a feature in TF2 where you can earn progress on someone else's contract if you're in a party with them; since this is a co-op game, we might want to do some variant of that, at least for some objectives.

Other ideas for consideration

First, I want to make a quick note of two rules for the design of this system:

  1. Alien Swarm: Reactive Drop is a free game. That means the obvious thing (we can't charge money for these items) but it also means that there's no reason to add anything to the game if it isn't fun or interesting. We don't want people to play longer and grind for items if they're not having fun. That said, if getting items takes no effort, they're not going to be seen as a reward and the system will fail.
  2. We are not competing against the Steam Workshop. Nothing we add here is intended to drive traffic away from the community-generated content on the workshop, and we are not producing any content that is limited by items but can be extracted and then uploaded to the workshop for free. That means no mission access limited by items, no item-based challenges, no items that replace marine models wholesale, etc.

That being said, here are some ideas for things other than crafting Strange Weapons (and the already-existing medals) that this system might include in the future:

Checklist

BenLubar commented 1 year ago

By the way, if anyone has any feedback, suggestions, or ideas of any kind, I'd like to hear it.

BenLubar commented 1 year ago

With today's beta update, we now store a read-only copy of your inventory in the cfg folder when you open the game or view your inventory in the menus after having its contents change. This means we can tie gameplay to the possession of items (for example, the weapon replacements idea) and not have that gameplay be inaccessible to someone who is temporarily without an internet connection (such as someone using a Steam Deck while they're away from home).

BenLubar commented 1 year ago

Update on the tradability: the Valve rep I talked to said what we're requesting (making tradable Steam items in a free mod) is unusual (it is) and that they'll discuss it internally.

BenLubar commented 1 year ago

image

The items will not be made tradable. We will balance the system (drop chances, etc) around this.


I'm running some polls to gauge how much people would like the various parts of this system. I'm not putting these questions in front of AS:RD players just yet (I'd rather have it be a pleasant surprise or at worst a pointless one).

https://mastodon.lubar.me/@ben/109946544689896680

Polls still have multiple days left in their run time, but it looks like people are enthusiastic about random drop strange weapons, quests to unlock items, and new weapons released through this system and there's a more mixed (about 50-50) response for crafting.

BenLubar commented 1 year ago

If anyone has any ideas for naming/theming, I'd like to hear them.

BenLubar commented 1 year ago

Quests

Overview

Categories

Officer

TODO: objectives related to explosives, leadership procs, mines, and officer weapons.

Special Weapons

TODO: objectives related to damage amp, heavy weapons, piercing, and special weapons weapons.

Medic

TODO: objectives related to healing, infestation curing, combat drugs, freeze grenades, and medic weapons.

Tech

TODO: objectives related to hacking, welding, sentries, chainsaw, and tech weapons.

Weapons

TODO: objectives related to using all-class "normal" weapons

Aliens

TODO: objectives related to slaughter and avoiding attacks

Locations

TODO: objectives related to specific missions

Special Assignments

TODO: objectives related to workshop, HoIAF, deathmatch, Steam friends, etc.

Shop

TODO: Design shop for currency rewards. All limited-purchase items should be available to all players via the amount of currency available from questing, and there should be some unlimited-purchase items to soak up the rest of the currency. Items should be available via other means as well, for players who do not want to quest.

BenLubar commented 1 year ago

Idea for material drops:

  1. After playing an amount of time in a window (30 minutes within a day? will have to make sure it spills over), the inventory service will award a bundle of random invisible tokens for materials. These are not tied to which mission you are playing, and materials that drop in quantities higher than 1 at a time only give one token per drop.
  2. At mission start, the server picks several random locations where crafting materials can spawn based on the marine hints in the level.
  3. The client looks at what invisible tokens it has, compares them to what materials are available in the mission, and decides what model/name each of the spawn points should have. If there's no token waiting to be converted into materials, the spawn point is simply invisible.
  4. When a player reaches the spawn point, they can interact with it using their USE key to convert the invisible token to resources.
  5. This hides the interactive object and places a message somewhere on the screen indicating that materials are being collected. The player is free to continue playing while this process occurs.
  6. Collecting materials is implemented as a crafting action that converts the invisible token to a bundle containing crafting materials. Once this is completed, the message is replaced with one stating what materials were obtained, and this message fades after a while.

I feel like this system would be more engaging than just randomly dropping materials using a playtimegenerator, and it would also mean that we could show the player hints about which missions have materials available and whether they have any materials waiting to be claimed. (To my knowledge, there is no way to query whether a playtimegenerator is ready to proc without proccing it.)