Author Topic: Formula de calculos de produção  (Read 3731 times)

Morgan

  • Global Moderator
  • Member
  • Posts: 8.196
  • Morgan
Formula de calculos de produção
« on: October 14, 2009, 20:50:21 »
Ando as voltas com um ficheiro de excel que calcule a produção em função do nivel de uma mina

Vamos por partes:

XML
Aqui encontram-se as funções principais usadas para a produção:                  
(Os dados de produção base e inflação de produção do planet são os dados no XML)                  
                  
//Recebe a produção base, o nível, o rácio de produção do planeta e (1 + (nível da tecnologia de energia * 0.02))                  
function getProduction($bp, $level, $planetRacio, $renergy) {                  
        $racioValues = array(1.13, 1.13, 1.125, 1.122, 1.15, 1.127);                  
        for($i = 0; $i < count($racioValues); $i++)  { //Para cada economia                  
                $prod = $bp[$i] * ($level + 1);                  
                  
                if($level < 5) $prod *= pow(($racioValues[$i] * 2) - 1, $level);                  
                else $prod *= pow(($racioValues[$i] * 2) - 1, 4) * pow($racioValues[$i], ($level - 4));                  
                                  
                if($i != 5) { //Não é a energia                  
                        //As produções positivas são afectadas segundo os rácios dos Planetas                  
                        if($prod > 0) $prod *= $planetRacio[$i];                  
                } else {                  
                        if($prod > 0) $prod *= $renergy;                  
                }                  
                $production[$i] = round($prod, 5);                  
        }                  
        return $production;                  
}                  
                  
//Os paineis solares são tratados de modo diferente                  
//Recebe o número do planeta, o nível dos paineís e (1 + (nível da tecnologia de energia * 0.02))                  
function getSolarPlantProduction($numplanet, $level, $renergy) {                  
        $solarplant = array(0, 80, 15, 20, 10, 0, 0, 0, 0, 0);                  
        $racio = 1.127;                  
        $prod = $renergy * $solarplant[$numplanet] * ($level + 1);                  
                  
        if($level < 0) return 0;                  
        elseif($level < 5) $prod *= pow(($racio * 2) - 1, $level);                  
        else $prod *= pow(($racio * 2) - 1, 4) * pow($racio, ($level - 4));                  
                  
        return array(0, 0, 0, 0, 0, round($prod, 5));                  
}                  

Algum voluntário para traduzir isto?


Aguns dados:
- Produção base de metal é 20
- Racio da terra é 1
- Inflacção é 1,5
- Racio interno é 1,3

Produção de uma mina de metal na terra, por nivel:
1   20
2   50
3   95
4   160
5   252
6   342
7   451
8   582
9   740
10   929



kimitsu

  • Member
  • Posts: 4.012
Re: Formula de calculos de produção
« Reply #1 on: October 14, 2009, 21:01:23 »
Trocando por miudos.

Queres um folha de excell, que te mostre as produções das minas, certo?

Morgan

  • Global Moderator
  • Member
  • Posts: 8.196
  • Morgan
Re: Formula de calculos de produção
« Reply #2 on: October 14, 2009, 21:03:59 »
sim

Mina de metal = 36....calcula a produção e indica

* extras apenas dá até nivel 10

Bruno

  • Game Programmer
  • Member
  • Posts: 11.091
    • System Empires
Re: Formula de calculos de produção
« Reply #3 on: October 14, 2009, 21:20:54 »
sim

Mina de metal = 36....calcula a produção e indica

* extras apenas dá até nivel 10
Já carregaste alguma vez no mais? :P

Quote
- Inflacção é 1,5
Essa inflação é no preço, não é usada na produção.
Queres ajudar o desenvolvimento do jogo?
Apoia-nos através da aquisição de Rubits em https://www.sysemp.com.

kimitsu

  • Member
  • Posts: 4.012
Re: Formula de calculos de produção
« Reply #4 on: October 14, 2009, 21:32:36 »
Não acredito que o morgan, nunca viu o "mais". :O

Morgan

  • Global Moderator
  • Member
  • Posts: 8.196
  • Morgan
Re: Formula de calculos de produção
« Reply #5 on: October 14, 2009, 22:15:30 »
já  :P

a questão não é essa

para aquilo que estou a fazer queria ter um ficheiro que colocados os niveis de edificios de produção, tivesse logo o valor de produção desse mesmo nivel

*a parte de conversão da produção em creditos é basica e o que queria simular era diferentes escolhas de evolução de minas e o seu impacto na produção...não propriamente de recursos mas de creditos (via racios ideais)

* * Grosso modo diferentes niveis de produção de minas ( mix de diamante, metal) etc e qual a melhor combinação para cada colonia


Só estou encalhado nas formulas de produções. Posso obter via tabela /hiper via jogo/extras mas não queria ter referencias externas , ficar-me só for formulas


kimitsu

  • Member
  • Posts: 4.012
Re: Formula de calculos de produção
« Reply #6 on: October 15, 2009, 12:29:39 »
Ando baralhadissimo, por isso não sei se entendi bem. :'(

O que queres, é, um file excell, que tenha as minas (todas elas), com todos os níveis, e de preferência com a produção diferente por planeta.
Fora isso, a produção delas em créditos, via rácios ideais.

Exemplo:
Nível DiamanteCréditos
12040
250100
395190

«Valores aleatórios»


É isto que pretendes?

Morgan

  • Global Moderator
  • Member
  • Posts: 8.196
  • Morgan
Re: Formula de calculos de produção
« Reply #7 on: October 15, 2009, 12:43:49 »
esqueçe os creditos que só complicas..isso fica para depois


Tens uma folha que com 3x colunas - Edificios, nivel, produção

Ao colocar o nivel em cada celula ele indica a produção...

Exemplo
Mina metal = 30 = 32.107
Mina Diamante = 27 = 10.013
....
...

Simples :-)

Carapuca

  • Member
  • Posts: 1.237
  • SE Auxiliar Utilities Spammer
    • Kongregate Flash Games
Re: Formula de calculos de produção
« Reply #8 on: October 16, 2009, 14:50:16 »
getProduction:

Dados de entrada:

PRODUCAO_BASE[6]: cada posição para um recurso (M, D, H, Z, N, E)
NIVEL: Nível do edifício do recurso a testar - 1
                   (ex: Mina de metal nível 10 -> NIVEL = 9)
RACIO_PLANETA[6]: Produção dos recursos do planeta a testar (M, D, H, Z, N, E)
ENERGIA: (1 + (nível da tecnologia de energia * 0.02))


Outro possível dado de entrada:
MULTIPLICADOR_VELOCIDADE:
        num sistema a 30x = 30
        num sistema normal = 1


Constante:
RACIO_VALUES[6]:
        = array(1.13, 1.13, 1.125, 1.122, 1.15, 1.127)


Retorna:
PRODUCOES[6]:



Algoritmo:
POR CADA ECONOMIA (incluindo a energia) as recurso
    PRODUCAO = PRODUCAO_BASE[recurso] * (NIVEL + 1)

    SE NIVEL < 5
        PRODUCAO = PRODUCAO * POTENCIA de ((RACIO_VALUES[recurso] * 2) - 1) ao NIVEL
    CASO CONTRARIO
        PRODUCAO = PRODUCAO *
                          POTENCIA de ((RACIO_VALUES[recurso] * 2) - 1) a 4 *
                          POTENCIA de RACIO_VALUES[recurso] a (NIVEL - 4)

    SE recurso = energia
        SE PRODUCAO > 0
            PRODUCAO = PRODUCAO * ENERGIA
    CASO CONTRARIO
        SE PRODUCAO > 0
            PRODUCAO = PRODUCAO * RACIO_PLANETA[recurso]

    PRODUCOES[recurso] = ARREDONDAMENTO da (PRODUCAO * MULTIPLICADOR_VELOCIDADE) a 5 casas decimais

retorna PRODUCOES




No fundo o que isto faz é, dando os dados do planeta e o nível de uma mina, devolve as produções de todos os recursos se a sua mina estivesse a esse nível.


EDIT: O MULTIPLICADOR_VELOCIDADE só funca nas produções, não na energia, logo deveria haver mais um "If" pelo meio.
« Last Edit: October 16, 2009, 15:18:49 by Carapuca »

Carapuca

  • Member
  • Posts: 1.237
  • SE Auxiliar Utilities Spammer
    • Kongregate Flash Games
Re: Formula de calculos de produção
« Reply #9 on: October 16, 2009, 15:27:26 »
getSolarPlantProduction:

Dados de entrada:
PLANETA_ID: Número do planeta, de 1 a 9 (depende do sistema). Posição 0 mão corresponde a nenhum planeta.
    ex: Planeta Terra -> = 3
NIVEL: Nível da Planta solar - 1
ENERGIA: (1 + (nível da tecnologia de energia * 0.02))


Constantes:
SOLAR_PLANT[10] (1 por planeta): Produção das plantas solares em cada planeta
    = array(0, 80, 15, 20, 10, 0, 0, 0, 0, 0);                 
RACIO
    = 1.127;   


Retorna o valor da energia produzida.


Algoritmo:
PRODUCAO = ENERGIA * SOLAR_PLANT[PLANETA_ID] * (NIVEL + 1)

SE NIVEL < 0
    PRODUCAO = 0
CASO CONTRARIO
    SE NIVEL < 5
        PRODUCAO = PRODUCAO * POTENCIA de (RACIO * 2 - 1) a NIVEL
    CASO CONTRARIO
        PRODUCAO = PRODUCAO *
                          POTENCIA de (RACIO * 2 - 1) a 4 *
                          POTENCIA de RACIO por (NIVEL - 4)

retorna ARREDONDAMENTO da PRODUCAO a 5 casas decimais
« Last Edit: October 16, 2009, 15:35:03 by Carapuca »