Uplink-style "bouncing"?

Talk about your new mod or map here

Moderators: bert_the_turtle, jelco

User avatar
00Davo
level2
level2
Posts: 84
Joined: Mon Sep 22, 2008 12:52 pm

Uplink-style "bouncing"?

Postby 00Davo » Thu Oct 09, 2008 11:35 pm

If you've got a bunch of islands, with Radar Dishes, can you rig up an Uplink style bounce between them, to eventually reach a destination? These dishes should be PLAYER-controlled, hopefully allow for a couple of different bounce paths, have a single eventual destination, and require at least a few bounces. The main required thing is a way to simulate being "traced" through the Dishes. AI can't actually use the Dishes, IIRC, which makes an AI trace rather difficult. Any suggestions?
User avatar
briceman2
level2
level2
Posts: 123
Joined: Wed Dec 12, 2007 4:30 am

Postby briceman2 » Sat Oct 11, 2008 1:37 am

EDIT1: pre-arranging goto Officers...
EDIT2: controlling AISpawners using Consoles...
EDIT3: using non-Team-2 RadarDishes -- it does work!...
EDIT4: using Team-GREEN Officers at Dish doorways -- this also works (sorta)...

I haven't played Uplink, but I think I understand what you're after.

Dishes can be linked into a long chain, but *only* for DGs of team Green (and maybe Yellow, but I can't remember if they can enter dish links -- they *do* follow orders from Yellow / player officers). There's no magic here. You point the dishes the way you want, then station an officer at the exit door of each one (except the last one), pointing DGs back into the door they just left. This effectively allows chains of unlimited length. It's a good way to redistribute your forces on some levels of Insurrection and EW3... Since dishes accept n:1 hookups, you can point multiple dishes into a single receiver dish, and then if the receiver dish is pointed less than 90deg away from all of the input beams, it can also act as an output dish. Instant troop aggregator.

EDIT1: you can pre-arrange the Officers if you want to, but it is a hack. Play the level and place real officers in the appropriate places, and make each officer point to the door of it's WORKING dish. Then exit the level (not reset) and redshirt the saved mission file and copy out the Officer lines. Add these to your original mission file and the Officers will show up at level start, including their flag state. You can hide the Officers by placing static shapes over them... but the Green DGs will still see the Officers just fine... and so will your cursor. The only gotcha with this trick is that all the RadarDish doors MUST be open for business (Team 2) at level start... I may be wrong about this, but IIRC the instant Officer directions will not work for a dish that is initially off... the Officer's directions will just default to nada.

Your second request can sorta be done with some trickery behind the scenes, but maybe not quite the way you want. What comes to mind first is a way for AI to show up at the *endpoint* of a user-defined dish chain. I know this is probably not exactly what you had in mind, but you can also pretty easily have AI show up wherever DGs temporarily exit and re-enter dish links, but it probably would lessen the effect. I won't explain the ways of doing this since it's pretty obvious: you detect the exiting Greenies and use AISpawners to do the rest.

If you want a "trace" beam to parallel the dish links, there are ways, but they all involve lots of off-screen machinery which you will have to hide on an island far far away. Such islands can be further hidden by enclosing them in 100% BLACK static shapes which you scale up to enclose the isle and it's surrounding littoral waters. NOTE: it is very important to use a small black shape and scale it up -- if you use a full island-size shape it will cause lots of problems for the engine and the DGs walking inside it.

So here's one way to do the "trace" beam. Pick a building system that can display beam-like links, such as the FuelPipe thingies, or the Consoles and/or Relays, or Laserfences driven by Powerstations. I'll use Laserfences in this example since you can change the colors by changing team. (Colors for teams 255,0,1,2,3,4 are all defined 100% of the time, with colors for teams 5-254 being randomized by whatever other stuff the engine is putting in that slot of the lookup table memory at any given time -- the slots from 5-254 are recycled for other working data.)

So first you hack the shape for the laserfence to a) remove the building, and optionally b) to shift the top and bottom as needed. Removing the building fragments from the shape file is as simple as changing the "SceneRoot" to xSceneRoot" for each shape fragment defined in the laserfence.shp file. Make a copy in the /mods/modname/shapes dir and edit it there -- it will override the file in the main installation. While you edit the levels you remove the "x" from the "SceneRoot" so you can see and click on the fences. I replaced the fence buildings with little spheres and then do the same "xSceneRoot" tricks.

Why make the laserfence invisible? Because then you can scale the fence down to near zero (0.00 - 0.05 work well) and you get colored laser beams from fence post to fence post... this will be your "tracer" beam. If you place both the fence and the dish links together on top of little hills, the fence "beams" will fly through the air above ground if they are scaled down to near zero. The Markers at the end of the laserfence.shp file control how tall the fence is by giving the top and bottom offsets... or something like that -- it was never real clear to me excactly what the numbers were doing, but play with them and you can skew the fence up and down and upside down all you want. You might be able to tweak the fence parameters to place the tracer beams in the middle of the dish beams...

OK, so you have a "shadow network" of laserfences which trace the dish network the player can control. One important idea to keep in mind is the fact that dishes can link-OUT 1:n but laserfences only link-OUT 1:1... this means that you need to "stack" n laserfences at each dish that has n link-OUTS. In other words, if a dish can be pointed to 3 different downstream dishes, you need to place 3 separate laserfences on top of that dish. The reason will become clearer -- if you don't already follow -- in a moment.

The last thing you need is a way to turn these shadow / trace links on (and maybe off, but that's much harder to accomplish dynamically). So on your far away island you have one PowerStation for each A-->B pair of laser fences. The PS starts out with no DGs, so the "tracer laser beam" for that link is off. (ALL laserfences here should start in state 0 = "Disabled".) When Green DGs exit at the FAR END of A-->B, they are detected and this spawns DGs at the appropriate PowerStation to turn on that segment of the tracer beam.

There are generally two ways to detect and react to DGs: SafeAreas and Triffid Triggers. For this case, I would use Triffids becasue they don't have to be Global, and thus you can avoid all kinds of Global headaches... like how Global buildings can't be (easily) reset when you Reset a level. So on the far away island, near each PowerStation, place one RED Triffid whose Trigger Area is way far away near the A-->B EXIT dish. It has to be RED so it reacts to the Green DGs coming out of dish B.

Depending on what you want to do, you can let the triffid spawn Red DGs (SLOWLY!) and they can man the PowerStations to turn on the tracer beams -- which can be any team, and don't care about the DGs at the PS ports. Or you can invert the Triffid "signal" by making the Red Triffid drop Spirits or Eggs (the white ones) into the Trigger Area of a nearby GREEN Triffid. The Sprit/Egg TriffidEggs are essentially duds, but the TriffidEggs themselves have "Team" and will trigger downstream Triffids of opposing teams. Then your GREEN Triffid can spawn Green DGs if you prefer.

You will probably find it easier to have one small island per PowerStation to prevent DG spillover between Triffids... Just make an array of isles and cover the entire thing with a black sphere. Also, IIRC, you do NOT need to size the level map to include the far away islands. You can place things off the +X and +Z edges of the map (but not off the zero edges), and I think flatten areas work out in the middle of nowhere to the South and East of the valid map area. Test it. The size of the water wave triangles is related to the map dimensions, so you can get ugly water if you have a 40k square map just to hide those islands...

By combining layers of things like this you can sorta get the tracer to be dynamic, instead of a one-time deal. But it is hard to balance things so that Powerstations get taken down when you want and then put back up when you want... the engine and the existing buildings really resist repetetive state changes. There are many ways to attempt a dynamic tracer beam, and Laserfences may not be the best choice if that is what you are after.

The system I described above will work well for a single player choice through the dish network. You can restrict player choice to single-use dish links in the following way. Since the tracer beam is triggered by DGs EXITING from the far end of a chosen link, you know the link is in place with a high degree of certainty as soon as the first DGs pops out of the far end... So you ALSO spawn a few Engineers at a far far away ControlTower which points to the dish at the BEGINNING of that dish segment... the Eng grab control of the dish, and as long as you do NOT provide any other CT for the player to regain control of the dish, that dish choice is made permanent...

(If there a multiple possible pathways, you may have to have the Eng freeze several CTs-->Dishes to keep things in sync... but this gets very complicated very fast because if you point 5 CTs to a singe Dish, the CTs get out of sync and there is no sane way I know of to fix this... except in the case of CT-->TrunkPorts which automatically sync both ends of the link.)

EDIT2: How exactly do you "ALSO spawn a few Engineers"? Don't use SafeAreas to control the AISpawners! Use BlueprintConsoles. An AISpawner linked to a Console (AISp --> Cons) will behave exactly like an AISp-->SafeArea, except the Console does NOT have to be Global. The linked AISpawner becomes active when the Console is manned by GREEN DGs. It NEVER stops after it first starts spewing out units, even if the Reds retake the Console. This was a hack for the BluePrint level in the game. So, as mentioned above, you can use two Triffids to get GREEN DGs to run your PowerStations... they can also man the appropriate Consoles whihc can be placed next to the PowerStations... Voila! Rube Goldberg will be proud of you!

EDIT3: So I remembered that you can't spawn or place instant Eng of Team 255... and Team 255 is the team you can use for your Dishes if you want to allow Green DGs to enter (and Officers to point to the Entry doors), but don't want to allow teh player to reposition the Dish. You have to set this up in the game.txt by hand.... Soooo, my idea of grabbing the Dish with some enemy Eng and a CT should probably shut the Entry door of the Dish... BUT IT DOESN'T!! ...So here's the deal. The *only* way a Team 2 Dish differs from any other Team is that it allows Team 2 Officers to point to the doorway of the Dish... That's it! So if you have an Officer positioned and pointing DGs into the Dish, and some evil Red Eng uses a CT to change the team of the Dish, NOTHING happens, except the light blinks a different color. The Officer is still pointing to the exact location of the doorway, and this allows you to send more DGs to that Officer, who will in turn send them into the RED Dish doorway! ALSO, as long as you don't touch the Officer at the door, you can exit and re-enter the level and the Dish will still work for your Officer even though it is now Team RED! So if you pre-place Officers who point to the exact doorway coordinates, then these Officers will direct DGs into the Dish no matter what the state of the Dish Team is on level entry (which I wondered about somewhere else in this huge post...) In general this means that it is possible to send DGs into *any* team dish... if you are so lucky as to make an Officer point to the EXACT coordinates of the Dish doorway... not likely.

EDIT4: You can pre-place goto Officers pointing into each of your Dish doorways, and the Officers can be Team-0... the Green DGs will follow orders to enter the Dish doorway, AND the player cursor will NOT select Team-0 Officers... But there's a problem: the Officers don't save properly when you leave the level, so when you re-enter they are no longer holding goto flags, and no one pays them any attention... but if you can somehow avoid letting the player leave and save (by making sure they get a new mission each time they re-enter -- swap missions on each and every level entry), then you might use this trick somehow... like hiding the Green Officers under static shapes so DGs run to the Dish doors "without an Officer around"...

Well, the dish team will remain permanent if you make the dish Global, which is not necessary. But CTs *are* Global or the game crashes. So non-Global dishes will reset to their original team if the Player does a Reset level, BUT the far away CTs which freeze the player's choices WILL NOT Reset, so you have to use still more trickery to make them do so... and then I'll stop :)

You can force a CT to a desired team at level entry or level Reset, a few different ways. This one is my favorite. You setup a couple of INSTANT Eng of the appropriate team near each CT that you want to force. You ALSO setup a single Bridge building less than 200-250 grid units away -- more on this in a second. At the Bridge you setup a few instant Virii and set their Spread to near zero (if you go all the way to zero, you can't select it anymore in the editor). Spread = 20-30 work well for me.

Now what does this contraption accomplish? Well, on a level Reset, the instant Eng will reset the team of the CT if it has been set to something else before. As soon as the Eng have nothing to do at the CT, they will run for the Bridge -- Eng can't resist Bridges, and the Eng "radar" range is approx 200-250 grid units, so they can't see Bridges beyond this distance from the CT. But since you put enemy Virii at the Bridge, it's a trap, and the instant Eng die soon after the level starts up.

So everything is clean and ready for another round of player choices for dish links... and also the locking/freezing action of AISpawned Eng which take the dishes away from the player's control. In this setup you can even make the Dishes Global since the act of Resetting the CT will also change the team of the linked Dish.

If any of this interests you, try setting it up, then ask if you can't get something to work they way I describe it. I'm doing all this from memory and I might've forgotten some of the little gotchas that are everywhere in the Darwinia engine.
User avatar
00Davo
level2
level2
Posts: 84
Joined: Mon Sep 22, 2008 12:52 pm

Whoa

Postby 00Davo » Mon Oct 13, 2008 10:57 am

That. Was. Complicated.

I understood less than half of that. :oops: Thanks for your enormous volume of help, but I can't manage to use your techniques... Could you please please please provide step-by-step instructions, some diagrams, or even an example? Please? :cry:

To clarify, it's the "tracing" bit I really need. I'm planning to just have a lot of Radar Dish-equipped islands functioning as servers. A few may contain trunkports (leading to side missions), but there is one primary destination. As soon as a link to the destination server is achieved, a trace should be bounced back through the Radar Dish beams, heading for the starting island, at which point it needs to force a mission restart, perhaps by simply spawning a bazillion enemies.
User avatar
briceman2
level2
level2
Posts: 123
Joined: Wed Dec 12, 2007 4:30 am

Postby briceman2 » Mon Oct 13, 2008 9:21 pm

Sure. I'll try. But you go first.

Can you spell out *in more detail* just what you want to happen? Step by step, please. Tell me what the player does, and then what the game is supposed to do in response. Tell me if DGs enter the RadarDish links, and when, and what is supposed to happen after, and how fast. Remember, I've never played Uplink, so you'll have to give me all the details. If you have a sketch of your level, post the map & mission files so I can look at what you're talking about.

00Davo wrote:To clarify, it's the "tracing" bit I really need. I'm planning to just have a lot of Radar Dish-equipped islands functioning as servers. A few may contain trunkports (leading to side missions), but there is one primary destination. As soon as a link to the destination server is achieved, a trace should be bounced back through the Radar Dish beams, heading for the starting island, at which point it needs to force a mission restart, perhaps by simply spawning a bazillion enemies.

Does the "tracing" DO anything except force a restart? Do you mostly want a fancy visual to let the player know "GAME OVER"? It that it?

I'll give you a few facts up front. 1) there is NO way to move RadarDish links except by player control. 2) there is NO way to directly detect the hookup of two RadarDishes. 3) the only things your mod can react to are the things that can be detected by SafeAreas, ScriptTriggers, Triffid TriggerAreas, etc. ...so any non-standard mod actions HAVE to start with some units tripping one of these detection devices... unless you can make your reaction/effect a normal part of a regular Building going Online or Active.

You CAN pre-position RadarDishes using the building links table in game.txt... the Guide explains this in some detail. I know this isn't what you want, but you probably can't get exactly what you want... so I'm trying to explain what CAN be done so you can think of 2nd-best ideas...

Please tell me if your "trace" is supposed to be a visible beam the player can see. That's what I was assuming before.

And sorry for the info-dump above... stream of consciousness. I have constructed some similar Rube Goldberg machines in mod levels of my own... they do work... plus I was learning new things along the way... the EDIT2,3,4 were things I tried after I typed the orig post.
User avatar
00Davo
level2
level2
Posts: 84
Joined: Mon Sep 22, 2008 12:52 pm

What I'd like to happen...

Postby 00Davo » Tue Oct 14, 2008 6:45 am

The level's objective is to reach the final island, open the trunkport on it, and get ten DGs to this trunkport (there's a SafeArea around it detecting these DGs).

However, when a connection to this island is established, some visual trace effect (I like the beam idea) should appear along the same connection. It makes its way through each beam of the Radar Dish connections, until finally reaching the starting island, at which point a Game Over of some description should occur (unless the objectives are satisfied, of course).


I haven't started level construction yet, because I wanted to make sure I could do this first. Thanks for your enormous help. :D
User avatar
The GoldFish
level5
level5
Posts: 3961
Joined: Fri Mar 01, 2002 9:01 pm
Location: Bowl / South UK
Contact:

Postby The GoldFish » Tue Oct 14, 2008 11:18 am

Well, if you were using windows 1.5.X, you could use the destroy building command to blow the radar dishes up
-- The GoldFish - member of former GIT and commander in chief of GALLAHAD. You could have done something, but it's been fixed. The end. Also, play bestgameever!
User avatar
00Davo
level2
level2
Posts: 84
Joined: Mon Sep 22, 2008 12:52 pm

Postby 00Davo » Tue Oct 14, 2008 11:19 am

The GoldFish wrote:Well, if you were using windows 1.5.X, you could use the destroy building command to blow the radar dishes up

But then it wouldn't be cross-platform! :( I'm using linux-1.4.0b9 anyway.
User avatar
briceman2
level2
level2
Posts: 123
Joined: Wed Dec 12, 2007 4:30 am

Re: What I'd like to happen...

Postby briceman2 » Tue Oct 14, 2008 4:39 pm

00Davo wrote:The level's objective is to reach the final island, open the trunkport on it, and get ten DGs to this trunkport (there's a SafeArea around it detecting these DGs).

However, when a connection to this island is established, some visual trace effect (I like the beam idea) should appear along the same connection. It makes its way through each beam of the Radar Dish connections, until finally reaching the starting island, at which point a Game Over of some description should occur (unless the objectives are satisfied, of course).


OK. before I start thinking about this (and I've already got some ideas...) let me make sure I understand what you want.

From what you've said so far, it seems like you want a sort of "fuse" at the end of the level... The player is *almost there* and them the fuse starts burning, and if the player doesn't close the deal asap... GAME OVER! You want some kind of visual feedback that tells the player the clock has started ticking... and you want the level to reset if time runs out.

Right?

A couple of questions.

1) How much time do you want to give the player once they've opened the final Dish link? Is this a trick level where there is no way in hell to accomplish the objective? Are you going to make the player learn the hard way that they have to get the DGs into the beam ASAP or else?

2) The big playability problem I see is that players could setup all their dish links at the beginning -- I tend to do this when playing levels -- and then they get slapped in the face for playing their way. Are you going to make it impossible to setup the final link until other links (and stuff) have been accomplished? There are ways of doing this... such as putting the ControlTowers inside Laserfences, which forces the player to get a squad up close to the fence so they can spawn an Eng inside the fences... Otherwise, some players will try to capture the CTs by "fishing" with Eng from the start of the level.

3) The issues here are mostly about how you plan to force the player to play the level in the proper order. The more options you give the player, the harder it is to make your mod respond to all the different variations... the engine is NOT designed to handle multiple paths through a level/mod... that's why so many ugly & beautiful hacks have to be used in mods that try to go beyond the original game mechanics.

So think a little more about how you want the level to play out, step by step -- everything -- and let me know. If you want a "tracer beam" to light up parallel to the selected Dish links, that's certainly possible, and the possible ways to do this can range from simple to very compicated (like above).

The one thing that you CANNOT do is to send "a trace should be bounced back through the Radar Dish beams"... because Dish links are one-way only, and only players can set them up on the fly... For backwards travel, the player would have to manually point the B dish back to the A dish for every hop: A<-->B. There is certainly NO way to send a DG or a Squadie back through the links without the player having to direct them at each hop. Multi-hop travel can ONLY be done for DGs in the forward direction, and only by placing Officers at each Dish doorway to send exiting DGs back in for the next hop.

This kind of multi-hop setup will not work for your trace back... so whatever we come up with will be a "fake" trace back for looks only. That's why I asked about the timeout at the end of teh level... what you will probably end up doing is to start a Triffid timer once the final link is made -- THIS timer will control the GAME OVER script... the pretty trace beams will simply be pretty and essentially DO nothing. You tweak the timer so it lets the trace gizmos play out before punching the reset button.

Two more things you need to think about:

a) It is difficult to force a real level reset. If you have multiple copies of the level mission file (with serial number names), then a script can set the level to the next fresh mission... but I can't think of a way for scripts to delete the current mission. TGF may have tricks for this, but I think you are SOL if you want the script to do the reset for you. The only thing I can think of is a complicated way to have several copies of *both* the map and mission files, and jump to the next pair (which are all the same level) each time the time runs out. It will be much easier on you (and probably much cleaner) if you can imagine a way to box the player in at the end if they fail to beat the timer. Then the player can be prompted to do a manual reset...

b) Think about how to box the player in if they fail to beat the timer at the end.

c) You will have to compromise on the trigger for the trace back: there is NO way to detect the hookup of Dishes. So this is what I propose: the timed section at the end consists of TWO islands. When the DGs reach the second to last isle, the timer starts. The player must quickly setup the final dish link and get the DGs through before the time runs out. It's easy to detect the DGs arriving on the second to last island. Or you can make the final island longer so that you can detect the DGs when they arrive... make it hard to get them from the dish to the TrunkPort, so there is time to do the trace back, etc.



And finally I'll give you and idea to play with. This is possibly the simplest way to get a trace back effect... and there is NO complicated hidden machinery involved. Try this: set up a series of 4+ BluePrintConsoles in a row -- put them fairly far apart. Link them in order from one end to the other and set them all to TEam 1, Segment 0 (this should be the default).

Now play the test level and capture the Consoles with a bunch of Green DGs... BUT do it two different ways: start at one end first, then reset and start at the other end first. Capture the Consoles in order from whichever end you start at. When you capture them in the reverse order of their links, you will see a sort of trace back effect once you capture the last (first) Console.

Since you are herding DGs in your level, all you have to do is place Consoles near each Dish on each island... the DGs will automatically run for the Console, and it is nearly impossible to mak ethem leave their posts... the only thing you have to protect against is enemy attacks before the level is completed, and you can do this by ensuring that ARRIVAL Dishes are always far away from the action on each island...

If you have multiple paths to the endgame island(s), then setting up the Console links is just a bit mor complicated... you can do it two different ways so the "pulse" propagates back along the paths the DGs took to get there... but only one of these ways is simple. You will have to make *separate* Console chains for *each* path... and where paths intersect you will have to "stack" the Consoles so they look like a single Console. This is best done with a text editor to fix the (x,z) coords...
User avatar
briceman2
level2
level2
Posts: 123
Joined: Wed Dec 12, 2007 4:30 am

Re: What I'd like to happen...

Postby briceman2 » Wed Oct 15, 2008 7:31 pm

briceman2 wrote:Since you are herding DGs in your level, all you have to do is place Consoles near each Dish on each island... the DGs will automatically run for the Console, and it is nearly impossible to mak ethem leave their posts... the only thing you have to protect against is enemy attacks before the level is completed, and you can do this by ensuring that ARRIVAL Dishes are always far away from the action on each island...


...actually there is a fairly simple way of ensuring / insuring that the Greenies keep the Console after it is first taken. This would give you more freedom to use the Console "trace-back" wherever you want to place them...

The insurance policy looks like this:

Console <-- AISpawner(GRN DGs)
^^^^Poplock = #ports = 4^^^^

And it works like this: the Console will activate the AISpawner ONLY when the GRN DGs first take the Console. The Poplock should be small to cover just the area around the Console, and the maxpop is set to near the number of ports at the Console (4 for a regular unmodified console). Since the AISpawner is initially held OFF by the empty/RED Console, you do not have to worry about tweaking the spawn rate... but I'll explain that just in case you care. When a level starts up, or when you re-enter a saved level, the poplocks don't work for the first few seconds. So if your AISpawner is *fast*, a bunch of DGs could get spewed out right at the beginning of the level, even though the pop is already over the poplock.

Usually a spawn delay of 5-10 sec is enough to avoid this issue. If you use this insurance trick, you might have to tweak the spawn rates, even with the Console connections... because if the player exits and re-enters the level, you might get double the number of GRN DGs at some of the Consoles -- due to poplock "leaks". This may not seem like it would be an issue here, but it **will be** becasue your poplocks will be set so low: 4-10 DGs. ***IF the local pop greatly exceeds the maxpop (like double) then ALL your small poplocks might shut down *everywhere* on the map.***

This is a weird thing that poplocks do. If any poplock is overpop, then ALL other poplocks on the map get reduced by the amount of the overage. For example, if one poplock "leaks" and you get 8 DGs inside a 4 DG poplock, then 4-(8-4)=0 and all the 4 DG poplocks will shut down their AISpawners until THAT ONE poplock overpop is reduced... Usually not good.

You can make this problem less likely to be a pain if you make the poplocks' SIZE as small as possible -- just big enough to cover the Console ports and the AISpawner -- then any extra DGs will tend to wander away fairly quickly.
User avatar
00Davo
level2
level2
Posts: 84
Joined: Mon Sep 22, 2008 12:52 pm

Postby 00Davo » Thu Oct 16, 2008 7:09 am

I get it: use the beam from the Consoles to resemble a trace-back effect. I can probably mess around a bit and get this idea going. Do I just force the player to stick DGs onto a Console on each island, so they seem to trace after the final Console is active?

But what about the GAME OVER bit? How exactly does this "boxing the player in" work?
User avatar
briceman2
level2
level2
Posts: 123
Joined: Wed Dec 12, 2007 4:30 am

Postby briceman2 » Thu Oct 16, 2008 7:37 am

1) yeah, the idea is to use some set of buildings for their visuals only. The Console beams just happen to have internal logic which does the work for you if you set it up a certain way. Do the test thing I described above, then you'll understand. FYI, the internal logic for BluePrint buildings is strict majority rule. Consoles have two kinds of inputs: all the beams that link TO the Console, and the majority team status of the ports. So a Console with one beam linked IN actually has TWO inputs. And in order to get a true majority from 2, you have to capture BOTH the ports for that Console AND the input beam upstream. This is enough info for you to understand why the chain of Consoles behaves the way it does when captured in reverse order of the links.

2) the DGs will automatically run for any open ports (on any building within "range"). This goes for both teams... and once the ports are filled up, neither team cares anymore... they only fight over OPEN ports. ("Ports" are the places DGs stand at various buildings.) So the easiest way to set this up is to place an empty building (no DGs nearby) close to the exit door of the Dish where the player ARRIVES on each island. The Console beams will not necessarily parallel the dish beams, but them's the breaks if you want a simple solution. (This assumes that you will have the player heard DGs through all the dishes from A to Z.) You could place only ONE dish per island and force the player to re-position the dish to leave... the Consoles will still remember the paths taken because DGs will get left behind at each one. The big Achilles Heel for this setup is that the Consoles have to be manned by Green DGs in order for the effect to work -- you can reverse the colors by switching to Team 0 Consoles and Red DGs if you want to... depends on how you want to play out the fights on each island.

3) "boxing the player in" means exactly what you said the first time: screwing the player so they can't complete the level. You mentioned spawning a shitload of enemies. Other ways would be to raise a laserfence using a PowerStation -- Laserfences are sorta broken in Darwinia 1.4x, but with patience you *can* get reliable fences to work... it just takes a lot of trial and error to position them just right so there are no "holes" where DGs can sneak through. Or if you like my idea of starting the timer on the second-to-last exit from a dish, you could spawn an engineer to change the team of the last dish link (say, at the opposite end of the second-to-last isle), thereby preventing the player from setting up the last hop... There's plenty of evil ways to screw the player... I'm not going to write your mod for you.

4) Triffid timers are the most reliable and easiest to work with. Basically you hide a bunch of Triffids, all in a row / chain. Triffids can be placed underwater for this use, or you could leave them out in the open as a visual countdown to scare the player. Set the power to zero and optionally point them at the ground. The even triffids should be one team and the odd triffids the enemy team. All triffids in the row are set to use their trigger areas, and the triggers are shifted to cover the *previous* triffgid in the chain, AND the area is set to just big enough -- maybe 20-40 depending on the spacing of your triffids. Also set ALL triffids to spawn something benign like spirits (float up and get seen eventually) or spider eggs (can be easily hidden). The *real* time for one triffid cycle is approx. the delay time +/- a random 0-50% of that amount, plus a few seconds for the load & launch cycle which is a constant. (AISpawners do the same randomization around the mean you give in the delay field -- which is the delay *between* cycles, not the actual mean period.) What this means in practical terms is that if you set all the triffids to say 5 sec, then a long chain will have a more predictable countdown time than a short chain -- because of the averaging of the random fluctuations -- just FYI. You may like the idea of a random, unpredictable timer, or you may want to force a more reliable countdown. You have enough info now to give it a go.

5) at this point you need to go work with these ideas and try things out and play around with variuations. Come back with questions, but I've already given you enough info for all kinds of hacks... you need to get your head around them, that's all. xander and TGF and trickfred know a lot (most) of this stuff too... Experiment -- that's how we all learned this stuff. You can too.
User avatar
00Davo
level2
level2
Posts: 84
Joined: Mon Sep 22, 2008 12:52 pm

Postby 00Davo » Sat Oct 25, 2008 9:56 am

So, I can't actually set up a dynamically constructed traceback system. That was the point of that level, so I'll replace it with a different idea. Thanks for helping anyway. :D
User avatar
briceman2
level2
level2
Posts: 123
Joined: Wed Dec 12, 2007 4:30 am

Postby briceman2 » Sat Oct 25, 2008 10:54 pm

Well, Darwinia is pretty much a static game. The dynamic parts are mostly the order in which the player does stuff. Everything has to be pre-planned by the mod builder.

But I'm not sure why you've given up... because you can certainly fake a dynamic traceback with Consoles like I suggested... and if you really want to put some effort into it, you CAN construct fully dynamic traceback effects using, for example, laserfence effects like I described earlier.

Maybe you don't understand how you get from one Console chain to a full traceback system? Basically you have to put in place one Console chain for each possible pathway the payer might take throught the islands... this kinda forces you to simplify the level to reduce the number of possibilities... but there's no reason you *can't* make a complex level if you have the patience.

All the separate Console chains get stacked on top of each other so the player doesn't see the full complexity of the setup... but the stacked beams *will* be brighter in proportion to the stack "depth"... and because Console beams never turn off, the player will see a network of beams all the time, with the traceback effect just changing the colors.

If you want an ON/OFF beam effect, then you have to go for something more complicated like laserfences which can be controlled with PowerStations. Maybe try plowing through my first post again -- it should make more sense now that you've experimented more. To get the laserbeam effects, you *don't* have to implement *everything* I wrote about -- I was covering all the problems I could think of and discovering a few new ideas along the way.

Alternative beam systems could use 1) fuel pipes, which are ON/OFF and the physical "pipe" connections can be hidden by making a simple change to the shape file so the pipes are invisible... the control of the fuel pumps behind the scenes would be similar to controlling powerstations for laserfences. 2) pylons and "electricicty" can be turned ON/OFF by manning hidden solar pannels... but like the Console beams, the "wires" never go away, so you always have a visible wire network. 3) the simplest of all would be a network of triffids which launch eggs at the island the player just came from... the eggs could spawn red DGs which would "remember" the path the player took... but this "traceback" would happen incrementally instead of all at once at the end.

You *can* do dynamic-seeming tracebacks. But you may have to compromise on how the effects work in practice... like accepting the presence of all the Console beams all the time.

There are ways to force the effects to wait untill the last moment... like using a laserfence to keep the hidden DGs away from their PowerStations until the restraining fence is taken down at the last moment... then all the seeded DGs run for their respective PSs ad activate the corresponding laserfence segments for the traceback effect. Think of a series of small islands with one long laserfence cutting them all in half... as the player tripps through the level, DGs are spawned on the proper isles on one side of the fence... then when the fence is finally taken down, the DGs all turn on the approriate fence segments to connect the traceback... FYI, the catch in this system is to make sure DGs don't "leak" through the fence if the player exits and re-enters the level, since fences can take a few seconds to activate at the beginning of a level...

If you're still interested in pursuing this, maybe you could try explaining what made you decide that you "can't" setup dynamic tracebacks?
User avatar
00Davo
level2
level2
Posts: 84
Joined: Mon Sep 22, 2008 12:52 pm

Postby 00Davo » Sun Oct 26, 2008 3:54 am

briceman2 wrote:If you're still interested in pursuing this, maybe you could try explaining what made you decide that you "can't" setup dynamic tracebacks?

I wanted to have many possible paths. That would mean A. many consoles and beams looking annoying, which is obviously bad because it's annoying, and B. consoles being stacked. If the consoles are stacked, DGs will try to turn them all on, so a lot more DGs get stuck at each console stack. Also, I couldn't think of a reasonable plot justification for needing to activate a console on every "server". Additionally, the effect was only visual. If there were many paths, clearly the actual timer would differ from the effect.

Finally, I'm really lazy. Stacking consoles? Triffid timers? I'm far too lazy to do all that!
User avatar
briceman2
level2
level2
Posts: 123
Joined: Wed Dec 12, 2007 4:30 am

Postby briceman2 » Sun Oct 26, 2008 8:09 pm

00Davo wrote:If the consoles are stacked, DGs will try to turn them all on, so a lot more DGs get stuck at each console stack.


Can't help you with being lazy... but you are wrong on this point (above). If you stack buildings, the DG ports get stacked too, and stacked ports require only a single DG to occupy them all. So 4 DGs can man a stack of 100 Consoles...

As far a story line, that's simple: some disaster wiped out the DGs from this sector... normally they maintain LAN network connections between the first and last server isles, with redundant pathways a la internet protocol... you tell the player their objective is to get 10 DGs to the last server so they can jump through the trunkport... but you also warn the player that the DGs will automatically try to re-connect the network... and once a connection runs from server A to server Z, evil forces on the outside will take notice (and try to stop the player)...

You can't change the way buildings behave... but you can use them in novel ways... but you have to bend your storyline to accomodate the rigid way buildings work... otherwise you're stuck with the mechanics of the original game.

Return to “Mod Projects”

Who is online

Users browsing this forum: No registered users and 1 guest