প্রকল্প সম্পর্কে

# Facepunch.Steamworks আরেকটি C# Steamworks ইমপ্লিমেন্টেশন, যা Steamworks API-এর চারপাশে একটি আধুনিক, ব্যবহার-সহজ র্যাপার হিসেবে ডিজাইন করা হয়েছে। এটি Steam ছাড়া কোনো নেটিভ ডিপেন্ডেন্সি ছাড়াই একটি একক C# DLL হতে চায়, যা 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 ); ``` ### Steam ক্লাউড ```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 )})" ); } ``` ### Steam ইনভেন্টরি ```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 - যা খুশি করুন।