It is currently 21 Feb 2017, 09:45
   
Text Size

Bug Reports (snapshot builds)

Post MTG Forge Related Programming Questions Here

Moderators: timmermac, moomarc, DennisBergkamp, Rob Cashwalker, friarsol, Chris H., CCGHQ Admins

Re: Bug Reports (snapshot builds)

Postby fmartel » 06 Jan 2017, 18:20

timmermac wrote:
fmartel wrote:Description: [in commander, choosing a land with Sword of the Animist]

OutOfMemoryError | Open
Code: Select all
Forge Version:    1.5.58-SNAPSHOT-r32997
Operating System: Windows 7 6.1 amd64
Java Version:     1.8.0_25 Oracle Corporation

java.lang.OutOfMemoryError: GC overhead limit exceeded
   at net.miginfocom.layout.Grid.addToSizeGroup(Unknown Source)
   at net.miginfocom.layout.Grid.calcRowsOrColsSizes(Unknown Source)
   at net.miginfocom.layout.Grid.checkSizeCalcs(Unknown Source)
   at net.miginfocom.layout.Grid.layout(Unknown Source)
   at net.miginfocom.swing.MigLayout.layoutContainer(Unknown Source)
   at java.awt.Container.layout(Unknown Source)
   at java.awt.Container.doLayout(Unknown Source)
   at java.awt.Container.validateTree(Unknown Source)
   at java.awt.Container.validateTree(Unknown Source)
   at java.awt.Container.validateTree(Unknown Source)
   at java.awt.Container.validateTree(Unknown Source)
   at java.awt.Container.validateTree(Unknown Source)
   at java.awt.Container.validateTree(Unknown Source)
   at java.awt.Container.validateTree(Unknown Source)
   at java.awt.Container.validate(Unknown Source)
   at javax.swing.RepaintManager$3.run(Unknown Source)
   at javax.swing.RepaintManager$3.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at javax.swing.RepaintManager.validateInvalidComponents(Unknown Source)
   at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
   at java.awt.event.InvocationEvent.dispatch(Unknown Source)
   at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
   at java.awt.EventQueue.access$400(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.awt.EventQueue.dispatchEvent(Unknown Source)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
Note that I have 24GB RAM machine
The amount of physical RAM your machine has isn't relevant here. The key is how much of that is allocated for use by Java. If you right-click on forge.exe and click properties, you should see a window that, among other things, has a box that lists some parameters. Where it says Xms, you'll want to modify the number there to 4096. That means that Java now has access to 4 gigs of memory. I'm not sure if Java will let you allocate more or not.
Hmm, I'm not sure to follow you on that, is it on the Forge exucable (as you mentionned) or on the parameters of (global) Java ?
Attached is a picture of the détailed propreties of Forge.exe
Capture.PNG
Propreties of Forge.exe
fmartel
 
Posts: 184
Joined: 31 Dec 2013, 19:27
Location: Québec City
Has thanked: 8 times
Been thanked: 1 time

Re: Bug Reports (snapshot builds)

Postby stormcat » 06 Jan 2017, 18:35

:r32997
When Paradox Engine triggered, Artifacts ought to untap.
stormcat
 
Posts: 136
Joined: 17 Jun 2015, 05:32
Has thanked: 0 time
Been thanked: 2 times

Re: Bug Reports (snapshot builds)

Postby friarsol » 06 Jan 2017, 18:44

stormcat wrote::r32997
When Paradox Engine triggered, Artifacts ought to untap.
Hey Stormcat,

Could you post any Aether Revolt related issues in viewtopic.php?f=52&t=19629 at least until we have a release that contains the set?
friarsol
Global Moderator
 
Posts: 6961
Joined: 15 May 2010, 04:20
Has thanked: 218 times
Been thanked: 802 times

Re: Bug Reports (snapshot builds)

Postby pfps » 06 Jan 2017, 19:16

Agetian wrote:
pfps wrote:OK, I'm running r32993 and things are mostly working.

It also occurs to me that the ordering confirmation box isn't necessary. Just make that the initial order instead (and say something in the dual list box title, I guess). I'll see if I can make this work.
Well, the ordering confirmation was implemented to be able to change the order if necessary, that was discussed before and there were cases where this was relevant. It would be nice to still be able to change the order.

- Agetian
The idea is to not have a separate confirmation box. Instead, if there is a relevant ordering make that the initial ordering in the dual list box. The user can either accept that initial ordering or revise it using the usual methods.

peter
pfps
 
Posts: 48
Joined: 09 Jan 2015, 14:34
Has thanked: 0 time
Been thanked: 6 times

Re: Bug Reports (snapshot builds)

Postby pfps » 06 Jan 2017, 19:22

pfps wrote:OK, I'm running r32993 and things are mostly working.

I am seeing something strange with repeated ordering. I had 2 Amulets out and untapped using them first and then bounced a bounce land back. The next time I was offered to untap, then bounce, then untap, which wasn't what I had just done. I'll investigate further.
I found the bug. It turns out that the code that saves the ordering is saving a mapping from final to initial instead of from intial to final. This works OK if the reordering is diagonal, which will always be true with two abilities. With three or more abilities the wrong thing could happen.

The patch is
Code: Select all
-                    for (SpellAbility sa : activePlayerSAs) {
-                        savedOrder.add(orderedSAs.indexOf(sa));
+                    for (SpellAbility sa : orderedSAs) {
+                        savedOrder.add(activePlayerSAs.indexOf(sa));
This can be applied to the reverted code, I think, but I'm running on the new code that appears to affect AutoYield, so I shouldn't just commit what I have.
pfps
 
Posts: 48
Joined: 09 Jan 2015, 14:34
Has thanked: 0 time
Been thanked: 6 times

Re: Bug Reports (snapshot builds)

Postby pfps » 06 Jan 2017, 19:28

friarsol wrote:
fmartel wrote:-r32997, in commander, the "Auto yeild" does not work for Soul Warden. I always have to push "Entre" to confirm the action. Even If I right-click and tell it to "Atomate" it.
This is definitely related to the ordering change. Since the triggers no longer "match" it isn't passed for auto-trigger handling.
Is there a discussion of how Auto yield is supposed to work? I can think of several variants ranging from same underlying ability (i.e., same internal id) to same text to same effect.
pfps
 
Posts: 48
Joined: 09 Jan 2015, 14:34
Has thanked: 0 time
Been thanked: 6 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 06 Jan 2017, 19:30

@ pfps: Thanks a lot, your changes sound reasonable, it'd be nice to have the ordering a part of the list box (though the existence of mobile Forge probably needs to be accounted for in that case, I can test if it works well in mobile Forge if necessary).

I also committed your modification to the ordering save logic, thanks! :)

- Agetian
Agetian
Programmer
 
Posts: 2466
Joined: 14 Mar 2011, 05:58
Has thanked: 483 times
Been thanked: 289 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 06 Jan 2017, 19:33

pfps wrote:
friarsol wrote:
fmartel wrote:-r32997, in commander, the "Auto yeild" does not work for Soul Warden. I always have to push "Entre" to confirm the action. Even If I right-click and tell it to "Atomate" it.
This is definitely related to the ordering change. Since the triggers no longer "match" it isn't passed for auto-trigger handling.
Is there a discussion of how Auto yield is supposed to work? I can think of several variants ranging from same underlying ability (i.e., same internal id) to same text to same effect.
Umm good question, actually I'm not sure what the best approach is, I'd love to hear opinions on this. :)

- Agetian
Agetian
Programmer
 
Posts: 2466
Joined: 14 Mar 2011, 05:58
Has thanked: 483 times
Been thanked: 289 times

Re: Bug Reports (snapshot builds)

Postby friarsol » 06 Jan 2017, 20:14

pfps wrote:
friarsol wrote:
fmartel wrote:-r32997, in commander, the "Auto yeild" does not work for Soul Warden. I always have to push "Entre" to confirm the action. Even If I right-click and tell it to "Atomate" it.
This is definitely related to the ordering change. Since the triggers no longer "match" it isn't passed for auto-trigger handling.
Is there a discussion of how Auto yield is supposed to work? I can think of several variants ranging from same underlying ability (i.e., same internal id) to same text to same effect.
I believe it's always been a single card's ability. So if I have two different Soul Sisters in play, I have to enable auto-accept for each one. I think the key is that a single trigger should be handled this way, no matter what triggered it. I think I'd be ok if this was expanded so that autoyielding to a single Soul Sister would autoyield to them all, but it's possible that people would want the flexibility of doing it individually.
friarsol
Global Moderator
 
Posts: 6961
Joined: 15 May 2010, 04:20
Has thanked: 218 times
Been thanked: 802 times

Re: Bug Reports (snapshot builds)

Postby fmartel » 06 Jan 2017, 20:19

Agetian wrote:
pfps wrote:Is there a discussion of how Auto yield is supposed to work? I can think of several variants ranging from same underlying ability (i.e., same internal id) to same text to same effect.
Umm good question, actually I'm not sure what the best approach is, I'd love to hear opinions on this. :)

- Agetian
The old way was working fine for me. i.e., I have Rampaging Balloths OTB, I play a land, his mechanics works (droping a 4/4 Beast Token). I press the "Y" key to automate its actions. there could be an option (as I saw here viewtopic.php?f=26&t=1516&p=208107#p208107). but why the sudden change ?
fmartel
 
Posts: 184
Joined: 31 Dec 2013, 19:27
Location: Québec City
Has thanked: 8 times
Been thanked: 1 time

Re: Bug Reports (snapshot builds)

Postby Agetian » 06 Jan 2017, 20:37

I agree with Sol's reasoning about flexibility, it's better to do it on a per-card basis (so, another card with the same ability would need to be auto-yielded separately).

- Agetian
Agetian
Programmer
 
Posts: 2466
Joined: 14 Mar 2011, 05:58
Has thanked: 483 times
Been thanked: 289 times

Re: Bug Reports (snapshot builds)

Postby stormcat » 06 Jan 2017, 21:13

:r33003
The cards of return to library top by ability of Scroll Rack become reverse order of my intention.
stormcat
 
Posts: 136
Joined: 17 Jun 2015, 05:32
Has thanked: 0 time
Been thanked: 2 times

Re: Bug Reports (snapshot builds)

Postby pfps » 06 Jan 2017, 22:24

fmartel wrote:
Agetian wrote:
pfps wrote:Is there a discussion of how Auto yield is supposed to work? I can think of several variants ranging from same underlying ability (i.e., same internal id) to same text to same effect.
Umm good question, actually I'm not sure what the best approach is, I'd love to hear opinions on this. :)

- Agetian
The old way was working fine for me. i.e., I have Rampaging Balloths OTB, I play a land, his mechanics works (droping a 4/4 Beast Token). I press the "Y" key to automate its actions. there could be an option (as I saw here viewtopic.php?f=26&t=1516&p=208107#p208107). but why the sudden change ?
The old (current, I guess, with the recent reversion) way has a game problem
with simultaneous actions. Two simultaneous actions that did the different
things looked exactly the same. This used to cause problems with manual
ordering as users had to guess which Amulet of Vigor effect untapped which
land. With the recent changes to the effect ordering code there isn't any
way to affect the order at all.

What I did was to add in more information to trigger descriptions so that
triggers with different effects looked different. This meant that some
triggers that had the same effect looked different (e.g., add one life
when a creature enters the battlefield when two creatures enter at once).
This then affects auto yield as auto yield uses the same description.
pfps
 
Posts: 48
Joined: 09 Jan 2015, 14:34
Has thanked: 0 time
Been thanked: 6 times

Re: Bug Reports (snapshot builds)

Postby pfps » 06 Jan 2017, 22:33

Agetian wrote:I agree with Sol's reasoning about flexibility, it's better to do it on a per-card basis (so, another card with the same ability would need to be auto-yielded separately).

- Agetian
I think that this is not how auto-yield worked. I tried auto-yielding (in a version that doesn't have my changes) on an Evolve effect and Evolve auto-yielded for all creatures.

I agree that this view of auto-yield is best. Implementing it is a separate issue if ordering is to be fixed as well. I see two possibilities:
1/ autoyield remembers the original effect
2/ autoyield remembers the description of the original effect and the card it came from
However, I don't know how to access the original effect, i.e., one that isn't wrapped.
pfps
 
Posts: 48
Joined: 09 Jan 2015, 14:34
Has thanked: 0 time
Been thanked: 6 times

Re: Bug Reports (snapshot builds)

Postby tasteful » 07 Jan 2017, 02:58

Description: In draft, AI's Thalakos Deceiver stalls out the game with this error whenever it activates its ability.

NullPointerException | Open
Code: Select all
Forge Version:    1.5.58-SNAPSHOT-r-1
Operating System: Mac OS X 10.12 x86_64
Java Version:     1.8.0_111 Oracle Corporation

java.lang.NullPointerException
   at forge.ai.ability.ControlGainAi$1.apply(ControlGainAi.java:139)
   at forge.ai.ability.ControlGainAi$1.apply(ControlGainAi.java:128)
   at com.google.common.collect.Iterators$7.computeNext(Iterators.java:647)
   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
   at forge.util.collect.FCollection.<init>(FCollection.java:90)
   at forge.game.card.CardCollection.<init>(CardCollection.java:115)
   at forge.game.card.CardLists.filter(CardLists.java:255)
   at forge.ai.ability.ControlGainAi.canPlayAI(ControlGainAi.java:128)
   at forge.ai.ability.ControlGainAi.chkAIDrawback(ControlGainAi.java:286)
   at forge.ai.SpellAbilityAi.chkDrawbackWithSubs(SpellAbilityAi.java:241)
   at forge.ai.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:128)
   at forge.ai.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:119)
   at forge.ai.AiController.doTrigger(AiController.java:1205)
   at forge.ai.PlayerControllerAi.prepareSingleSa(PlayerControllerAi.java:707)
   at forge.ai.PlayerControllerAi.orderAndPlaySimultaneousSa(PlayerControllerAi.java:695)
   at forge.game.zone.MagicStack.chooseOrderOfSimultaneousStackEntry(MagicStack.java:863)
   at forge.game.zone.MagicStack.addAllTriggeredAbilitiesToStack(MagicStack.java:829)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:911)
   at forge.game.GameAction.startGame(GameAction.java:1462)
   at forge.game.Match.startGame(Match.java:95)
   at forge.match.HostedMatch$2.run(HostedMatch.java:220)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at java.lang.Thread.run(Thread.java:745)
Description: Same thing happens when the same AI plays its Legacy's Allure

NullPointerException | Open
Code: Select all
Forge Version:    1.5.58-SNAPSHOT-r-1
Operating System: Mac OS X 10.12 x86_64
Java Version:     1.8.0_111 Oracle Corporation

java.lang.NullPointerException
   at forge.ai.ability.ControlGainAi$1.apply(ControlGainAi.java:139)
   at forge.ai.ability.ControlGainAi$1.apply(ControlGainAi.java:128)
   at com.google.common.collect.Iterators$7.computeNext(Iterators.java:647)
   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
   at forge.util.collect.FCollection.<init>(FCollection.java:90)
   at forge.game.card.CardCollection.<init>(CardCollection.java:115)
   at forge.game.card.CardLists.filter(CardLists.java:255)
   at forge.ai.ability.ControlGainAi.canPlayAI(ControlGainAi.java:128)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:29)
   at forge.ai.AiController.canPlaySa(AiController.java:654)
   at forge.ai.AiController.canPlayAndPayFor(AiController.java:641)
   at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1158)
   at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1133)
   at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1072)
   at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:392)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:925)
   at forge.game.GameAction.startGame(GameAction.java:1462)
   at forge.game.Match.startGame(Match.java:95)
   at forge.match.HostedMatch$2.run(HostedMatch.java:220)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at java.lang.Thread.run(Thread.java:745)
tasteful
 
Posts: 60
Joined: 04 Nov 2013, 23:53
Has thanked: 3 times
Been thanked: 1 time

PreviousNext

Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 1 guest


Who is online

In total there is 1 user online :: 0 registered, 0 hidden and 1 guest (based on users active over the past 10 minutes)
Most users ever online was 279 on 11 Jul 2013, 22:03

Users browsing this forum: No registered users and 1 guest

Login Form