
Proyek ini dibuat dengan tujuan mengganti steam_api.dll asli dari Steam dengan yang ini dan dengan demikian meniru koneksi untuk dapat bermain game dalam mode LAN. Ini bukan pembungkus steamworks seperti Steamworks.Net atau Facepunch . Proyek ini dalam tahap awal, jadi belum berfungsi untuk beberapa game.
Beberapa waktu yang lalu saya belum dapat memperbarui repositori karena masalah pribadi sehingga mereka yang ingin berkolaborasi dengan pengembangan dipersilakan

Saat menyusun proyek, dua folder dihasilkan (x64 dan x86) yang berisi DLL untuk platform target yang berbeda, dalam kasus x64 Anda harus mengganti nama file ke steam_api64.dll, untuk meniru koneksi ke uap permainan, Anda harus mengganti DLL dengan yang berisi permainan. Jika mesin game adalah Unity, Anda dapat mengganti nama DLL ke csteamworks.dll dan menggantinya.
Untuk menggunakan klien, Anda hanya perlu menambahkan game dan mengkonfigurasi appID. Klien saat ini sedang dalam pengembangan.
? 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
Implementasi Sistem Callback.
Steaminternal_ContextInit di game x86
Saat File Log Opsi SI Diaktifkan di Pengaturan, file log akan dibuat di dalam folder "Root Game Folder/Skynet" dengan nama berikut [SKYNET] steam_api.log
Sistem plugin dikembangkan untuk membangun komunikasi antara game dan koordinator game, contoh berikut menunjukkan plugin dasar.
Antarmuka untuk plugin koordinator game:
namespace SKYNET . Plugin
{
public interface IGameCoordinatorPlugin
{
uint Initialize ( ) ;
void MessageFromGame ( byte [ ] bytes ) ;
EventHandler < Dictionary < uint , byte [ ] > > IsMessageAvailable { get ; set ; }
}
}Contoh Plugin Koordinator Game:
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 ) ;
}
}
}