Hola,

Me consta q hay otro post titulado 'Recuento de población erróneo' con un problema parecido, o el mismo, pero intuyo q tal vez se ha tocado algo y ahora el problema es algo diferente, al menos en mi caso. Además veo q el post está algo obsoleto y estimo oportuno reconsiderarlo pues lo creo importante.
Pero, sobre todo, escribo este nuevo post pq he pensado en tratarlo más como un problema a resolver, q no como una queja.
Como programador de ActionScript en Flash, he intentado ponerme en el pellejo de lo q hay detrás para intentar adivinar primero de dónde viene al problema antes de intentar resolverlo y sin tener acceso al código. Se trata de pensar por qué? por qué se desajusta el recuento de población? Veamos por partes:

Error actual:

El límite de población es correcto pero, con el tiempo, se va incrementando cada vez más el número de colonos ociosos a costa de restarlos al número de colonos trabajando, que aunq estén trabajando pero cada vez van contando menos.
La población militar es correcta, aunq puede haber algunos desajustes, como q de los colonos q te cuenta erróneamente como ociosos y q deberían contar como trabajadores se puede crear ejército.
Si sigue así, puede llegar a un punto en que marque 0 de colonos trabajando aunq tengas 150 ocupados, y esos mismos contarte como ociosos o libres listos para nuevos edificios o milicia. De esta forma se incrementa la población sin tenerla, son colonos q no cuentan en ninguna parte. Son como fantasmas q producen o guerrean pero no cuentan.
Está claro q es un bug, y q se le puede sacar provecho, aunq se puede arreglar.

Testeando, detectando posibles errores y descartando problemas:

Me di cuenta cuando contando los edificios con trabajadores me salieron dos de más de los q marcaba, y q contaban como ociosos. Conté y reconté y sí, me faltaban dos.
Pensé en un par q tenía dormidos, pero no, pq al darle de nuevo a producir o parar los números no cambian, además una vez asignados ya cuentan como trabajadores, estén dormidos o no.
Después le eché el ojo a los pozos d agua y las minas, creía q como se hacen y deshacen tanto podrían haber desequilibrado el conteo. Lo dejé agotarse todo. Y nada.
Todo seguía con el desequilibrio de contarme dos de menos trabajando y contarme dos de más como ociosos.
Escribí a asistencia y me dijeron q renovase la caché del navegador etc.
Mi ordenador, mi navegador y el reproductor flash están al día. Borrando la caché, historial etc. tampoco. Nada.
Podría pensar tb en un error generado por el lag entre el servidor del juego y el jugador cliente, pero no es el caso, pq el servidor dictamina en todo momento lo q hay y lo q no hay y manda la información al navegador del cliente. Es el propio servidor o el propio juego el q sufre del problema.
Vine al foro y leí y releí el otro post de 'Recuento de población erróneo' varias veces, pero ahí no se ve el inicio del problema, parece q esos jugadores ya estaban de recuento de población muy tocados. Y a saber si a partir de su queja han retocado algo del juego después y ahora el problema es distinto. O tal vez sea el mismo.
Lo q sí sé es lo q hay ahora, lo he visto empezar a descuadrarse y cómo empieza a hacerlo.
Se me ocurrió en la posibilidad d los leñadores, justo los vi paseando de una punta a otra y dije tate estos son; claro como tengo más leñadores q silvicultores llega un momento en q está todo talado y tienen q estar a la espera de q planten, se empiezan a ralentizar cada vez más tiempo y entonces están como cagando..
Paralicé a todos los leñadores, reajusté los silvicultores y los potencié para q repusieran toda la isla. Les di al play a los leñadores y... Y nada.
Los leñadores sin árboles marcan en rojo por falta de recursos y los silvicultores q no tienen nada q plantar marcan en gris, como parados, pero en ambos casos estén como estén cuentan como trabajadores.
Bueno, una vez descartado todo lo anterior, sólo me quedaban unos candidatos a los q quería meter mano, el ejército.
Una vez se me descuadró al derrumbar una residencia, el límite de población bajó, pero las unidades militares seguían ahí con sobrepoblación.
Pero esto se reajusta automáticamente cuando mueren, ya no los puedes crear a no ser q vuelvas a poner otra residencia. Luego no es un error, pues cuentan los q cuentan.
En caso de haber creado todo trabajadores y de repente derrumbar una residencia no sé q pasaría, pero supongo q marcaría tb sobrepoblación y q seguirían trabajando, no podrías emplear nuevos colonos hasta q creases otra residencia reponiendo los q faltaban. Así q tampoco se desajustaría.
El cuartel tb funciona perfectamente, si le clicas crear veinticinco te crea veinticinco y te descuenta veinticinco. El ejército no es. Lleva a confusión pero no es el culpable del desajuste.
Es sólo q puede contribuir al desajuste al igual q puede contribuir un panadero, pero consecuencia de un problema q viene de otra parte.
El error es general, y me lo ratifica el hecho de q conforme investigo, el desajuste de población cada vez va a más, uno a uno, va aumentando la diferencia, produzca unidades militares o no las produzca.
Ahora sí q sí sólo me queda un candidato, q como sólo es un edificio parece pasarse por alto, pero es el q se encarga realmente de la población.
La casa del alcalde. En sí mismo tampoco es el q genera el problema pq al igual q el cuartel funciona perfectamente, lo q le ordenes te lo hace correctamente.
Pero hay un detalle q sí es el q genera el problema y descuadra el contador de población. El contador de tiempo de llegada de población, ese de los quince minutos.
Voy a exponer cómo lo hace.

Problema:

Lo q debería hacer siempre y hace normalmente:
Cuando se solicita una unidad, un colono para lo q sea, comprobar si hay población ociosa disponible y si hay, ejecutar la orden, restar -1 a ociosos y sumar +1 a trabajadores o ejército(según sea el caso). Ok.

pero por qué a veces no lo hace?
por algún motivo no siempre puede sumar +1 al grupo de trabajadores, o mejor dicho, sí lo hace pero lo vuelve a restar de nuevo siempre al grupo de trabajadores, además de haber restado su ocioso correspondiente.
con el ejército no pasa, pq el ejército se asigna y cuenta automáticamente según se solicita.
pero sí pasa en el caso de los edificios q requieren trabajadores.

Ejemplo:

Población total: 100/100
Población activa: 99
Población ociosa: 1
Nuevos colonos cada 15 minutos: 0 (en standby), 1 a la espera
Tiempo del contador que le queda para llegar a un nuevo colono: 0 segundos (al límite)

Construir Pozo (o cualquier edificio q requiera trabajador)
Esperar 60 segundos
Pozo construido
Animación de un colono que sale del Almacén hacia el Pozo (según haya población ociosa)
Esperar otros 30 segundos para llegar a destino
(todavía no figura como nada, no contará como trabajador hasta q no llegue justo al centro del edificio, es sólo una animación de un caminante)
Si no hubiera colonos libres quedaría el Pozo con el signo de exclamación de falta trabajador.
Esto se puede provocar creando entre medias un militar q se come al ocioso q quedaba y el Pozo quedaría a falta de un trabajador.
Pero olvidemos al militar, si hay ociosos, el q quedaba ocupa su lugar de trabajo. El Pozo.
Llegar y, si hay ociosos, entrar y descontar -1 ocioso y sumar +1 trabajador
No puede sumar primero pq el límite de población no se lo permite, así q primero tiene q restar (como dejar salir antes de entrar...)

Aquí es donde se estropea:
Restar -1 ocioso
en este instante la población total queda en 99/100 (a 100 le hemos restado un ocioso)
Implica q entra el nuevo colono q estaba a 0 segundos de entrar
ahora la población total es de 100/100
Sumar +1 trabajador
ahora la población total quedaría en 101/100
y como no es posible, o bien no puede sumar el trabajador, o bien lo resta de nuevo para dejar cuadrado todo como estaba
de esta manera quedaría:

Población total: 100/100
Población activa: 99 + 1 fantasma (el del Pozo q sí entró y produce pero no cuenta)
Población ociosa: 1 (el nuevo q ha entrado)

De esta manera cuando el Pozo se agota ya tienes un ocioso de más, q no cuenta en el total, y te sirve para lo q quieras.


Soluciones posibles:

- Demoler todos los edificios de trabajadores y pasarlos de ociosos a militares, sacrificar los q hay de más y crear d nuevo todos los edificios.
Esto sería costosísimo y sólo por parte del jugador. Sólo cuadraría las cuentas d nuevo, pero el problema podría resurgir pues no se habría solucionado, sólo las cuentas.

- Programar un reset desde el servidor o bien un objeto accesible q al darle clic resetee y recuente los edificios ocupados, los militares, el total y los sobrantes para ociosos.
En la duración del proceso el jugador o los jugadores quedarían en standby..
No sé cuánto complicado puede ser programar esto, tendría q contar las residencias por un lado para ver cuánta población puedes tener,
contar los edificios para trabajadores q tienes, contar los militares q tienes, y el resto a ociosos.
De esta manera desaparecerían los fantasmas, aunq si el jugador sin saberlo los tuviera ocupados, pues q sea el jugador quien solicite el reset cuando haya eliminado parte de su ejército.

- Otra posibilidad
Que cuando se le da Stop a parar producción en un edificio de trabajo, pues el trabajador se vaya en vez de quedarse durmiendo, y el edificio quede vacío.
Va a pasar a formar parte de ociosos, y si el total de ociosos fuese a superar el límite de población, q no se puede, entonces los fantasmas desaparecerían.
Y si sobrepasasen el límite pq ya existen y cuentan al pasar de un lado a otro, pues podrían sacrificarse en la milicia y de nuevo todo quedaría bien cuadrado.

- Por último tb podría ser meterle algún tipo de cap(limitación) a la entrada d nuevos colonos.
Q cuando el contador llegase a 0 segundos, si no cumple ciertas condiciones, el nuevo colono no puede entrar.
Por ejemplo el cap podría ser no entrar si hay edificios en construcción o caminantes hacia destino.

- Cualquier otra sugerencia viable.



Bueno, siento haber dado el tostón, pero creo q los tiros podrían ir por ahí, y q lo he intentado explicar lo más claro posible.


Saludos,