
يتم إنشاء هذا المشروع بهدف استبدال steam_api.dll الأصلي من Steam بهذا المشروع ، وبالتالي يحاكي اتصالًا ليكون قادرًا على لعب الألعاب في وضع LAN. هذا ليس غلاف Steamworks مثل Steamworks.Net أو Facepunch . المشروع في مرحلة أولية ، لذلك فهو ليس وظيفيًا حتى الآن بالنسبة لبعض الألعاب.
منذ بعض الوقت لم أتمكن من تحديث المستودع بسبب المشكلات الشخصية ، لذا فإن أولئك الذين يرغبون في التعاون مع التطوير مرحب بهم

عند تجميع المشروع ، يتم إنشاء مجلدين (x64 و x86) التي تحتوي على DLL لمنصة مستهدفة مختلفة ، في حالة X64 ، يجب عليك إعادة تسمية الملف إلى steam_api64.dll ، لمحاكاة اتصال بخار اللعبة التي يجب أن تستبدلها DLL مع اللعبة التي تحتوي على اللعبة. في حالة أن محرك اللعبة هو الوحدة ، يمكنك إعادة تسمية DLL إلى csteamworks.dll واستبدالها.
لاستخدام العميل ، تحتاج ببساطة إلى إضافة اللعبة وتكوين AppID. العميل قيد التطوير حاليًا.
? Root client folder
├──? x64 // The x64 version of the SteamAPI dll that will be injected
├──? x86 // The x64 version of the SteamAPI dll that will be injected
└──? Data
├──? Assemblies // Contains client libraries (Including cefsharp api or gecko)
├──? Images // Contains app cache and avatar images
├──? Injector // Contains the DLL injectors
├──? www // Contains the web files
├──? Storage // Contains stats and achievements files
| └──? Remote // Contains game files
└──? Games.bin // Stored game list
? Root server folder
└──? Data
├──? Assemblies // Contains server libraries
├──? Images // Contains app cache and avatar images
├──? MongoDB // Contains local MongoDB server
└──? Storage // Contains some server files
User Stats manager Save and Load user stats from local folder.
Achievements manager Save and Load user achievements from local folder.
CSteamworks emulation Rename the emu to CSteamworks.dll to emulate them.
Supported Game Engines Works with multiple game engines like Source 2, Unity 3D etc.
Network communication Network communication between clients through a configurable port.
Overlay External Overlay for steam and game messages.
DLC Unlock all downloaded DLCs.
Avatar support Load avatar from file (Avatar.jpg) inside SKYNET folder and share it through the network.
Plugin system Load external plugin to communicate with the emu.
In game voice Fully functional voice system
تنفيذ نظام رد الاتصال.
Steaminternal_ContextInit في ألعاب x86
عندما يتم تمكين خيار سجل الملف SI في الإعدادات ، سيتم إنشاء ملف السجل داخل مجلد "Root Game Folder/Skynet" مع الاسم التالي [SKYNET] steam_api.log
تم تطوير نظام البرنامج المساعد من أجل إنشاء اتصال بين اللعبة ومنسق اللعبة ، ويظهر المثال التالي مكونًا أساسيًا أساسيًا.
Interface for Game Compinator Plugin:
namespace SKYNET . Plugin
{
public interface IGameCoordinatorPlugin
{
uint Initialize ( ) ;
void MessageFromGame ( byte [ ] bytes ) ;
EventHandler < Dictionary < uint , byte [ ] > > IsMessageAvailable { get ; set ; }
}
}مثال على مكونات منسق اللعبة:
namespace SKYNET . Plugin
{
public class Dota2GameCoordinator : IGameCoordinatorPlugin
{
private uint AppID = 570 ;
public EventHandler < Dictionary < uint , byte [ ] > > IsMessageAvailable { get ; set ; }
public uint Initialize ( )
{
// TODO: Initialize all Game coordinator class
return AppID ;
}
public void MessageFromGame ( byte [ ] bytes )
{
// Process message from game
uint MsgType = MsgUtil . GetGCMsg ( new MemoryStream ( bytes ) . ReadUInt32L ( ) ) ;
IPacketGCMsg packetGCMsg = MsgUtil . GetPacketGcMsg ( MsgType , bytes ) ;
// TODO: Process GC message
}
public void SendPacketToGame ( uint msgType , byte [ ] packet )
{
Dictionary < uint , byte [ ] > message = new Dictionary < uint , byte [ ] > ( ) ;
message . Add ( msgType , packet ) ;
IsMessageAvailable ? . Invoke ( this , message ) ;
}
public void SendPacketToGame ( Dictionary < uint , byte [ ] > messages )
{
IsMessageAvailable ? . Invoke ( this , messages ) ;
}
}
}