diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs
index e5ab86ae3d..0670f2dfb8 100644
--- a/OpenRA.Game/Game.cs
+++ b/OpenRA.Game/Game.cs
@@ -120,15 +120,6 @@ namespace OpenRA
viewport = new Viewport(clientSize, Game.world.Map.Offset, Game.world.Map.Offset + Game.world.Map.Size, renderer);
Timer.Time( "ChromeProv, SeqProv, viewport: {0}" );
- // todo: delay this
- skipMakeAnims = true;
- foreach (var actorReference in world.Map.Actors)
- world.CreateActor(actorReference.Name, actorReference.Location,
- world.players.Values.FirstOrDefault(p => p.InternalName == actorReference.Owner)
- ?? world.NeutralPlayer);
- skipMakeAnims = false;
- Timer.Time( "map actors: {0}" );
-
chrome = new Chrome(renderer, manifest);
Timer.Time( "chrome: {0}" );
diff --git a/OpenRA.Game/OpenRA.Game.csproj b/OpenRA.Game/OpenRA.Game.csproj
index 70b7889425..22dfed001e 100644
--- a/OpenRA.Game/OpenRA.Game.csproj
+++ b/OpenRA.Game/OpenRA.Game.csproj
@@ -258,6 +258,7 @@
+
diff --git a/OpenRA.Game/Traits/World/SpawnMapActors.cs b/OpenRA.Game/Traits/World/SpawnMapActors.cs
new file mode 100644
index 0000000000..a2ffb81fcf
--- /dev/null
+++ b/OpenRA.Game/Traits/World/SpawnMapActors.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace OpenRA.Traits
+{
+ class SpawnMapActorsInfo : StatelessTraitInfo { }
+
+ class SpawnMapActors : IGameStarted
+ {
+ public void GameStarted(World world)
+ {
+ Game.skipMakeAnims = true; // rude hack
+
+ foreach (var actorReference in world.Map.Actors)
+ world.CreateActor(actorReference.Name, actorReference.Location,
+ world.players.Values.FirstOrDefault(p => p.InternalName == actorReference.Owner)
+ ?? world.NeutralPlayer);
+
+ Game.skipMakeAnims = false;
+ }
+ }
+}
diff --git a/mods/cnc/system.yaml b/mods/cnc/system.yaml
index b94af8e34c..0b538cf709 100644
--- a/mods/cnc/system.yaml
+++ b/mods/cnc/system.yaml
@@ -207,4 +207,5 @@ World:
Name: Tiberium
GrowthInterval: 1
SpreadInterval: 6
+ SpawnMapActors:
SpawnDefaultUnits:
\ No newline at end of file
diff --git a/mods/ra/rules.yaml b/mods/ra/rules.yaml
index 5af5dd605a..7662fb485d 100644
--- a/mods/ra/rules.yaml
+++ b/mods/ra/rules.yaml
@@ -265,6 +265,7 @@ World:
Templates:templates.ini
Tileset:tileSet.til
MapColors:temperat.col
+ SpawnMapActors:
SpawnDefaultUnits:
MGG: