Jump to content

Vantha

Community Members
  • Posts

    286
  • Joined

  • Last visited

  • Days Won

    13

Posts posted by Vantha

  1. Thanks! I appreciate it. 

    I've indeed invested a lot of time, and I actually quite enjoyed the process of learning JS and the way 0ad's graphical interface is made. Just the codebase alone helped a lot with understand core concepts.

    0ad is such a great game, I'm glad I found a way for me to contribute. 

    And I can't say I'm not excited about the total progress we've made on the encyclopedia (articles as well as GUI).

     

    1 hour ago, Norse_Harold said:

    I'm guessing that you got some help along the way. ;)

    From whom, I wonder... (thanks) And btw, I'm still hoping for eventual hyperlinks :)

  2. Update on the encyclopedia GUI page:

    I was not happy with the code at all, it was written in a very "unconventional" (bad) way and not really integrated into 0ad's codebase.

    That's why I decided to basically rewrite everything. 

    The various panels are now different classes (and have their own XML and JS files). Values are now (as usual with JavaScript) stored in properties and passed between them. The CivDropdown (as well as the related civData) is created and used from already implemented classes and functions.

    And countless more smaller improvements. All in all, I guess the code will be around 30% more efficient than before.

    But most importantly: the code is now much much more readable and usable, and no longer embarrassing to show. It might not seem like a big step to some, because essentially all I did was lift it to the expected standard, but it certainly is for me. Because I only had little experience I programmed the project in the wrong direction. Yes, everything worked just fine on the surface, but I eventually had to take my time to "fix" it.

     

    And that being done now means I can actually start designing and cleaning up the UI. Plus, because the code is now much better integrated into 0ad, I'm able to "intertwine" it with 0ad and make it feel less like a seperate entity. I, for example, already added a button to the structure tree, civilisation overview and the small unit/building/technology viewer page to open the respective encyclopaedia article.

     

    If you want to take a look at the code, I put it on a GitHub repo: https://github.com/indoptogopt/GUI-page-for-0ads-encyclopedia

    • Like 4
  3. What I think makes the Seleucid cavalry so interesting is that they were, unlike other Hellenistic kingdoms, forced by external enemies to develop a strong cavalry force. And this necessity aggravated even more after loosing (and becoming enemies with) some of their own important cavalry suppliers, regions like Parthia and Bactria. This even led to a tendency to neglect infantry which turned out fatal in some battles.

    In the above text, I was focusing on the composition of Seleucid cavalry. Its role and importance probably deserve its own text. You worded it pretty well, if you're fine with it, I'm gonna use the passages you wrote, I couldn't write it better.

    • Like 2
  4. Seleucid cavalry: https://github.com/TheShadowOfHassen/0-ad-history-encyclopedia-mod/pull/136

    Quote

    The Seleucid empire was home to many peoples with a profound tradition of horsemanship, like the Bactrians, Parthians, Armenians, Cappadocians, and Medians. But large parts of the Seleucid army's cavalry fought in a mixture of Macedonian and Persian combat styles.

     The royal guard was adopted from the Macedonian army, and it included two prestigious cavalry forces: the Hetairoi (companion cavalry), probably composed of Greek settlers, and the Agema, of soldiers of a more eastern origin. Both, around 1000 men strong each, were on constant duty stationed at the military base of Apamea. They wore comparably heavy armor and fought as lancers. 
    A large section of the remaining Seleucid cavalry consisted of cleruchs, Greek settlers obliged to military service. They were part of the Seleucid society's upper class and considerably wealthy (so they could afford to buy and maintain horses).

    However, the Seleucids also fielded countless horsemen from all over their empire, equipped and fighting according to local customs. And allies, or mercenaries of various cultures and ethnicities, also stood in the Seleucid ranks. The Dahae tribes from the shores of the Caspian Sea, for example, are known for their light-ranged cavalry. Ancient Iranian cataphracts, a type of especially heavy cavalry, were also deployed. But there were a number more, for example, the Elymaians, Mysians, Galatians, and Tarentines.

     

    • Like 1
  5. In that case, you probably don't have admin access to your router, that's why the credentials you entered only let you change limited settings on the router interface. Do you know who the admin is? If not, it's likely your ISP, contact your ISP usually they can set up a port forwarding rule for you.

    If that's not possible (and you are the only person in the network) you could set the router to bridge mode and plug your computer into it.

  6. PR for two more articles:https://github.com/TheShadowOfHassen/0-ad-history-encyclopedia-mod/pull/134

    Battle of Gaugamela (I wrote this one a long time ago, but forgot to submit it). It is good text in my opinion, but I'm unsure whether its length actually fits in the scope of the encyclopedia. Same for most other texts in the unused folder and some heroes. I am going to try harder to keep the texts shorter and leave out irrelevant details from now on.

    Quote

    The Battle of Gaugamela was fought in 331 BC. An army by the League of Corinth under Macedonian leadership had been invading Persia, defeated multiple Persian armies over the last few years, and advanced deep into enemy territory. They were led by Macedonian King Alexander (later to be called the Great) and numbered around 50,000 soldiers, about 7,000 of whom were cavalry, the rest infantry.
    The Persian army they faced consisted of over 100,000, meaning twice to three times as many soldiers. Ancient sources recall even multiple times greater sizes, but modern historians believe them to be highly exaggerated. Either way, it was the biggest army Alexander ever faced in the Persian campaign. Approximately 40,000 were cavalry; the Persians also deployed 200 scythed chariots and 15 war elephants.
    They were led by Persian king Darius III, who had been awaiting the Macedonian army on a plain a few miles east of the river Tigris. Near the small town of (obviously) Gaugamela. Darius had ordered to flatten the terrain, removing bushes, stones, etc., to maximize the effectiveness of his chariots, and also cavalry.
    On the day of the battle, the Macedonians lined up in front of the Persians. The left and right flanks of both armies consisted almost solely of cavalry. Darius III was positioned in the very center, protected by his elite infantry. Alexander led his right flank of cavalry. Because of the Macedonian numerical inferiority and the thereupon resulting narrowness of their formation, they were at great risk of getting flanked and encircled. To prevent that, both Macedonian flanks were bent backwards by 45 degrees. Alexander also kept reserves at the back.
    The battle started with Alexander's cavalry moving outward. The Persian left wing, to prevent encirclement of their own, followed by doing the same. As the Macedonian right wing got close to the flattened terrain's edge, they were charged at by the Persian cavalry force, who wanted to stop the Macedonians from pushing the battle away from their advantageous flat ground. Simultaneously, the right Persian flank attacked the left Macedonian flank. Fierce cavalry clashes ensued on both flanks. But because on both sides the Persian cavalry was larger and very skilled, they both partially flanked the Macedonian cavalry on the outside and inflicted higher casualties than they took.
    At this point in the center, the chariots charged at the Macedonian formation. Thereupon, the Macedonians opened passages in their formation, where the chariots drove through and attacked them with ranged infantry. This worked very well: the intimidating chariots were rendered basically harmless and defeated quickly.
    While the cavalry fights continued on both flanks, some of the central infantry moved forward and tried to break through the Macedonian Phalanx in the center.
    Alexander, still fighting on his right wing, realized his opportunity had come. With the Persian left wing being drawn to the side and many of their remaining forces far off in engagement with the Macedonians, a gap had opened, and Darius III was left relatively unprotected. Alexander took some of the cavalry fighting on the right, and charged directly at Darius' royal guard. He also ordered all his infantry divisions not yet involved in the fighting to do the same.
    And he managed to get closer and closer to Darius III himself. Who, afraid of dying or being captured, fled. This reaction was seen by the Macedonians as very cowardly.
    Noticing their king fleeing broke the Persian battle morale, and without any supreme orders, the Persian center was disrupted and scattered. Many were killed or captured. Alexander, however, was forced to not pursue Darius, as he was told his cavalry forces on both flanks were still on the brink of being overrun and desperately needed help. And also, their camp was being raided by Persians who had found a gap in the Macedonian formation.
    The Macedonians, now controlling almost the entire battlefield, after intense fighting, ended up defeating the remaining Persian cavalry forces.
    Macedon had decisively won. The Battle of Gaugamela marked one of Alexander's biggest victories, led to his capture of the heart of the Persian kingdom, and resulted in the collapse of resistance to his invasion.

     

    and cavalry warfare during the Hellenistic period (lengthwise much better):

    Quote

    Cavalry during the Hellenistic period was used in many different forms. Light mounted units were often assigned intelligence-gathering tasks. They also employed hit-and-run tactics to keep enemies busy, exhaust them, or lead them into traps. In battle, light cavalry was usually tasked with securing the infantry's flanks. When attacking, they oftentimes attempted maneuvers of outflanking, encircling, or pulling apart to open a gap in the opposing formation. And because of their speed, light cavalry was also used to pursue and kill off fleeing soldiers.
    However, due to the widespread deployment of phalangites (Macedonian pikemen) the infantry's front line was more resistant to cavalry charges than ever before. For that reason, elite cataphracts, a type of especially heavy cavalry, ascended as primary shock troops. Despite their lack of speed and maneuverability, they repeatedly won battles by exploiting gaps or weak points in the enemy's line.
    One effective and unique anti-cavalry during the Hellenistic Period were war elephants. Most horses were deterred just by the presence of elephants. Placing elephants in front of the infantry was a good way to keep enemy cavalry at bay.

     

    The UI work on the encyclopedia page has been on hold for the last weeks, but I will resume working on it this weekend or next week.

    • Like 2
  7. 1 hour ago, Gurken Khan said:

    Thx @Vantha!

    So, are we sure now how the game picks AI leader names?

    Yes. They get picked only from the AINames in files in simulation/data/civs/.

    In A26 as well as A27 RC, these lists include heroes. However, they were recently cut in this revision, removing hero names and other duplicates. And Themistocles is one of the heroes.

    • Like 1
  8. @Jaren are you sure your device is a fiberhome router? Double check the manufacturer and model number.

    You can search for port forwarding in the router manual. With the device's model number you can also probably find its manual on the internet. Most manuals have a seperate subchapter about port forwarding.

    Keep in mind, you don't have to do port forwarding to play multiplayer. Port forwarding only helps other player join games that you host. If you can't connect to games yourself it is a different issue.

  9. 2 hours ago, Lion.Kanzen said:

    According to Chat GPT



    1. Chandragupta Maurya
    2. Bindusara
    3. Ashoka
    4. Dasharatha Maurya
    5. Samprati Maurya
    6. Shaliastambha
    7. Satadhanvan
    8. Brihadratha Maurya
    9. Devavarman

    .

    Yes, these are the nine emperors. Chandragupta and Ahsoka are heroes. And the remaining seven form the list of AI names. For it to be eight, there's one name missing...

  10. I will submit a patch and my plan is to increase each civ's AI names list to at least 8 different entries in the very same patch to not temporarily "break" anything. I haven't done deep research yet but here are the best ruler names I found:

    There's one missing for the Gauls, I suggest Orgetorix.

    The Iberians are missing four, I suggest Olyndicus, Calcus, Orison, and Tanginus.

    The Mauryans need one last name too, but I am struggling to find one since the current names are all emperors (there are nine emperors two of which are heroes in 0ad which leaves one of the eight spots missing). Does anyone have a suggestion?

    • Thanks 1
  11. PR for some artillery: https://github.com/TheShadowOfHassen/0-ad-history-encyclopedia-mod/pull/131

     

    Gastraphetes

    Quote

    The gastraphetes was a type of Greek crossbow, developed during the 5th or 4th century BC. Its name, deriving from its unique design, directly translates to “belly shooter” and, in a broader context, to “belly bow” which is the term used today.
            The bow itself and the claw mechanism grabbing the bowstring were attached on opposite ends of two different beams of similar length. One of those beams (the one with the claw) rested inside a groove directly on the other beam, allowing both to slide back and forth along the other. With this particular arrangement, the bow and the claw mechanism could easily be brought together by pulling the top beam and/or pushing the lower beam. However, instead of then pulling back the bowstring like most crossbows do, the gastraphetes actually pushed the bow away from its string to create the tension: The upper beam, now protruding from the lower beam, was placed at a 45-degree angle forward on the ground. A big concave piece of wood attached to the lower beam's rear was placed to the shooter's belly. By leaning forward and pushing with his hands, pressing the crossbow against the ground, the shooter moved the beams together, therefore the bow away from its string, bending it, and therefore drawing the crossbow.
            The big strength of this design lied in its simplicity of use. Even people who had never held a gastraphete in their hands before could, with as little as only a couple of days or weeks of training, learn the basic movement cycle and fight with it. The pushing motion against the ground utilizing bodyweight, also enabled even quite untrained and physically weak soldiers to draw a strong gastraphetes. For the same reason, it had a very high draw weight (probably over 100 lbs), which subsequently led to great momentum on the arrow, a incredible range and penetrating power.
            One major drawback of this simple and efficient loading mechanism was its speed. The gastraphetes could only fire an estimated one or two arrows per minute, which was far slower than many other ranged weapons at the time. It was also, because it was fired while held similarly to the belly, harder to aim at a distant target than other crossbows. For this reason, as well as due to its large weight and mechanical complexity, the gastraphetes was (sadly) not very widely used.

     

    I rewrote the oxybeles

    Quote

            The oxybeles was a type of ancient Greek bolt-shooting device developed sometime around the 4th century BC, a predecessor of the ballista. It was basically an oversized crossbow (gastraphetes) mounted on a tripod. As the name (translating to “sharp arrow”) suggests, it fired big arrows or javelins. The oxybeles' immense draw weight was pulled with the help of a winch mechanism. While this slowed down reloading times a lot, it also equipped the weapon with enormous power. Its range exceeded several hundreds of feet (hundreds of meters) and was capable of piercing any soldier's shield, armor, and, at close range, even his body. Without a doubt, the oxybeles was the most dangerous anti-personnel weapon of its time.
     
    However, there were trade-offs for its power. Besides the long reloading time, it was also very heavy, inflexible, and cumbersome. Transportation required a lot of effort.

     

    and the lithobolos

    Quote

    The lithobolos (translated “stone-thrower”) was a type of Greek catapult probably first constructed for Dionysius of Syracuse's expedition against Carthage. Its defining feature was a newly developed mechanism: the lithobolos got its power from the torsion of bundles of sinew, skein, or fiber instead of the tension of a bow like traditional weapons did. The twisting was done by the catapult's arms running through the bundle and rotating as the bowstring was pulled back. For the latter, a winch mechanism was used.
            This, on the one hand, was really slow, drastically increasing reload time, but on the other hand, it allowed for great draw weights and, subsequently, very strong shooting power. Variants of the lithobolos came in all different sizes and shapes, depending on the need. Some even had a grooved stock and were specifically designed for the launch of arrows.
            Catapults like the lithobolos had a huge impact on siege warfare, as they enabled attackers to breach a city's fortification while keeping a safe distance. This could bring victory and save the time and effort of a long siege.

     

  12. 13 hours ago, Grautvornix said:

    Additionally, the selection algorithm itself may need modification so that it not just picks a random list entry every time (and counting up the roman numerals if that name was already taken) but only use the remaining set of each civ for random selection.

    Yup, that's the idea. It creates the minimum requirement of 8 different names for each civ. But, of course, adding even more names remains possible. We can add as many suitable names as we can come up with for each civ, to maximize variety.

  13. I'm in favor of adding new names because for some civs we won't find enough names otherwise.

    Yeah, my idea is to modify the way the list created, to first pick each name only once, and when every name has already been chosen pick a random name instead plus suffix showing the count (like (2) ) to avoid two bots with the same name. And as long as each civ has at least 8 different names to choose from, these suffixes won't appear in ordinary 8 player games anyway.

    • Like 2
  14. 19 hours ago, ShadowOfHassen said:

    It's too bad about the hyperlinks. I really think they would be beneficial. Hopefully someone who knows C++ will find some time to implement it.

    I hope so too. For now there will only be a seperate related article section linking to other articles, just no hyperlinks in the text itself.

    • Like 1
  15. On 18/03/2024 at 8:27 PM, alre said:

    if the change creates a requirement for civs to have at least 8 ruler names, that's a new requirement codewise and it should be made clear.

    Where should it be made clear? Maybe it'd be best to fill in missing names in the same patch?

    I found that the hero names got removed from the AI names list in rP27683 which I guess makes sense. I see two options: We either need to find one new name for the Mauryas and the Britons and four for the Iberians, or we revert this change and only require a last one for the Iberians.

    If noone has any suggestions, I can research for the missing names myself, I shouldn't be too hard, and propose them here.

    • Like 1
  16. Three texts on the topic of (war) elephants: https://github.com/TheShadowOfHassen/0-ad-history-encyclopedia-mod/pull/129

     

    The role of elephants in ancient warfare:

    Quote

    War elephants were incredibly unique and dangerous units. With their immense size, weight, and momentum, a couple of charging elephants could shatter entire formations and thus decide the outcome of a battle. Elephants were even able to damage or take down defensive fortifications. No wonder they are today often regarded as the “tanks of antiquity”.

    Oftentimes, elephants also carried wooden platforms or turrets, with archers providing additional firepower. And just the presence of elephants alone rendered cavalry units virtually useless, as they scared off the horses.

    But their psycholocal effect should not be underestimated either; the intimidating site alone of a charging and loudly trumpeting horde of elephants could spark heavy panic among enemies.

    On the battlefield, elephants, in a constant fear of death, sometimes got out of control, turned back, and attacked their own line. To prevent that, riders had a special chisel to kill the elephant in the worst case. Elephants nonetheless, in a few instances, caused more damage to their own men than to the enemy's.

    Over time, various methods to cope with the threat of war elephants on the battlefield emerged. One way was to open passages in the melee infantry formation that the elephants would instinctively run into and then barrage them with projectiles. This maneuver was famously performed under Scipio Africanus against Carthage's elephants at the Battle of Zama in 202 BC.

    Digging trenches was also a good way to neutralize elephants as well. Caltrops, a spike structure put to the ground that slit open the elephant's vulnerable sole if it stepped on it, and similar anti-elephant weapons were also utilized.

    One last (more unconventional) method was the use of pigs. Elephants are terrified by the screams of pigs. During the Siege of Megara in 266 BC, the defenders doused pigs in combustible liquids, lit them on fire, and drove the burning and screaming pigs towards the enemy's elephants. The elephants fell in panic and trampled many of their own soldiers.

     

    Elephants in the Hellenistic world:

    Quote
    Greek culture only first came into contact with elephants in the 4th century BC, during Alexander the Great's campaign, particularly in India. And, without a doubt, they were deeply impressed by these huge animals. Not only did they famously face war elephants in battle, but they also saw them employed for various working tasks.
    And for the following centuries, the Hellenistic Period, elephants went on to reshape warfare and culture in the Mediterranean world: 
    Elephants quickly spread all over the newly Greek populated regions and even further, from the Eastern Seleucid empire all the way to Carthage. Besides their high effectiveness on the battlefield, they were connected to strong symbolism.
    Elephants were obtained either through trade with the Mauryan Empire in the Far East or caught in the wild through long and costly expeditions deep into the African continent.
    Taming and training were comparably difficult due to elephants' complex social behavior. And they also required enormous amounts of food, which could be challenging and expensive to acquire and transport over long distances.
    For these reasons, the possession of elephants usually signified high prestige. A number of different Hellenistic
    monarchs bore the symbol of an elephant as a way to showcase their wealth and power. 

    It was, for example, also a popular motif to be depicted on royal coinage.

     

    History of the relationship between humans and elephants:

    Quote

    Humans have for a long time kept elephants; the earliest evidence dates back to the year 2000 BC. They were, however, unlike other animals, not domesticated. Because breeding in general proved nearly impossible due to their enormous size, complex social behavior, and long gestation, most elephants were instead captured from the wild.         They were tamed by special elephant keepers called mahouts, often of Indian origin. Mahouts spent their lives forming a close relationship with their elephant, learning to ride it and guiding it to perform certain labor tasks, such as carrying luggage. Depending on the circumstances, mahouts also trained them as war elephants and led them into battle.

     

    • Like 1
  17. Thanks @Grautvornix and @DGMurdockIII!

    I too really enjoy the working on it. Progress has been going a bit slower lately, but I'm very happy with how far we've come.

    And I'm always glad to hear people like it.

     

    P.S.: To give a small update on the new encyclopedia page, I tried out a lot of things for hyperlinks between texts, I thought about it and came to the conclusion that they might not even be in-style with 0ad. And even if so, it'd be best to implement them as features in the engine directly (where I'm dependent on others because I don't know C++). That's why I'm gonna put this feature on hold for now, unless someone finds himself to implement it. And btw, thanks as well to @Norse_Haroldfor his advice.

    • Like 1
×
×
  • Create New...