Jump to content
XCOMUFO & Xenocide

Interception Issues


PezzA

Recommended Posts

I've got a patch going that shows UFO's as landed on the Geoscape. I then noticed that a Gryphon's could still intercept if landed, so I set interception not to start if the UFO is landed, and to set a patrol state on the Xcorp craft instead.

 

The upshot of this is that a gryphon's can no longer intercept UFOs, unless they are flying directly into each other (and sometimes not even then). The aliens are too quick and their flight paths are too linear to give the Gryph's a chance.

 

So the problems are:

  • Alien mission patterns do not allow for interception.
  • There are lots of suspended-disbelief breaking situations with intercepting landed UFO's, espically on water.

My plan to solve this ( which is a reincartion of dteviots idea some years ago)

 

In planets.xml for each country, define top-left and bottom right geo-position squares to define safe boundary areas with a country. These cut out any water. (example in pic)

 

countries.png

 

Pick a country for the mission from the list that are set up.

Pick a landing boundary area within that country

Pick a random point within that landing square (which should be easy as they are rectangles)

 

When the destination is reached, there will be some slower sub destinations before it lands, with a small chance it may speed up and go to another boundary in the country.

 

Also, what do you think about showing a countdown timer for crashed aliens, i'm sure we've all wanted to know that a few times! Are we planning to also change the names of crashed aliens to 'Crash Site-x?

 

Comments, thoughts and opinions welcomed!

Link to comment
Share on other sites

Also, what do you think about showing a countdown timer for crashed aliens, i'm sure we've all wanted to know that a few times!

We all wanted to know, but I guess a) we can't really explain where this info comes from - at least not until we have the Hyperwave decoder (however, thinking about it, it might be a nice bonus for the HWD) and B) this might have quite an impact on gameplay - it always introduced an amount of strategic and economic thinking to decide which UFO should be visited first in case the other UFO can't be visited in time...

Link to comment
Share on other sites

Also, what do you think about showing a countdown timer for crashed aliens, i'm sure we've all wanted to know that a few times!

We all wanted to know, but I guess a) we can't really explain where this info comes from - at least not until we have the Hyperwave decoder (however, thinking about it, it might be a nice bonus for the HWD) and B) this might have quite an impact on gameplay - it always introduced an amount of strategic and economic thinking to decide which UFO should be visited first in case the other UFO can't be visited in time...

With the timer, the main use I had in mind was an answer to the question "do I have to land at night, or can I put it off till first light?". The meta-game counter to this is to load-and-save your game with deferred intercept times until you get something in day, or accept that it's a night mission (was it just me doing this? ^_^ ) . The idea is to be more open with the data, and mitigate against load/save cycling.

 

With the Tachyon emissions reader, you could viably pick up the distress call and know when they there are going to be recovered, or alternatively you capture an engineer or navigator and beat the alien mission recovery protocols out of it! =b

Link to comment
Share on other sites

Proposed change to planets.xml file. Does this look ok? (looks like pasting this stuff in the codebox tag has escaped it all)

 

    <country name=\"UK\">
     <col$orKey R=\"32\" G=\"16\" B=\"255\" />
     <funds seed=\"240000\" cap=\"7000000\"/>
     
     <boundingBox>
       <topLeft latitude=\"0.9401534\" longitude=\"-0.04485813\"/>
       <bottomRight latitude=\"0.8938255\" longitude=\"-0.00014316\" />
     </boundingBox>
     <boundingBox>
       <topLeft latitude =\"1.015182\" longitude =\"-0.1052626\"/>
       <bottomRight latitude =\"0.969976\" longitude =\"-0.0571474\"/>
     </boundingBox>
     <boundingBox>
       <topLeft latitude =\"0.934903\" longitude =\"-0.07214101\"/>
       <bottomRight latitude =\"0.913208\" longitude =\"-0.05893808\"/>
     </boundingBox>
   </country>

and the corresponding XSD change.

 

  
 <!-- Landing Bounding Box-->
 <xs:complexType name="landingBoundingBoxType">
   <xs:annotation>
     <xs:documentation>Defines a landable area with a country</xs:documentation>
   </xs:annotation>
   <xs:sequence minOccurs ="1" maxOccurs="1">
     <xs:element name="topLeft" type="geopositionType" minOccurs="1" maxOccurs="1">
       <xs:annotation>
         <xs:documentation>Top left corner of the bounding box</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="bottomRight" type="geopositionType" minOccurs="1" maxOccurs="1">
       <xs:annotation>
         <xs:documentation>Bottom right corner of the bounding box</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
 </xs:complexType>

... snip...
 <!-- Country definition (A geographical area that funds X-Corp) -->
 <xs:complexType name=\"countryType\">
   <xs:annotation>
     <xs:documentation>Basic information for a country. e.g. France, Germany</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name=\"colorKey\" type=\"colorType\" minOccurs=\"1\" maxOccurs=\"1\">
       <xs:annotation>
         <xs:documentation>The RGB value associated with this country\'s area on the bitmap</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name=\"funds\">
       <xs:annotation>
         <xs:documentation>Control $ per month country will give X-Corp</xs:documentation>
       </xs:annotation>
       <xs:complexType>
         <xs:attribute name=\"seed\" type=\"xs:nonNegativeInteger\" use=\"required\">
           <xs:annotation>
             <xs:documentation>Seed used to determine starting value (between 100% and 200% of this value)</xs:documentation>
           </xs:annotation>
         </xs:attribute>
         <xs:attribute name=\"cap\" type=\"xs:nonNegativeInteger\" use=\"required\">
           <xs:annotation>
             <xs:documentation>Maximum $ per month</xs:documentation>
           </xs:annotation>
         </xs:attribute>
       </xs:complexType>
     </xs:element>

     <xs:element name=\"boundingBox\" type=\"landingBoundingBoxType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>

   </xs:sequence>
   
   <xs:attribute name=\"name\" type=\"xs:string\"  use=\"required\">
     <xs:annotation>
       <xs:documentation>The name of the country</xs:documentation>
     </xs:annotation>
   </xs:attribute>
 </xs:complexType>

Edited by PezzA
Link to comment
Share on other sites

I've got a patch going that shows UFO's as landed on the Geoscape. I then noticed that a Gryphon's could still intercept if landed, so I set interception not to start if the UFO is landed, and to set a patrol state on the Xcorp craft instead.
Well, my thought was, if the UFO is on the ground, the Gryphon should still be able to shoot it up. (After that, it's not going to go anywhere for a while.)
The upshot of this is that a gryphon's can no longer intercept UFOs, unless they are flying directly into each other (and sometimes not even then). The aliens are too quick and their flight paths are too linear to give the Gryph's a chance.
You're welcome to change the mission, have the UFO fly around randomly at less than full speed. I think UFOpedia has a full set of descriptions of the UFO behaviour.
My plan to solve this ( which is a reincartion of dteviots idea some years ago)

 

In planets.xml for each country, define top-left and bottom right geo-position squares to define safe boundary areas with a country. These cut out any water. (example in pic)

Truth be told, I didn't like that idea much. Let me propose a different idea for finding a landing spot that's not on water.

  • Pick a random location on the globe. (Either completely random, or within a certain distance of the UFO's current location.)
  • Check on the terrain map, is this ground? If it is, we're done.
  • If it's water, then search for the "nearest" ground.
  • Ideally, we could do a gradually expanding circular pattern. However, that's probably overkill, and we just scan east and west until we hit land, and use that. (Note, because the terrain map is stored in RLL, finding the water/land transition is very easy. Just find the remaining length of the RLL segment the initial choice is in, being careful in case the segment is the first or last segement in the row.

When the destination is reached, there will be some slower sub destinations before it lands
Fine with me
Also, what do you think about showing a countdown timer for crashed aliens, i'm sure we've all wanted to know that a few times!
And how would X-Corp know how long the UFO will remain on the ground?
Are we planning to also change the names of crashed aliens to 'Crash Site-x?
Wasn't planning on it. If you want to do this, go ahead, but note that if the battlescape mission fails, the UFO can take off and depart.
Link to comment
Share on other sites

I agree with dteviot, The whole point of "\Xenocide\Content\DataFiles\Geoscape\terrain.png" Is to quickly check if it is water or ground.

 

During the mission we randomly choose a point on the map, If it is ground launch mission, if is water, find the nearest ground.

Link to comment
Share on other sites

... snip...

 

Let me propose a different idea for finding a landing spot that's not on water.

  • Pick a random location on the globe. (Either completely random, or within a certain distance of the UFO's current location.)
  • Check on the terrain map, is this ground? If it is, we're done.
  • If it's water, then search for the "nearest" ground.
  • Ideally, we could do a gradually expanding circular pattern. However, that's probably overkill, and we just scan east and west until we hit land, and use that. (Note, because the terrain map is stored in RLL, finding the water/land transition is very easy. Just find the remaining length of the RLL segment the initial choice is in, being careful in case the segment is the first or last segement in the row.

When the destination is reached, there will be some slower sub destinations before it lands
Fine with me
Also, what do you think about showing a countdown timer for crashed aliens, i'm sure we've all wanted to know that a few times!
And how would X-Corp know how long the UFO will remain on the ground?
Are we planning to also change the names of crashed aliens to 'Crash Site-x?
Wasn't planning on it. If you want to do this, go ahead, but note that if the battlescape mission fails, the UFO can take off and depart.

I'll go with the above approach, it's certainly a lot more portable if we have different maps. Would we still want a single bounding box per country to target infiltration ships at? The above approach may still struggle with landing on a specific area of ground, nearest may not be sufficient.

 

With the countdown timer I suggested the following as sources for the data in an earlier post...

With the Tachyon emissions reader, you could viably pick up the distress call and know when they there are going to be recovered, or alternatively you capture an engineer or navigator and beat the alien mission recovery protocols out of it!

 

There are 3 levels of opinion on this

A) Show it all the time

B) Show it on a specific research requirement

C) Never show it

 

I'm A or at least a very easily achievable B (bonus for first live alien, possibly of a particular class/rank).

Link to comment
Share on other sites

I'll go with the above approach, it's certainly a lot more portable if we have different maps. Would we still want a single bounding box per country to target infiltration ships at? The above approach may still struggle with landing on a specific area of ground, nearest may not be sufficient.

Check GetBitMap.GetRandomCoord(), this will give you a random position in a country.

 

With the countdown timer I suggested the following as sources for the data in an earlier post...
I think the whole reason for not giving a timer is to increase the tension. Do I do a night mission, or do I risk waiting until daylight? Still, if you want to add it as a cheat that can be turned off in the config file, go ahead.
Link to comment
Share on other sites

I'll go with the above approach, it's certainly a lot more portable if we have different maps. Would we still want a single bounding box per country to target infiltration ships at? The above approach may still struggle with landing on a specific area of ground, nearest may not be sufficient.

Check GetBitMap.GetRandomCoord(), this will give you a random position in a country.

 

With the countdown timer I suggested the following as sources for the data in an earlier post...
I think the whole reason for not giving a timer is to increase the tension. Do I do a night mission, or do I risk waiting until daylight? Still, if you want to add it as a cheat that can be turned off in the config file, go ahead.

I was thinking of adding the number of landings and sub destination points that a ufo will make to be defined as part of the Launch plan for a mission type. It seems the right place to put it as it's controlling the aliens behaviour during that mission. What do you think? This way they can start off quite vague and explorative and finish up very direct.

Link to comment
Share on other sites

I was thinking of adding the number of landings and sub destination points that a ufo will make to be defined as part of the Launch plan for a mission type. It seems the right place to put it as it's controlling the aliens behaviour during that mission. What do you think? This way they can start off quite vague and explorative and finish up very direct.
Go right ahead. The alien missions stuff was me trying to put together the simplest thing I could that mimicked the UFO mission behavior. If you think you've got a better way of doing it, feel free.
Link to comment
Share on other sites

This is all coming along nicely, just adding some unit tests for it at the moment. I'm still getting the odd middle-of-the-ocean landing site.

 

 

From dteviot post above, GetBitMap.GetRandomCoord() gives you a spot in the ocean?

Not that method, my method for calculating the nearest land to given point. It also sometimes give's me points right off the bitmap! OMG

 

I'm using the approach suggested by dt above. If the point isn't land, I look at the tuples for a row and look west and east, and figure out what is closet. If there is no land west or east, I go down a pixel. Most of the time it's giving me good results (my current test of choice is to build a base on panama and see where the first research mission target is). It's giving a nice mix of inland/coastal/island landings.

Link to comment
Share on other sites

This is all coming along nicely, just adding some unit tests for it at the moment. I'm still getting the odd middle-of-the-ocean landing site.

 

 

From dteviot post above, GetBitMap.GetRandomCoord() gives you a spot in the ocean?

Not that method, my method for calculating the nearest land to given point. It also sometimes give's me points right off the bitmap! OMG

 

I'm using the approach suggested by dt above. If the point isn't land, I look at the tuples for a row and look west and east, and figure out what is closet. If there is no land west or east, I go down a pixel. Most of the time it's giving me good results (my current test of choice is to build a base on panama and see where the first research mission target is). It's giving a nice mix of inland/coastal/island landings.

Send me a copy of the code. I'll have a look at it an see if I can figure out what's going wrong.
Link to comment
Share on other sites

Here is the patch. I managed to find the problem with my ocean landings, I was adding the number of pixels in the tuple as the left hand of the strip and then adding again to find the right! *facepalm*

 

There are quite a few files changed in the patch, but most of these are method signature changes, with the number of sub landings as well as the number of landings now being passed around.

 

There's quite a bit in this:

  • Aliens now 'land', rather than wait at a destination point. The landing is shown on the geoscape.
  • Ufo's can only be intercepted in the air
  • Ufo's should alway land on land
  • Ufo's will visit a configurable number of sub locations before the main landig point
  • The speed at which they move from sub-location to sub-location is between 60% and 100% of max speed. This gives the Gryph's a chance of intercepting them in the air.

 

There is also a small change to the geohud file to use the standard RNG.

 

When you play this, the changes wont be in your face obvious, but I hope you'll find the game-play of the interception game, closer, if not practically identical, to the original game.

 

 

Interception.zip

Link to comment
Share on other sites

this sounds facinating. the only drawback for me in the game so far is battlescape. maybe that should be the next focus? even if the merging occurs, the battlescape is far from ready to be used. I just got tired of navigating the maze is all. and if possible, zoom out further. the units in your face is quite useless at the moment.

 

idea occured... processing......... huh. well, it seems my head says that if the battlescape is a success and if the realtime gameplay is possible, why not add a third style which is First or Third person shooter? In which if this game manage to go multiplayer, there can be a secondary gameplay for strictly mmofps... i wonder where that idea come from. i need to get my head checked.

Link to comment
Share on other sites

There are quite a few files changed in the patch, but most of these are method signature changes, with the number of sub landings as well as the number of landings now being passed around.

I was hoping I'd be able to merge this into the trunk this weekend. Unfortunately, my father is in the hospital, and it's doubtful I'm going to have the time.

Link to comment
Share on other sites

There are quite a few files changed in the patch, but most of these are method signature changes, with the number of sub landings as well as the number of landings now being passed around.

I was hoping I'd be able to merge this into the trunk this weekend. Unfortunately, my father is in the hospital, and it's doubtful I'm going to have the time.

I wouldn't worry about this, or any other PX item, in the slightest. Personal stuff comes first.

 

Best wishes.

Link to comment
Share on other sites

Yes, best wishes to your dad! Hope he'll get well soon!
Thanks for the wishes. The surgery went well, and he's recovering quickly.

And I found some time to check in PezzA's patch into trunk.

 

Note, due to UFO missions now taking a variable length of time, many of the UFO mission unit tests are broken.

In most cases, fix will be to advance time until expected state transition occurs. (And faulting if it doesn't within a reasonable period of time.)

Link to comment
Share on other sites

Good to hear he is doing well.

 

I've noticed something. I ran 3 games - I never detected anything until Jan 10th first 2 times and Jan 18th the 3rd, seems a little long. Shows UFO-7 so I'm guessing I just didn't detect them., if so ignore.

 

Also all 3 times the UFO is already landed. The only way to know is that it is green. Hovering shows UFO-# (Maybe landed ufos should say UFO-Landing Site #)

Link to comment
Share on other sites

I've noticed something. I ran 3 games - I never detected anything until Jan 10th first 2 times and Jan 18th the 3rd, seems a little long. Shows UFO-7 so I'm guessing I just didn't detect them., if so ignore.
You could alter startsettings.xml, either to give your base a tachyon emissions detector, or turn on

'showUndetectedUfos' (I recommend the detector.) That should detect them when they're in the air.

Link to comment
Share on other sites

Good to hear he is doing well.

 

I've noticed something. I ran 3 games - I never detected anything until Jan 10th first 2 times and Jan 18th the 3rd, seems a little long. Shows UFO-7 so I'm guessing I just didn't detect them., if so ignore.

 

Also all 3 times the UFO is already landed. The only way to know is that it is green. Hovering shows UFO-# (Maybe landed ufos should say UFO-Landing Site #)

The only thing i can think off is that the random location has moved them into water and then getclosetland has move them out of detection range. Turn on the detect all ufo cheat and see where it's ending up. If the ufo is flying past your base at max speed, it's probably wont be detected. Where are you placing your first base?

 

Also, start a new game to try to get variation on this. The initial target is determined as soon as the first base is placed, so if you save than load the game, it will always be going to the same place.

 

With the aliens always being landed, the chances are that before, they were in the air but stationary. This is now regarded as being landed. I think changing the name of the ufo or prefixing the hover-over with landing site is a good idea. Would we want an alert on screen to notify of the landing/takeoff if the ufo is known, or would that give us pop-up spam?

 

In a similar manner to the first missions being targeted near the players base, is it worthwhile guaranteeing detection for the first few aliens that fly overhead?

Link to comment
Share on other sites

I always did a new game, however I normally just click right when It asks me, so the base will always be northern Africa. I'm sure it just didn't detect so no big deal, Was just making sure.

 

 

Now I don't know if this would belong here or in a seperate geoscape thread, but now that I have added the graphic for the menu at the top right, I would like to try and use that as the status screen instead of the pop ups. (IE when you click on a UFO it displays a pop up) I would instead like the information to just be displayed in that screen.

 

I am guessing the easiest way to do this is to add the text box like in XNet. I believe this is what was planned an earlier version looking at my UI concepts. Does anyone have a problem with this? I think it would look cleaner - plus that is what the space is for and you do not have to click ok when done.

 

Concept attached.

2screen.png

Edited by Darkhomb
Link to comment
Share on other sites

Now I don't know if this would belong here or in a seperate geoscape thread, but now that I have added the graphic for the menu at the top right, I would like to try and use that as the status screen instead of the pop ups. (IE when you click on a UFO it displays a pop up) I would instead like the information to just be displayed in that screen.

 

I am guessing the easiest way to do this is to add the text box like in XNet. I believe this is what was planned an earlier version looking at my UI concepts. Does anyone have a problem with this? I think it would look cleaner - plus that is what the space is for and you do not have to click ok when done.

I think that would work. Some questions/comments:

1. At what point does the text appear and disappear? When you mouse over the UFO, when you click on it, or some other time?

2. I don't think you can have it just appear automatically, becaue you can have multiple UFOs on the screen.

3. When you have the Tachyon detector, you get a lot more information about the UFO. Is there enough room on the menu for it? If not, is scrolling going to work?

 

Sorry, not trying to be difficult.

Link to comment
Share on other sites

Now I don't know if this would belong here or in a seperate geoscape thread, but now that I have added the graphic for the menu at the top right, I would like to try and use that as the status screen instead of the pop ups. (IE when you click on a UFO it displays a pop up) I would instead like the information to just be displayed in that screen.

 

I am guessing the easiest way to do this is to add the text box like in XNet. I believe this is what was planned an earlier version looking at my UI concepts. Does anyone have a problem with this? I think it would look cleaner - plus that is what the space is for and you do not have to click ok when done.

I think that would work. Some questions/comments:

1. At what point does the text appear and disappear? When you mouse over the UFO, when you click on it, or some other time?

2. I don't think you can have it just appear automatically, becaue you can have multiple UFOs on the screen.

3. When you have the Tachyon detector, you get a lot more information about the UFO. Is there enough room on the menu for it? If not, is scrolling going to work?

 

Sorry, not trying to be difficult.

I had done something similar with an earlier version of the Geo-hud. The return value from geoHud.End() was a descriptive text of the object that was currently hovered over, this was then set as the text for this info area under the time controls. I'm not sure if this was the best way of doing it, but it's definitely possible.

 

It's 5-9 lines of text for an alien, what we might need is someway to reduce this. (although I don't think we have any way of determining altitude and heading at the moment so maybe it's only 3-7).

 

(attached as an aide-memoir)

http://www.ufopaedia.org/images/5/5b/Hyperwave_Detection.png

 

Imagine the above dialog window in the info area, and then think, is thier a better way of presenting this information that will also take up a fixed amount of space?

 

My suggestions:

  • Background image is an image of the ufo.
  • class, mission and ufo type can be represented by icons with tool-tips in a similar manner to world of warcraft class, faction and race icons.

 

That's a ton of art needed thou.

Link to comment
Share on other sites

No problem, in fact, it's a nice idea, looks good.

 

Thank you

 

I think that would work. Some questions/comments:

1. At what point does the text appear and disappear? When you mouse over the UFO, when you click on it, or some other time?

2. I don't think you can have it just appear automatically, becaue you can have multiple UFOs on the screen.

3. When you have the Tachyon detector, you get a lot more information about the UFO. Is there enough room on the menu for it? If not, is scrolling going to work?

 

Sorry, not trying to be difficult.

 

1&2 This would be when you click on an object. It could disapear by itself after a fair amount of time or stay up as last selected. You would just click on another if there were multiple.

3 I do not believe this would replace the Tachyon Detector. When you first detect the ship I believe it should still pause time and display a window. The status would be after the fact when you have multiple objects and just want to see current information.

 

I had done something similar with an earlier version of the Geo-hud. The return value from geoHud.End() was a descriptive text of the object that was currently hovered over, this was then set as the text for this info area under the time controls. I'm not sure if this was the best way of doing it, but it's definitely possible.

 

It's 5-9 lines of text for an alien, what we might need is someway to reduce this. (although I don't think we have any way of determining altitude and heading at the moment so maybe it's only 3-7).

 

(attached as an aide-memoir)

http://www.ufopaedia.org/images/5/5b/Hyperwave_Detection.png

 

Imagine the above dialog window in the info area, and then think, is thier a better way of presenting this information that will also take up a fixed amount of space?

 

My suggestions:

  • Background image is an image of the ufo.
  • class, mission and ufo type can be represented by icons with tool-tips in a similar manner to world of warcraft class, faction and race icons.

That's a ton of art needed thou.

 

The main problem is we do not have alot of ships modeled and skinned. If we did I could easily render it and make an image. I will look into what we have, Maybe a generic image for now.

Link to comment
Share on other sites

The main problem is we do not have alot of ships modeled and skinned. If we did I could easily render it and make an image. I will look into what we have, Maybe a generic image for now.

- and this would only apply as soon as you have the TED - before this, we'd have to have a generic UFO rendering in the background.

Link to comment
Share on other sites

Sorry. I was just too lazy to write "Tachyon emissions Detector"... (=Hyperwave Decoder)

Or at least until they are in visual range. You could see the ship at that point in the old game, we'd just be 'remembering' it. It can be a (very nicely done) question mark until that point.

Link to comment
Share on other sites

3 I do not believe this would replace the Tachyon Detector. When you first detect the ship I believe it should still pause time and display a window. The status would be after the fact when you have multiple objects and just want to see current information.

I'm sorry, but I'm not following you. How will the status on the menu bar work when there's multiple UFOs?

Edited by dteviot
Link to comment
Share on other sites

When there is a new ship detected the game pauses and a window pops up with status as normal. (No changes here)

 

However while at geoscape when you click on an UFO you get a pop up - this should then just display on status screen. when you click on another it displays that information. We could also add some quick details. Like if you click on a base you could see a simple status - How many ships etc instead of having to go into the base. We can do a lot with it.

Link to comment
Share on other sites

When there is a new ship detected the game pauses and a window pops up with status as normal. (No changes here)

 

However while at geoscape when you click on an UFO you get a pop up - this should then just display on status screen. when you click on another it displays that information. We could also add some quick details. Like if you click on a base you could see a simple status - How many ships etc instead of having to go into the base. We can do a lot with it.

Thanks. That makes sense.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...