Skip to content

A template project with boilerplate code using Gramps' GodotSteam and Expresso Bits' SteamMultiplayerPeer.

License

Notifications You must be signed in to change notification settings

Malcolm-Q/SteamGodotTemplate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Steam Godot Template

This project uses Gramps' GodotSteam addon and Expresso Bits' SteamMultiplayerPeer addon for Steamworks inntegration.
It also uses derkork's Godot State Charts
Made with Godot 4.4
This project contains a main menu with saved and applied settings, the ability to create and join LAN servers, and the ability to create and join Steam servers.
Invite friends directly through Steam.
Will work for a 2D or 3D project.
All control elements use the theme at assets/misc/main_menu.tres

I built this template for myself first and foremost to reduce time spent on boilerplate however I am making effort for it to be as workflow agnostic as possible.
An exception to this is Godot State Charts. I now consider this plugin essential to all my projects so it will be a dependency here on out.
The styling of the UI is very basic as no matter what it is it will be replaced with the game's own theme.
Pull requests and even alternate branches like one including a lobby browser for example are more than welcome.

Creates 4 player lobbies by default. Does not include lobby browser. Lobbies are friends only by default.
I may create a branch with a lobby browser but I don't use them in my own games so we'll see.
UI is controllable via mouse.

Launch flags:

  • --no-sound
    • Mutes all audio for that instance
  • --host
    • Hosts a LAN lobby
  • --join
    • Joins said LAN lobby.

SC of a LAN lobby: image

SC of the settings page: settings

11/05/25

  • Update to 4.4 and new plugin versions
  • Refactored menu UI to use state chart. Previously this was a gross hack of a state machine I made because I didn't want to force a dependency
  • Fixed Steam.SteamInit missing first arg resulting in this issue on linux
  • Added launch args for --host --join and --no-sound
  • Created SettingsController a class that can be placed and linked to settings controls wherever they may be
  • Removed SFX code in main.gd. I do not use this design pattern so I'm not sure why it was there
  • Changed how music works in main.gd and added support for synchronizing music across clients
  • Removed SignalBus and migrated existing signals to respective classes. It's easy to add a SignalBus but tedious to remove it
  • Made it so instead of 'Create Lobby' and 'LAN' it's 'Steam' and 'LAN'
  • When you select Steam it still shows host/join and if you hit host it will open the steam overlay (overlay only works when steam is wrapping the game)
  • Fixed some settings formatting issues

About

A template project with boilerplate code using Gramps' GodotSteam and Expresso Bits' SteamMultiplayerPeer.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published