Twelve Clans - Official Thread
-
@Cernel Would you suggest changing the dice system to allow for more variance in units? As with a d12 system I don't know how much we can change stats around from how they are now. Do you have any stat change or PU change suggestions instead of removing units from the map?
-
@NetHackFan1006 I would strive to avoid going anywhere above a d12 system, but, of course, the higher the dice sides the easier to find solutions. Also in the moment the d12 is flavour for these kinda games (because of the boardgames), I think you should better stick with it.
Honestly, it would be very hard even for me to come up with a balanced system that keeps every unit worthwhile for everyone while having a mostly single value boost national advantage system in place for 12 different powers. And I'm not even going to think how to, then, deal with a requirement to work with any AI too.
As far as the basic units go, if the "national advantages" would not exist (everyone having exactly the same frontier), I could furnish a full set of balanced values, but I don't think either me or you want me to do that. This is your game, after all, not my mod of it.
-
Actually, the typo was a side note. The matter is that it says "Improved Teppo Offense", while it should say "Improved Teppo Defense".
I'll get that fixed shortly...thanks! Somehow I completely missed that
-
Update 1.3 should be out soon. This update will add clan objectives for bonus PUs, tweaks to the Bushi unit, and some additional graphical/audio modifications
-
I just played through this, solo, vs. all the other AI set to "Hard".
Against the AI, it was a bit of a cakewalk as the Oda. I built max Noburi on the first turn, then stormed over and crushed Miyoshi, stormed north and crushed Azai with a mass of Ashigaru that just kept building, and continued East with that growing horde. I gradually developed a secondary horde in the south and used that to storm West through various neutrals, who died with minimal casualties incurred and then mess with the western powers who had been busy beating each other senseless. In the meantime, I built a third horde to conquer neutrals in the center and forestall adventures by the mostly turtling Tokugawa in the south. My vassals also did their own conquering in a number of cases, starting with Miyoshi occupying much of the center and north, and thus forestalling any Eastern adventures by the western powers. I won on the 13th turn when my vassal Uesugi eventually made Tokugawa into a vassal, even though I only held three capitals on my own.
It seems like Ashigaru become overwhelmingly powerful even if used just as cannon fodder with enough supporting units and leaders.
-
@Thomas-Leavitt Nice
I wish I could convince the AI to invest more into the Nobori but I haven't found the sweet spot yet. Some clans are easier the win with than others as a result. I find playing the Azai or Chosokabe to be the most challenging.
-
Two comments so far. Triplea 2.2.20790, Map version 1.3.0. I am playing the 4 team version.
AI does not currently seem to build nobori at all. In my opinion they should probably be building up to the map max on the first turn, so it might be worth placing those units on the board, and making them have less PUs to start for almost the same effect. Doesn't help if they lose them, but helps the early game.
They are also taking their daimyos (is that the right name for them) as casualties. I think you want to make a purchase rule for them, and then give them a higher cost than most units.
edit: Found two more things. Kenin seem to be produced every turn after you capture a capital in this version. I feel like you are supposed to get one per capital you have taken. And i got an error that i made a new post for below.
Now that I have played it far enough to decide that I am going to win, i like the general dynamic of the map. AI suffers to some of those dynamics, but if i give them some extra resources at the start that should help some of them.
-
I just got this error.
Oct 07, 2020 1:08:45 PM games.strategy.engine.framework.startup.ui.panels.main.game.selector.GameSelectorModel load INFO: Loaded game: Twelve Clans - Triads, in file: autosaveBeforeEndTurn.tsvg Oct 07, 2020 1:09:04 PM org.triplea.game.client.HeadedGameRunner lambda$initializeClientSettingAndLogging$0 SEVERE: Comparison method violates its general contract! java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.base/java.util.TimSort.mergeHi(TimSort.java:903) at java.base/java.util.TimSort.mergeAt(TimSort.java:520) at java.base/java.util.TimSort.mergeCollapse(TimSort.java:448) at java.base/java.util.TimSort.sort(TimSort.java:245) at java.base/java.util.Arrays.sort(Arrays.java:1515) at java.base/java.util.ArrayList.sort(ArrayList.java:1749) at games.strategy.triplea.ai.pro.util.ProSortMoveOptionsUtils.sortUnitNeededOptionsThenAttack(ProSortMoveOptionsUtils.java:116) at games.strategy.triplea.ai.pro.ProCombatMoveAi.tryToAttackTerritories(ProCombatMoveAi.java:1341) at games.strategy.triplea.ai.pro.ProCombatMoveAi.determineTerritoriesToAttack(ProCombatMoveAi.java:335) at games.strategy.triplea.ai.pro.ProCombatMoveAi.doCombatMove(ProCombatMoveAi.java:95) at games.strategy.triplea.ai.pro.AbstractProAi.move(AbstractProAi.java:139) at games.strategy.triplea.ai.AbstractAi.start(AbstractAi.java:514) at games.strategy.engine.framework.ServerGame.waitForPlayerToFinishStep(ServerGame.java:537) at games.strategy.engine.framework.ServerGame.runStep(ServerGame.java:407) at games.strategy.engine.framework.ServerGame.startGame(ServerGame.java:297) at games.strategy.engine.framework.startup.launcher.LocalLauncher.launchInternal(LocalLauncher.java:86) at games.strategy.engine.framework.startup.launcher.LocalLauncher.lambda$launch$0(LocalLauncher.java:60) at java.base/java.lang.Thread.run(Thread.java:834)
-
AI not producing is the least of the problem. The AI is able to find connections to provinces that have been removed from the map and crash the game when they attempt to move armies to them. Apparently Yamashiro is still in the game somewhere, and the AI can find it.
-
@Kevin-Wedel can you list the bad territories? Might be able to fix those.
-
Sekigahara produces "Comparison method violates its general contract! java.lang.IllegalArgumentException: Comparison method violates its general contract"
The province bug does not always seem to happen. Also this error only seems to occur with fast AI so far.
-
I like this game a lot. My sons and I are having a lot of fun with it. I really appreciate all the hard work that the designers put into it. I especially like how players are never really fully eliminated.
My computer is having memory issues with java heap space especially in later rounds over a thousand units are on the map. Even before reaching java heap space limits, the shear number of units will cause the game to move very slowly between turn phases.
To help with memory related performance issues, I request that the developers add a version where number of units supported are cut in half. This would be very easy to do while keeping all of the fun game elements. (perhaps this is why 270BC has a 40% version)
As far as the AI error that people are noticing, I have had it happen with fast and hard AI, and so far with clans on the far right of the playing board (Date and Uesugi)
Here's an idea to help the AI make better decisions. Right now the commanders and ashiguru have a value of 0. This causes the AI to misunderstand the value of these units. If the commanders are given a value of 30 and the ashiguru a value of 2, then I think that this would make a difference, perhaps preventing the AI from sacrificing its commanders for short term gains.
Finally, why do the Hojo Ninja not have -1 power to 5 enemy ashiguru? Why are heroes with movement of one not land transportable?
-
The below minor code changes make a huge difference in playability, especially with AI.
Pros:
Less memory required; runs much faster
AI does not throw way heroes in battle in preference to keeping less valuable units
AI does not throw away Nobori in battle in preference to keeping less valuable units
AI is motivated to build Nobori
Powerful Bushi now cost more than basic units with movement of only one
Artificial Nobori build limit is removed
Territory-based Nobori limit encourages taking more risks to gain territory
"General Contract Violation" error is fixed (probably due to the heroes, Ashigaru, and Kanjin having a cost of more than zero)
AI is more aggressive and makes better phase and turn decisions because heroes, Ashigaru, and Kanjin have a cost more than zeroCons:
Fewer situations where Ronin may be helpful
No more commanding gigantic armies with 500 units in them and getting over 200 hits in the first round.Note:
Oda national advantage is that its Nobori can recruit Ashigaru in allied territories and vice versa.Code Changes Required:
Change code where applicable to make all heroes produce create only 1 unit per turn and they support half as many allied units as before (e.g. support value now equals 100 instead of 200)Change code for production and Nobori attachments as below...
<productionRule name="buyBushi"> <cost resource="PUs" quantity="7"/> <result resourceOrUnit="Bushi" quantity="1"/> </productionRule> <productionRule name="buyTeppo"> <cost resource="PUs" quantity="6"/> <result resourceOrUnit="Teppo" quantity="1"/> </productionRule> <productionRule name="buyKyudoka"> <cost resource="PUs" quantity="6"/> <result resourceOrUnit="Kyudoka" quantity="1"/> </productionRule> <productionRule name="buyRonin"> <cost resource="PUs" quantity="8"/> <result resourceOrUnit="Ronin" quantity="1"/> </productionRule> <productionRule name="buyNobori"> <cost resource="PUs" quantity="12"/> <result resourceOrUnit="Nobori" quantity="1"/> </productionRule> <productionRule name="buySamurai"> <cost resource="PUs" quantity="10"/> <result resourceOrUnit="Samurai" quantity="1"/> </productionRule> <productionRule name="buyMawari"> <cost resource="PUs" quantity="11"/> <result resourceOrUnit="Mawari" quantity="1"/> </productionRule> <productionRule name="buyNinja"> <cost resource="PUs" quantity="12"/> <result resourceOrUnit="Ninja" quantity="1"/> </productionRule> <!-- specialized units --> <productionRule name="buyBoeiBushi"> <cost resource="PUs" quantity="7"/> <result resourceOrUnit="Boei-Bushi" quantity="1"/> </productionRule> <productionRule name="buyTsumiBushi"> <cost resource="PUs" quantity="7"/> <result resourceOrUnit="Tsumi-Bushi" quantity="1"/> </productionRule> <productionRule name="buyBoeiTeppo"> <cost resource="PUs" quantity="6"/> <result resourceOrUnit="Boei-Teppo" quantity="1"/> </productionRule> <productionRule name="buyTsumiTeppo"> <cost resource="PUs" quantity="6"/> <result resourceOrUnit="Tsumi-Teppo" quantity="1"/> </productionRule> <productionRule name="buyBoeiKyudoka"> <cost resource="PUs" quantity="6"/> <result resourceOrUnit="Boei-Kyudoka" quantity="1"/> </productionRule> <productionRule name="buyTsumiKyudoka"> <cost resource="PUs" quantity="6"/> <result resourceOrUnit="Tsumi-Kyudoka" quantity="1"/> </productionRule> <productionRule name="buyEritoNobori"> <cost resource="PUs" quantity="12"/> <result resourceOrUnit="Erito-Nobori" quantity="1"/> </productionRule> <productionRule name="buyEritoSamurai"> <cost resource="PUs" quantity="10"/> <result resourceOrUnit="Erito-Samurai" quantity="1"/> </productionRule> <productionRule name="buyTsumiSamurai"> <cost resource="PUs" quantity="10"/> <result resourceOrUnit="Tsumi-Samurai" quantity="1"/> </productionRule> <productionRule name="buyTsumiMawari"> <cost resource="PUs" quantity="11"/> <result resourceOrUnit="Tsumi-Mawari" quantity="1"/> </productionRule> <productionRule name="buyBoeiNinja"> <cost resource="PUs" quantity="12"/> <result resourceOrUnit="Boei-Ninja" quantity="1"/> </productionRule> <productionRule name="buyTsumiNinja"> <cost resource="PUs" quantity="12"/> <result resourceOrUnit="Tsumi-Ninja" quantity="1"/> </productionRule> <!-- give PU value to units that cannot be produced to help AI make better decisions --> <productionRule name="buyAshigaru"> <cost resource="PUs" quantity="3"/> <result resourceOrUnit="Ashigaru" quantity="1"/> </productionRule> <productionRule name="buyKanjin"> <cost resource="PUs" quantity="10"/> <result resourceOrUnit="Kanjin" quantity="1"/> </productionRule> <productionRule name="buyKenin"> <cost resource="PUs" quantity="30"/> <result resourceOrUnit="Kenin" quantity="1"/> </productionRule> <productionRule name="buyAzai-Nagamasa"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Azai-Nagamasa" quantity="1"/> </productionRule> <productionRule name="buyTodo-Takatora"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Todo-Takatora" quantity="1"/> </productionRule> <productionRule name="buyOtani-Yoshitsugu"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Otani-Yoshitsugu" quantity="1"/> </productionRule> <productionRule name="buyChosokabe-Motochika"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Chosokabe-Motochika" quantity="1"/> </productionRule> <productionRule name="buySaika-Magoichi"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Saika-Magoichi" quantity="1"/> </productionRule> <productionRule name="buyAkechi-Mitsuhide"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Akechi-Mitsuhide" quantity="1"/> </productionRule> <productionRule name="buyDate-Masamune"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Date-Masamune" quantity="1"/> </productionRule> <productionRule name="buyKatakura-Kojuro"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Katakura-Kojuro" quantity="1"/> </productionRule> <productionRule name="buyYagyu-Munenori"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Yagyu-Munenori" quantity="1"/> </productionRule> <productionRule name="buyHojo-Ujiyasu"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Hojo-Ujiyasu" quantity="1"/> </productionRule> <productionRule name="buyFuma-Kotaro"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Fuma-Kotaro" quantity="1"/> </productionRule> <productionRule name="buyHojo-Ujimasa"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Hojo-Ujimasa" quantity="1"/> </productionRule> <productionRule name="buyMiyoshi-Masanaga"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Miyoshi-Masanaga" quantity="1"/> </productionRule> <productionRule name="buyMatsunaga-Hisahide"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Matsunaga-Hisahide" quantity="1"/> </productionRule> <productionRule name="buyTomomichi-Ishinari"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Tomomichi-Ishinari" quantity="1"/> </productionRule> <productionRule name="buyMori-Motonari"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Mori-Motonari" quantity="1"/> </productionRule> <productionRule name="buyTakenaka-Hanbei"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Takenaka-Hanbei" quantity="1"/> </productionRule> <productionRule name="buyKobayakawa-Takakage"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Kobayakawa-Takakage" quantity="1"/> </productionRule> <productionRule name="buyOda-Nobunaga"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Oda-Nobunaga" quantity="1"/> </productionRule> <productionRule name="buyMaeda-Toshiie"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Maeda-Toshiie" quantity="1"/> </productionRule> <productionRule name="buyHashiba-Hideyoshi"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Hashiba-Hideyoshi" quantity="1"/> </productionRule> <productionRule name="buyOtomo-Yoshishige"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Otomo-Yoshishige" quantity="1"/> </productionRule> <productionRule name="buyTachibana-Muneshige"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Tachibana-Muneshige" quantity="1"/> </productionRule> <productionRule name="buyTachibana-Ginchiyo"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Tachibana-Ginchiyo" quantity="1"/> </productionRule> <productionRule name="buyShimazu-Yoshihiro"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Shimazu-Yoshihiro" quantity="1"/> </productionRule> <productionRule name="buyShimazu-Toyohisa"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Shimazu-Toyohisa" quantity="1"/> </productionRule> <productionRule name="buyIshida-Mitsunari"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Ishida-Mitsunari" quantity="1"/> </productionRule> <productionRule name="buyTakeda-Shingen"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Takeda-Shingen" quantity="1"/> </productionRule> <productionRule name="buySanada-Nobuyuki"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Sanada-Nobuyuki" quantity="1"/> </productionRule> <productionRule name="buySanada-Yukimura"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Sanada-Yukimura" quantity="1"/> </productionRule> <productionRule name="buyTokugawa-Ieyasu"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Tokugawa-Ieyasu" quantity="1"/> </productionRule> <productionRule name="buyHattori-Hanzo"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Hattori-Hanzo" quantity="1"/> </productionRule> <productionRule name="buyHonda-Tadakatsu"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Honda-Tadakatsu" quantity="1"/> </productionRule> <productionRule name="buyUesugi-Kenshin"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Uesugi-Kenshin" quantity="1"/> </productionRule> <productionRule name="buyUesugi-Kagekatsu"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Uesugi-Kagekatsu" quantity="1"/> </productionRule> <productionRule name="buyNaoe-Kanetsugu"> <cost resource="PUs" quantity="60"/> <result resourceOrUnit="Naoe-Kanetsugu" quantity="1"/> </productionRule> <attachment name="unitAttachment" attachTo="Nobori" javaClass="games.strategy.triplea.attachments.UnitAttachment" type="unitType"> <option name="attack" value="2"/> <option name="defense" value="7"/> <option name="movement" value="1"/> <option name="isLandTransportable" value="true"/> <option name="createsUnitsList" value="1:Ashigaru"/> <!-- <option name="maxBuiltPerPlayer" value="3"/> --> <option name="placementLimit" value="allied" count="1"/> <option name="movementLimit" value="allied" count="1"/> </attachment> <attachment name="unitAttachment" attachTo="Erito-Nobori" javaClass="games.strategy.triplea.attachments.UnitAttachment" type="unitType"> <option name="attack" value="2"/> <option name="defense" value="7"/> <option name="movement" value="1"/> <option name="isLandTransportable" value="true"/> <option name="createsUnitsList" value="1:Ashigaru"/> <!-- <option name="maxBuiltPerPlayer" value="4"/> --> <option name="placementLimit" value="owned" count="1"/> <option name="movementLimit" value="owned" count="1"/> </attachment>
-
@daneffuller Nice suggestions with altering production cost for those units. That will most likely be updated into the game at some point. Just briefly looking through your code I think I saw some stat changes. Those probably won't make it, but you never know. Also, the massive number of units is a style choice, part of the game's flavor, but I could see how that might affect some machines.
Perhaps there should be a variant that has toned down unit numbers. If you would like to you can spearhead the development of that and upload it yourself. You seem to have already done all the work for achieving this. If you want to explicitly ask for permission you can ask @Michael-Hoover. I don't know if he ever stated that it was okay in this forum, but he's cool with anyone using Twelve Clans code to create their own variants. I can see why you might not want to do that though as then it would not be an "official" map for this game, but a separate game listing. What you might do is just ask him to take your work and add the map variant in an update for you; if you don't want to make a separate game. If any of your suggestions get added we'll credit you in the description.
I'm glad to hear that you're enjoying the game.
-
@nethackfan1006 Thanks. I think that the the biggest advantage for this code change is that AI doesn't makes stupid decisions sacrificing its best units (heroes and Nobori) or refuse to build Nobori (hence the stat change for that unit). Other benefits are perhaps a matter of preference, agreed. How do I go about asking Michael to test out my variant for upgrades to Twelve-Clans and ask for him to incorporate a "50%" version (basically double unit cost and reduced unit creation) into a future release? I thought that was what I was asking by posting here. Is there something else I should do to communicate with Michael?
-
@daneffuller Oh your right. Sorry if that might have been confusing. I meant that you might want to DM him, so that if you have a bunch of conversations back and forth over code that it would not be in the main thread. I talked to @Michael-Hoover earlier and he said he would get back to you at some point soon.
-
@nethackfan1006 Thanks.
-
I believe this is the only map in download list which displays a "preview" image which does not display the map.
I don't know if it is not any longer mandatory for that image to be the image of the whole map (@LaFayette), but I suggest it to be.
I'm talking of
https://github.com/triplea-maps/twelve-clans/blob/master/preview.png
also displayed in
https://triplea-game.org/map/twelve-clans/
The reason is that a believe it is good to be able to see the image of the full map when you are looking at what you may download.