Forge version 1.3.10
Post MTG Forge Related Programming Questions Here
Moderators: timmermac, Agetian, friarsol, Blacksmith, KrazyTheFox, CCGHQ Admins
22 posts
• Page 1 of 2 • 1, 2
Forge version 1.3.10
by Chris H. » 01 Mar 2013, 14:12
Tentative target release date: Friday March 15.
-

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
by Rob Cashwalker » 02 Mar 2013, 16:08
beware the ides of march...
The Force will be with you, Always.
-

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
by moomarc » 02 Mar 2013, 16:31
At times like this
I want a "Like" button.
I want a "Like" button.
-Marc
-

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
by 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
- 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
by 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
by Agetian » 09 Mar 2013, 09:05
@ Max Mtg: Yep, the first problem is definitely solved!
- Agetian
- 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
by Max mtg » 09 Mar 2013, 10:56
Could not reproduce the 2nd issue - took the followin deck
Added Enlistment Officer to play via dev mode, but nothing unusual happened.
- 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
by 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
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
by swordshine » 09 Mar 2013, 12:17
I've tested it in Java 6, no glitch.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.
- swordshine
- Posts: 682
- Joined: 11 Jul 2010, 02:37
- Has thanked: 116 times
- Been thanked: 87 times
Re: Forge version 1.3.10
by moomarc » 09 Mar 2013, 12:35
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.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.
-Marc
-

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
by 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?
-

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
by myk » 11 Mar 2013, 13:05
I think the 15th is looking good -- do we have any blockers at this point?Chris H. wrote:Does this look like a good date to other people or should we hold off for another week?
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.I assume that the two branches will be merged after the next beta?
- 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
by 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
- Agetian
- Programmer
- Posts: 3490
- Joined: 14 Mar 2011, 05:58
- Has thanked: 684 times
- Been thanked: 572 times
Re: Forge version 1.3.10
by 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.
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.
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'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.
Re: Forge version 1.3.10
by 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
- Agetian
- Programmer
- Posts: 3490
- Joined: 14 Mar 2011, 05:58
- Has thanked: 684 times
- Been thanked: 572 times
22 posts
• Page 1 of 2 • 1, 2
Who is online
Users browsing this forum: No registered users and 24 guests