Raw D2K Art
First steps
I can create (simple) maps using ARRAKIS tileset, but the game crashes when I try to load them. The game engine is probably not supporting the tile size.
As a first try I added some buildings. They all show some distortion (actually flickers orange ingame), see wings of the barracks and cable/border around wind traps. The tilesize is also too small for the buildings. Overlays are also not working: see refinery missing walls and the uprising of the buildings off the ground looks weird as the building beam in afterwords.
Carryall is basically working, however the frames also need to be reordered to be compatible with the OpenRA helicopter code. It can pickup a vehicle which currently vanishes inside. "RenderCargo:" does not work as it asks for RenderCargoInfo (which I don't understand as the hovercraft in CnC does goes without parameter).
Most of the time I get an unrelated error message about duplicate keys, but this is seldom the correct error message so I usually have to guess where the problem in the YAML files is which slows down the progress a lot: https://github.com/OpenRA/OpenRA/issues/2151
As a first try I added some buildings. They all show some distortion (actually flickers orange ingame), see wings of the barracks and cable/border around wind traps. The tilesize is also too small for the buildings. Overlays are also not working: see refinery missing walls and the uprising of the buildings off the ground looks weird as the building beam in afterwords.
Carryall is basically working, however the frames also need to be reordered to be compatible with the OpenRA helicopter code. It can pickup a vehicle which currently vanishes inside. "RenderCargo:" does not work as it asks for RenderCargoInfo (which I don't understand as the hovercraft in CnC does goes without parameter).
Most of the time I get an unrelated error message about duplicate keys, but this is seldom the correct error message so I usually have to guess where the problem in the YAML files is which slows down the progress a lot: https://github.com/OpenRA/OpenRA/issues/2151
- Attachments
-
- first try.png (301.39 KiB) Viewed 13999 times
Re: First steps
I just forgot to reference the Cnc.dll but it still looks strange as the cargo is not lifted.Cmd. Matt wrote: ↑Carryall is basically working, however the frames also need to be reordered to be compatible with the OpenRA helicopter code. It can pickup a vehicle which currently vanishes inside. "RenderCargo:" does not work as it asks for RenderCargoInfo (which I don't understand as the hovercraft in CnC does goes without parameter).
The engine only supports one tile size per mod. Are you taking this into account?Cmd. Matt wrote: ↑The Arrakis tileset still crashes.
Assuming that you are using the Arrakis tileset that I exported with 32x32px tiles, you will need to add TileSize:32 to your mod.yaml, and then remove all the ra/cnc maps and tilesets (which use 24x24 tiles).
Not planned yet, but certainly possible. They would have to use the structures of the other 3 factions and most of their units.knivesron wrote: ↑are you thinknig about following dune legacys lead and having sudakra, merceneries and freeman as extra teams so theres 6 all up?
The only idea for a gameplay addition I had so far is to get the Ordos a hole that spawns infrantry for sneaky attacks (maybe comparable to the soviet paratroopers). If you take a look at frame 2998 in d2kout.zip that's what inspired me. I don't know what's the real purpose of it was in the original game. I also have no idea what the building in frame 3001..3003 did.
There is already TileSize: 32 in Arrakis.yaml and no definition of 24 inside the mods/ra folder. Does it still interfere?Sleipnir wrote: ↑The engine only supports one tile size per mod. Are you taking this into account?Cmd. Matt wrote: ↑The Arrakis tileset still crashes.
Assuming that you are using the Arrakis tileset that I exported with 32x32px tiles, you will need to add TileSize:32 to your mod.yaml, and then remove all the ra/cnc maps and tilesets (which use 24x24 tiles).
Yes. The two fields must match (TileSize in mod.yaml is set to 24 if it is not otherwise specified).
The field defined in the tileset is used (iirc) in the map editor and for allocating memory for the tile graphics ingame, but not much else. The field defined in the mod.yaml is used for everything else including rendering and determining the game physics. I hope that your crash is an inbuilt check for the size mismatch. If not, it will be some assumption about them being equal breaking and causing an exception. You should check your exception log.
Ideally, there would be only one definition of the tile size, but for practical reasons I would expect that to be the global definition in mod.yaml.
If the engine were modified to support different sized tiles in the same mod, you will run into aesthetic issues from only having one set of non-tileset artwork. This can be seen in your screenshots above, where your 3x3 buildings are overlapping halfway into their adjacent tiles on each side. The engine also assumes one set of shroud tiles for everything, so you would have holes on the larger tiles or overlaps on smaller tiles (but this could be fixed). You may also hit issues where assumptions about unit speeds, etc, based around one tile size may no longer apply to other sizes.
You could scale the arrakis tiles to 24px (this was what chrisf did in his original attempt), but they looked like crap, and you would still have to deal with the buildings and units being 30% larger than the tiles they are placed on.
The map, mod, and tileset formats don't appear to have changed since I was last involved, so the original d2k mod should still work if you fix the cursors, chrome, and rules definitions.
Edit: re buildable concrete tiles for building: the terrain overlay engine feature used for bridges and ore/tib was designed with this in mind. You should be able to implement it with a trivially simple trait, so there is no technical reason to cut them.
The field defined in the tileset is used (iirc) in the map editor and for allocating memory for the tile graphics ingame, but not much else. The field defined in the mod.yaml is used for everything else including rendering and determining the game physics. I hope that your crash is an inbuilt check for the size mismatch. If not, it will be some assumption about them being equal breaking and causing an exception. You should check your exception log.
Ideally, there would be only one definition of the tile size, but for practical reasons I would expect that to be the global definition in mod.yaml.
If the engine were modified to support different sized tiles in the same mod, you will run into aesthetic issues from only having one set of non-tileset artwork. This can be seen in your screenshots above, where your 3x3 buildings are overlapping halfway into their adjacent tiles on each side. The engine also assumes one set of shroud tiles for everything, so you would have holes on the larger tiles or overlaps on smaller tiles (but this could be fixed). You may also hit issues where assumptions about unit speeds, etc, based around one tile size may no longer apply to other sizes.
You could scale the arrakis tiles to 24px (this was what chrisf did in his original attempt), but they looked like crap, and you would still have to deal with the buildings and units being 30% larger than the tiles they are placed on.
The map, mod, and tileset formats don't appear to have changed since I was last involved, so the original d2k mod should still work if you fix the cursors, chrome, and rules definitions.
Edit: re buildable concrete tiles for building: the terrain overlay engine feature used for bridges and ore/tib was designed with this in mind. You should be able to implement it with a trivially simple trait, so there is no technical reason to cut them.
The plan is now to have concrete tiles for the proper Dune feeling even though they are annoying. People use them only for powerplants anyway when you search YouTube for Dune 2000 Multiplayer.Sleipnir wrote: ↑Edit: re buildable concrete tiles for building: the terrain overlay engine feature used for bridges and ore/tib was designed with this in mind. You should be able to implement it with a trivially simple trait, so there is no technical reason to cut them.
I tried to implement spice as a Ressource, but he asks for sprite names. I have a spice.shp, how do I know how the single sprites are called? Is SHP even the right format for ressource sprites?
If I set TileSize: 32 in mod.yaml the game crashes at startup withSleipnir wrote: ↑Yes. The two fields must match (TileSize in mod.yaml is set to 24 if it is not otherwise specified).
Code: Select all
Unhandled Exception: System.IndexOutOfRangeException: Array index is out of range.
at OpenRA.Graphics.Util.FastCopyIntoChannel (OpenRA.Graphics.Sprite dest, System.Byte[] src) [0x0008f] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/Util.cs:49
at OpenRA.Graphics.SheetBuilder.Add (System.Byte[] src, Size size) [0x00008] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SheetBuilder.cs:28
at OpenRA.Mods.RA.Bridge.<Create>m__1F (TileReference`2 x) [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/Bridge.cs:98
at OpenRA.FileFormats.Cache`2[OpenRA.FileFormats.TileReference`2[System.UInt16,System.Byte],OpenRA.Graphics.Sprite].get_Item (TileReference`2 key) [0x00013] in /home/matthias/Projekte/OpenRA/OpenRA.FileFormats/Primitives/Cache.cs:40
at OpenRA.Mods.RA.Bridge+<Create>c__AnonStorey5F.<>m__21 (KeyValuePair`2 a) [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/Bridge.cs:108
at System.Linq.Enumerable.ToDictionary[KeyValuePair`2,int2,Sprite] (IEnumerable`1 source, System.Func`2 keySelector, System.Func`2 elementSelector, IEqualityComparer`1 comparer) [0x0002f] in /home/abuild/rpmbuild/BUILD/mono-2.10.6/mcs/class/System.Core/System.Linq/Enumerable.cs:2823
at System.Linq.Enumerable.ToDictionary[KeyValuePair`2,int2,Sprite] (IEnumerable`1 source, System.Func`2 keySelector, System.Func`2 elementSelector) [0x00000] in /home/abuild/rpmbuild/BUILD/mono-2.10.6/mcs/class/System.Core/System.Linq/Enumerable.cs:2810
at OpenRA.Mods.RA.Bridge.Create (UInt16 template, System.Collections.Generic.Dictionary`2 subtiles) [0x000be] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/Bridge.cs:106
at OpenRA.Mods.RA.BridgeLayer.ConvertBridgeToActor (OpenRA.World w, Int32 i, Int32 j) [0x001cd] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/BridgeLayer.cs:103
at OpenRA.Mods.RA.BridgeLayer.WorldLoaded (OpenRA.World w) [0x00120] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/BridgeLayer.cs:55
at OpenRA.World..ctor (OpenRA.FileFormats.Manifest manifest, OpenRA.Map map, OpenRA.Network.OrderManager orderManager) [0x00233] in /home/matthias/Projekte/OpenRA/OpenRA.Game/World.cs:113
at OpenRA.Game.StartGame (System.String mapUID, Boolean isShellmap) [0x00035] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs:209
at OpenRA.Game.LoadShellMap () [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs:309
at OpenRA.Mods.D2k.D2kLoadScreen.TestAndContinue () [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.D2k/D2kLoadScreen.cs:75
at OpenRA.Mods.D2k.D2kLoadScreen.StartGame () [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.D2k/D2kLoadScreen.cs:69
at OpenRA.Game.InitializeWithMods (System.String[] mods) [0x001c2] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs:304
at OpenRA.Game.Initialize (OpenRA.Arguments args) [0x0013f] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs:263
at OpenRA.Program.Run (System.String[] args) [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Support/Program.cs:47
at OpenRA.Program.Main (System.String[] args) [0x0002b] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Support/Program.cs:35
[ERROR] FATAL UNHANDLED EXCEPTION: System.IndexOutOfRangeException: Array index is out of range.
at OpenRA.Graphics.Util.FastCopyIntoChannel (OpenRA.Graphics.Sprite dest, System.Byte[] src) [0x0008f] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/Util.cs:49
at OpenRA.Graphics.SheetBuilder.Add (System.Byte[] src, Size size) [0x00008] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SheetBuilder.cs:28
at OpenRA.Mods.RA.Bridge.<Create>m__1F (TileReference`2 x) [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/Bridge.cs:98
at OpenRA.FileFormats.Cache`2[OpenRA.FileFormats.TileReference`2[System.UInt16,System.Byte],OpenRA.Graphics.Sprite].get_Item (TileReference`2 key) [0x00013] in /home/matthias/Projekte/OpenRA/OpenRA.FileFormats/Primitives/Cache.cs:40
at OpenRA.Mods.RA.Bridge+<Create>c__AnonStorey5F.<>m__21 (KeyValuePair`2 a) [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/Bridge.cs:108
at System.Linq.Enumerable.ToDictionary[KeyValuePair`2,int2,Sprite] (IEnumerable`1 source, System.Func`2 keySelector, System.Func`2 elementSelector, IEqualityComparer`1 comparer) [0x0002f] in /home/abuild/rpmbuild/BUILD/mono-2.10.6/mcs/class/System.Core/System.Linq/Enumerable.cs:2823
at System.Linq.Enumerable.ToDictionary[KeyValuePair`2,int2,Sprite] (IEnumerable`1 source, System.Func`2 keySelector, System.Func`2 elementSelector) [0x00000] in /home/abuild/rpmbuild/BUILD/mono-2.10.6/mcs/class/System.Core/System.Linq/Enumerable.cs:2810
at OpenRA.Mods.RA.Bridge.Create (UInt16 template, System.Collections.Generic.Dictionary`2 subtiles) [0x000be] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/Bridge.cs:106
at OpenRA.Mods.RA.BridgeLayer.ConvertBridgeToActor (OpenRA.World w, Int32 i, Int32 j) [0x001cd] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/BridgeLayer.cs:103
at OpenRA.Mods.RA.BridgeLayer.WorldLoaded (OpenRA.World w) [0x00120] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/BridgeLayer.cs:55
at OpenRA.World..ctor (OpenRA.FileFormats.Manifest manifest, OpenRA.Map map, OpenRA.Network.OrderManager orderManager) [0x00233] in /home/matthias/Projekte/OpenRA/OpenRA.Game/World.cs:113
at OpenRA.Game.StartGame (System.String mapUID, Boolean isShellmap) [0x00035] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs:209
at OpenRA.Game.LoadShellMap () [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs:309
at OpenRA.Mods.D2k.D2kLoadScreen.TestAndContinue () [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.D2k/D2kLoadScreen.cs:75
at OpenRA.Mods.D2k.D2kLoadScreen.StartGame () [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Mods.D2k/D2kLoadScreen.cs:69
at OpenRA.Game.InitializeWithMods (System.String[] mods) [0x001c2] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs:304
at OpenRA.Game.Initialize (OpenRA.Arguments args) [0x0013f] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs:263
at OpenRA.Program.Run (System.String[] args) [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Support/Program.cs:47
at OpenRA.Program.Main (System.String[] args) [0x0002b] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Support/Program.cs:35
2998 is a fremen sietchThe only idea for a gameplay addition I had so far is to get the Ordos a hole that spawns infrantry for sneaky attacks
http://dune.wikia.com/wiki/Sietch
Perhaps it could be used as a map prop that spawns fremen creeps which attack all players.
It's trying to load a bridge in the shellmap, and then crashes because the bridge tiles aren't 32px. Presumably ShowShellmap doesn't prevent map loading, but only ticking/rendering. Try using the test map in the original d2k mod (you will need to update the map.yaml by hand to format 5 or above) or create a new map using the arrakis tileset in the editor to use as your shellmap.Cmd. Matt wrote: ↑ShowShellmap: False is set in settings.yaml (don't know if that's enough).Code: Select all
Unhandled Exception: [snip]