Getting Started
Getting started with Heathen's Steamworks.
Like what your seeing?
Support us as a GitHub Sponsor and get instant access to all our assets, exclusive tools and assets, escalated support and issue tracking and our gratitude. These articles are made possible by our GitHub Sponsors ... become a sponsor today!
Initialization
Initializing the Steam API is the first step and you have a few choices on how you do this.
Features
Be sure to see the Steamworks Guide and its sub-articles for more detail, follows is a quick list of major features you will find.
Achievements
API
Authentication
Cloud Save
Debugging
Downloadable Content
Friend List
Input
Inventory
Item Store
Leaderboards
Lobby
Matchmaking
Microtransactions
Multi-Platform Project
Multiplayer
Rich Presence
Room Systems
Running a Build
Steam Game Server
steam_appid.txt
Steam ID
Stats
User Information
Voice
Workshop
Architecture
Heathen's Steamworks is built in layers, each layer offers another step of abstraction simplifying use of the API and doing more work for you. The lowest or most fundamental layer of Heathen's Steamworks is Steamworks.NET and is very much a raw Steam API wrapper, the highest or most "out of the box" would be our Prefabs which can handle many common uses cases with zero code on your part.
Follows is a quick break down of each layer and what it was meant for. Note you can mix and match without any issue. Our design expects that you will leverage our "high" level objects like prefabs to handle boilerplate, common or low importance items for you code free while you may prefer to go 100% bespoke with other features to achieve that perfect fit for your game.
Prefabs We have a number of ready to use prefabs that can be dragged and dropped into your game and will just work with no additional code required.
Components We have created a set of component scripts (aka MonoBehaviours) to cover virtually every aspect of Steam API letting you work in Editor and with visual code editors like Bolt with ease
Scriptable Objects We have created scriptable objects for all Steam artifacts (stats, achievements, inventory items, etc.) making it easy to reference them and work with them via ours or your own component scripts as well as in code editors like Bolt.
Data Layer We have created highly efficient and easy to use C# structs for all Steam artifacts (stats, achievements, inventory items, etc.). These allow programmers to work against these objects more efficiently and with significantly less coding required on there part. All of our structs are implicitly convertible between the primitive type, Steam API native type and our more abstracted structs and classes.
API Layer We have wrapped all core Steam API interfaces with our own C# and Unity centric API wrapper. These API wrappers match 1 to 1 with the raw wrappers but do greatly simplify use such as replacing "Callback" and "CallResult" with UnityEvents and Action parameters. In addition we have created a number of "quality of life" features such as a queue system allowing you to queue multiple calls to the API for features that require 1 call be processed at a time such as Leaderboard queries.
Steamworks.NET The raw Steam API as defined by Valve simply wrapped in C#. This is not our work but the work of Riley Labrecque. We are work with Riley wherever possible to support his efforts and help the wider Steam Developer community. Heathen's Steamworks is built on top of Steamworks.NET and thus it and the full raw API are available to you and interoperable with our wider toolset.
Networking
Heathen's Toolkit for Steamworks and whatever HLAPI you choose to work with have no impact on each other at all. You will use Steamworks and your HLAPI of choice the same as you would without the other.
Do I need Heathen's Toolkit for Steamworks?
You do not "require" the Toolkit to use Mirror, FishNetworking or NetCode for GameObject's or any other Steam transports. Those transports like our selves work with Steamworks.NET directly.
That said you will need to initialize, configure and manage the Steam API before SteamNetworking interfaces can be used. Our Toolkit for Steamworks both the Complete and Foundation packages make working with Steam API simple and stable. If you do not use Complete or Foundation you would need to use the raw Steam API to initialize and configure your Steam API integration yourself before your HLAPI could use the Steam transports.
Examples?
Where can I find examples on using Heathen's Toolkit for Steamworks and (the HLAPI I chose)?
You can't because there is no need. Both Steamworks Complete and your HLAPI of choice work the same whether or not the other exists. Thus we do not have an example of using (your HLAPI of choice) alongside our Steamworks Complete.
If you want to see an example of using your HLAPI of choice with your HLAPI's Steam transport then you should contact them. We have links to Fish Networking, Mirror and NetCode for GameObjects in our articles but any HLAPI that works with Steamworks.NET properly will work.
If you looking for examples of how to initialize, configure and use Steam API (in general) you will find various samples in the provided sample scenes and examples throughout our knowledge base.
If you are trying to wrap your head around creating a multiplayer game on the Steam platform, we have an article for that as well. That article is not specific to any given HLAPI because the HLAPI you choose has no impact on the concepts involved.
Last updated