Pour une version .NET Core de la bibliothèque, cliquez ici. Pour une version .NET 6 de la bibliothèque, cliquez ici.
InSim.NET est une bibliothèque .NET InSim pour le simulateur de course en ligne Live for Speed. Il vous permet de vous connecter au jeu et de partager des paquets de données. Ces paquets peuvent être utilisés pour contrôler Live for Speed, envoyer des commandes, traiter des demandes et recevoir des données de télémétrie de voiture.
La bibliothèque a été conçue pour être simple, rapide et flexible, et reste aussi proche que possible du protocole InSim d'origine, tout en vous épargnant directement des détails de la programmation des sockets.
Ce site de projet concerne la version 2.0 de la bibliothèque, qui inclut la prise en charge complète d'InSim, InSim Relay, OutSim et OutGauge, des améliorations de l'API et une efficacité réseau améliorée.
À partir d'InSim.NET 2.1.0, la bibliothèque nécessite .NET Framework 4.5 . Les anciens binaires pour .NET 4.0 et 3.5 sont disponibles dans la section versions.
Pour installer InSimDotNet à l'aide de NuGet, exécutez la commande suivante dans la console du gestionnaire de packages.
PM > Install-Package InSimDotNet
Vous pouvez désormais faire un don en utilisant PayPal pour aider à financer le développement d'InSim.NET. N’importe quel montant est le bienvenu ! Cliquez simplement sur l'image ci-dessous.
C'est le programme InSim le plus simple que vous puissiez écrire (qui fait quelque chose). Nous initialisons InSim et envoyons le message « Bonjour, InSim ! » au chat du jeu.
InSim insim = new InSim ( ) ;
// Initialize InSim
insim . Initialize ( new InSimSettings {
Host = " 127.0.0.1 " ,
Port = 29999 ,
Admin = String . Empty ,
} ) ;
// Send message to LFS
insim . Send ( " /msg Hello, InSim! " ) ;
Pour recevoir un paquet, liez un gestionnaire à l'aide de la méthode InSim.Bind()
. Dans cet exemple, nous lions un gestionnaire pour l'événement de paquet IS_MSO
(MeSsage Out).
void RunInSim ( ) {
InSim insim = new InSim ( ) ;
// Bind MSO packet event.
insim . Bind < IS_MSO > ( MessageOut ) ;
// Initialize InSim
insim . Initialize ( new InSimSettings {
Host = " 127.0.0.1 " ,
Port = 29999 ,
Admin = String . Empty ,
} ) ;
}
// Method called when MSO packet is recieved
void MessageOut ( InSim insim , IS_MSO packet ) {
// Print contents of MSO message to the console.
Console . WriteLine ( packet . Msg ) ;
}
Pour envoyer un paquet, utilisez la méthode InSim.Send(ISendable)
.
insim . Send ( new IS_TINY {
SubT = TinyType . TINY_NCN
} ) ;
Pour économiser de la bande passante, envoyez plusieurs paquets en un seul appel à l'aide de la méthode InSim.Send(params ISendable[])
.
insim . Send (
new IS_TINY {
SubT = TinyType . TINY_NCN
} ,
new IS_SMALL {
SubT = SmallType . SMALL_SSP ,
}
) ;
Pour garder un programme ouvert pendant qu'InSim est toujours connecté.
while ( insim . IsConnected ) {
Thread . Sleep ( 200 ) ;
}
Voici tout cela ensemble.
void RunInSim ( ) {
InSim insim = new InSim ( ) ;
// Bind packet events.
insim . Bind < IS_NCN > ( NewConnection ) ;
insim . Bind < IS_NPL > ( NewPlayer ) ;
// Initialize InSim
insim . Initialize ( new InSimSettings {
Host = " 127.0.0.1 " ,
Port = 29999 ,
Admin = String . Empty ,
} ) ;
// Request all connections and players to be sent.
insim . Send ( new [ ] {
new IS_TINY { SubT = TinyType . TINY_NCN } ,
new IS_TINY { SubT = TinyType . TINY_NPL } ,
} ) ;
// Stop console app from exiting while connection is active.
while ( insim . IsConnected ) {
Thread . Sleep ( 200 ) ;
}
}
// Method called when NCN packet is recieved
void NewConnection ( InSim insim , IS_NCN packet ) {
// Handle new connection.
}
// Method called when NPL packet is recieved
void NewPlayer ( InSim insim , IS_NPL packet ) {
// Handle new player.
}
Pour utiliser InSim Relay, il suffit de définir la propriété InSimSettings.IsRelayHost
sur true.
InSim insim = new InSim ( ) ;
// Initialize InSim relay
insim . Initialize ( new InSimSettings {
IsRelayHost = true ,
} ) ;
// Send host select packet
insim . Send ( new IR_SEL { HName = " <insert host name> " } ) ;
Utiliser OutGauge (ou OutSim) est tout aussi simple ! Cet exemple imprime le régime de la voiture actuellement visualisée sur la console.
OutGauge outgauge = new OutGauge ( ) ;
// Attach OutGauge packet event
outgauge . PacketReceived += ( sender , e ) => {
Console . WriteLine ( e . RPM ) ;
} ;
// Start listening for packets
outgauge . Connect ( " 127.0.0.1 " , 30000 ) ;
Vous pouvez trouver de nombreux autres exemples et informations sur l'utilisation de la bibliothèque dans le wiki de documentation.