Jump to content

Silier

WFG Retired
  • Posts

    1.265
  • Joined

  • Days Won

    9

Posts posted by Silier

  1. Hi,

    You need to create file in this location:

    On Linux, create:                                          *
    ; *   $XDG_CONFIG_HOME/0ad/config/local.cfg                    *
    ; *   (Note: $XDG_CONFIG_HOME defaults to ~/.config)           *
    ; *                                                            *
    ; * On OS X, create:                                           *
    ; *   ~/Library/Application\ Support/0ad/config/local.cfg      *
    ; *                                                            *
    ; * On Windows, create:                                        *
    ; *   %appdata%\0ad\config\local.cfg      

    for windows 10 it is: C:\Users\Username\AppData\Roaming\0ad\config

    file local.cfg with:

    gui.scale = "1.2" 

    and experiment with value a bit

    • Like 2
  2. 2 hours ago, (-_-) said:

    For future references, it is possible to garrison units without using a trigger script. But I'm guessing that no UI has been implemented. So it would be pretty troublesome to do this by hand for a couple dozen units and buildings. But putting this here just because it is possible.

    Basically you would need a Garrison value in the xml file.

    
    "Garrison": {
        "3434": [3435, 3436, 3437, 3438, 3439, 3440, 3441, 3442, 3443, 3444, 3429, 3430, 3431, 3432, 3433],
        "3445": [3446, 3447, 3448, 3449, 3450, 3451, 3452, 3453, 3454, 3455, 3456, 3457, 3458, 3459, 3460]
      },

    This is copy pasted from Sicilia Nomad map file. 3434 is the entity which is housing the units. The array contains the entityIDs of all units garrisoned in entity 3434. There are two players who have garrisoned ships, hence two keys.

    said by elexis allready :D

  3. Hi :),

    I think that all first 3 features are presented. Look into the options for first 2. I think it is in Game section or In-Game. Dont know, but somewhere in settings :)

    For group of units, select units you want and press ctrl + 1,2,3 ... The group with selected number will be created. Later just perss 1, 2 ... for the group of units you want.

    Rejoining to multiplayer should be possible, if there is no AI player. AI does not work well with that.

    • Like 1
  4. Hi,

    You need to change skirmish default units (https://github.com/0ADMods/pre-colonial-mod/tree/master/simulation/templates/skirmish/units) because you are using not existed templates:

    ERROR: CCacheLoader failed to find archived or source file for: "art/actors/units/nahuas/infantry_spearman_b.xml"

    Also I am getting this, I was not able to locate error source:

    ERROR: CCacheLoader failed to find archived or source file for: "simulation/templates/units/mex_cavalry_javelinist_b.xml"

    ERROR: Failed to load entity template 'units/mex_cavalry_javelinist_b'

     

    Have a nice day :)

    • Like 1
  5. This mod contains experimental gameplay features which might not be perfect yet. Also I am aware of some bugs (but if you find any, please report them). 

     

    NEVER MIX (ENABLE) THIS MOD WITH ANOTHER MODS AND  PATCHES WHICH ARE NOT VITAL FOR GAME. I WILL NOT SOLVE CONFLICTS FROM THEM.

     

    github repository https://github.com/SlavomirSlovenkai/0ad-gameplay-mode

     

    For more changes reade here: https://wildfiregames.com/forum/index.php?/topic/24764-battalion-test-mode/&do=findComment&comment=367259

     

    Features:

    Phasing is cost free and automatic.

    Phase requirements

    • Town phase
      • 5x House
      • 1x Market
      • 1x Farmstead
      • 25x Citizen
    • City phase
      • 15x House
      • 1x Blacksmith
      • 1x Market
      • 1x Temple
      • 40x Citizen

    General

    You need 1 Farmstead for every 4 Fields to build.

    Fields has to be build at minimum distance 80 from Civ centre.

    Soldiers can not gather and can build only military/defense buildings.

    Cavalry can still hunt.

    New unit Hunter available in village phase from civic centre. It is melee unit with nice slaughter attack and weak melee, so you can hunt animals even you do not have access to cavalry.

    New support unit Male. Can build special and military/defense buildings, also storehouse and corral.

    Only Female can build House, Farmstead, Field, Temple, Market.

    Melee infantry is trained in barracks, ranged infantry in range barracks, cavalry in stables.

    Stances got rework. 

    Technologies

    Every soldier is locked by technology (or more) 

    For example:

    • Spears -> Spearman
    • Spears -> Pikes -> Pikeman
    • Spears -> Hoplite (tech - as they have special formation) -> Hoplite (unit)
    • Swords -> Swordman
    • Javelin -> Javelin throwers
    • Archery -> Archers
    • Cavalry + Swords -> Sword riders (tech) -> Cavalry Swordsman
    • Champions + Swords -> Champion swordsman (tech) -> Champion Swordsman ( unit)
    • Cavalry + Champions -> Champion Cavalry + Swords -> Champion Cavalry Swordsman (unit)

    Every unit starts with no armour and no shields (some civilisations have shields from start).

    There are 2 available unit upgrades in the row ( every unit class has its own upgrades ). Each one adds some equipment to the unit, but they needs to be unlocked. For example:

    • Swords + Shields -> Swordsman upgrade (tech - giving shields to swordsmen)

    Champions are trained fully equipped, but that equipment has to researched.

    Melee weapons, infantry melee units upgrades and melee infantry champions are researched in barracks.

    Ranged weapons, infantry ranged units upgrades and ranged infantry champions are researched in range barracks.

    All kinds of cavalry, their upgrades and champions are researched in stables.

    Cavalry and champion cavalry itself are researched in corrals.

    Champions are researched in civic centre.

    Siege weapons are researched and build in siege workshop.

     

    Training is done by garrisoning units into barracks/range/stables. While they are inside, they get experiences and rank up. Units with lower or no rank fights worse ( exception are champions and heroes). You can train them by fighting but they will probably die fast (especially when your enemy has better trained troops than you).

    As this takes some time, to train unit from nothing to basic rank takes 30 seconds, to advanced next 30 seconds (60 seconds), to elite next 30 seconds (1 minute and 30 seconds), to fully trained in total 2 minutes. You should care about your troops more and you will not want to throw them away and let them fall in battle for nothing. 

    Damage types and armour:

    • Fire -> Special units ( add-on damage, small compared to others, but no unit has strong protection against fire )
    • Pierce -> Spear, Pike
    • Hack -> Sword
    • Crush -> Slinger, Club, Mace
    • Missile -> Archer, Javelin

    Range units have minimal range when they can use their weapons, if they cannot they use weak melee attack.

    Range unit according to spread: Slinger, -> Javelin -> Archer

    Melee units have MissChance, which is the most 0.5. It means that unit has 50% chance to miss target with attack.

    Spread  and MissChance gets lower as unit levels through experiences.

    Champions  and Heroes now have chance to deal critical damage, what means they can find weak spot and kill enemy with one single attack.

     

    Shields and armour

    Protection is divided between armour itself and shield (based on shield type and armour type unit is wearing).

    Bigger shield means higher protection than smaller one ( also shield from metal/iron means better protection than shield from wood - roman shields are exception )

    Also Chain armour gives more protection than some basic kind of armour.

    Wearing helmets means extra protection.

    Attacking unit from back (melee or missile) removes protection given by shield.

    Rams are 100% missile proof, but weak against all kinds of melee attacks, also their attack rate is reduced.

     

    Capturing happens by garrisoning units into enemy building ( aka they brake doors and go in ).

    To deal with them defender has to garrison troops with better capture rate as enemy does. If attacker and defender are equals in capturing strength and defender owns more than 0.5 of the building  or defender is stronger and owns whole building, troops of attacker slowly loose health.

    Exception are walls ( and maybe later another buildings ), where garrisoned units are visible and they fight against each other. Attacker has to use siege towers to ungarrison units on the wall.

     

    Rams and Siege towers requires minimum number of units to be garrisoned to be able to move.

    Rams requires minimum number of units to be garrisoned to be able to attack,

    When Gate  is under 50% of health it is force opened  even if was locked before and remains broken ( unable to close ) until its health is above 80%.

     

    Friendly fire is enabled. So you really want units upgrades to not miss their targets.

    Ammunition ranged units have certain count of arrows/stones/javelins to use. They will get it back slowly. 

     

    Some champion units (e. g. persian immortals) can switch to bows,  throw javelins or spears.

    Every range unit has ability to disable range attack.

     

    Running on command draining energy.

    Energy is required for running and melee attacks. When melee unit has no energy fights worse ( melee units have some chance to miss ). 

     

    Melee cavalry can Charge with double click on enemy unit. This drains energy as running. 

    Charging is done to the position enemy is staying, so when he moves,  target place is fixed.

    While units are charging they deal mount damage (no armour can save you from this damage) to every enemy unit they pass around and they deal extra damage when they reach target position.

    When they charge  into formation  turned towards them, they get anti-charge damage.

     

    Hero selection on the start of the game and auto spawn after that. No resurrection later.

     

    Formations

    They have attack and armour bonuses to overcome units fighting in no formation.

     

    Control

    Selecting one unit from formation means selecting whole formation.

    You can ROTATE one unit  or whole formation with Shift + R and right click to position you want them to face towards.

    --------

    ( Still working on changes )

    • Like 12
  6. Add Missle attack for bows and javelins. This way pierce amror can go down and making rams imune to missles. And make repeat time longer. They will still be able to crush units staying infront of them but not so fast and there would be more melee troops available to take it down fast. Maybe give swords and spears attack bonus against them to make it faster. 

  7. I am playing with gate garrisoning and I found that after this call in GarisonHolder

     cmpVisual.SetVariant("garrison", this.entities.length ? "garrisoned" : "ungarrisoned");

    are again replayed gate_opening or gate_closing animations without calling functions in Gate.js, so it is done by visualisation component.

    Animations running once should be unselected by visualisation component itself.

  8. Hi @The Undying Nephalim,
    I like your mode :) great work. But I have got error messages about petra ai. 
     

    Once they appear, they are spammed rest of the time. It is a bit annoying.

    WARNING: JavaScript warning: simulation/ai/petra/researchManager.js line 54 reference to undefined property tech[1]._template.modifications[0]

    ERROR: JavaScript error: simulation/ai/petra/researchManager.js line 54 TypeError: tech[1]._template.modifications[0] is undefined m.ResearchManager.prototype.researchPopulationBonus@simulation/ai/petra/researchManager.js:54:1 m.HQ.prototype.buildMoreHouses@simulation/ai/petra/headquarters.js:1776:17 m.HQ.prototype.update@simulation/ai/petra/headquarters.js:2828:17 m.PetraBot.prototype.OnUpdate@simulation/ai/petra/_petrabot.js:119:3 m.BaseAI.prototype.HandleMessage@simulation/ai/common-api/baseAI.js:64:2

    And I have seen that during Mirora's Wolfos attack animation, one pease of him stayed on its place. 

  9. fps throttling means the maximum number of frames drawen per second. Some cpus are so fast they can do 120 frames per second but you could be fine with 60 or even 30 since game looks good and smooth ( I cannot tell you the count of frames for you,  you need to a bit experiment here and find what is best for your computer) . The thing is that if you have lags, the throtling fps to lower number can save cpu time and resources for more important computation ( instead recomputing scene, shadows and so on)   e. g. path finding.

    You have it on minimum only for menu, there you do not need it higher. 

     

    Smooth LOS I would leave it to off if you need to increase performance. 

     

    Postprocesing brings new work to be done for cpu and gpu. I would leave it disabled.

     

    And you can try disable fog. 

     

    Disabling unit silhouetles could help with performance in later game with a lot of units. But you will not see units behind buildings

     

    Normally you would not see sky, since you do not zoom out really very far so you can disable this one I think. 

    • Thanks 1
  10. hi,

    do not know if this one was fixed, but I just tried git version with A23 release and roman bolt shooter gives actor errors on creation

    ERROR: CCacheLoader failed to find archived or source file for: "art/variants/biped/carry_food_idle.xml"
    
    ERROR: Could not open path biped/carry_food_idle.xml
    
    ERROR: CCacheLoader failed to find archived or source file for: "art/variants/biped/carry_meat_idle.xml"
    
    ERROR: Could not open path biped/carry_meat_idle.xml
    
    ERROR: CCacheLoader failed to find archived or source file for: "art/variants/biped/carry_wood_idle.xml"
    
    ERROR: Could not open path biped/carry_wood_idle.xml
    
    ERROR: CCacheLoader failed to find archived or source file for: "art/variants/biped/carry_stone_idle.xml"
    
    ERROR: Could not open path biped/carry_stone_idle.xml
    
    ERROR: CCacheLoader failed to find archived or source file for: "art/variants/biped/carry_metal_idle.xml"
    
    ERROR: Could not open path biped/carry_metal_idle.xml

    and some other upon map start

    ERROR: CCacheLoader failed to find archived or source file for: "simulation/templates/structures/xion_corral.xml"
    
    ERROR: Failed to load parent 'structures/xion_corral' of entity template 'structures/scyth_corral_empty'
    
    ERROR: Failed to load entity template 'structures/scyth_corral_empty'

     

  11. 1 hour ago, (-_-) said:

    Isn’t that already supported?

    IIRC, there was a <turn rate> element in the formation xml files.

    Yes, there is turn rate, but I am not using it now. I am just turning +/- 12 on button click, but I ll probably turn down movement speed for this action so they will get to turned position slower.

    Quote
    3 hours ago, gaius said:

    Very nice, Angen. And i guess you will decrease turning rate of formation so its possible to flank a formation. 

    Currently there is no difference based on side you are attacking formation from.

  12. @gaius , I will not send you whole file because I have there another changes and you probably do not want them so:

    file: /helpers/Commands.js

    find function GetFormationUnitAIs and rename it to something like this e.g. GetMergedFormationUnitAIs.

    Now find "formation": function(player, cmd, data) should be around line 612 and use renamed function instead old (you need it to form new formation, reform or merge more formations on command)

    For rest of not renamed callings, create this function, which is not merging selected units into one formation but keeping existing:

    function GetFormationUnitAIs(ents, player)
    {
    	// Separate out the units that don't support the chosen formation
    	let formedEnts = [];
    	let nonformedUnitAIs = [];
    	for (let ent of ents)
    	{
    		// Skip units with no UnitAI or no position
    		let cmpUnitAI = Engine.QueryInterface(ent, IID_UnitAI);
    		let cmpPosition = Engine.QueryInterface(ent, IID_Position);
    		if (!cmpUnitAI || !cmpPosition || !cmpPosition.IsInWorld())
    			continue;
    
    		let cmpIdentity = Engine.QueryInterface(ent, IID_Identity);
    		let nullFormation = cmpUnitAI.GetFormationTemplate() == "special/formations/null";
    		if (nullFormation) {
    			RemoveFromFormation([ent]);
    			nonformedUnitAIs.push(cmpUnitAI);
    		} else {
    			formedEnts.push(ent);
    		}
    	}
    	// No units support the formation - return all the others
    	if (formedEnts.length == 0)
    		return nonformedUnitAIs;
    
    	let formationUnitAIs = [];
    	let formations = ExtractFormations(formedEnts);
    
    	for (let i = 0; i < formations.ids.length; ++i) {
    		let fId = formations.ids[i];
    		let cmpUnitAI = Engine.QueryInterface(+fId, IID_UnitAI);
    		if(cmpUnitAI)
    			formationUnitAIs.push(cmpUnitAI);
    	}
    	return nonformedUnitAIs.concat(formationUnitAIs);
    }

     

×
×
  • Create New...