Open Moburma opened 1 year ago
Some mission indexes currently have hard-coded properties. Ie. if you try -m 3,10
the map will be damaged because there seem to be special patching for mission 10. The same map and level file moved one index up or down will load properly.
So in case something behaves strange, one thing you should try is to switch the mission index. (though I will try to weed out such hard-coded fixes)
That's a good shout. I tried moving the mission to a new slot (it's mission 67) but that didn't work. It's something to do with the GAME_OBJ_GET_ITEM objective. These seem right at first glance as they point to the correct objects, but as you pick them up they do odd things and the marker gets moved to surrounding buildings. The first item objective has a coordinate set (although that doesn't work right either), so I don't know if this would be a way around the issue. The same problem occurs if the BEN .miss file is used to play mission 65. In this version it had an objective to pick up an Uzi, but this similarly goes mental and shifts the objective to part of the scenery once collected. Both are original game bugs, possibly just how the objectives are set out here. Do you know the second number of GAME_OBJ_GET_ITEM should be? The first is clearly the ThingOffset of the item, is the second a uniqueid (seems like items don't have uniqueids!)?
it had an objective to pick up an Uzi, but this similarly goes mental and shifts the objective to part of the scenery once collected
Ha, makes sense. If you pick up a weapon, it's no longer a stand-alone thing - the Owner
should then be used as the target.
I might fix it later; currently I'm seeing an issue with last level, probably caused by the move to text mission list.
the second a uniqueid (seems like items don't have uniqueids!)
Sometimes there are parameters set which are unused. That's probably because type of item was changed within the editor, so at some point it was pointing an object which had UniqueId.
Do you know the second number of GAME_OBJ_GET_ITEM should be?
Here's an implementation for checking the objective:
case 13:
p_sthing = &sthings[p_objectv->Thing];
if ( p_sthing->Type != SmTT_CARRIED_ITEM
|| things[p_sthing->U.UWeapon.Owner].U.UPerson.Group != things[players[local_player_no].DirectControl[0]].U.UPerson.Group )
{
return UNDECIDED;
}
p_objectv->Status = 2;
return MET;
Doesn't look that bad, other than types of things are not really checked. And for some reason the game uses your first agent to get the group ID for local player - what if you didn't had that agent?
Anyway, showing the objective on radar has a separate implementation - so maybe there's a bug there.
During the gameplay, ThingId is typically used to check objectives; but the ID isn't necessarily the one from objective definition in mission file, as under some conditions the game updates the IDs based on coords (it searches for matching thing around given location, and overwrites the ID with that). The ThingId update happens once, during level load.
I did more playing around with this mission and its objects. One thing I discovered, the first of the item objectives must be nonsense. It's referencing coordinates (16128,0,7914), which if placed as a GoToLocation objective type shows this is clearly a repurposed/early version of the very first mission objective (where you have go to the entrance of the ambush area). I thought maybe it was some way of making the game check for the object ID in the area of the weapons, but it's clearly just junk data (and why the other items don't have coordinates). There's only one other level in the game with an object collection objective that uses coordinates and that's cut, so it's probably a sign this argument doesn't actually work/do anyhing.
Your above explanation seems to be correct as to what happens - the player collects the items, but it then can't find where they have transfered to, and they get transposed on top of pieces of scenery (and dropped enemy items if they are killed). This definitely isn't just cosmetic (i.e. just the radar) as the objective doesn't complete (or are completing objectives part of that code?).
I just can't see why it doesn't work. The second number is definitely the uniqueID of the item. This isn't defined in the level file, but they must be right, as the objective points to the correct object. If I switch these around it will point the scanner blip to the corresponding other item object, and if I use random numbers it doesn't work at all, so it's not blind luck that it initially identifies the item. So clearly it's something to do with the player taking the item and it being unable to figure out where it's gone. But I don't see anything special here compared to a final game level, we're just giving it two arguments, and they both seem to be correct, but the behaviour is wrong. I've also seen this happen before with mission 65 when using the .ben objectives, but that level file is not even an alpha period one, it's a final game one, so it doesn't even look like it's a final game level format difference?
We're not far from being able to fix all the unfinished objectives. Please provide a reproduction level, and I will look into this.
Having Unguided Campaign with objectives which do not exist in the base game would definitely make it more interesting to play.
It's mission 67 aka level c026l004.dat. i.e. /m 2, 67 The mission starts with an objective to go into the entrance of an enclosed area, that then triggers the item collection objective. to debug the level I usually just use the teleport cheat to get my agents next to the items, teleport one into the entrance, and then teleport him to the items and do what I was planning to do. Looking at the objectives and commands, what is supposed to happen is:
Only up to 3 above works.
I thought you did a .BEN file version, if you run mission 65 (c040l015.dat) with that set of objectives (and only that one) it gives you an extra objective to grab an uzi compared to the final version of the level, which must then be taken to the exit. This fails in the same way, mapping randomly to some piece of scenery once collected.
Well this is confusing. I though pickups are SmTT_CARRIED_ITEM = 0x1A,
, but the ones Agents pick are SmTT_STATIC = 0x5,
. I though these are static lights...
And the ones Unguided pick are different for some reason? they're SmTT_MINE = 0x19,
.
I am confused. I clearly misidentified some thing types.
Hmm, in all the levels I've seen, floor items seem to have a Type of 25 (0x19 in hex). Here's my tool's output of the level:
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
Parent | Next | LinkParent | LinkChild | SubType | Type | State | Flag | LinkSame | Object | Radius | ThingOffset | X | Y | Z | Frame | StartFrame | Timer1 | StartTimer1 | WeaponType | ItemName | LastFired | Ammo | Owner | OnFace | DummyData | field_38 -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- 0 | 0 | 0 | -356 | 0 | 25 | 1 | 67108868 | 0 | 0 | 0 | -580 | 7224576 | 0 | 4849408 | 3563 | 1003 | 5 | 5 | 2 | Minigun | 0 | 0 | 0 | 0 | 0 | 393216 0 | 0 | -580 | -190 | 0 | 25 | 1 | 67108868 | 0 | 0 | 0 | -356 | 7220736 | 0 | 4579328 | 3563 | 1003 | 5 | 5 | 2 | Minigun | 0 | 0 | 0 | 0 | 0 | 458752 0 | 0 | -356 | -521 | 0 | 25 | 4 | 67108868 | 0 | 0 | 0 | -190 | 7135744 | 0 | 4791552 | 3563 | 1003 | 5 | 5 | 5 | Launcher | 0 | 0 | 0 | 0 | 0 | 524288 0 | 0 | -190 | -407 | 0 | 25 | 4 | 67108868 | 0 | 0 | 0 | -521 | 7131904 | 0 | 4633344 | 3563 | 1003 | 5 | 5 | 5 | Launcher | 0 | 0 | 0 | 0 | 0 | 589824 0 | 0 | -521 | -140 | 0 | 25 | 7 | 67108868 | 0 | 0 | 0 | -407 | 6900992 | 0 | 4780032 | 3563 | 1003 | 5 | 5 | 8 | Flamer | 0 | 0 | 0 | 0 | 0 | 655360 0 | 0 | -407 | -146 | 0 | 25 | 7 | 67108868 | 0 | 0 | 0 | -140 | 6897152 | 0 | 4641024 | 3563 | 1003 | 5 | 5 | 8 | Flamer | 0 | 0 | 0 | 0 | 0 | 720896 0 | 0 | -140 | -139 | 0 | 25 | 16 | 67108868 | 0 | 0 | 0 | -146 | 6897152 | 0 | 4930304 | 3563 | 1003 | 5 | 5 | 17 | Plasma Lance | 0 | 0 | 0 | 0 | 0 | 786432 0 | 0 | -146 | -141 | 0 | 25 | 16 | 67108868 | 0 | 0 | 0 | -139 | 6893312 | 0 | 4506112 | 3563 | 1003 | 5 | 5 | 17 | Plasma Lance | 0 | 0 | 0 | 0 | 0 | 851968 0 | 329 | -139 | -440 | 0 | 25 | 1 | 67108868 | 0 | 0 | 0 | -141 | 1903360 | 0 | 1867520 | 3563 | 1003 | 5 | 5 | 2 | Minigun | 0 | 0 | 0 | 0 | 0 | 66256896 0 | 328 | -141 | -565 | 0 | 25 | 1 | 67108868 | 0 | 0 | 0 | -440 | 1905920 | 0 | 1945600 | 3563 | 1003 | 5 | 5 | 2 | Minigun | 0 | 0 | 0 | 0 | 0 | 66322432 0 | 327 | -440 | -138 | 0 | 25 | 1 | 67108868 | 0 | 0 | 0 | -565 | 1905920 | 0 | 2016000 | 3563 | 1003 | 5 | 5 | 2 | Minigun | 0 | 0 | 0 | 0 | 0 | 66387968
An issue to discuss and plan on making an Unguided campaign. At the moment the focus should be on getting levels together and fixing what is there, with an eye to making new levels (will need proper tooling for that). Also just general ideas what the campaign should be about/how it should play compared to the existing ones. I recommend you read this this to get an overview of levels (full disclosure - I wrote it). Also if you want to see the existing levels being played to completion, check out my YouTube channel here.
Unique Selling Point
What is the Unguided's USP - why bother with an Unguided campaign? I think this is important to consider beyond simply "more levels is cool!" The Unguided themselves are not that interesting from a gameplay point of view - they have less health and are weaker, and don't have special unique weaponry. From the coverage in Maximum magazine, it suggests that the Unguided campaign was to be an expert mode unlocked by beating one of the two other main campaigns first. It also suggests there would not be normal progression in this mode, something heavily backed up by the level load outs (limited numbers of units and usually basic weapons). My vision of this would be that the campaign if possible (and there is a technical limit here, the other campaigns do not work this way) should NOT have research and inventory screens, with that aspect of the game deliberately removed. Instead each level would have a set inventory the player must get the most out of. The advantages of this would be: a) more strategic gameplay. You can't just give your units the best guns anymore, forcing the player to learn new strategies and to use things like support weapons that otherwise come too late to be useful in the final game. b) allow the use of items in ways that would break the normal progression of the game. Want to give the player a Graviton Gun as a reward on the first level? You can now, without breaking the game. This makes things like the Chromotap and Displacertron actually viable and shows the player a side of the game they probably ignored in the main campaigns. c) Asymmetric weapon load outs. Putting the player into deliberately challenging and interesting situations they would not knowingly ever put themselves into.
In the game's campaigns, the Unguided have an anarchic trickster feel to them, using things like KO or Psycho Gas or Razorwire, this would also be interesting to play with. The limitation of weapons also has precedence in Bullfrog's games - Magic Carpet used this extensively, abandoning the traditional progression system for fixed loadouts as the game went on. Dungeon Keeper also used this to great effect by frequently limiting what skills, rooms and creatures the player could get between levels.
Lore
The game's plot states that essentially Eurocorp's elite scientific research team find alien artifacts. The leader of this group is Ko-Paull Vissick, who falls out with the rest over augmenting their brains with alien technology. This causes them to go insane, and him to sabotage their lab. They become the Nine, and he joins with the existing Unguided faction to become their leader. He seems to be some kind of bizarre quasi religious guru character, with Eurocorp questioning his sanity too (although what he says about the intentions of the zealots is proven to be 100% correct). It's obvious briefings would come from him, just not at all clear what his character would be. Mad religious leader (sounds a bit too similar to the zealots)? Cyberpunk hacker? Cerebral scientist?
From the final game Eurocorp briefings, the Unguided hole up in Delhi and attempt to flee to Tibet, where somehow they would survive the Zealot attack. Both locations also have mystical overtones, hinting at the guru/religious leader angle.
There are also obvious allusions to the manga/anime Akira with the biker gangs (there's even a suspiciously Kaneda-like NPC just to make it even more on the nose) and the apocalyptic religious cult rising up.
From a plot point of view there is a need to plan out what and where the Unguided and Vissick are said to do things to make any new campaign plot mesh with them. Can also be used for levels with reversed perspectives (e.g. you as Unguided defend against Eurocorp on levels where you attacked them in the original campaign).
Current Levels
In rough order I think they should go in, and my comments on bugs and how fun I think they are:
Index 68 Zealot Attack Rating 3/5 This makes sense to be the first level, as it directly follows on from the start of the Zealot campaign. Very simple level (maybe too simple), but shows shortcomings of the follow command for the punk followers - a winning strategy is getting into the zealot's car, but if this is done your followers can't get in in and just get run over. Complete Level
Index 80 Clean-Up Rating 2/5 As an aside I don't think the level set here actually maps with description. Either way this is an extremely hard level that I think is actually impossible as-is. The basic idea - splitting up your group to cover two areas, and also defending civilians - is a really good one. Unfortunately provided equipment is insufficient. Not sure if this is actually salvagable as a level idea at all though, being frank. Update: Tried quite a few things with this level, but while it's a great idea, the concept really doesn't work, should just be left out.
Unfinished level
Level C007L007.D1 Rating 4/5 This is a loose level with no objectives set. A lot of effort has been put into it and it seems finished. It's seemingly a simple kill everything mission, but it's very challenging, which is fun and the kind of thing I think the campaign should be angled towards. Looking at it more closely it's clearly is just a kill everyone level, the only ambiguity is whether the zealots on the map should be also be killed or not. My hunch is this was actually the level called "Clean up" originally, as it matches the text description of the slot (correct map and concept). Finished level, but needs objectives/mission index entry created
Index 77 & 60 Guns Guns Guns Rating 4/5 for 60, 3/5 for 77 Two versions of the same level. 60 is a mostly complete early version, but it seems this was rejected for a later much simpler version (77). That said the later version seems again impossibly hard, and also a bit boring in comparison to the early one. The later one could be interesting with some tweaks, it needs more weapons or something. The early version has problems with things like the person stuck in the wall, but this is fixed now. The early version is also missing objectives, but it's quite obvious what they would be. Killing the final scientist in the later version gives the player a sniper rifle, much like the level below - this could be a sign there WAS progression in the campaign. Both levels seem unfinished and 60 needs objectives/mission index entry created
Index 64 Rating 4/5 Again there are two versions of this level. There is a mistake in the .miss file here and the wrong level is set. The objectives set in the file are for the level file c003l007.d1. This is a no brainer substitution, as this is a polished final game level, whereas the other version (which is wrongly set) is an early level file and nowhere near as good (and missing objectives). The final version also grants a sniper rifle for killing the scientist, like the level above, some kind of thematic connection between the two. Finished level, needs .miss file corrected to point to level file c003l007.d1
Level C047L015.D1 Rating 2/5 Totally cut level that is quite polished but a little light on things to do do. That said there is quite a bit setup in this level, so could be stretched out to be more interesting. As it's totally cut has no mission objectives, but seems to just be an assassinate mission against Eurocorp. Finished level, but needs objectives/mission index entry created
Level C004L007.DAT Rating 3/5 Totally cut level. The objectives here seem quite obvious - there is a group of soldiers by a bank. Attacking them causes some of them to break off and flee in vehicles. They ride to the top of the freeway and head to a getaway flying car. This then flies to the edge of the map and then stops. Therefore it's a an assassinate mission with a twist to take out the baddies before they escape off the map. Works well, but it's a bit too simple once you understand what to do. There's also a problem that there seem to be no vacant cars, so the player can't get into an exciting chase with the soldiers, the only solution at the moment is to sprint to their cars and steal one, which ends things quickly in quite a dull manner. Also there is a big group of Zealots that could be interesting as a secondary objective. Finished level, but needs objectives/mission index entry created
Index 78&61 Communications Rating 3/5 Two versions of this one as well. I am pretty sure these are set to the wrong map file. Experimentation has shown that there doesn't actually seem to be a matching map for this level. If they are renamed to use map 79 Reykjavik, they just about work. If this is done they are quite interesting complex and very difficult (but doable) levels. Could be something really good, but needs a lot of work to make them playable. Finished levels(?) but for a missing map, needs a lot of work to be coherent in the final game
Index 70 Rating 3/5 This is a simple and quite fun early level. Works perfectly, but could perhaps be improved by using flag1/2 objectives to draw the player's attention to the chemical plant where the essential grenade is (although a briefing could explain this as well). Finished level
Index 66 Rating 3/5 This is an early level that is a good idea, but seems a bit rough. Odd stuff like the player starting with a useless persuadertron - was the idea to gather the other unguided together? Feels like it needs something else added to really shine. There's an older version of this, but it's the same only clearly more unfinished. Finished level - barely
Index 81 Godfather Rating 3/5 Interesting and quite polished level, but not that much to it, which lets it down a little. Finished level
Index 62 Rescue Rating 3/5 This is a weird one. Doesn't make much sense to play, either needs a briefing to hint at what to actually do, or needs changing. Seems not quite finished. Unfinished level
Index 82 Dumped Rating 3/5 Another very hard level. Seems pretty finished, but either I'm missing something or it needs rebalancing as it's brutally hard (think it MIGHT be possible if you're really good/lucky though). Also seems to have had a wacky plot originally. The thing with the cars at the start blocking each other needs fixing. Finished level
Index 65 Massive Assault Rating 2/5 This seems good on paper, but it's actually too simplistic to really be fun. While it's marked as a late game level, some of the earlier .miss files have it as an early level (even the first!) and it seems to fit in better there, checking the make up of characters (no mods) and overall tech level this is clearly supposed to be an early game level. There's a bug where the wrong group is targetted that is trivial to fix, but it's just a boring easy kill everyone level. In the older files there are other objectives to get a weapon and take it to a location, but this is hardly thrilling stuff either. Either use as early filler, or needs radical rework. Finshed level
Index 75 Ferocity Rating 4/5 Important level that concludes the trilogy of similar levels in the other two campaigns. Feels a little rough in comparison, but works quite well. Finished level
Index 67 Talks Ambush Rating 4/5 I really like the idea of this one. With the fixes to items in the port this now works perfectly, the only issue with it is it clearly pushed the pre-alpha format to its limits, doing clever things like hiding the agents in cars because there was no Flag2 yet. As such it could be made better by doing a more modern pass on it by converting to a newer format, and genuinely hiding the supposedly hidden NPCs (both agents and punks) using flag2. The end clean up is also a bit too monotonous and could be made more interesting. Finished Level
Index 69 Trash Church Rating 1/5 An intriguing but barely even started level. Doesn't work in the final executable due to no player characters in the level. There is only even one enemy to kill. An all out war to blow up a zealot church sounds like an exciting idea for a level though. Checking the level in depth this was a very early level that looks like was deliberately restarted due to how simplistic it was, concept is good, but pretty much everything else should be scrapped. Unfinished Level
Index 103 A Tale of Two Cities Rating 5/5 This was clearly going to be a demo for the Unguided campaign. Very polished and clever level full of surprises. Also lots of interesting stuff unused in the actual mission that could be spun off to another one - it's clear it was intended for the player to assassinate the scientists in the base near the start as well as destroy the buildings. Finished Level
Next Steps
My feelings are a) obviously there need to be more levels to be a proper campaign and b) a lot of these are not actually that great, they're clearly first drafts or unfinished and don't push the game's envelope much. The simplest first step forward would be to get objectives created for the totally cut levels, and try to fix the unfinished/broken ones. I think I will try and make a simple level editor like my Magic Carpet one, but my limited ability and the nature of this game means it's less suitable for that approach (really needs a realtime 3D view - someone with skills in e.g. Unity could make something out of this project.