Raw D2K Art

Information and discussion for custom maps and mods.
User avatar
katzsmile
Posts: 39
Joined: Mon Sep 06, 2010 7:03 am
Location: Arkhangelsk
Contact:

Post by katzsmile »

Nothing happen because i'm lazy

Matt
Posts: 1144
Joined: Tue May 01, 2012 12:21 pm
Location: Germany

First steps

Post by Matt »

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
Attachments
first try.png
first try.png (301.39 KiB) Viewed 13992 times

Matt
Posts: 1144
Joined: Tue May 01, 2012 12:21 pm
Location: Germany

Re: First steps

Post by Matt »

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).
I just forgot to reference the Cnc.dll but it still looks strange as the cargo is not lifted.

knivesron
Posts: 93
Joined: Wed Aug 10, 2011 5:05 am

Post by knivesron »

looking great man. keep up the good work. and please leave in the concrete tiles

Matt
Posts: 1144
Joined: Tue May 01, 2012 12:21 pm
Location: Germany

Post by Matt »

Progress is good currently as I can reuse a lot of code from C&C probably just like the original Dune 2000 developers ;) I fixed some graphics bugs and added the first units. The Arrakis tileset still crashes.
Attachments
progress.png
progress.png (492.44 KiB) Viewed 13925 times

bellator
Posts: 90
Joined: Wed Sep 28, 2011 12:22 am

Post by bellator »

awesome, nice work matt 8)

knivesron
Posts: 93
Joined: Wed Aug 10, 2011 5:05 am

Post by knivesron »

are you thinknig about following dune legacys lead and having sudakra, merceneries and freeman as extra teams so theres 6 all up?

User avatar
Sleipnir
Posts: 878
Joined: Wed Apr 10, 2002 11:52 pm
Contact:

Post by Sleipnir »

Cmd. Matt wrote: The Arrakis tileset still crashes.
The engine only supports one tile size per mod. Are you taking this into account?

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).

Matt
Posts: 1144
Joined: Tue May 01, 2012 12:21 pm
Location: Germany

Post by Matt »

knivesron wrote: are you thinknig about following dune legacys lead and having sudakra, merceneries and freeman as extra teams so theres 6 all up?
Not planned yet, but certainly possible. They would have to use the structures of the other 3 factions and most of their units.

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.

Matt
Posts: 1144
Joined: Tue May 01, 2012 12:21 pm
Location: Germany

Post by Matt »

Sleipnir wrote:
Cmd. Matt wrote: The Arrakis tileset still crashes.
The engine only supports one tile size per mod. Are you taking this into account?

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).
There is already TileSize: 32 in Arrakis.yaml and no definition of 24 inside the mods/ra folder. Does it still interfere?

User avatar
Sleipnir
Posts: 878
Joined: Wed Apr 10, 2002 11:52 pm
Contact:

Post by Sleipnir »

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.

Matt
Posts: 1144
Joined: Tue May 01, 2012 12:21 pm
Location: Germany

Post by Matt »

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.
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.

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?

Matt
Posts: 1144
Joined: Tue May 01, 2012 12:21 pm
Location: Germany

Post by Matt »

Sleipnir wrote: Yes. The two fields must match (TileSize in mod.yaml is set to 24 if it is not otherwise specified).
If I set TileSize: 32 in mod.yaml the game crashes at startup with

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 &#40;TileReference`2 x&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/Bridge.cs&#58;98 
  at OpenRA.FileFormats.Cache`2&#91;OpenRA.FileFormats.TileReference`2&#91;System.UInt16,System.Byte&#93;,OpenRA.Graphics.Sprite&#93;.get_Item &#40;TileReference`2 key&#41; &#91;0x00013&#93; in /home/matthias/Projekte/OpenRA/OpenRA.FileFormats/Primitives/Cache.cs&#58;40 
  at OpenRA.Mods.RA.Bridge+<Create>c__AnonStorey5F.<>m__21 &#40;KeyValuePair`2 a&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/Bridge.cs&#58;108 
  at System.Linq.Enumerable.ToDictionary&#91;KeyValuePair`2,int2,Sprite&#93; &#40;IEnumerable`1 source, System.Func`2 keySelector, System.Func`2 elementSelector, IEqualityComparer`1 comparer&#41; &#91;0x0002f&#93; in /home/abuild/rpmbuild/BUILD/mono-2.10.6/mcs/class/System.Core/System.Linq/Enumerable.cs&#58;2823 
  at System.Linq.Enumerable.ToDictionary&#91;KeyValuePair`2,int2,Sprite&#93; &#40;IEnumerable`1 source, System.Func`2 keySelector, System.Func`2 elementSelector&#41; &#91;0x00000&#93; in /home/abuild/rpmbuild/BUILD/mono-2.10.6/mcs/class/System.Core/System.Linq/Enumerable.cs&#58;2810 
  at OpenRA.Mods.RA.Bridge.Create &#40;UInt16 template, System.Collections.Generic.Dictionary`2 subtiles&#41; &#91;0x000be&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/Bridge.cs&#58;106 
  at OpenRA.Mods.RA.BridgeLayer.ConvertBridgeToActor &#40;OpenRA.World w, Int32 i, Int32 j&#41; &#91;0x001cd&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/BridgeLayer.cs&#58;103 
  at OpenRA.Mods.RA.BridgeLayer.WorldLoaded &#40;OpenRA.World w&#41; &#91;0x00120&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/BridgeLayer.cs&#58;55 
  at OpenRA.World..ctor &#40;OpenRA.FileFormats.Manifest manifest, OpenRA.Map map, OpenRA.Network.OrderManager orderManager&#41; &#91;0x00233&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/World.cs&#58;113 
  at OpenRA.Game.StartGame &#40;System.String mapUID, Boolean isShellmap&#41; &#91;0x00035&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs&#58;209 
  at OpenRA.Game.LoadShellMap &#40;&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs&#58;309 
  at OpenRA.Mods.D2k.D2kLoadScreen.TestAndContinue &#40;&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.D2k/D2kLoadScreen.cs&#58;75 
  at OpenRA.Mods.D2k.D2kLoadScreen.StartGame &#40;&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.D2k/D2kLoadScreen.cs&#58;69 
  at OpenRA.Game.InitializeWithMods &#40;System.String&#91;&#93; mods&#41; &#91;0x001c2&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs&#58;304 
  at OpenRA.Game.Initialize &#40;OpenRA.Arguments args&#41; &#91;0x0013f&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs&#58;263 
  at OpenRA.Program.Run &#40;System.String&#91;&#93; args&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Support/Program.cs&#58;47 
  at OpenRA.Program.Main &#40;System.String&#91;&#93; args&#41; &#91;0x0002b&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Support/Program.cs&#58;35 
&#91;ERROR&#93; FATAL UNHANDLED EXCEPTION&#58; System.IndexOutOfRangeException&#58; Array index is out of range.
  at OpenRA.Graphics.Util.FastCopyIntoChannel &#40;OpenRA.Graphics.Sprite dest, System.Byte&#91;&#93; src&#41; &#91;0x0008f&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/Util.cs&#58;49 
  at OpenRA.Graphics.SheetBuilder.Add &#40;System.Byte&#91;&#93; src, Size size&#41; &#91;0x00008&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SheetBuilder.cs&#58;28 
  at OpenRA.Mods.RA.Bridge.<Create>m__1F &#40;TileReference`2 x&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/Bridge.cs&#58;98 
  at OpenRA.FileFormats.Cache`2&#91;OpenRA.FileFormats.TileReference`2&#91;System.UInt16,System.Byte&#93;,OpenRA.Graphics.Sprite&#93;.get_Item &#40;TileReference`2 key&#41; &#91;0x00013&#93; in /home/matthias/Projekte/OpenRA/OpenRA.FileFormats/Primitives/Cache.cs&#58;40 
  at OpenRA.Mods.RA.Bridge+<Create>c__AnonStorey5F.<>m__21 &#40;KeyValuePair`2 a&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/Bridge.cs&#58;108 
  at System.Linq.Enumerable.ToDictionary&#91;KeyValuePair`2,int2,Sprite&#93; &#40;IEnumerable`1 source, System.Func`2 keySelector, System.Func`2 elementSelector, IEqualityComparer`1 comparer&#41; &#91;0x0002f&#93; in /home/abuild/rpmbuild/BUILD/mono-2.10.6/mcs/class/System.Core/System.Linq/Enumerable.cs&#58;2823 
  at System.Linq.Enumerable.ToDictionary&#91;KeyValuePair`2,int2,Sprite&#93; &#40;IEnumerable`1 source, System.Func`2 keySelector, System.Func`2 elementSelector&#41; &#91;0x00000&#93; in /home/abuild/rpmbuild/BUILD/mono-2.10.6/mcs/class/System.Core/System.Linq/Enumerable.cs&#58;2810 
  at OpenRA.Mods.RA.Bridge.Create &#40;UInt16 template, System.Collections.Generic.Dictionary`2 subtiles&#41; &#91;0x000be&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/Bridge.cs&#58;106 
  at OpenRA.Mods.RA.BridgeLayer.ConvertBridgeToActor &#40;OpenRA.World w, Int32 i, Int32 j&#41; &#91;0x001cd&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/BridgeLayer.cs&#58;103 
  at OpenRA.Mods.RA.BridgeLayer.WorldLoaded &#40;OpenRA.World w&#41; &#91;0x00120&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.RA/BridgeLayer.cs&#58;55 
  at OpenRA.World..ctor &#40;OpenRA.FileFormats.Manifest manifest, OpenRA.Map map, OpenRA.Network.OrderManager orderManager&#41; &#91;0x00233&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/World.cs&#58;113 
  at OpenRA.Game.StartGame &#40;System.String mapUID, Boolean isShellmap&#41; &#91;0x00035&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs&#58;209 
  at OpenRA.Game.LoadShellMap &#40;&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs&#58;309 
  at OpenRA.Mods.D2k.D2kLoadScreen.TestAndContinue &#40;&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.D2k/D2kLoadScreen.cs&#58;75 
  at OpenRA.Mods.D2k.D2kLoadScreen.StartGame &#40;&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Mods.D2k/D2kLoadScreen.cs&#58;69 
  at OpenRA.Game.InitializeWithMods &#40;System.String&#91;&#93; mods&#41; &#91;0x001c2&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs&#58;304 
  at OpenRA.Game.Initialize &#40;OpenRA.Arguments args&#41; &#91;0x0013f&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs&#58;263 
  at OpenRA.Program.Run &#40;System.String&#91;&#93; args&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Support/Program.cs&#58;47 
  at OpenRA.Program.Main &#40;System.String&#91;&#93; args&#41; &#91;0x0002b&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Support/Program.cs&#58;35
ShowShellmap: False is set in settings.yaml (don't know if that's enough).

bellator
Posts: 90
Joined: Wed Sep 28, 2011 12:22 am

Post by bellator »

The only idea for a gameplay addition I had so far is to get the Ordos a hole that spawns infrantry for sneaky attacks
2998 is a fremen sietch

http://dune.wikia.com/wiki/Sietch

Perhaps it could be used as a map prop that spawns fremen creeps which attack all players.

User avatar
Sleipnir
Posts: 878
Joined: Wed Apr 10, 2002 11:52 pm
Contact:

Post by Sleipnir »

Cmd. Matt wrote:

Code: Select all

Unhandled Exception&#58; 
&#91;snip&#93;
ShowShellmap: False is set in settings.yaml (don't know if that's enough).
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.

Post Reply