It is currently 02 Nov 2025, 06:55
   
Text Size

Forge version 1.3.10

Post MTG Forge Related Programming Questions Here

Moderators: timmermac, Agetian, friarsol, Blacksmith, KrazyTheFox, CCGHQ Admins

Forge version 1.3.10

Postby Chris H. » 01 Mar 2013, 14:12

Tentative target release date: Friday March 15.
User avatar
Chris H.
Forge Moderator
 
Posts: 6320
Joined: 04 Nov 2008, 12:11
Location: Mac OS X Yosemite
Has thanked: 644 times
Been thanked: 643 times

Re: Forge version 1.3.10

Postby Rob Cashwalker » 02 Mar 2013, 16:08

beware the ides of march...
The Force will be with you, Always.
User avatar
Rob Cashwalker
Programmer
 
Posts: 2167
Joined: 09 Sep 2008, 15:09
Location: New York
Has thanked: 5 times
Been thanked: 40 times

Re: Forge version 1.3.10

Postby moomarc » 02 Mar 2013, 16:31

At times like this
I want a "Like" button.
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

Re: Forge version 1.3.10

Postby Agetian » 08 Mar 2013, 19:05

Some bugs that I consider to be possible 1.3.10 blockers, at least they are serious enough to hang the game every once in a while. Have been around for at least the last few days, the last one is particularly long-living and has been around since at least early post-1.3.9 SVN builds.

- On the second and the third duels in a match, you have to click OK to get to the question about whether you'd like to mulligan or not, as if you have to go through the phase of the previous game before it lets you on to the mulligan part of the next round. While seemingly not super critical, if it gets stuck on one of the combat phases, it gets stuck for good (I had to completely forfeit the game). - SOLVED!

- Sometimes dialog windows do not display fully and end up being completely empty. This particularly concerns dialog windows asking you to choose a card from a list - it's very easy to reproduce this on my machine with a card called Enlistment Officer. Just add it to play via a dev mode, then work through the procedure of choosing cards from lists. If it didn't glitch on the first go, try again. It always glitches for me on either 2nd or 3rd attempt, sometimes on the 1st attempt. This tends to not only to force you to forfeit the game (or, even if you manage to X out of the blank window, forfeit the effect you wanted to play), it also has a high probability to hang your game for good in such a manner than only killing the process helps. Btw, it happens not only with this particular card, it can happen with any card that creates a pop-up window like that. It's just very easy to reproduce with Enlistment Officer. - SOLVED!

- Agetian
Last edited by Agetian on 11 Mar 2013, 13:47, edited 2 times in total.
Agetian
Programmer
 
Posts: 3490
Joined: 14 Mar 2011, 05:58
Has thanked: 684 times
Been thanked: 572 times

Re: Forge version 1.3.10

Postby Max mtg » 09 Mar 2013, 06:51

Agetian, see if 20194 fixes the first problem
Single class for single responsibility.
Max mtg
Programmer
 
Posts: 1997
Joined: 02 Jul 2011, 14:26
Has thanked: 173 times
Been thanked: 334 times

Re: Forge version 1.3.10

Postby Agetian » 09 Mar 2013, 09:05

@ Max Mtg: Yep, the first problem is definitely solved!

- Agetian
Agetian
Programmer
 
Posts: 3490
Joined: 14 Mar 2011, 05:58
Has thanked: 684 times
Been thanked: 572 times

Re: Forge version 1.3.10

Postby Max mtg » 09 Mar 2013, 10:56

Could not reproduce the 2nd issue - took the followin deck
SoldierlessSoldiers.deq | Open
Main:
4 x Thran Foundry
4 x Soldier of Fortune
4 x Swamp
4 x Gemstone Mine
4 x Thran Weaponry
4 x Island
4 x Forest
4 x Vodalian Soldiers
4 x Spike Soldier
4 x Scavenged Weaponry
4 x Tawnos's Weaponry
4 x Mountain
4 x Legacy Weapon
4 x Dwarven Soldier
4 x Yotian Soldier


Added Enlistment Officer to play via dev mode, but nothing unusual happened.
Single class for single responsibility.
Max mtg
Programmer
 
Posts: 1997
Joined: 02 Jul 2011, 14:26
Has thanked: 173 times
Been thanked: 334 times

Re: Forge version 1.3.10

Postby Agetian » 09 Mar 2013, 11:46

The issue is definitely present for me in r20198. Steps I've taken:

1) Started a random Constructed match, two-colored decks for me and for my opponent (don't think this matters).
2) In my Main1 phase, used the dev mode to Add Card to Play (Enlistment Officer).
3) When the card prompted me to choose cards, hit Enter repeatedly to go through all the windows.
4) If I was lucky not to get the glitch, repeated the steps 2 and 3 until it did glitch.

This time around I had to add four Enlistment Officers before the thing triggered, but it did eventually trigger (on the 5th one this time, though usually 2-3 is enough). It looks like some kind of concurrency deadlock issue to me or something along those lines, it doesn't trigger every time and I have no idea what exactly makes it trigger, but it does trigger (and it indeed does trigger in less extreme circumstances during normal games where, all of a sudden, I'd get a blank hanging window out of nowhere trying to play a certain card that asks me to choose or order cards or somethlng along those lines). I'm not sure if this may be dependent on hardware in any way (I mean, if it's more or less likely to occur on certain less or more powerful hardware... if it matters, the PC it does occur on in scenarios like above is a Core 2 Duo E8400 with 4 GB RAM and a 32-bit Windows Vista).

P.S. This might be dependent on the Java version, too - I tried it on an old portable installation of Java 6u30 and it seemed not to glitch (at least I tried 15 Officers or so and it didn't glitch even once), while switching back to the main Java 7u15 made it glitch systematically in the above-mentioned fashion.

- Agetian
Agetian
Programmer
 
Posts: 3490
Joined: 14 Mar 2011, 05:58
Has thanked: 684 times
Been thanked: 572 times

Re: Forge version 1.3.10

Postby swordshine » 09 Mar 2013, 12:17

Agetian wrote:P.S. This might be dependent on the Java version, too - I tried it on an old portable installation of Java 6u30 and it seemed not to glitch (at least I tried 15 Officers or so and it didn't glitch even once), while switching back to the main Java 7u15 made it glitch systematically in the above-mentioned fashion.
I've tested it in Java 6, no glitch.
swordshine
 
Posts: 682
Joined: 11 Jul 2010, 02:37
Has thanked: 116 times
Been thanked: 87 times

Re: Forge version 1.3.10

Postby moomarc » 09 Mar 2013, 12:35

Agetian wrote:P.S. This might be dependent on the Java version, too - I tried it on an old portable installation of Java 6u30 and it seemed not to glitch (at least I tried 15 Officers or so and it didn't glitch even once), while switching back to the main Java 7u15 made it glitch systematically in the above-mentioned fashion.
I'm running java 7 and couldn't get the blank window glitch, but by hitting enter like crazy when it hits the stack (before the first window popup) I could get it to freeze the application forcing me to terminate the process.
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

Re: Forge version 1.3.10

Postby Chris H. » 11 Mar 2013, 12:33

Chris H. wrote:Tentative target release date: Friday March 15.
 
Does this look like a good date to other people or should we hold off for another week?

It looks like one of the two bugs that were reported has been fixed.

I assume that the two branches will be merged after the next beta?
User avatar
Chris H.
Forge Moderator
 
Posts: 6320
Joined: 04 Nov 2008, 12:11
Location: Mac OS X Yosemite
Has thanked: 644 times
Been thanked: 643 times

Re: Forge version 1.3.10

Postby myk » 11 Mar 2013, 13:05

Chris H. wrote:Does this look like a good date to other people or should we hold off for another week?
I think the 15th is looking good -- do we have any blockers at this point?

I assume that the two branches will be merged after the next beta?
That's true for mine, at least. I hope to get the migration code done within the next few days and then test it heavily for a while, merging it sometime in the first third of the next dev window.
myk
 
Posts: 439
Joined: 17 Jan 2013, 02:39
Location: California
Has thanked: 38 times
Been thanked: 57 times

Re: Forge version 1.3.10

Postby Agetian » 11 Mar 2013, 13:31

@ Chris: I think 15th sounds fine! The blocker issues are both gone, and personally I'm not aware of anything else critical at the moment. As for my branch, it's definitely going to be merged at a later date, either post-1.3.10 or maybe even post-1.3.11 depending on how fast I work.

- Agetian
Agetian
Programmer
 
Posts: 3490
Joined: 14 Mar 2011, 05:58
Has thanked: 684 times
Been thanked: 572 times

Re: Forge version 1.3.10

Postby RumbleBBU » 12 Mar 2013, 10:28

Happy to confirm that the lag/slowness issue is indeed fixed now!

However, there's still at least one outstanding problem. AI casting Man-o'-War still leads to an infinite loop + crash. This wasn't the case in the earlier versions, so this is a new bug. Here's the dump, again trimmed because it wouldn't post otherwise. How to reproduce it - just give the AI (who needs to have the required mana sources, of course) Man-o'-War and watch what happens.

StackOverflowError | Open
Code: Select all
Forge Version:    SVN
Operating System: Windows XP 5.1 x86
Java Version:     1.6.0_21 Sun Microsystems Inc.

java.lang.StackOverflowError
   at java.util.regex.Pattern.range(Unknown Source)
   at java.util.regex.Pattern.clazz(Unknown Source)
   at java.util.regex.Pattern.sequence(Unknown Source)
   at java.util.regex.Pattern.expr(Unknown Source)
   at java.util.regex.Pattern.compile(Unknown Source)
   at java.util.regex.Pattern.<init>(Unknown Source)
   at java.util.regex.Pattern.compile(Unknown Source)
   at java.lang.String.split(Unknown Source)
   at java.lang.String.split(Unknown Source)
   at forge.game.zone.ZoneType.listValueOf(ZoneType.java:63)
   at forge.Card.canBeTargetedBy(Card.java:8899)
   at forge.card.spellability.SpellAbility.canTarget(SpellAbility.java:1327)
   at forge.CardPredicates$7.apply(CardPredicates.java:99)
   at forge.CardPredicates$7.apply(CardPredicates.java:1)
   at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
   at com.google.common.collect.Lists.newArrayList(Lists.java:144)
   at com.google.common.collect.Lists.newArrayList(Lists.java:125)
   at forge.CardLists.filter(CardLists.java:251)
   at forge.CardLists.getTargetableCards(CardLists.java:220)
   at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:700)
   at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
   at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
   at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
   at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
   at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
   at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
   at com.google.common.collect.Lists.newArrayList(Lists.java:144)
   at com.google.common.collect.Lists.newArrayList(Lists.java:125)
   at forge.CardLists.filter(CardLists.java:251)
   at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
   at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
   at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
   at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
   at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
   at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
   at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
   at com.google.common.collect.Lists.newArrayList(Lists.java:144)
   at com.google.common.collect.Lists.newArrayList(Lists.java:125)
   at forge.CardLists.filter(CardLists.java:251)
   at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
   at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
   at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
   at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
   at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
   at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
   at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
   at com.google.common.collect.Lists.newArrayList(Lists.java:144)
   at com.google.common.collect.Lists.newArrayList(Lists.java:125)
   at forge.CardLists.filter(CardLists.java:251)
   at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
   at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
   at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
   at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
   at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
   at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
   at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
   at com.google.common.collect.Lists.newArrayList(Lists.java:144)
   at com.google.common.collect.Lists.newArrayList(Lists.java:125)
   at forge.CardLists.filter(CardLists.java:251)
   at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
   at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
   at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
   at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
   at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
   at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
   at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
   at com.google.common.collect.Lists.newArrayList(Lists.java:144)
   at com.google.common.collect.Lists.newArrayList(Lists.java:125)
   at forge.CardLists.filter(CardLists.java:251)
   at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
   at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
   at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
   at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
   at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
   at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
   at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
   at com.google.common.collect.Lists.newArrayList(Lists.java:144)
   at com.google.common.collect.Lists.newArrayList(Lists.java:125)
   at forge.CardLists.filter(CardLists.java:251)
   at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
   at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
   at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
   at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
   at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
   at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
   at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
   at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
   at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
   at com.google.common.collect.Lists.newArrayList(Lists.java:144)
   at com.google.common.collect.Lists.newArrayList(Lists.java:125)
   at forge.CardLists.filter(CardLists.java:251)
   at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
   at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
   at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
   at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
   at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
   at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java
... (truncated)
I would tag this relatively major at least in the context of the Jamuraa world since many blue opponents have Man-o'-War in their decks.
I'll try to have a look at it but since I'm largely unfamiliar with the related parts of the source code, the chances that I can produce the correct fix are fairly slim.
User avatar
RumbleBBU
 
Posts: 394
Joined: 18 Aug 2012, 04:24
Has thanked: 29 times
Been thanked: 66 times

Re: Forge version 1.3.10

Postby Agetian » 14 Mar 2013, 07:28

Also, here's a bug of rather major severity as it might affect a significant number of cards: cards with AB Destroy/DestroyAll, at least the ones the effect of which triggers after the card goes to graveyard for one reason or another (Wall of Corpses, Abu Ja'far etc.), do not work correctly (the "destroy" ability does not resolve correctly and the card that is supposed to be destroyed does not get destroyed).

- Agetian
Agetian
Programmer
 
Posts: 3490
Joined: 14 Mar 2011, 05:58
Has thanked: 684 times
Been thanked: 572 times

Next

Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 24 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 24 users online :: 0 registered, 0 hidden and 24 guests (based on users active over the past 10 minutes)
Most users ever online was 9298 on 10 Oct 2025, 12:54

Users browsing this forum: No registered users and 24 guests

Login Form