Raw D2K Art

Information and discussion for custom maps and mods.
User avatar
Sleipnir
Posts: 878
Joined: Wed Apr 10, 2002 11:52 pm
Contact:

Post by Sleipnir »

Cmd. Matt wrote: 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?
Compare the entries used for cnc with the art inside the tileset mixes or bluetib.mix. The game will first look for art matching the given filenames with the tileset extension, then fall back to a .shp variant if they don't exist (well, technically, it uses the order defined in the tileset yaml).

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

Post by Matt »

I did not know that ressources are tiles and not SHPs. The yellow stuff I found in DATA.R8 might not even be spice.

As OpenRA does not accept my self-made Arrakis shellmap and crashes if I remove LoadShellmap() from the source code: again a winter screenshot. All Atreides buildings and units have been added. Even the starport is getting deliveries by a frigate. Turrets don't have their gun attached and can not be build upon walls yet. The ornithocopter does not flap.

As there is still much to be fixed I created a https://github.com/Mailaender/OpenRA/bl ... s/d2k/TODO file.
Attachments
progress.png
progress.png (346.55 KiB) Viewed 11682 times

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

Post by Sleipnir »

Cmd. Matt wrote: I did not know that ressources are tiles and not SHPs. The yellow stuff I found in DATA.R8 might not even be spice.
The resource (and crater/scorch) art in ra/cnc is stored as tiles, but they are drawn on top of the terrain like any other shp would be. I recall seeing crater artwork in DATA.R8, so this is probably something they changed for d2k. Like I mentioned earlier, the OpenRA engine accepts both formats.
Cmd. Matt wrote: As OpenRA does not accept my self-made Arrakis shellmap
If you post the error log, myself or others can help with this.
Cmd. Matt wrote: and crashes if I remove LoadShellmap() from the source code
The engine makes assumptions about a valid game world existing at the main menu, so this isn't surprising.

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

Post by Matt »

I delete the shellmap.oramap in ra/maps and have my own blank.oramap in d2k/maps with UseAsShellmap: True in it's map.yaml. I then set TileSize: 32 in mod.yaml and start OpenRA

Code: Select all

Platform is Linux
Using Cg renderer
Desktop resolution: 1024x768
Using resolution: 800x600
Available mods:
        cnc: C&C ({DEV_VERSION})
        d2k: Dune 2000 ({DEV_VERSION})
        example: Example Mod (a0001)
        ra: Red Alert ({DEV_VERSION})
        ra_perf: RA Perf (a0001)
Loading mods: d2k,ra

Unhandled Exception: System.ArgumentException: An element with the same key already exists in the dictionary.
  at System.Collections.Generic.Dictionary`2[System.UInt32,OpenRA.FileFormats.ImageHeader].Add (UInt32 key, OpenRA.FileFormats.ImageHeader value) [0x00171] in /home/abuild/rpmbuild/BUILD/mono-2.10.6/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:437 
  at System.Linq.Enumerable.ToDictionary[ImageHeader,UInt32,ImageHeader] (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[ImageHeader,UInt32,ImageHeader] (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.FileFormats.ShpReader..ctor (System.IO.Stream stream) [0x0008e] in /home/matthias/Projekte/OpenRA/OpenRA.FileFormats/Graphics/ShpReader.cs:82 
  at OpenRA.Graphics.SpriteLoader.LoadSprites (System.String filename) [0x0000d] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SpriteLoader.cs:31 
  at OpenRA.FileFormats.Cache`2[System.String,OpenRA.Graphics.Sprite[]].get_Item (System.String key) [0x00013] in /home/matthias/Projekte/OpenRA/OpenRA.FileFormats/Primitives/Cache.cs:40 
  at OpenRA.Graphics.SpriteLoader.LoadAllSprites (System.String filename) [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SpriteLoader.cs:35 
  at OpenRA.Graphics.Sequence..ctor (System.String unit, System.String name, OpenRA.FileFormats.MiniYaml info) [0x00020] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/Sequence.cs:37 
  at OpenRA.Graphics.SequenceProvider+<LoadSequencesForUnit>c__AnonStorey55.<>m__F6 &#40;KeyValuePair`2 x&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SequenceProvider.cs&#58;40 
  at System.Linq.Enumerable.ToDictionary&#91;KeyValuePair`2,String,Sequence&#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,String,Sequence&#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.Graphics.SequenceProvider.LoadSequencesForUnit &#40;System.String unit, OpenRA.FileFormats.MiniYaml sequences&#41; &#91;0x0001c&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SequenceProvider.cs&#58;40 
  at OpenRA.Graphics.SequenceProvider.Initialize &#40;System.String&#91;&#93; sequenceFiles, System.Collections.Generic.List`1 sequenceNodes&#41; &#91;0x00054&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SequenceProvider.cs&#58;32 
  at OpenRA.ModData.PrepareMap &#40;System.String uid&#41; &#91;0x000c4&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/ModData.cs&#58;80 
  at OpenRA.Game.StartGame &#40;System.String mapUID, Boolean isShellmap&#41; &#91;0x0000a&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs&#58;207 
  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.ArgumentException&#58; An element with the same key already exists in the dictionary.
  at System.Collections.Generic.Dictionary`2&#91;System.UInt32,OpenRA.FileFormats.ImageHeader&#93;.Add &#40;UInt32 key, OpenRA.FileFormats.ImageHeader value&#41; &#91;0x00171&#93; in /home/abuild/rpmbuild/BUILD/mono-2.10.6/mcs/class/corlib/System.Collections.Generic/Dictionary.cs&#58;437 
  at System.Linq.Enumerable.ToDictionary&#91;ImageHeader,UInt32,ImageHeader&#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;ImageHeader,UInt32,ImageHeader&#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.FileFormats.ShpReader..ctor &#40;System.IO.Stream stream&#41; &#91;0x0008e&#93; in /home/matthias/Projekte/OpenRA/OpenRA.FileFormats/Graphics/ShpReader.cs&#58;82 
  at OpenRA.Graphics.SpriteLoader.LoadSprites &#40;System.String filename&#41; &#91;0x0000d&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SpriteLoader.cs&#58;31 
  at OpenRA.FileFormats.Cache`2&#91;System.String,OpenRA.Graphics.Sprite&#91;&#93;&#93;.get_Item &#40;System.String key&#41; &#91;0x00013&#93; in /home/matthias/Projekte/OpenRA/OpenRA.FileFormats/Primitives/Cache.cs&#58;40 
  at OpenRA.Graphics.SpriteLoader.LoadAllSprites &#40;System.String filename&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SpriteLoader.cs&#58;35 
  at OpenRA.Graphics.Sequence..ctor &#40;System.String unit, System.String name, OpenRA.FileFormats.MiniYaml info&#41; &#91;0x00020&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/Sequence.cs&#58;37 
  at OpenRA.Graphics.SequenceProvider+<LoadSequencesForUnit>c__AnonStorey55.<>m__F6 &#40;KeyValuePair`2 x&#41; &#91;0x00000&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SequenceProvider.cs&#58;40 
  at System.Linq.Enumerable.ToDictionary&#91;KeyValuePair`2,String,Sequence&#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,String,Sequence&#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.Graphics.SequenceProvider.LoadSequencesForUnit &#40;System.String unit, OpenRA.FileFormats.MiniYaml sequences&#41; &#91;0x0001c&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SequenceProvider.cs&#58;40 
  at OpenRA.Graphics.SequenceProvider.Initialize &#40;System.String&#91;&#93; sequenceFiles, System.Collections.Generic.List`1 sequenceNodes&#41; &#91;0x00054&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SequenceProvider.cs&#58;32 
  at OpenRA.ModData.PrepareMap &#40;System.String uid&#41; &#91;0x000c4&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/ModData.cs&#58;80 
  at OpenRA.Game.StartGame &#40;System.String mapUID, Boolean isShellmap&#41; &#91;0x0000a&#93; in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs&#58;207 
  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
The error messages does not make sense. Sadly I encounter it often when something is wrong: https://github.com/OpenRA/OpenRA/issues/2151

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

Post by Sleipnir »

I had encoutered that error a few times in the past, but can't remember the exact details behind the cause. The stacktrace seems to indicate that it's trying to load a bogus shp for a sequence you have defined, but this seems unlikely, unless it's trying to load a terrain tile as a shp.

Double check that you don't have any sequences pointing to art that exists only in ra tileset mixes (ore mines, trees, rocks, etc). The engine tries to preload all the artwork declared in sequences when loading, and may have a bad time if it can't find them in the d2k tileset mix. Hopefully it would catch this case early in a sane manner, but if not, it wouldn't surprise me if it gave an error along these lines.

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

Welcome back to Arrakis, Commander!

Post by Matt »

Making Dune 2000 a true stand-alone mod fixed a lot. The 32x32 Arrakis tileset is working and I don't get this stupid error message about duplicate keys. All the buildings render properly because I am using the RenderWarFactory in a hacky way (except the turret). The Atreides are already complete and I added the music and some sounds. The shot looks kinda boring as I don't have very many tiles and the TilesetBuilder is currently broken. Animations (like windtraps, radar dish, ornithocopter flapping) are missing and the infantry frames need to be resorted, but this is already playable as I fallback on Red Alert stuff whenever something is not yet ripped completely from the Dune 2000 game files.
Attachments
welcome-back-to-arrakis-commander.png
welcome-back-to-arrakis-commander.png (413.85 KiB) Viewed 11634 times

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

Post by bellator »

:eek: :eek:

Generalcamo
Posts: 50
Joined: Sun Sep 26, 2010 12:06 am

Post by Generalcamo »

Upon Dune 2K's release, it got mixed reviews. The main problem were the balance concerns. We will need to balance the game in order to bring the game up to what if could have been.

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

Post by bellator »

Upon Dune 2K's release, it got mixed reviews. The main problem were the balance concerns. We will need to balance the game in order to bring the game up to what if could have been.
Not really. It got bad reviews because it was incredibly bland. It has balance only because the teams, afaik, are identical except for one unit.

http://content.open-ra.org/?p=detail&table=units&id=104

When d2k mod is out, I will be remaking the units definitely.

earthpig
Posts: 31
Joined: Sat Apr 21, 2012 1:10 am

Post by earthpig »

Phenomenal work, folks.

I don't have the coding skills to really contribute at this point, but I've read all of the books and look forward to working to incorporate some of that stuff.

A superweapon that is near mandatory:

Does anyone have the art skills to draw a sandworm killing something?

http://www.youtube.com/watch?v=8FNYvYcBwFA&t=2m20s

For sandworms not to be in the game seems a bit odd, they're pretty critical to warfare on Arrakis in the books. If you're in the open sand and causing vibrations, they're coming for you!

But that wouldn't work for an RTS game... we could, however, have a targeted sandworm attack be a crate event. To replace parabombs (but they can only attack units not standing on concrete or rocks).

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

Post by Matt »

earthpig wrote: For sandworms not to be in the game seems a bit odd, they're pretty critical to warfare on Arrakis in the books. If you're in the open sand and causing vibrations, they're coming for you!

But that wouldn't work for an RTS game... we could, however, have a targeted sandworm attack be a crate event. To replace parabombs (but they can only attack units not standing on concrete or rocks).
Dune 2000 multiplayer has thumper infantry to attract worms: http://dune2k.com/View/Images/Duniverse ... erworm.jpg

earthpig
Posts: 31
Joined: Sat Apr 21, 2012 1:10 am

Post by earthpig »

Cmd. Matt wrote:
earthpig wrote: For sandworms not to be in the game seems a bit odd, they're pretty critical to warfare on Arrakis in the books. If you're in the open sand and causing vibrations, they're coming for you!

But that wouldn't work for an RTS game... we could, however, have a targeted sandworm attack be a crate event. To replace parabombs (but they can only attack units not standing on concrete or rocks).
Dune 2000 multiplayer has thumper infantry to attract worms: http://dune2k.com/View/Images/Duniverse ... erworm.jpg
And I see a sandworm!

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

Post by Matt »

earthpig wrote:
And I see a sandworm!
It eats whole units, but is not some kind of a superweapon. You get a "worm sign detected" *lightning* and "worm attack" warning when it strikes. Vanishes after it ate 3 in the original Dune 2000. Something like a moving kill crate so to speak. You are save on rocks. Chris wants to do the coding once the d2k mod is more finished.

twarpie
Posts: 60
Joined: Sun Jun 26, 2011 3:10 pm

Post by twarpie »

Have you seen the Dune 2000+ site? Seems to have info on formats and some tools implemented. Source for some (most) of these seems to be available here.

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

Post by Matt »

twarpie wrote: Have you seen the Dune 2000+ site? Seems to have info on formats and some tools implemented. Source for some (most) of these seems to be available here.
I found the source at http://code.google.com/p/dune2000plusone/ which states it is BSD licensed which clearly conflicts the statement "not for commercial usage" (making it GPL incompatible and non-free) at your link. I completed the R8Reader with parts of their source code. The programmer (mvi) told me it is okay if I credit him in the AUTHORS file. I talk to them openly via http://forum.dune2k.com/topic/24184-ope ... dune-2000/ (also some more screenshots available there).

Post Reply