当前位置: 首页 > 资讯

【原创】s2client-dotnet .NET平台上的星际2API库

机器人之家       2017-10-27

s2client-dotnet将星际2暴雪官方库从C++移植到了.NET平台,方便C#、F#、VB.Net开发者使用。


C#、F#、VB.Net


例子


一个简单的C#的例子:


static void Main(string[] args)

{

   // 基本配置

   var userSettings = Sc2SettingsFile.settingsFromUserDir();


   var instanceSettings = Instance.StartSettings.OfUserSettings(userSettings);


   // 启动星际2实例

   Func<Instance.Sc2Instance> createInstance =

       () => Runner.run(Instance.start(instanceSettings));


   var participants = new Sc2Game.Participant[] {

       Sc2Game.Participant.CreateParticipant(

           createInstance(),

           // 设定种族为人族

           Race.Terran,

           // 用`GameState ->

           // `      IEnumerable<SC2APIProtocol.Action>`函数代表机器人

           (state => (IEnumerable<SC2APIProtocol.Action>)new SC2APIProtocol.Action[] {})),

       // 电脑种族同样设定为人族,难度为困难    

       Sc2Game.Participant.CreateComputer(Race.Terran, Difficulty.Hard)

   };


var gameSettings =

       Sc2Game.GameSettings.OfUserSettings(userSettings)

       .WithMap(@"Ladder2017Season1\AbyssalReefLE.SC2Map")

       .WithRealtime(true);


   // 运行游戏

   Runner.run(Sc2Game.runGame(gameSettings, participants));

}

上面的例子用F#改写后清爽了很多:


let userSettings = Sc2SettingsFile.settingsFromUserDir()


   let instanceSettings = Instance.StartSettings.OfUserSettings userSettings


   let instance() = Instance.start(instanceSettings) |> Async.RunSynchronously


   let participants =

       [ Sc2Game.Participant(instance(), Race.Terran, (fun _ -> []))

         Sc2Game.Computer(Race.Terran, Difficulty.Hard) ]


   let settings =

       { Sc2Game.GameSettings.OfUserSettings userSettings with

            Map = @"Ladder2017Season1\AbyssalReefLE.SC2Map"

            Realtime = true }

   Sc2Game.runGame settings participants |> Async.RunSynchronously


安装


依赖:


Fake 5 (可通过 chocolatey 安装 choco install fake --pre)

安装 Dotnet SDK 2

运行如下命令编译程序:


git clone https://github.com/matthid/s2client-dotnet

cd s2client-dotnet

fake run build.fsx

dotnet pack src/s2client-dotnet.sln -o C:\proj\sc2\s2client-dotnet\release

编译好后试一下有没有问题:


dotnet run --project s2client-testCSharp/s2client-testCSharp.csproj

dotnet run --project s2client-test/s2client-test.csproj

同类框架


除了暴雪官方C++库外,习惯使用Python语言的开发者还可以使用PySC2.


机器人网原创文章,未经授权禁止转载。详情见转载须知

本文来自机器人网,如若转载,请注明出处:https://www.jqr.com/news/008229