English version:
Installation:
-
MoonAdditions, imgui and indievehhandlings required.
-Read all instructions before proceding.
-Extract the file "downforce-mod.lua" to the moonloader folder.
-Extract the folder "lib/downforce-mod" to the "lib" subfolder within the moonloader folder.
-Extract the file "strings.lua" in the "en-us" folder to the "lib/downforce-mod" folder within the moonloader folder.
-In case you have an old configuration, copy and paste the "cars" lines to the "cars.lua" file within the "lib/downforce-mod" folder.
-Delete the old .lua file of a previous version of the downforce-mod from the moonloader folder.
What is
downforce?
"Downforce" (also called negative lift) is an aerodynamic force that some vehicles, especially racing vehicles, generate along their body.
This force helps to "glue" the vehicle on the ground, increasing its grip/traction. As a consequence of it, the vehicle can go faster around corners. And also, it can accelerate and brake harder before the tires start to skid.
To put it simply, we can calculate the downforce as follows:
Where:
F = Downforce (Newtons).
Ea = Effective Area (m^2) (definition of it below)
p = air density (Kg/m^3).
v = Vehicle speed (m/s).
And the effective area (Ea) of the vehicle can be defined like this:
Where:
Ea = Effective Area (m^2).
Cl = Coefficient of lift (dimensionless).
Fa = Frontal area of the vehicle (m^2).
Did you notice the minus sign on the lift coefficient? That's because when the lift is negative - that is, when there is downforce - the resulting force will be positive and it'll make the results of other calculations more intuitive.
The density of the air for any given altitude can be calculated using a mathematical model. In that case, what would be better than using a model provided by NASA itself?
https://www.grc.nasa.gov/www/k-12/airpl ... osmet.html
To put it simply, the maximum grip/traction of a vehicle can be approximated as follows:
Where:
grip = overall grip (Gs).
m = vehicle's mass (Kg).
F = downforce (Kgf)
Tgrip = tires' base grip.
Do you understand now how the grip of a vehicle depends on the normal force generated by it?
But of course, a vehicle's grip depends on other variables such as it's mass. Based on this, we can conclude that if 2 vehicles generate the same amount of downforce, the lighter vehicle will have a greater increase in it's grip.
We can also infer that if a vehicle is generating more downforce than its weight, it is possible (in theory) to drive it upside down. For example, you could drive it on a tunnel roof.
But not everything is that simple. A vehicle's tires do not react to a force applied to them in a constant manner.
Generally speaking, the greater is the force applied to a tire, the less grip it has. This phenomenon is called load sensitivity. You can read more about it here:
https://en.wikipedia.org/wiki/Tire_load_sensitivity and here:
http://theracingline.net/2018/race-car- ... ensitivity /
There are several ways a vehicle can generate more downforce. The simplest one is installing a wing.
Fortunately, this mod gives you the possibility to simulate this. When installing an aerodynamic device using Tunning Mod, rename it to some name that contains "spoiler", or a name that you can define in the main .lua file.
Now, allow me to explain some important attributes in the main .lua file (I don't recomend changing any other attributes that aren't in this list):
-
cars: This is the list of configured vehicles. As of 3.0 version, this list is defined in the file "moonloader/lib/downforce-mod/cars.lua".
-
shouldCalculateAirDensity: Should the script calculate the air density dynamically? (based on your altitude). Leave true to calculate, or false to always use sea level density.
-
loadSensitivityMultiplier: Represents the tire load sensitivity multiplier. If you want to disable it, set it to 0. If you want it to become more intense, leave it at a number greater than 1.
-
downforceMultiplier: The downforce (or lift) multiplier. It's a quick way to decrease or increase the downforce generated by all vehicles in the list.
-
mode: Sets the way the downforce is applied to vehicles. Modes 1 to 3 only change handling values. Mode 4 literally applies a force to the vehicle based on its orientation. It is only possible to drive on a tunnel's roof if you are in mode 4.
-
shouldImproveBrakes: Whether the brake force should be increased according to the downforce. It's not exactly realistic, but a convenient option nonetheless.
-
editorCheat: Set the cheat to open/close the ingame menu to change vehicles' properties.
-
drawInfos: Whether the script should display information on the screen (true/false).
-
drawName: Whether the script should display the current vehicle's name on the screen (true/false).
-
drawArea: Whether the script should display the effective area of the current vehicle on the screen (true/false).
-
drawDownforce: Defines whether the script should display the vehicle's current downforce on the screen (true/false).
-
drawGrip: Whether the script should display the current relative grip of the vehicle on the screen.
-
drawTractionMult: Whether the script should display the fTractionMultiplier of the vehicle's handling on the screen.
-
drawTractionLoss: Whether the script should display the fTractionLoss of the vehicle's handling on the screen.
-
textPosition: In this section you can edit the relative position of each information on the screen. Just change the x and y values. These values must be between 0 and 1.
-
bonusPerWing: Defines the increase in the effective area a vehicle gains for each aerodynamic device installed on it.
-
namesToSearchFor: Defines the vehicle's part names the script should consider as an aerodynamic device.
Properties of the "cars.lua" file
This file contains the settings for your game's vehicles. If you want to add a vehicle that you've added, just add another line at the end of the list with the same properties as the others, just changing the ID (the number between the [ ]) and the other properties to the values you want.
-
cars[xxx]: Defines the vehicle ID, xxx being the ID number.
-
name: Defines the vehicle name. It's just for convenience, in case you want to search for a specific name.
-
effectiveArea: Defines the effective area of the vehicle. Effective area = Coefficient of downforce X frontal area of the vehicle.
-
loadSensitivity: Sets the load sensitivity of the vehicle's tires. The larger, the more grip the tires will lose as downforce increases. I strongly recommend you to set it to a value between 0 and 0.1, it's very sensitive.
Video demo:
UPDATE V3.0
-Removed comments from files. Explanations moved to this post.
-Added the possibility of driving upside down with a vehicle (if it has enough downforce).
-Added the possibility of bursting tires if they are subjected to great loads.
-Fixed a force conversion constant.
-Improved code organization.
Download:
Versão em português:
Estava eu fazendo uns testes em lua e acabei tendo uma ideia de fazer um script pra adicionar uns efeitos aerodinâmicos (além do drag que já tem no jogo) em alguns veículos.
Instalação:
-
Requer MoonAdditions, imgui e indievehhandlings.
-Leia todas as instruções antes de prosseguir.
-Extraia o arquivo "downforce-mod.lua" na pasta do moonloader.
-Extraia a pasta "lib/downforce-mod" para a subpasta "lib" na pasta do moonloader.
-Extraia o arquivo "strings.lua" da pasta "pt-br" para a pasta "lib/downforce-mod" na pasta do moonloader.
-Caso tenha uma configuração antiga, copie e cole as linhas dos veículos no arquivo "cars.lua" que se encontra na pasta "lib/downforce-mod".
-Exclua da pasta do moonloader o arquivo .lua da versão antiga do downforce-mod caso você possua.
O que é
downforce?
A "downforce" (também chamada de sustentação negativa ou força vertical descendente) é uma força aerodinâmica que alguns veículos, principalmente os de corrida, geram ao longo de sua carroceria.
Essa força ajuda a "prensar" o veículo no solo, aumentando sua aderência/tração. Como consequência, o veículo pode ir mais rápido em curvas. E também ele pode acelerar e frear com mais intensidade antes dos pneus começaram a derrapar.
De maneira simples, a downforce pode ser calculada da seguinte maneira:
Onde:
F = Força vertical descendente (Newtons) (ou força prensando o veículo no chão).
Ea = Área efetiva (m^2) (definição dela abaixo).
p = Densidade do ar (Kg/m^3).
v = Velocidade do veículo (m/s).
E a área efetiva (Ea) do veículo pode ser definida assim:
Onde:
Ea = Área efetiva (m^2).
Cl = Coeficiente de sustentação (sem dimensão).
Fa = Área frontal do veículo (m^2).
Notou que o coeficiente de sustentação veio com o sinal de menos na frente? É para quando a sustentação for negativa - ou seja, quando se tem downforce - o resultado vir positivo e tornar os resultados de outros cálculos mais intuitivos.
A densidade do ar para uma determinada altitude pode ser calculada usando um modelo matemático. Nesse caso, o que seria melhor do que um modelo fornecido pela própria NASA?
https://www.grc.nasa.gov/www/k-12/airpl ... osmet.html
De maneira simplificada, a aderência/tração máxima de um veículo pode ser aproximada assim:
Onde:
grip = aderência/tração (Gs).
m = massa do veículo (Kg).
F = downforce (Kgf)
Tgrip = aderência/tração base dos pneus.
Percebeu como a aderência de um veículo depende da força normal gerada por ele?
Claro que também, a aderência depende de outras variáveis como a massa do veículo. Com base nisso, podemos concluir que se 2 veículos geram a mesma downforce, o veículo mais leve vai se beneficiar mais.
Podemos também inferir que se um veículo está gerando mais downforce do que seu peso, é possível (em teoria) digerir ele de ponta cabeça. Como dirigir em um teto de um túnel.
Mas nem tudo é tão simples assim. Os pneus de um veículo não reagem de maneira constante a qualquer força aplicada neles.
De maneira geral, a medida que mais força é aplicada em um pneu, menos aderência ele tem. Esse fenômeno é chamado de sensibilidade a carga. Você pode ler mais sobre aqui:
https://en.wikipedia.org/wiki/Tire_load_sensitivity e aqui:
http://theracingline.net/2018/race-car- ... nsitivity/
Há varias maneiras para um veículo gerar mais downforce. A mais simples é instalando um aerofólio.
Felizmente, esse mod lhe da a possibilidade de simular isso. Basta ao instalar um aparato aerodinâmico pelo Tunning Mod, renomeá-lo para algum nome que contenha "spoiler", ou algum nome que você pode definir no arquivo .lua principal.
Agora, vamos a explicação de atributos importantes no arquivo .lua principal (não mexa em nenhum outro atributo que não esteja nessa lista):
-
cars: Essa é a lista de veículos configurados. Na versão atual, essa lista é definida no arquivo "moonloader/lib/downforce-mod/cars.lua".
-
shouldCalculateAirDensity: Define se o script deve calcular a densidade do ar dinamicamente (baseando-se na sua altitude). Deixe true para calcular, ou false para usar sempre a densidade do nível do mar.
-
loadSensitivityMultiplier: Representa o multiplicador da sensibilidade a carga dos pneus. Se quiser desativar ela, deixe em 0. Se quiser que ela fique mais intensa, deixe em um número mais que 1.
-
downforceMultiplier: Representa o multiplicador da downforce (ou lift) gerada por um veículo. Serve como uma maneira rápida para diminuir ou aumentar a downforce gerada por todos os veículos na lista.
-
mode: Define o modo que a downforce é aplicada nos veículos. Os modos 1 ao 3 apenas alteram valores da handling do veículo. O modo 4 aplica literalmente uma força no veículo, baseando-se na orientação dele. Só é possível dirigir no teto de tuneis se estiver no modo 4.
-
shouldImproveBrakes: Define se a força dos freios devem ser aumentadas conforme a downforce. Não é exatamente realista, mas uma opção conveniente.
-
editorCheat: Define o cheat para abrir/fechar o menu ingame para alterar as propriedades de veículos.
-
drawInfos: Define se o script deve exibir informações na tela (true/false).
-
drawName: Define se o script deve exibir o nome do veículo atual na tela (true/false).
-
drawArea: Define se o script deve exibir a área efetiva do veículo atual na tela (true/false).
-
drawDownforce: Define se o script deve exibir a downforce atual do veículo na tela (true/false).
-
drawGrip: Define se o script deve exibir a aderência relativa atual do veículo na tela.
-
drawTractionMult: Define se o script deve exibir o fTractionMultiplier da handling do veículo na tela.
-
drawTractionLoss: Define se o script deve exibir o fTractionLoss da handling do veículo na tela.
-
textPosition: Nessa secção você pode editar a posição relativa de cada informação da tela. Basta alterar os valores x e y. Esses valores devem estar entre 0 e 1.
-
bonusPerWing: Define o aumento da área efetiva que um veículo ganha para cada aparato aerodinâmico instalado nele.
-
namesToSearchFor: Nessa lista você pode adicionar os nomes que o script deve considerar uma peça como um aparato aerodinâmico.
Propriedades do arquivo "cars.lua"
Esse arquivo contém as configurações desse mod dos veículos do seu jogo. Caso queira adicionar um veículo que você adicionou sem substituir, basta adicionar no fim da lista mais uma linha com as mesmas propriedades das outras, apenas mudando o ID (o número entre os [ ]) e as outras propriedades para os valores que você achar melhor.
-
cars[xxx]: Essa parte define o ID do veículo, xxx sendo o número do ID.
-
name: Define o nome do veículo. Apenas por conveniência, caso você queira procurar por um nome especifico.
-
effectiveArea: Define a área efetiva do veículo. Área efetiva = Coeficiente de downforce X área frontal do veículo.
-
loadSensitivity: Define a sensibilidade a carga dos pneus do veículo. Quanto maior, mais aderência os pneus vão perder conforme a downforce aumenta. Deixe um valor entre 0 e 0.1. Essa propriedade é bem sensível.
Demonstração:
UPDATE V3.0
-Removido comentários dos arquivos. Movida explicações para essa postagem.
-Adicionada possibilidade de dirigir de ponta cabeça com um veículo (se ele tiver downforce o suficiente).
-Adicionada possibilidade de estourar os pneus caso passem de um limiar de carga.
-Corrigida constante para conversão de força.
-Melhorada organização do código.
Download:
Criticas, sugestões, angustias e/ou desabafos são bem-vindos :P