इस प्रोजेक्ट के बारे में

# Facepunch.Steamworks एक और C# Steamworks कार्यान्वयन, जिसे Steamworks API के आसपास एक आधुनिक, उपयोग में आसान रैपर बनाने के लिए डिज़ाइन किया गया है। इसका लक्ष्य एक एकल C# DLL होना है जिसमें Steam के अलावा कोई मूल निर्भरता नहीं है, जो Windows, Linux, और MacOS का समर्थन करता है, जिसमें Unity और IL2CPP शामिल हैं। ## विशेषताएँ - क्रॉस-प्लेटफ़ॉर्म: Windows, Linux, MacOS - Unity समर्थन, जिसमें IL2CPP शामिल है - Async callbacks (Steam callresults) और events (Steam callbacks) - एकल C# DLL, कोई तृतीय-पक्ष मूल DLL नहीं - MIT लाइसेंस के तहत ओपन सोर्स - 32-बिट ऑपरेटिंग सिस्टम का समर्थन करता है ## यह लाइब्रेरी क्यों लेखक ने मौजूदा C# Steamworks कार्यान्वयनों को कमतर पाया: वे वास्तव में C#-मुहावरेदार नहीं थे, पुराने थे, मूल DLL की आवश्यकता थी, Unity में एक स्टैंडअलोन DLL में संकलित नहीं किए जा सकते थे, मुफ्त नहीं थे, या प्रतिबंधात्मक लाइसेंस थे। इस लाइब्रेरी का उद्देश्य Steamworks API को इस तरह लपेटना है जिससे इसका उपयोग करना आसान हो। ## उपयोग उदाहरण ### उपयोगकर्ता जानकारी प्राप्त करें ```csharp SteamClient.SteamId // आपका SteamId SteamClient.Name // आपका नाम ``` ### मित्र सूची ```csharp foreach ( var friend in SteamFriends.GetFriends() ) { Console.WriteLine( $"{friend.Id}: {friend.Name}" ); Console.WriteLine( $"{friend.IsOnline} / {friend.SteamLevel}" ); friend.SendMessage( "Hello Friend" ); } ``` ### ऐप जानकारी ```csharp Console.WriteLine( SteamApps.GameLanguage ); var installDir = SteamApps.AppInstallDir( 4000 ); var fileinfo = await SteamApps.GetFileDetailsAsync( "hl2.exe" ); ``` ### अवतार ```csharp var image = await SteamFriends.GetLargeAvatarAsync( steamid ); if ( !image.HasValue ) return DefaultImage; return MakeTextureFromRGBA( image.Value.Data, image.Value.Width, image.Value.Height ); ``` ### सर्वर सूची ```csharp using ( var list = new ServerList.Internet() ) { list.AddFilter( "map", "de_dust" ); await list.RunQueryAsync(); foreach ( var server in list.Responsive ) { Console.WriteLine( $"{server.Address} {server.Name}" ); } } ``` ### उपलब्धियाँ उपलब्धियों की सूची बनाएं और अनलॉक करें: ```csharp foreach ( var a in SteamUserStats.Achievements ) { Console.WriteLine( $"{a.Name} ({a.State})" ); } var ach = new Achievement( "GM_PLAYED_WITH_GARRY" ); ach.Trigger(); ``` ### आवाज़ ```csharp SteamUser.VoiceRecord = KeyDown( "V" ); if ( SteamUser.HasVoiceData ) { var bytesrwritten = SteamUser.ReadVoiceData( stream ); } ``` ### प्रमाणीकरण क्लाइंट और सर्वर प्रमाणीकरण: ```csharp var ticket = SteamUser.GetAuthSessionTicket(); SteamServer.OnValidateAuthTicketResponse += ( steamid, ownerid, rsponse ) => { if ( rsponse == AuthResponse.OK ) TellUserTheyCanBeOnServer( steamid ); else KickUser( steamid ); }; if ( !SteamServer.BeginAuthSession( ticketData, clientSteamId ) ) { KickUser( clientSteamId ); } ticket.Cancel(); ``` ### उपयोगिताएँ ```csharp SteamUtils.SecondsSinceAppActive; SteamUtils.SecondsSinceComputerActive; SteamUtils.IpCountry; SteamUtils.UsingBatteryPower; SteamUtils.CurrentBatteryPower; SteamUtils.AppId; SteamUtils.IsOverlayEnabled; SteamUtils.IsSteamRunningInVR; SteamUtils.IsSteamInBigPictureMode; ``` ### वर्कशॉप वर्कशॉप आइटम डाउनलोड करें, क्वेरी करें, और प्रकाशित करें: ```csharp SteamUGC.Download( 1717844711 ); var itemInfo = await Ugc.Item.Get( 1720164672 ); var q = Ugc.Query.All .WithTag( "Fun" ) .WithTag( "Movie" ) .MatchAllTags(); var result = await q.GetPageAsync( 1 ); var q = Ugc.UserQuery.All.CreatedByFriends(); var q = Ugc.UserQuery.All.FromSelf(); var result = await Ugc.Editor.NewCommunityFile .WithTitle( "My New FIle" ) .WithDescription( "This is a description" ) .WithContent( "c:/folder/addon/location" ) .WithTag( "awesome" ) .WithTag( "small" ) .SubmitAsync( iProgressBar ); ``` ### स्टीम क्लाउड ```csharp SteamRemoteStorage.FileWrite( "file.txt", fileContents ); var fileContents = SteamRemoteStorage.FileRead( "file.txt" ); foreach ( var file in SteamRemoteStorage.Files ) { Console.WriteLine( $"{file} ({SteamRemoteStorage.FileSize(file)} {SteamRemoteStorage.FileTime( file )})" ); } ``` ### स्टीम इन्वेंटरी ```csharp foreach ( InventoryDef def in SteamInventory.Definitions ) { Console.WriteLine( $"{def.Name}" ); } var defs = await SteamInventory.GetDefinitionsWithPricesAsync(); var result = await SteamInventory.GetItems(); using ( result ) { var items = result?.GetItems( bWithProperties ); foreach ( InventoryItem item in items ) { Console.WriteLine( $"{item.Id} / {item.Quantity} / {item.Def.Name} " ); } } ``` ## आरंभ करना ### क्लाइंट आरंभीकरण ```csharp using Steamworks; try { SteamClient.Init( 4000 ); } catch ( System.Exception e ) { // किसी कारण से आरंभ नहीं हो सका (स्टीम बंद है आदि) } // जब समाप्त हो जाए: SteamClient.Shutdown(); ``` ### सर्वर आरंभीकरण ```csharp var serverInit = new SteamServerInit( "gmod", "Garry Mode" ) { GamePort = 28015, Secure = true, QueryPort = 28016 }; try { Steamworks.SteamServer.Init( 4000, serverInit ); } catch ( System.Exception ) { // किसी कारण से आरंभ नहीं हो सका (dll त्रुटियाँ, अवरुद्ध पोर्ट) } ``` ## सहायता और योगदान पुल अनुरोधों और बग रिपोर्ट के माध्यम से योगदान का स्वागत है। सहायता और चर्चा के लिए, [Steamworks थ्रेड](http://steamcommunity.com/groups/steamworks/discussions/0/1319961618833314524/) पर जाएँ। उदाहरणों और सलाह के साथ एक [विकी](https://wiki.facepunch.com/steamworks/) भी है। ## लाइसेंस MIT - जो चाहें करें।