Tài liệu Steamworks
Interface ISteamGameServer
Cung cấp tính năng cốt lõi của API máy chủ trò chơi Steam.

Hàm con

Hàm con (member function) cho ISteamGameServer được gọi qua hàm accessor dạng global SteamGameServer().

AssociateWithClan

SteamAPICall_t AssociateWithClan( CSteamID steamIDClan );
TênLoạiMô tả
steamIDClanCSteamIDSteamID của nhóm mà bạn muốn liên kết.

Liên kết máy chủ trò chơi này với nhóm này với mục đích tính toán độ tương thích của người chơi.

Trả về: SteamAPICall_t để dùng với kết quả gọi từ AssociateWithClanResult_t.

BeginAuthSession

EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID );
TênLoạiMô tả
pAuthTicketconst void *Auth ticket để xác thực.
cbAuthTicketintKích thước theo byte của auth ticket. Đây phải là kích thước pcbTicket được cung cấp bởi lệnh gọi tạo nên ticket này.
steamIDCSteamIDSteamID của thực thể đã gửi ticket này.

Xác thực ticket từ SteamID của thực thể để đảm bảo hợp lệ và chưa tái sử dụng. Lưu ý rằng danh tính không được xác thực cho đến khi nhận callback từ ValidateAuthTicketResponse_t và giá trị trả về trong callback đó được kiểm là thành công.

Ticket được tạo trên thực thể với ISteamUser::GetAuthSessionTicket hoặc GetAuthSessionTicket và rồi cần được cung cấp trên hệ thống mạng để đầu còn lại xác thực.

Điều này ghi nhận cho các callback của ValidateAuthTicketResponse_t nếu thực thể mất kết nối hoặc hủy ticket. Xem EAuthSessionResponse để biết thêm thông tin.

Khi kết thúc phiên chơi nhiều người, bạn phải gọi EndAuthSession.

Trả về: EBeginAuthSessionResult


Xem thêm: Xác thực người dùng và quyền sở hữu

BLoggedOn

bool BLoggedOn();
Kiểm tra xem máy chủ trò chơi đã đăng nhập chưa.

Trả về: bool
true nếu máy chủ trò chơi đã đăng nhập; còn không, false.

BSecure

bool BSecure();
Kiểm tra xem máy chủ trò chơi có ở chế độ "Secure" (bảo mật) chưa.

Trả về: bool
true nếu máy chủ trò chơi bảo mật; còn không, false.

Xem thêm: EServerMode, GSPolicyResponse_t

BUpdateUserData

bool BUpdateUserData( CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore );
TênLoạiMô tả
steamIDUserCSteamIDSteamID của người dùng.
pchPlayerNameconst char *Tên của người dùng.
uScoreuint32Điểm số hiện tại của người dùng.

Cập nhật dữ liệu để hiện trong interface trình duyệt tìm máy chủ và xếp trận cho người dùng hiện đang kết nối tới máy chủ.

LƯU Ý: Phần này là API cũ để xác thực người dùng và không nên trộn lẫn với API mới.

Trả về: bool
true nếu lệnh gọi thành công; còn không false nếu thất bại (ví dụ, steamIDUser không phải là người chơi trên máy chủ hiện tại).

Xem thêm: Xác thực người dùng và quyền sở hữu

CancelAuthTicket

void CancelAuthTicket( HAuthTicket hAuthTicket );
TênLoạiMô tả
hAuthTicketHAuthTicketAuth ticket đang hoạt động cần hủy.

Hủy auth ticket nhận từ ISteamUser::GetAuthSessionTicket. Nên được gọi khi không còn chơi với thực thể được chỉ định.

Xem thêm: Xác thực người dùng và quyền sở hữu

ClearAllKeyValues

void ClearAllKeyValues();
Xóa toàn bộ danh sách khóa/giá trị (key/value) được gửi trong truy vấn quy tắc.

Xem thêm: SetKeyValue, ISteamMatchmakingServers::ServerRules

ComputeNewPlayerCompatibility

SteamAPICall_t ComputeNewPlayerCompatibility( CSteamID steamIDNewPlayer );
TênLoạiMô tả
steamIDNewPlayerCSteamIDSteamID của người chơi tìm cách gia nhập.

Kiểm tra xem có người dùng hiện tại nào không muốn chơi cùng người chơi mới đang tìm cách gia nhập - hoặc ngược lại; dựa trên hệ thống frenemy (bạn thù).

Trả về: SteamAPICall_t để dùng với kết quả gọi từ ComputeNewPlayerCompatibilityResult_t.

CreateUnauthenticatedUserConnection

CSteamID CreateUnauthenticatedUserConnection();
Tạo người dùng ảo (vd: bot) được xem là đang chơi trên máy chủ, nhưng bỏ qua bước xác thực.

LƯU Ý: Phần này là API cũ để xác thực người dùng và không nên trộn lẫn với API mới.

Trả về: CSteamID
Trả về SteamID cho bot cần theo dõi.

Nên gọi SendUserDisconnect khi người dùng này rời máy chủ, tương tự quy trình thực hiện cho người dùng thực.

EnableHeartbeats

void EnableHeartbeats( bool bActive );
TênLoạiMô tả
bActiveboolBật (true) hoặc tắt (false) công cụ cập nhật máy chủ tổng.

Cho máy chủ tổng của Steam biết bạn có muốn hoạt động hay không.

Nếu hàm này được kích hoạt thì máy chủ sẽ giao tiếp với máy chủ tổng, nếu không, các tin nhắn đến sẽ bị phớt lờ và heartbeat sẽ không được gửi.

Xem thêm: SetHeartbeatInterval, ForceHeartbeat

EndAuthSession

void EndAuthSession( CSteamID steamID );
TênLoạiMô tả
steamIDCSteamIDThực thể để kết thúc phiên xác thực đang diễn ra.

Kết thúc phiên xác thực bắt đầu bằng BeginAuthSession. Nên được gọi khi không còn chơi với thực thể được chỉ định.

Xem thêm: Xác thực người dùng và quyền sở hữu

ForceHeartbeat

void ForceHeartbeat();
Buộc gửi một heartbeat đến máy chủ tổng của Steam ngay khi có cơ hội tiếp theo.

Thường không cần dùng hàm này.

Xem thêm: EnableHeartbeats, SetHeartbeatInterval

GetAuthSessionTicket

HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket );
TênLoạiMô tả
pTicketvoid *Bộ nhớ đệm nơi auth ticket mới được sao chép vào nếu lệnh gọi thành công.
cbMaxTicketintKích thước của bộ nhớ đệm được phân bổ cho pTicket. Nên là 1024.
pcbTicketuint32 *Trả về độ dài của ticket thực.

Truy xuất auth ticket để gửi đến thực thể muốn xác thực bạn.

Sau khi gọi hàm này, bạn có thể gửi ticket đến thực thể, tại đây ISteamUser::BeginAuthSession được gọi để xác minh tính toàn vẹn của các thực thể này.

Khi tạo ticket để được dùng bởi API Web ISteamUserAuth/AuthenticateUserTicket, trình gọi nên đợi lệnh callback GetAuthSessionTicketResponse_t tạo ra từ lệnh gọi API trước khi tìm cách dùng ticket, nhằm đảm bảo ticket đã được truyền đến máy chủ. Nếu lệnh callback không xử lý kịp thời (10 - 20 giây), thì client của bạn sẽ không thể kết nối với Steam, và lệnh gọi AuthenticateUserTicket sẽ thất bại vì không thể xác thực người dùng.

Trả về: HAuthTicket
Kích hoạt lệnh callback GetAuthSessionTicketResponse_t.
Handle cho auth ticket. Sau khi tương tác xong với thực thể, bạn phải gọi CancelAuthTicket trên handle.

Trả về k_HAuthTicketInvalid nếu lệnh gọi thất bại.

Xem thêm: Xác thực người dùng và quyền sở hữu

GetGameplayStats

void GetGameplayStats();
Không dùng nữa - Sẽ được gỡ bỏ trong bản phát hành tương lai của SDK.

Trả về: void
Kích hoạt lệnh callback GSGameplayStats_t.

GetNextOutgoingPacket

int GetNextOutgoingPacket( void *pOut, int cbMaxOut, uint32 *pNetAdr, uint16 *pPort );
TênLoạiMô tả
pOutvoid *Trả về gói cần được gửi đi bằng cách sao chép nó vào bộ nhớ đệm này. Gói có thể có kích thước lên đến 16KiB nên hãy phân bổ phù hợp.
cbMaxOutintKích thước bộ nhớ đệm cung cấp cho pOut, nên là 16 * 1024.
pNetAdruint32 *Trả về địa chỉ IP mà gói này cần được gửi đến theo thứ tự máy chủ (host), tức là 127.0.0.1 == 0x7f000001.
pPortuint16 *Trả về cổng mà gói cần được gửi qua, theo thứ tự máy chủ (host).

Nhận gói mà công cụ cập nhật máy chủ tổng cần gửi trên UDP khi trong chế độ GameSocketShare.

LƯU Ý: Chỉ nên gọi hàm này SAU KHI gọi HandleIncomingPacket cho bất kỳ gói nào đi vào khung hình đó!

LƯU Ý: Hàm này PHẢI được gọi liên tục cho mỗi khung hình đến khi kết quả trả về 0 trong chế độ GameSocketShare.

Có thể bật chế độ GameSocketShare khi gọi SteamGameServer_Init.

Trả về: int
Độ dài của gói cần được gửi, hoặc 0 nếu không có thêm gói để gửi khung hình này.

GetPublicIP

uint32 GetPublicIP();
Lấy IP công khai của máy chủ dựa theo Steam.

Hữu dụng khi máy chủ nằm sau NAT và bạn muốn quảng cáo IP của nó trong một phòng chờ để các client khác trực tiếp kết nối tới.

Trả về: uint32
IP công khai theo thứ tự máy chủ (host), ví dụ 127.0.0.1 == 0x7f000001.

Trả về 0 nếu không xác định được IP.

GetServerReputation

SteamAPICall_t GetServerReputation();
Không dùng nữa - Sẽ được gỡ bỏ trong bản phát hành tương lai của SDK.

Trả về: SteamAPICall_t để dùng với kết quả gọi từ GSReputation_t.

GetSteamID

CSteamID GetSteamID();
Lấy SteamID của máy chủ trò chơi.

Trả về: CSteamID

HandleIncomingPacket

bool HandleIncomingPacket( const void *pData, int cbData, uint32 srcIP, uint16 srcPort );
TênLoạiMô tả
pDataconst void *Dữ liệu từ gói đang gửi đến.
cbDataintKích thước của pData tính bằng byte.
srcIPuint32Địa chỉ IP của gói được gửi đến theo thứ tự máy chủ (host), ví dụ 127.0.0.1 == 0x7f000001.
srcPortuint16Cổng mà gói này được gửi qua, theo thứ tự máy chủ (host).

Xử lý một gói máy chủ tổng Steam khi trong chế độ GameSocketShare.

Khi trong chế độ GameSocketShare, thay vì ISteamGameServer tạo socket riêng để giao tiếp với máy chủ tổng, hàm này cho phép trò chơi sử dụng socket của nó để chuyển tiếp thông điệp qua lại. Điều này ngăn chúng tôi yêu cầu các nhà điều hành máy chủ mở thêm cổng trong tường lửa.

Hàm này nên được gọi bất cứ khi nào gói bắt đầu bằng 0xFFFFFFFF gửi đến. Mã đó báo hiệu gói dành cho máy của chúng ta.

Tham số IP và cổng được dùng khi bạn chọn ghép kênh socket UDP của máy chủ trò chơi thay vì để công cụ cập nhật máy chủ tổng sử dụng socket của riêng nó.

Trò chơi source engine dùng để giảm tải công việc cho các quản trị viên máy chủ, để họ không phải mở thêm cổng trên tường lửa.

Chỉ SAU lần gọi lệnh này, bạn mới nên gọi GetNextOutgoingPacket.

Có thể bật chế độ GameSocketShare khi gọi SteamGameServer_Init.

Trả về: bool

InitGameServer

bool InitGameServer( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char *pchVersionString );
TênLoạiMô tả
unIPuint32Địa chỉ IP định gán. (Nên sắp xếp theo thứ tự máy chủ (host), tức là 127.0.0.1 == 0x7f000001). Bạn có thể dùng INADDR_ANY để gán cho tất cả địa chỉ IPv4 cục bộ.
usGamePortuint16Cổng mà client sẽ kết nối để chơi.
usQueryPortuint16Cổng quản lý các nhiệm vụ liên quan đến trình duyệt máy chủ và ping thông tin từ các client.
unFlagsuint32Tổ hợp một hoặc nhiều ServerFlag.
nGameAppIdAppId_tAppID của trò chơi trên máy chủ này.
pchVersionStringconst char *Chuỗi phiên bản thường ở dạng x.x.x.x, và được sử dụng bởi máy chủ tổng để phát hiện khi máy chủ hết hạn. (Chỉ các máy chủ với phiên bản mới nhất sẽ được liệt kê).

Khởi tạo thực thể của ISteamGameServer. Hàm này được gọi bởi SteamGameServer_Init, và bạn sẽ thường không cần gọi trực tiếp.

Nếu truyền MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE vào usQueryPort sẽ khiến API máy chủ trò chơi sử dụng chế độ "GameSocketShare", có nghĩa là trò chơi sẽ chịu trách nhiệm gửi và nhận gói UDP cho công cụ cập nhật máy chủ tổng.

Nếu chế độ GameSocketShare được sử dụng, thì bạn phải dùng HandleIncomingPacketGetNextOutgoingPacket để tương tác với máy chủ tổng của Steam.

Trả về: bool
true nếu máy chủ trò chơi thành công gán với cổng/IP được cung cấp; còn không, false để báo lỗi.

LogOff

void LogOff();
Bắt đầu quá trình đăng xuất máy chủ trò chơi ra khỏi Steam.

Trả về: void
Kích hoạt lệnh callback SteamServerConnectFailure_t.
Kích hoạt lệnh callback SteamServersConnected_t.
Kích hoạt lệnh callback SteamServersDisconnected_t.

LogOn

void LogOn( const char *pszToken );
TênLoạiMô tả
pszTokenconst char *

Bắt đầu quá trình đăng nhập vào tài khoản máy chủ trò chơi cố định.

Trả về: void
Kích hoạt lệnh callback SteamServerConnectFailure_t.
Kích hoạt lệnh callback SteamServersConnected_t.
Kích hoạt lệnh callback SteamServersDisconnected_t.


Xem thêm: LogOnAnonymous

LogOnAnonymous

void LogOnAnonymous();
Đăng nhập vào một tài khoản chung, ẩn danh.

Trả về: void
Kích hoạt lệnh callback SteamServerConnectFailure_t.
Kích hoạt lệnh callback SteamServersConnected_t.
Kích hoạt lệnh callback SteamServersDisconnected_t.


Xem thêm: LogOn

RequestUserGroupStatus

bool RequestUserGroupStatus( CSteamID steamIDUser, CSteamID steamIDGroup );
TênLoạiMô tả
steamIDUserCSteamIDNgười dùng có trạng thái nhóm cần kiểm tra.
steamIDGroupCSteamIDNhóm cần kiểm tra.

Kiểm tra xem người dùng có thuộc về một nhóm Steam đã chỉ định hay không.

Trả về: bool
Kích hoạt lệnh callback GSClientGroupStatus_t.
true nếu lệnh gọi được gửi thành công đến máy chủ Steam; còn không, false nếu ta không kết nối tới máy chủ Steam hoặc một người dùng hay nhóm không hợp lệ được cung cấp.

SendUserConnectAndAuthenticate

bool SendUserConnectAndAuthenticate( uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize, CSteamID *pSteamIDUser );
TênLoạiMô tả
unIPClientuint32Địa chỉ IP của client đang kết nối vào. Sắp xếp theo thứ tự máy chủ (host), tức là 127.0.0.1 == 0x7f000001.
pvAuthBlobconst void *Dữ liệu xác thực do người dùng cung cấp từ lệnh gọi tới ISteamUser::InitiateGameConnection.
cubAuthBlobSizeuint32Kích thước của pvAuthBlob tính bằng byte.
pSteamIDUserCSteamID *Trả về SteamID của người dùng. Không được là NULL.

Xử lý việc nhận kết nối mới từ một người dùng Steam. Hàm yêu cầu máy chủ Steam xác thực danh tính người dùng, quyền sở hữu ứng dụng, và trạng thái VAC.

Nếu tất cả máy chủ Steam đều ngắt kết nối mạng, hàm này sẽ tự xác thực ticket đã lưu, từ đó giúp xác thực quyền sở hữu và danh tính ứng dụng.

LƯU Ý: Phần này là API cũ để xác thực người dùng và không nên trộn lẫn với API mới.

Trả về: bool
true nếu ticket của người dùng vượt qua các kiểm tra cơ bản; còn không, false.

Nếu lệnh gọi thành công, đợi lệnh callback GSClientApprove_t hoặc GSClientDeny_t để biết đã xác thực người dùng thành công hay thất bại. SteamID trong lệnh callback sẽ khớp với SteamID do lệnh gọi này trả về.

SendUserDisconnect

void SendUserDisconnect( CSteamID steamIDUser );
TênLoạiMô tả
steamIDUserCSteamIDSteamID của người dùng đã rời khỏi máy chủ trò chơi.

Hàm này nên được gọi bất cứ khi nào người dùng rời khỏi máy chủ trò chơi.

Hàm này cho phép Steam theo dõi nội bộ người dùng nào hiện đang ở máy chủ nào, nhằm mục đích ngăn một tài khoản đăng nhập vào nhiều máy chủ và hiển thị ai nay có trên máy chủ, vv.

LƯU Ý: Phần này là API cũ để xác thực người dùng và không nên trộn lẫn với API mới.

SetBotPlayerCount

void SetBotPlayerCount( int cBotplayers );
TênLoạiMô tả
cBotplayersintSố lượng người chơi bot/AI hiện chơi trên máy chủ.

Đặt số lượng người chơi bot/AI trên máy chủ trò chơi. Giá trị mặc định là 0.

SetDedicatedServer

void SetDedicatedServer( bool bDedicated );
TênLoạiMô tả
bDedicatedboolĐây là máy chủ chuyên dụng (true) hay máy chủ kiêm người chơi (false)?

Đặt làm máy chủ chuyên dụng hoặc máy chủ kiêm người chơi. Mặc định là máy chủ kiêm người chơi.

LƯU Ý: Chỉ có thể đặt trước khi gọi LogOn hoặc LogOnAnonymous.

SetGameData

void SetGameData( const char *pchGameData );
TênLoạiMô tả
pchGameDataconst char *Giá trị "gamedata" mới cần đặt. Không được là NULL hoặc chuỗi rỗng (""). Không thể dài hơn k_cbMaxGameServerGameData.

Đặt một chuỗi định nghĩa "gamedata" cho máy chủ này, tuy không bắt buộc nhưng nếu đặt thì cho phép người dùng lọc trong interface xếp trận/trình duyệt tìm máy chủ dựa trên giá trị này.

Thường được định dạng theo kiểu danh sách phân tách bằng dấu phẩy hoặc chấm phẩy.

Đừng đặt trừ khi thực sự có thay đổi, chỉ tải lên máy chủ tổng một lần khi được xác nhận.

SetGameDescription

void SetGameDescription( const char *pszGameDescription );
TênLoạiMô tả
pszGameDescriptionconst char *Mô tả về trò chơi. Không được là NULL hoặc chuỗi rỗng (""). Không thể dài hơn k_cbMaxGameServerGameDescription.

Đặt mô tả trò chơi. Khuyến khích đặt thành tên đầy đủ của trò chơi.

LƯU Ý: Yêu cầu đặt cho tất cả máy chủ trò chơi và chỉ có thể đặt trước khi gọi LogOn hoặc LogOnAnonymous.

SetGameTags

void SetGameTags( const char *pchGameTags );
TênLoạiMô tả
pchGameTagsconst char *Giá trị "gametags" mới cần đặt. Không được là NULL hoặc chuỗi rỗng (""). Không thể dài hơn k_cbMaxGameServerTags.

Đặt một chuỗi định nghĩa "gametags" cho máy chủ này, tuy không bắt buộc nhưng nếu đặt thì cho phép người dùng lọc trong interface xếp trận/trình duyệt tìm máy chủ dựa trên giá trị này.

Thường được định dạng theo kiểu danh sách phân tách bằng dấu phẩy hoặc chấm phẩy.

Đừng đặt trừ khi thực sự có thay đổi, chỉ tải lên máy chủ tổng một lần khi được xác nhận.

SetHeartbeatInterval

void SetHeartbeatInterval( int iHeartbeatInterval );
TênLoạiMô tả
iHeartbeatIntervalintKhoảng thời gian giữa hai lần gửi heartbeat, tính bằng mili giây. Thường nằm trong phạm vi 250-1000. Dùng -1 để sử dụng giá trị mặc định.

Thay đổi tần suất gửi heartbeat đến máy chủ tổng của Steam.

Thường không cần dùng hàm này.

Xem thêm: EnableHeartbeats, ForceHeartbeat

SetKeyValue

void SetKeyValue( const char *pKey, const char *pValue );
TênLoạiMô tả
pKeyconst char *
pValueconst char *

Thêm/cập nhật cặp khóa/giá trị (key/value) cho một quy tắc.

Xem thêm: ClearAllKeyValues, ISteamMatchmakingServers::ServerRules

SetMapName

void SetMapName( const char *pszMapName );
TênLoạiMô tả
pszMapNameconst char *Tên màn chơi mới cần đặt. Không được là NULL hoặc chuỗi rỗng (""). Không thể dài hơn k_cbMaxGameServerMapName.

Đặt tên màn chơi để báo cáo trong trình duyệt máy chủ.

SetMaxPlayerCount

void SetMaxPlayerCount( int cPlayersMax );
TênLoạiMô tả
cPlayersMaxintSố lượng người chơi tối đa (số liệu mới) được cho phép trên máy chủ này.

Đặt số lượng người chơi tối đa được cho phép trên máy chủ này cùng lúc.

Giá trị này có thể được thay đổi bất cứ lúc nào.

SetModDir

void SetModDir( const char *pszModDir );
TênLoạiMô tả
pszModDirconst char *Thư mục trò chơi cần thiết lập. Không được là NULL hoặc chuỗi rỗng (""). Không thể dài hơn k_cbMaxGameServerGameDir.

Thiết lập thư mục trò chơi.

Nên cùng là thư mục cài đặt trò chơi. Chỉ tên thư mục, không phải toàn bộ đường dẫn. Ví dụ: "Spacewar".

LƯU Ý: Yêu cầu đặt cho tất cả máy chủ trò chơi và chỉ có thể đặt trước khi gọi LogOn hoặc LogOnAnonymous.

SetPasswordProtected

void SetPasswordProtected( bool bPasswordProtected );
TênLoạiMô tả
bPasswordProtectedboolBật (true) hoặc tắt (false) tính năng bảo mật bằng mật khẩu.

Đặt để máy chủ trò chơi yêu cầu mật khẩu khi người dùng cố kết nối.

SetProduct

void SetProduct( const char *pszProduct );
TênLoạiMô tả
pszProductconst char *Mã định danh độc nhất cho trò chơi. Không được là NULL hoặc chuỗi rỗng ("").

Đặt mã định danh sản phẩm cho trò chơi. Hàm hiện được sử dụng bởi máy chủ tổng để kiểm tra phiên bản.

Khuyến khích đổi appID của trò chơi thành chuỗi.

LƯU Ý: Yêu cầu đặt cho tất cả máy chủ trò chơi và chỉ có thể đặt trước khi gọi LogOn hoặc LogOnAnonymous.

SetRegion

void SetRegion( const char *pszRegion );
TênLoạiMô tả
pszRegionconst char *

Định danh khu vực. Không bắt buộc, giá trị mặc định là chuỗi rỗng, nghĩa là chỉ khu vực "thế giới".

SetServerName

void SetServerName( const char *pszServerName );
TênLoạiMô tả
pszServerNameconst char *Tên mới máy chủ cần đặt. Không được là NULL hoặc chuỗi rỗng (""). Không thể dài hơn k_cbMaxGameServerName.

Đặt tên của máy chủ để hiển thị trong trình duyệt máy chủ.

SetSpectatorPort

void SetSpectatorPort( uint16 unSpectatorPort );
TênLoạiMô tả
unSpectatorPortuint16Cổng để khán giả kết nối.

Đặt để máy chủ trò chơi cho phép khán giả theo dõi, và cổng nào để họ kết nối. Giá trị mặc định là 0, nghĩa là dịch vụ không được dùng.

SetSpectatorServerName

void SetSpectatorServerName( const char *pszSpectatorServerName );
TênLoạiMô tả
pszSpectatorServerNameconst char *Tên cần đặt cho máy chủ khán giả. Không được là NULL hoặc chuỗi rỗng (""). Không thể dài hơn k_cbMaxGameServerMapName.

Đặt tên cho máy chủ khán giả. Chỉ được dùng nếu cổng khán giả là giá trị khác 0.

UserHasLicenseForApp

EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID );
TênLoạiMô tả
steamIDCSteamIDSteamID của người dùng gửi auth ticket.
appIDAppId_tAppID DLC để kiểm tra người dùng có sở hữu không.

Kiểm tra xem người dùng có sở hữu một phần cụ thể của Nội dung tải thêm (DLC).

Chỉ có thể gọi sau khi gửi auth ticket của người dùng đến BeginAuthSession.

Trả về: EUserHasLicenseForAppResult


Xem thêm: Xác thực người dùng và quyền sở hữu

WasRestartRequested

bool WasRestartRequested();
Kiểm tra xem máy chủ tổng có báo hết hạn hay không.

Đổi lại false sau khi gọi hàm này.

Trả về: bool
true nếu máy chủ tổng muốn máy chủ trò chơi này cập nhật và khởi động lại; còn không, false.

Callback

Đây là các callback có thể kích hoạt bằng cách gọi SteamAPI_RunCallbacks. Rất nhiều trong số này sẽ được kích hoạt trực tiếp để phản hồi lại hàm con của ISteamGameServer.

AssociateWithClanResult_t

Gửi khi máy chủ trò chơi tìm cách liên kết với một nhóm Steam.

TênLoạiMô tả
m_eResultEResultKết quả của thao tác. Giá trị khả thi:

Hàm liên quan: AssociateWithClan

ComputeNewPlayerCompatibilityResult_t

Được gửi khi máy chủ trò chơi kiểm tra xem người chơi mới có phù hợp với máy chủ không dựa trên hệ thống frenemy (bạn thù).

TênLoạiMô tả
m_eResultEResultKết quả của thao tác. Giá trị khả thi:
m_cPlayersThatDontLikeCandidateintSố người chơi hiện tại không thích chơi với người chơi được chỉ định.
m_cPlayersThatCandidateDoesntLikeintSố người chơi trên máy chủ đó mà người chơi được chỉ định không muốn chơi cùng.
m_cClanPlayersThatDontLikeCandidateintSố người chơi trong nhóm Steam liên kết không thích chơi với người chơi đó.
m_SteamIDCandidateCSteamIDSteamID của người chơi được chỉ định.

Hàm liên quan: ComputeNewPlayerCompatibility

GSClientAchievementStatus_t

Không còn dùng - Thay vào đó sử dụng ISteamGameServerStats.

TênLoạiMô tả
m_SteamIDuint64Không còn dùng
m_pchAchievementchar[128]Không còn dùng
m_bUnlockedboolKhông còn dùng

GSClientApprove_t

Một client đã được duyệt cho kết nối tới máy chủ trò chơi này.

TênLoạiMô tả
m_SteamIDCSteamIDSteamID của người dùng đang muốn kết nối.
m_OwnerSteamIDCSteamIDSteamID sở hữu trò chơi, nó sẽ khác với m_SteamID nếu trò chơi được truy cập qua Chia sẻ gia đình Steam.

GSClientDeny_t

Gọi khi người dùng bị từ chối kết nối tới máy chủ trò chơi này.

TênLoạiMô tả
m_SteamIDCSteamIDSteamID của người dùng đã tìm cách kết nối.
m_eDenyReasonEDenyReasonLý do người chơi bị từ chối.
m_rgchOptionalTextchar[128]Đoạn tin nhắn giải thích lý do từ chối (không bắt buộc). Thường không dùng ngoài mục đích ghi chú.

GSClientGroupStatus_t

Gọi khi đã nhận được trạng thái nhóm của người dùng.

TênLoạiMô tả
m_SteamIDUserCSteamIDNgười dùng mà ta đã truy vấn trạng thái nhóm.
m_SteamIDGroupCSteamIDNhóm mà ta truy vấn.
m_bMemberboolNgười dùng có phải thành viên nhóm (true) hay không (false)?
m_bOfficerboolNgười dùng có phải ủy viên trong nhóm (true) hay không (false)? Giá trị sẽ không bao giờ là true nếu m_bMember là false.

Hàm liên quan: RequestUserGroupStatus

GSClientKick_t

Gọi khi máy chủ trò chơi nên đuổi người dùng.

TênLoạiMô tả
m_SteamIDCSteamIDSteamID của người chơi nên bị đuổi.
m_eDenyReasonEDenyReasonLý do người chơi bị đuổi.

GSGameplayStats_t

Không còn dùng - Gọi khi thông tin số liệu thống kê về trò chơi đã được truy vấn bằng GetGameplayStats.

TênLoạiMô tả
m_eResultEResultKết quả của thao tác.
m_nRankint32Thứ hạng tổng quát của máy chủ (thấp nhất là 0).
m_unTotalConnectsuint32Tổng số lượng client đã từng kết nối tới máy chủ.
m_unTotalMinutesPlayeduint32Tổng số phút từng được chơi trên máy chủ.

Hàm liên quan: GetGameplayStats

GSPolicyResponse_t

Nhận khi máy chủ trò chơi yêu cầu được hiển thị là bảo mật (bảo mật bằng VAC)

TênLoạiMô tả
m_bSecureuint8Máy chủ hiện được thiết lập bảo mật (true) hay không bảo mật (false)?

GSReputation_t

Không còn dùng - Gọi khi danh tiếng máy chủ trò chơi đã được truy vấn.

Lệnh cấm ban hành từ máy chủ tổng là theo IP, nên có thể bị cấm kể cả khi điểm số tốt nếu có một máy chủ xấu trên cổng khác.
Thông tin này có thể được sử dụng để xác định máy chủ nào xấu.

TênLoạiMô tả
m_eResultEResultKết quả của thao tác.
m_unReputationScoreuint32Điểm danh tiếng của máy chủ trò chơi.
m_bBannedboolLiệu máy chủ có bị cấm khỏi máy chủ tổng của Steam (true) hay không (false)?
m_unBannedIPuint32IP của máy chủ bị cấm. Chỉ đặt nếu m_bBannedtrue.
m_usBannedPortuint16Cổng của máy chủ bị cấm. Chỉ đặt nếu m_bBannedtrue.
m_ulBannedGameIDuint64GameID của trò chơi trên máy chủ bị cấm. Chỉ đặt nếu m_bBannedtrue.
m_unBanExpiresuint32Thời điểm hết hạn cấm, cung cấp ở định dạng giờ Unix (số giây kể từ ngày 1/1/1970). Chỉ đặt nếu m_bBannedtrue.

Hàm liên quan: GetServerReputation

Hằng số

Đây là các hằng số được định nghĩa để dùng với ISteamGameServer.

TênLoạiGiá trịMô tả
k_unServerFlagActiveuint320x01Máy chủ trò chơi có người dùng đang chơi.
k_unServerFlagDedicateduint320x04Máy chủ trò chơi này là loại chuyên dụng.
k_unServerFlagLinuxuint320x08Máy chủ trò chơi này đang chạy trên Linux.
k_unServerFlagNoneuint320x00Máy chủ trò chơi này không có flag.
k_unServerFlagPasswordeduint320x10Máy chủ trò chơi này có mật khẩu bảo vệ.
k_unServerFlagPrivateuint320x20Máy chủ trò chơi này không nên có trên máy chủ tổng và sẽ không bắt buộc xác minh người dùng kết nối đến máy chủ đó.
Hữu ích khi chạy một máy chủ mà client có thể không thể kết nối với mạng Internet nhưng bạn muốn cho các máy đó chơi được (ví dụ qua mạng LAN).
k_unServerFlagPrivateuint320x02Máy chủ trò chơi muốn được bảo mật VAC.
MASTERSERVERUPDATERPORT_USEGAMESOCKETSHAREint((uint16)-1)Sử dụng với SteamGameServer_Init để bật chế độ GameSocketShare.
STEAMGAMESERVER_INTERFACE_VERSIONconst char *"SteamGameServer012"