Misión tras misión Hades, Fresco y yo estamos hablando por MP sobre los problemas/ventajas/curiosidades/etc que nos vamos encontrando a nivel táctico y técnico con la campaña de The Slot. No lo hacemos en público para no destripar el misterio de la campaña
Sin embargo, hay temas que son puramente técnicos que son interesantes de conocer. Uno de los temas que estamos tratando es cómo funciona realmente el Recon, algo esencial para campañas en las que se vuela a un único bando, ya que la IA no puede atacar unidades que no tenga identificadas previamente. Así que comento las investigaciones que he podido realizar.
El modelo de reconocimiento dinámico que utiliza la SEOW (cuando se encuentra activo) se basa en cuatro pilares:
1º.-
Reconocimiento por proximidad: todas las unidades disponibles en la SEOW son capaces de detectar unidades enemigas que se encuentren cerca de ellas. Este es un cálculo que se hace al finalizar la misión, una vez de se ha analizado la misma y se han contabilizado todos los movimientos y pérdidas. Cada tipo de unidad tiene un rango diferente de reconocimiento. Por ejemplo, la infantería mecanizada y la artillería tienen un rango mayor que los tanques, mientras que los cruceros y portaaviones tienen una visión mayor que los buques de transporte y destructores. Las unidades navales tiene una visión pobre de las unidades costeras en comparación con la visión que tienen de otras unidades navales.
2º.-
Reconocimientos aéreos: es el que todos conocemos. Es el resultado de enviar aviones de reconocimiento a la zona en cuestión. Cada aparato tiene una capacidad diferente. Por ejemplo, un Catalina puede realizar 10 fotografías en una única misión, mientras que un Corsair sólo puede realizar una. El radio de detección de una fotografía depende de la altitud. Cuanto más alta se tome mayor alcance tendrá, pero menor será la claridad. Las fotografía también se ven afectadas por las condiciones climáticas y por la luz del día. Si enviáramos vuelos de reconocimiento en malas condiciones climáticas y/o en horas nocturnas
no obtendríamos nada. La SEOW calcula automáticamente todos estos parámetros.
3º.-
Reporte de los pilotos: también lo hemos utilizado alguna vez. Al finalizar la misión los pilotos podemos reportar unidades enemigas e indicar su posición a través del Mission Planner. Incluso añadir fotografías en el mapa (es algo que hemos hecho en The Slot). Aunque este reconocimiento humano no permite programar ataques directos por parte de la IA.
4º.-
Interrogatorio de pilotos capturados: cuando un piloto es derribado en territorio enemigo es sometido a un interrogatorio y en ocasiones canta de lleno o se resiste (debido a unos algoritmos aleatorios). Principalmente la información que aporta es del aeródromo del que procede. Por ejemplo, si habéis tenido curiosidad por mirar el MP de The Slot, tenemos plena información de los aparatos japoneses que hay ubicados en Munda, ya que hemos capturado numerosos pilotos.
De esta forma, a partir de los puntos 1º y 2º la SEOW muestra gráficamente el reconocimiento obtenido en el Missión Planner y por tanto veremos que algunas unidades enemigas se muestran con un signo de interrogación (cuando el nivel de reconocimiento es bajo) o puede mostrar el tipo de unidad y algún parámetro más como la orientación (cuando el reconocimiento es medio) o más parámetros como el nº de unidades, moral, etc (cuando el reconocimiento es alto).
Bien, hasta aquí la teoría. Pero lo interesante sería conocer cómo la SEOW obtiene el reconocimiento, cuál es la función que lo calcula. Por lo que he podido rascar por ahí el código que analiza el reconocimiento es el siguiente, por si alguno siente curiosidad:
Código: Seleccionar todo
2433 'This function calculates the reconnaissance detection radius for a given altitude.
2434 Private Function dblReconRadius(ByVal dblAltitude As Double) As Double
2435 Try
2436 dblReconRadius = Max(dblMinReconRadius, Min(dblMaxReconRadius, dblReconRadiusScale * dblAltitude))
2437 Catch ex As Exception
2438 Call basMess.MessageBox("basMissionBuilder.dblReconRadius: " _
2439 & Err.Number & " " & Err.Description, vbCritical)
2440 End Try
2441 End Function
2442
2443
2444 'This function calculates the correction to a object's recon level due to being spotted by
2445 'an enemy air reconnaissance flight. The correction depends on distance between spotter
2446 'aircraft and the object, as well as the aircraft altitude and prevailing weather conditions.
2447 Private Function getReconIncrementFromAir(ByVal dblSeparation As Double, ByVal dblReconAltitude As Double) As Integer
2448 Dim dblSeparationFactor As Double
2449 Dim dblAltitudeFactor As Double
2450 Dim dblVisibilityFactor As Double
2451 Dim dblCloudHeightFactor As Double
2452 Dim dblDaylightFactor As Double
2453 Dim intReconGain As Integer
2454 Dim intReconEstimate As Integer
2455
2456 Try
2457 'We will use a multifactorial model for the recon correction.
2458 'The separation factor declines linearly with horizontal distance, to a minimum of 0.5
2459 'at the maximum radius for this recon altitude.
2460 dblSeparationFactor = 1.0 - 0.5 * dblSeparation / dblReconRadius(dblReconAltitude)
2461
2462 'The altitude factor declines exponentially with altitude from 1 at minimum recon altitude, to a
2463 'minimum of 0.81 at the maximum recon altitude.
2464 dblAltitudeFactor = Math.Exp(-0.2 * (dblReconAltitude - dblMinReconAltitude) _
2465 / (dblMaxReconAltitude - dblMinReconAltitude))
2466
2467 'The visibility factor declines exponentially with visibility from 1 at clear conditions, to a
2468 'minimum of 0.22 in thunderstorm or rain conditions.
2469 dblVisibilityFactor = Math.Exp(-CDbl(intVisibility) / 5.0)
2470
2471 'The cloud height factor is reduced where the spotter plane is above the cloud base unless
2472 'visibility is clear.
2473 dblCloudHeightFactor = 1.0
2474 If dblReconAltitude > intCloudBase And intVisibility > 2 Then
2475 dblCloudHeightFactor = 0.75
2476 End If
2477
2478 'The daylight factor is a simple step function, only 0.3 in night hours.
2479 dblDaylightFactor = 1.0
2480 If isDaylight = False Then
2481 dblDaylightFactor = 0.3
2482 End If
2483
2484 'Here is the recon gain calculation.
2485 intReconGain = CInt(CDbl(intMaximumReconGain) * _
2486 dblSeparationFactor * _
2487 dblAltitudeFactor * _
2488 dblVisibilityFactor * _
2489 dblCloudHeightFactor * _
2490 dblDaylightFactor)
2491
2492 getReconIncrementFromAir = Math.Max(0, intReconGain)
2493
2494 Catch ex As Exception
2495 Call basMess.MessageBox("basMissionBuilder.getReconIncrementFromAir: " _
2496 & Err.Number & " " & Err.Description, vbCritical)
2497 End Try
2498
2499 End Function
Parece que la altitud es importante cuando se diseña la misión, ya que durante el juego no se tiene en cuenta, es decir, no se registra en el eventlog la altitud a la que se saca la fotografía (por eso para vuelos de reconocimiento humano creo recordar que se consideraba una altitud de 2.500 m.) se tomara como se tomara.
Luego cuando llegue a casa investigo más en las tablas de la BBDD porque hay determinadas variables fijadas por defecto en función de cada mapa.
Por ejemplo, como se puede ver hay una función que calcula el radio de detección del reconocimiento, que está en función de tres variables prefijadas (Mínimo Radio de Detección, Máximo Radio de detección y Escala de Radio de detección) y una variable dinámica (la altitud del vuelo).
Luego hay otra función que calcula la correción que se hace al nivel de reconocimiento obtenido. Dicha corrección depende de la distancia entre el objeto en cuestión y el avión, así como la altitud y las condiciones climáticas (lluvia, nubes, luz del día)
A ver si consigo rascar información exacta de dichas variables para el mapa de The Slot y realizo un cálculo matemático con una altitud de ejemplo.
PD: Ala, vaya tochazo, si habéis llegado hasta aquí os felicito
