Jump to content

Dune 2 Scenario format


MarkJ

Recommended Posts

I am actually interested in those things that are not easy to understand. Like the file limit you describe, etc. All the limits that are not documented, and so on.

In fact, I would be interested in behavior of some properties.

It would probably be for 90% easy to understand. But then again, for me it would be nice to have a sort of 'description' how the file is interpreted and how DUne II behaves. Just to make D2TM better by interpreting it better. For now, the CHOAM and REINFORCE sections are still all vague to me. (ok CHOAM is pretty easy to understand, but i thought there where quirks with it).

If there would be one document describing all, it would be less confusing.

Link to comment
Share on other sites

Most of this information is still unknown - someone has to do a research on it. Perhaps segra (or someone using his database) could figure it out from the analysis of the code).

The [CHOAM] section defines the tyoes of available units and their quantity in stock. It works fine in v1.07, v1.0 does not use the quantity in stock properly AFAIK.

As for the [REINFORCEMENTS] section:

[pre]<Number>=<House>,<Unit>,<Destination>,<Time>[/pre]E.g.:

[pre]1=Harkonnen,Troopers,Homebase,12[/pre]As I stated somewhere else, Homebase and Enemybase depend on the House-owner of the units being reinforced. In the case above, the Troopers will be dropped in the Harkonnen base, regardless of whether the Harkonnen player is human or CPU. Note that multiple House's units can be dropped by a single carryall (doesn't work with an Atreides/Fremen combo though). I don't know what units time is measured in.

Link to comment
Share on other sites

  • 5 months later...

(..)

+ Have the win/lose flags been figured out at this point?

(..)

I couldn't find any reference that this was indeed figured out. So I just wanted to let you know. Sorry to dig up this old topic, I hope that is okay.

First of all, those are bit-fields. Their meaning (same for both):

1 -> Enemy has no buildings

2 -> You have no buildings

4 -> You reached credit quota

8 -> You reached time limit

That was the easy part. The scenarios also tempt to use 16 as flag, but that seems never used.

Now, the meaning of those 2 flags. First, forget about the name, they are very misleading. What they mean:

WinFlags -> Conditions to be met for the game to end (win or lose!).

LoseFlags -> Conditions to be met to win the game.

So, if we take any campaign 2 level (when using MrFlibbles scenario.pak, else one of the Atreides campaigns is broken):

WinFlags -> 7

LoseFlags -> 5

So the game ends if: you have no buildings, the enemy has no buildings, or you reached the credit quota.

You will win the level if: the enemy has no buildings, or you reached the credit quota.

You will lose the level if: you have no buildings. (derived from disabling the bits in WinFlags that are active in LoseFlags).

And that is all there is to it. So the names are very misleading, but the result is very simple (and efficient).

(source: http://forum.opendune.org/viewtopic.php?f=13&t=41 )

Link to comment
Share on other sites

Thanks! I remember someone already researching this some time ago (we knew it were bit flags), but I don't know what happened to those test results.

And I'm pretty sure we didn't figure out the true meaning of these 2 options.

Would be better to call them EndFlags and Winflags then, instead of Winflags and LoseFlags...

So, does this mean "Quota" can also be used as time limit?

Link to comment
Share on other sites

So, does this mean "Quota" can also be used as time limit?

That's an interesting question indeed. I've always thought that the TimeOut variable in the [basic] section defines the time limit, should it be used. BTW, is this option still functional? Does the game display a countdown timer (probably not, but why not ask ;))? It's interesting how this idea was conceived already with the very first RTS ever, but only got really implemented much later (in Red Alert for Westwood titles, and Starcraft with Blizzard; maybe there are other RTS games that had limited time missions before these two, but I can't remember any right now).

Link to comment
Share on other sites

TimeOut is only partly implemented. The time value is read but not saved in the correct variable iirc.

For the win and lose flags you can have a look at the format specification I wrote some time ago. The purpose of the document is for documenting the ini-format as used by Dune II and extensions which will be supported by Dune Legacy in the future. At the moment the document mostly describes things figured out by people on the forum or by looking at SEGRA's asm code.

The attached specifications is not finished yet!

Dune II Scenario Format Specification v0.1.0.pdf

Link to comment
Share on other sites

(..)

So, does this mean "Quota" can also be used as time limit?

I don't really get what you mean by this?

Credit Quota means that if flag 4 is set, and the player reaches an amount of credits, the goal is reached.

TimeOut means that if flag 8 is set, and the player plays for N time, the goal is reached (depending on LoseFlag this can be a good thing. Survive N minutes is possible).

The problem with the whole Timeout stuff is: it is partly done (as bluehappybyte already states). The TimeOut value is, as the Quota value, stored in the House information, but never moved to the global variable where it is expected. So all I can tell is that the value always remains 0. I guess it is easy to resolve this issue.

One other thing that really doesn't make sense to me: the check to see if the level ends with the timeout, looks like this (pseudo-code):

if currentTime < variable: level-ends

This doesn't make sense. I can't give any meaning to the 'variable' value which would make sense in this situation. It really feels like they made a bug here, and never fixed it or what ever.

Btw, if we would fix both problems, you could even make a 'survive' map, where you have to hold out for N minutes :)

Link to comment
Share on other sites

Ahh, well I just didn't know there was a TimeOut key, so I wondered if it used the value at Quota too. Guess not then ;)

I couldve known though; they're bit flags, so they can be enabled together. With a theoretically possible system of 'reach quota before time runs out' it's logical that there are separate keys for it.

Now if only someone would fix the timeout system...

Link to comment
Share on other sites

Ahh, well I just didn't know there was a TimeOut key, so I wondered if it used the value at Quota too. Guess not then ;)

I couldve known though; they're bit flags, so they can be enabled together. With a theoretically possible system of 'reach quota before time runs out' it's logical that there are separate keys for it.

Now if only someone would fix the timeout system...

Every scenario currently has a 'TimeOut=0' value in them :) I can only guess that was the intention of the field .. now if only someone could get their head around the original idea of this ;) Then fixing should be relative easy, it seems not to require that many bits (and because there are a few debug-statements in those functions, enough bytes free :)

Oh yeah, I forgot to mention: this seems to be the only function which still contains debug functions. It prints things like: Forced end. Destroy end. Etc.

Link to comment
Share on other sites

Oh yeah, I forgot to mention: this seems to be the only function which still contains debug functions. It prints things like: Forced end. Destroy end. Etc.

Right, I remember those strings in the EXE :)

BTW, why do some scenarios have WinFlags=3 while others have WinFlags=19, with seemingly same victory conditions? Does this mean the latter have some unused flags turned on?

Link to comment
Share on other sites

Right, I remember those strings in the EXE :)

BTW, why do some scenarios have WinFlags=3 while others have WinFlags=19, with seemingly same victory conditions? Does this mean the latter have some unused flags turned on?

Yup! Flag 16. It is nowhere used. Never ever.

If I look at the maps the flag is on for, I can only speculate to the intended meaning. Maybe it was the idea to have all the enemy units destroyed too? I don't know .. any clues in the dialogues about other goals?

Link to comment
Share on other sites

If I look at the maps the flag is on for, I can only speculate to the intended meaning. Maybe it was the idea to have all the enemy units destroyed too? I don't know .. any clues in the dialogues about other goals?

Not that I know of. Briefings usually do not give any specifics about the goals, except that the enemy should be defeated :) I've also thought that the difference could have been in destroying all units in addition to structures, but I don't think this really happens in any mission.

Link to comment
Share on other sites

Oh, speaking of Carryalls (although this probably should belong to another thread), we noticed that in the EU 1.07 version, AI's Gun Turrets can and will attack the player's Carryalls within range (although they're not supposed to target air units at all). In other versions, this does not happen, although Rocket Turrets will sometimes fire at a player's Carryall when it gets close.

[Edit] I tested a bit more and found out that this actually happens in all variants of v1.07 (I guess it only doesn't in v1.0). Both regular Turrets and Rocket Turrets can attack air units, and this applies to the player as well as to the AI. Weird. (I assume it wasn't very much noticeable because in the later levels, AI-controlled Turrets are rare, and players usually don't build them too, preferring the more effective and functional Rocket Turrets instead).

[Edit2] Wow, regular turrets can fire at air units in v1.0 as well :O Never noticed that before...

Link to comment
Share on other sites

In spite of this, their projectiles tend to fly outside of firing range, just as with Rocket Turrets. On my experimental map, a Carryall would bring a damaged vehicle to the Repair Facility from behind a line of enemy Turrets. One or several Turret projectiles would follow the Carryall up to the Repair Facility and hit it, or the wall surrounding it. Another difference is that the Turrets are far more inaccurate that Rocket Turrets, and have a hard time hitting either Carryalls or 'Thopters.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...