Skip to content

syntax-tm/SteamAchievementManager

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Repo stars GitHub issues GitHub release (with filter)

Overview

The Steam Achievement Manager lets you manage achievements, stats, and more for any currently supported app.

This project is a fork of the Steam Achievement Manager project with the goal of updating to .NET Core and WPF. This is very much a work in progress.

Project Structure

SAM is comprised of five projects.

SAM and SAM.Manager are the two application projects that create an executable. SAM is the executable that will display your Steam library and let you select an app (game) to manage. When the manager is started, it's passed an ID for a Steam app after which it initializes the Steam API client with that AppID just like any game on Steam would. Steam will show you as in-game, record your play time, and you can earn trading cards (if you have drops left).

The reason why there's two executables is because the manager (SAM.Manager) needs to be in its own process anyways in order to actually manage the achievements and stats. Once a process is registered with the Steam client it's not possible to re-initialize the Client with a different AppID. Steam will also treat you as in-game until that Process and any child Processes have exited.

Both SAM.API and SAM.Core are libraries (*.dll). As its name suggests, SAM.API contains the native Steam API wrappers. SAM.Core is referenced by both executable projects (more on these later) and allows them to both use the same types, resources, etc. without having to duplicate code.

%%{init: {"flowchart": {"htmlLabels": false, "width": "100%"}} }%%
flowchart TB
    subgraph Applicaitons
        S["SAM"]:::app
        SM["SAM.Manager"]:::app
    end
    subgraph Unit Tests
      SU["SAM.UnitTests"]:::unitTests
    end
    SC{{"SAM.Core"}}:::library
    SA{{"SAM.API"}}:::library
    S --> SC
    SM --> SC
    SC --> SA
    SU --> SC
    SU --> SA
    classDef app fill:#247FD4,stroke:#bbb,stroke-width:1px,color:#fff
    classDef library fill:#D63E48,stroke:#bbb,stroke-width:1px,color:#fff
    classDef unitTests fill:#9478F0,stroke:#bbb,stroke-width:1px,color:#fff
Legacy Project New Project Description
SAM.Picker SAM The main executable used to select a game (or app) from your library
SAM.Game SAM.Manager Allows for viewing and editing an app's achievements and stats
SAM.API SAM.API Managed Steam API wrappers
- SAM.Core Common resources used by both SAM and SAM.Manager.

FAQ

What is an App or App ID?

An Application (or App) is the main representation of a product on Steam. An App generally has its own store page, it's own Community Hub, and is what appears in customers' libraries. Each App is represented by a unique ID called an App ID - that you'll see referenced throughout this documentation and used with the Steamworks API and Steamworks Web API. Generally a single product will not span multiple Applications. (source)

Why does SAM let people cheat achievements?

Some games have achievements that are no longer reasonably or actually attainable. While SAM can be used to abuse the achievement system, it also lets people who do care about achievements unlock achievements that would otherwise be impossible. One common example is achievements requiring you to play multiplayer on a game that no longer has any active players, or even dedicated servers. SAM is a potential solution for a game's poorly designed achievements.


Acknowledgements


Resources