Contained in this repo is my detailed explanation of the netcode behind Among Us, a game by Innersloth. Myself and others have spent countless hours scanning the game's decompiled source code as well as manually dissecting each and every packet sent by the game. Not all of this information will be correct, though it is safe to assume that almost all of it is, and those parts that I am uncertain of will be labeled as such.
I do not work for Innersloth, nor do I have any connection to anyone at Innersloth; this is just the result of an obsession in discovering how the game works.
This repo does not currently contain instructions on how to decompile/deobfuscate the game.
To intercept packets, I recommend using Wireshark with one of the display filters below.
To show all game traffic:
udp.port in { 22023 22123 22223 22323 22423 22523 22623 22723 22823 22923 }
To show only reliable packets (recommended as movement, pings, and acks can add a bunch of noise):
udp.port in { 22023 22123 22223 22323 22423 22523 22623 22723 22823 22923 } and data[0] == 01
- Packet Structure
- Root Message Types
GameData
andGameDataTo
Message TypesRPC
Message Types0x00
PlayAnimation0x01
CompleteTask0x02
SyncSettings0x03
SetInfected0x04
Exiled0x05
CheckName0x06
SetName0x07
CheckColor0x08
SetColor0x09
SetHat0x0a
SetSkin0x0b
ReportDeadBody0x0c
MurderPlayer0x0d
SendChat0x0e
StartMeeting0x0f
SetScanner0x10
SendChatNote0x11
SetPet0x12
SetStartCounter0x13
EnterVent0x14
ExitVent0x15
SnapTo0x16
Close0x17
VotingComplete0x18
CastVote0x19
ClearVote0x1a
AddVote0x1b
CloseDoorsOfType0x1c
RepairSystem0x1d
SetTasks0x1e
UpdateGameData
InnerNetObject
Types- The
SystemType
Implementations - Miscellaneous