I was able to achieve what I wished for, by removing Scenes, Audio, Effects, GraphicsDevice and Window, but I will find a way how to approach another way where I could keep Window as my current Console window instead of nopping everything out of my way.
Here is some reference how after tinkering with engine it might look like:
using System;
using System.Threading.Tasks;
using SiliconStudio.Core;
using SiliconStudio.Xenko.Engine;
namespace TestXenkoServer
{
public class World : Game
{
private WorldEntityManager _entityManager;
public World()
{
_entityManager = new WorldEntityManager(Services);
Script.Initialize();
Script.Add(new StartupEngine());
Script.Add(new MyFirstScript());
Script.Add(new MySecondScript());
Console.WriteLine("Initialized World.");
Console.WriteLine("Trying to add entities..");
for (var i = 0; i < 10000; ++i)
{
var ent = new Entity();
_entityManager.Add(ent);
}
Console.WriteLine("Total entities: {0}", _entityManager.Count);
}
}
public class WorldEntityManager : EntityManager
{
public WorldEntityManager(IServiceRegistry registry) : base(registry)
{
//
}
}
public class MyFirstScript : AsyncScript
{
public long tickCount = 0;
public override async Task Execute()
{
while (Game.IsRunning)
{
if (tickCount++ % 5000 == 0)
Console.WriteLine("Async Ticks: {0}", tickCount);
await Script.NextFrame();
}
}
}
public class MySecondScript : SyncScript
{
public long tickCount = 0;
public override async void Update()
{
while (Game.IsRunning)
{
if (tickCount++ % 5000 == 0)
Console.WriteLine("Sync Ticks: {0}", tickCount);
}
}
}
public class StartupEngine : StartupScript
{
public override void Start()
{
Console.WriteLine("Starting StartupEngine");
}
public override void Cancel()
{
Console.WriteLine("Stopping StartupEngine");
}
}
}