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).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?
Raw D2K Art
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.
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 (346.55 KiB) Viewed 11682 times
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: ↑I did not know that ressources are tiles and not SHPs. The yellow stuff I found in DATA.R8 might not even be spice.
If you post the error log, myself or others can help with this.Cmd. Matt wrote: ↑As OpenRA does not accept my self-made Arrakis shellmap
The engine makes assumptions about a valid game world existing at the main menu, so this isn't surprising.Cmd. Matt wrote: ↑and crashes if I remove LoadShellmap() from the source code
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
The error messages does not make sense. Sadly I encounter it often when something is wrong: https://github.com/OpenRA/OpenRA/issues/2151
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 (KeyValuePair`2 x) [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SequenceProvider.cs:40
at System.Linq.Enumerable.ToDictionary[KeyValuePair`2,String,Sequence] (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,String,Sequence] (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.Graphics.SequenceProvider.LoadSequencesForUnit (System.String unit, OpenRA.FileFormats.MiniYaml sequences) [0x0001c] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SequenceProvider.cs:40
at OpenRA.Graphics.SequenceProvider.Initialize (System.String[] sequenceFiles, System.Collections.Generic.List`1 sequenceNodes) [0x00054] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SequenceProvider.cs:32
at OpenRA.ModData.PrepareMap (System.String uid) [0x000c4] in /home/matthias/Projekte/OpenRA/OpenRA.Game/ModData.cs:80
at OpenRA.Game.StartGame (System.String mapUID, Boolean isShellmap) [0x0000a] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs:207
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.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 (KeyValuePair`2 x) [0x00000] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SequenceProvider.cs:40
at System.Linq.Enumerable.ToDictionary[KeyValuePair`2,String,Sequence] (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,String,Sequence] (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.Graphics.SequenceProvider.LoadSequencesForUnit (System.String unit, OpenRA.FileFormats.MiniYaml sequences) [0x0001c] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SequenceProvider.cs:40
at OpenRA.Graphics.SequenceProvider.Initialize (System.String[] sequenceFiles, System.Collections.Generic.List`1 sequenceNodes) [0x00054] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Graphics/SequenceProvider.cs:32
at OpenRA.ModData.PrepareMap (System.String uid) [0x000c4] in /home/matthias/Projekte/OpenRA/OpenRA.Game/ModData.cs:80
at OpenRA.Game.StartGame (System.String mapUID, Boolean isShellmap) [0x0000a] in /home/matthias/Projekte/OpenRA/OpenRA.Game/Game.cs:207
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
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.
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.
Welcome back to Arrakis, Commander!
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 (413.85 KiB) Viewed 11634 times
-
- Posts: 50
- Joined: Sun Sep 26, 2010 12:06 am
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.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.
http://content.open-ra.org/?p=detail&table=units&id=104
When d2k mod is out, I will be remaking the units definitely.
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).
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).
Dune 2000 multiplayer has thumper infantry to attract worms: http://dune2k.com/View/Images/Duniverse ... erworm.jpgearthpig 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).
And I see a sandworm!Cmd. Matt wrote: ↑Dune 2000 multiplayer has thumper infantry to attract worms: http://dune2k.com/View/Images/Duniverse ... erworm.jpgearthpig 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).
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.earthpig wrote: ↑
And I see a sandworm!
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).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.