Jump to content

agentx

Community Members
  • Posts

    276
  • Joined

  • Last visited

  • Days Won

    7

Posts posted by agentx

  1. I might be useful to have a few criteria for when the game actually IS balanced. Looking back the forum's archive one might get the impression it never happened or that goal is kinda unachievable. Picking two random aspects and stating 'not balanced' is useful to point out rather huge issues. But somewhere there is a threshold balancing has to stop, because it's done, at least for a given template space. Otherwise the result is overshooting and starting over and over again.

    Regarding this release the rams caught me off guard and I'm looking for a counter strategy. Maybe all what's needed is a list saying: If you feel X is overpowered - try Z.

    • Like 3
  2. I've started this map in parallel with the bot a few alphas ago before even thinking about triggers, nomad mode and glowing textures. Now I have to rearrange priorities and decided to give up the map. My hope is someone takes care and finishes the quest.

    The Story:

    The map is about a lost civilization and a few survivors. Aeons ago on an island deeply hidden in a vast ocean the Chulthians uncovered the secret of unlimited resources. At some point in time the gods didn't like it any longer and a massive earthquake shattered and nearly destroyed the island. After the catastrophe the island was almost split in three separate parts by a deep abyss reaching the Earth's mantle, frequently spitting lava to decimate the Chulthians back to a minimum the gods deemed acceptable. The reminiscent now forever divided accused each other of blasphemy and never reached their former level of civilization again.

    The gods tried to keep their failed experiment a secret, but on several occasions dauntless sailors slipped through their deadly net and eventually three ancient civilizations thriving in distant regions heard the rumors promising endless richness. Naturally each launched an expedition to exploit the resources despite the curse. They build their biggest ship equipped it with food and water, selected a dozen of their most daring fighters, a group of adventurous females and a healer. With the promise of never be forgotten on return the chosen ones started a months long journey through uncharted water and like if the gods still play their game they - unknowingly from each other - arrived at the same time at the forgotten Island...

    post-16051-0-93772700-1426429577_thumb.jpost-16051-0-50605600-1426429615_thumb.j

    The Island:

    Two or three player can play the map. At start they may use the ship again and and settle somewhere else. There are three obvious places to land and three hidden ones. The players start with 1000 of each resources. There is enough place for a settlement and barracks and around 5000 wood/stone to gather, no metal. Some shipwrecks near the cliffs also provide some resources, whales and fish help too. The choice now is to either rush to the unlimited resources or attack the other players by ship or via land. The natives have about 10 units each and a powerful tower.

    post-16051-0-54547500-1426429605_thumb.jpost-16051-0-88354400-1426429572_thumb.j

    The Strategic Dilemma:

    The challenge is the abyss as all player can shoot with ranged weapons at each other while gathering. However using healers and lots of cheap units the players should be able to amass a decent amount of resources to build an unbeatable army and finally conquer the other sides. The dilemma is to choose a good point in time, because the opponent may have the same idea at the same time and both leaving their home base more or less defenseless they effectively just rotate forces on the map.

    post-16051-0-84152100-1426429607_thumb.jpost-16051-0-32102000-1426429611_thumb.j

    The Look:

    I planned the map to look like a beautiful mediterranean island with a touch of surrealism. The ocean is slightly tinted in red and there are a few strange artefacts. The idea was to theme the three parts towards a) female artefacts and old but usable fields and a farm with sheeps, b ) warriors with more easy stone, but also a forest with dangerous animals and c) gods with a healing temple ruin, but also a slowly shooting tower in the bay.

    post-16051-0-33504200-1426429596_thumb.j

    Download: https://dl.dropboxusercontent.com/u/354885/0ad/abyss/theabyss.zip

    post-16051-0-97733000-1426429612_thumb.j

    • Like 5
  3. > balancing by usage statistics

    Is there data telling which civ is preferred at the lobby?

    > What prevents templates from being machine readable ? If they are Xml parseable, they can be used right ?

    No, "machine readable" actually means "machine understandable". (Don't know who coined that.) Look at this tech:

      "armor_infantry_hack_04": {    "affects": [      "Champion"    ],     "civi": "all",     "cost": {      "food": 0,       "metal": 500,       "stone": 0,       "wood": 0    },     "description": "Body armor fashioned completely of bronze. Only the best soldiers were equipped with such body armor, as it was very expensive and time-consuming to fabricate.",     "genericName": "Bronze Cuirass Body Armor",     "icon": "armor_cuirass_bronze.png",     "modifications": [      {        "add": 2.0,         "value": "Armour/Hack"      },       {        "add": 10,         "value": "Cost/Resources/metal"      }    ],     "pair": "pair_inf_armor_04",     "requirements": {      "tech": "phase_city"    },     "requirementsTooltip": "Unlocked in City Phase.",     "researchTime": 40,     "soundComplete": "interface/alarm/alarm_upgradearmory.xml",     "specificName": {      "rome": "Lorica Musculata"    },     "tooltip": "Champions +2 Hack Armor Levels, but also +10 Metal Cost."  }, 

    Interesting is cost, modification and requirements. The question for a bot is: Should and can I research this tech? The can part is simple, the planner does it. The should part is hard, very hard, he needs to link from "Armour/Hack" / add 2.0 to "I need units to protect my centre which are resilient in close combat".

    A relevant XKCD:

    tasks.png

    The only rule I have so far is: Invest in all tech from this list, if enough resources. And for units it's ranged or not, fast or slow and hoping Hannibal can train units faster than humans :)

  4. @Stan, somehow yes, I use jsawk to find out what is available (best unit for task XYZ) off-game and then try to teach the AI to make a good decision. Adapting to special things is a whole topic for itself. I wish templates and technologies would be machine readable, so the AI knows to interpret e.g. health. But, that's the very far future, for now any property needs to be somehow (hard) coded. You can't expect the AI uses a unknown building properly to its advantage.

  5. There is another dimension to this noise topic: Without "noise" the maps don't look natural or organic. Surely a hand trimmed English lawn looks perfect to the eye, but doesn't fit into the game's overall realism. When the goal is to create textures which always work visually a set of low noise textures is good. If the goal is to allow beautiful and realistic scenarios noise or better organic structures are essential. To my eyes the AoE shots above (both) look like cheap plastic. If you carefully work every single tile in a 0AD map, the result looks real and tiling is not an issue. So, I think, the issue is not noise versus no noise, but having textures which look good with maps build in a day and having textures for maps designed in a month.

    • Like 5
  6. I was looking for a simple method to query all templates and found jsawk quite capable. It is a command line tool and works on JSON files. I've exported the templates (6MB) and made a smaller file (10kB) to test it. Jsawk needs SpiderMonkey's jsshell, you'll get it here at Mozilla, or may have it somewhere in the build folder after compiling. For simplicity I've put jsshell, jsawk and the templates JSON in the same folder.

    > ./jsawk -j ./js -i templates.A18.json.small -a 'return this.length'10

    -j tells jsawk where jsshell is and -i the input file, the command returns the number of templates in the small file. Each template has an attribute 'name' which is the name of the template.

    > ./jsawk -j ./js -i templates.A18.json.small  'return this.name' -a 'return this.join("\n")'structures/athen_fortressskirmish/structures/iber_wall_longunits/mace_mechanical_siege_lithobolos_packedunits/gaul_support_female_citizenunits/pers_ship_biremestructures/iber_wall_shortunits/ptol_ship_quinqueremeunits/gaul_cavalry_swordsman_eunits/athen_hero_periclesunits/sele_ship_bireme

    In 'return this.name' this refers to the template, which is a JS object. In the command -a, this refers to the full result set. One can run any JS expression in these commands and use the shell for sorting. Of course you can pipe a result like this into a csv file and continue with Excel or Calc.

    > ./jsawk -j ./js -i templates.A18.json.small  'return [this.Identity.Civ, this.name, this.Armour.Crush]' -a 'return this.join("\n")' | sortathen,structures/athen_fortress,2athen,units/athen_hero_pericles,25gaul,units/gaul_cavalry_swordsman_e,6gaul,units/gaul_support_female_citizen,15iber,structures/iber_wall_short,3.0mace,units/mace_mechanical_siege_lithobolos_packed,1pers,units/pers_ship_bireme,5ptol,units/ptol_ship_quinquereme,5sele,units/sele_ship_bireme,5skirm,skirmish/structures/iber_wall_long,3.0

    Jsawk supports JSONquery to filter results:

    > ./jsawk -j ./js -i templates.A18.json.small -q '.*[?Armour.Crush > 10]' 'return this.name'["units/gaul_support_female_citizen","units/athen_hero_pericles"]

    At first the syntax appears a bit, well, awkward, but it supports full automation. All the other tools I've checked are somewhat limited.

    Have fun!

  7. I tried last week week to get some grip on the settlement, but completely underestimated the complexity. Then I played a few games and tried to figure out why, where and when I create buildings and how that could be mapped onto Hannibal. First I made a list of the buildings which should be included/considered: Houses, fields, farmstead, storehouse, barracks, blacksmith, temple, market, fortress and towers. That leaves the ptol without a decent cavalry, but ok, they have houses for free.

    There is no way without houses, once build they are useful to train females and garrison them in case of an attack. I think, there is no rationale to either build them at the edge of a settlement or in the middle. So probably it is a good idea to place them away from the centre to have space for other buildings.

    A bot can easily do the micro and run coralls instead of fields or both. Again preferably suburban structures and mandatory for food.

    Farmsteads provide useful tecs and may reduce walking distances for gatherers. I like the compact squared layout of 8 fields with farmstead as center.

    Storehouses have tecs, and usually go with the other resources. They may result into another settlement with houses and tower(s), that depends on area risk and resource prospect.

    The blacksmith is only good for the tecs it could be placed everywhere and needs no tower.

    Barracks and the temple, because of tecs and garrison. Very near to the centre, like the market.

    Centre and fortress can guard each other.

    Well, and towers are useful everywhere.

    The thing is most buildings that should be close to the center (temple, market, fortress) are available later in the game and some space needs to be reserved. Also, these are rather huge buildings. Roughly there are three types:

    Ring 1: Temple, market, 1 barrack, 3 towers, 1 fortress

    Ring 2: Houses, + towers

    Ring 3: Support: fields, farmstead, blacksmith + towers(?)

    From that point I think the circular layout above make still sense and also a squared layout with center buildings rather close to each other, enclosed by a wide street. As Ascii art:

              Square                   Circle       HHHHH  HHHHH                 H H H       HHHHH  HHHHH                HH T HH       HHH  CB  HHH              HH B C M HH       HHH  TM  HHH                HH F HH       HHHHH  HHHHH                 H H H        HHHHH  HHHHH

    The square should also have exits/streets in W/E direction. Towers could replace houses as needed. I'm still not quite sure how it looks, because the civs with huge houses would fall in the square category.

    I plan to make Hannibal build palisades on alert in wide streets to slow the enemy down and remove them after attack.

    Images next week.... :)

    • Like 3
  8. Wikipedia - Structure: Though parts of the ancient city (Pataliputra) have been excavated, much of it still lies buried beneath modern Patna. During the Mauryan period, the city was described as being shaped as parallelogram, approximately 1.5 miles wide and 9 miles long. Its wooden walls were pierced by 64 gates. These were thought to have been converted to strong stone walls during the time of Ashoka.

    Honest question to the 3D gurus: With culling, LOS and fog of war, why do big maps have impact on fps? I mean cities have been much bigger than fifty houses during the relevant century...

  9. > So if you know where your virtual roads are, you could rotate the buildings to that side.

    Nice one. On top the first house in an open area can't know on which side a street will emerge, all following have a better clue. I'd bet that'll look organic. Now I want to rotate houses to the tangent of a street and make them prefer streets to open area. That way houses + streets could even grow out-of-territory if placed close enough.

    I think square cities are an option for 2 player games on a 512x512 map called Metropolis with 20 stone mines per player. :shocking:

  10. @niektb, I'm thinking about settlements. Only a few templates:

    templates/structures/brit_crannog.xml
    templates/structures/cart_super_dock.xml
    templates/structures/merc_camp_egyptian.xml
    templates/structures/ptol_lighthouse.xml
    templates/structures/ptol_mercenary_camp.xml
    templates/structures/ptol_military_colony.xml
    templates/structures/rome_army_camp.xml
    templates/structures/rome_siege_wall_gate.xml
    templates/structures/rome_siege_wall_long.xml
    templates/structures/rome_siege_wall_medium.xml
    templates/structures/rome_siege_wall_short.xml
    templates/structures/rome_siege_wall_tower.xml
    templates/structures/rome_tent.xml
    templates/structures/rome_wallset_siege.xml
    templates/structures/sele_military_colony.xml
    templates/template_structure_civic_civil_centre.xml
    templates/template_structure_defense_outpost.xml
    templates/template_structure_military_dock.xml

    allow buildings in neutral area. They are kinda seeds of a settlements. Dropsites fit in this list too - not the elephant. And they need support infrastructure like houses or towers for shelter. Also, that spends a clear bot start command: Build a settlement, if there is none, repeat if resources low.

  11. Here I'm completely lost.

    ax@T3000:/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc$ make -j3==== Building tinygettext (release) ======== Building mocks_real (release) ======== Building network (release) ======== Building lobby (release) ======== Building glooxwrapper (release) ======== Building simulation2 (release) ======== Building scriptinterface (release) ======== Building engine (release) ======== Building graphics (release) ======== Building atlas (release) ======== Building gui (release) ======== Building lowlevel (release) ======== Building mongoose (release) ======== Building mocks_test (release) ======== Building AtlasObject (release) ======== Building Collada (release) ======== Building AtlasUI (release) ======== Building pyrogenesis (release) ======== Building test (release) ======== Building ActorEditor (release) ====test_root.cppLinking test../../../binaries/system/libengine.a(VideoMode.o): In function `CVideoMode::SetVideoMode(int, int, int, bool)':/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/ps/VideoMode.cpp:168: undefined reference to `SDL_SetVideoMode'/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/ps/VideoMode.cpp:196: undefined reference to `SDL_WM_GrabInput'/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/ps/VideoMode.cpp:168: undefined reference to `SDL_SetVideoMode'/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/ps/VideoMode.cpp:198: undefined reference to `SDL_WM_GrabInput'../../../binaries/system/libengine.a(VideoMode.o): In function `CVideoMode::InitSDL()':/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/ps/VideoMode.cpp:308: undefined reference to `SDL_SetGamma'../../../binaries/system/libengine.a(GameSetup.o): In function `InitSDL':/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/ps/GameSetup/GameSetup.cpp:665: undefined reference to `SDL_EnableUNICODE'../../../binaries/system/libengine.a(GameSetup.o): In function `InitGraphics(CmdLineArgs const&, int)':/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/ps/GameSetup/GameSetup.cpp:989: undefined reference to `SDL_WM_SetCaption'../../../binaries/system/libengine.a(GameSetup.o): In function `InitInput':/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/ps/GameSetup/GameSetup.cpp:550: undefined reference to `SDL_EnableKeyRepeat'../../../binaries/system/libengine.a(HWDetect.o): In function `ReportGLLimits':/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/ps/GameSetup/HWDetect.cpp:713: undefined reference to `SDL_GetWMInfo'../../../binaries/system/liblowlevel.a(x.o): In function `get_wminfo':/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/lib/sysdep/os/unix/x/x.cpp:124: undefined reference to `SDL_GetWMInfo'/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/lib/sysdep/os/unix/x/x.cpp:124: undefined reference to `SDL_GetWMInfo'/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/lib/sysdep/os/unix/x/x.cpp:124: undefined reference to `SDL_GetWMInfo'/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/lib/sysdep/os/unix/x/x.cpp:124: undefined reference to `SDL_GetWMInfo'../../../binaries/system/liblowlevel.a(x.o):/Daten/Projects/Osiris/ps/trunk/build/workspaces/gcc/../../../source/lib/sysdep/os/unix/x/x.cpp:124: more undefined references to `SDL_GetWMInfo' followcollect2: error: ld returned 1 exit statusmake[1]: *** [../../../binaries/system/test] Error 1make: *** [test] Error 2
×
×
  • Create New...