Quest thoughts
Post MTG Forge Related Programming Questions Here
Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins
24 posts
• Page 1 of 2 • 1, 2
Quest thoughts
by RumbleBBU » 03 Oct 2012, 14:52
Having spent enough time hacking the Sealed Deck mode, at least for now, I've (as you may have guessed already from my most recent commits) set my eyes on the Quest mode.
Quest mode is cool. My only real issue with it is...I'm not sure I want to play in a "full cardpool" mode all the time. Well yes, you can pick the format for your starting pool and boosters, but you will still get fully random cards as random rares and from spell stores. So I thought, why not extend that idea (chosen format) to all cards you acquire so you could play a sort of "limited environment" quest? All of this would of course be fully optional (preference-controlled) so the quest mode would work as before, if you want.
So here's what I'm planning to do:
- Add preference settings that allow you to use your Qpref.BOOSTER_FORMAT preference (instead of full cardpool) for spell store, random rares and jackpots.
- Add a button for explicitly selecting your Qpref.BOOSTER_FORMAT preference as and when you want.
- Of course, also write a HOW-TO on modifying your formats.txt file so that you can add any number of custom "fantasy" environments that you can switch between in the quest mode. You could, for example, start in a "Ravnica format", then switch to "Innistrad format" and start collecting cards from that format, and so on. Or whatever format you want (the formats.txt file allows that).
(- And after that, you would need enemy decks that are consistent with your selected format...)
Thoughts, comments? Also, if I add more QPrefs that will be stored, do I risk breaking old quest data files?
Quest mode is cool. My only real issue with it is...I'm not sure I want to play in a "full cardpool" mode all the time. Well yes, you can pick the format for your starting pool and boosters, but you will still get fully random cards as random rares and from spell stores. So I thought, why not extend that idea (chosen format) to all cards you acquire so you could play a sort of "limited environment" quest? All of this would of course be fully optional (preference-controlled) so the quest mode would work as before, if you want.
So here's what I'm planning to do:
- Add preference settings that allow you to use your Qpref.BOOSTER_FORMAT preference (instead of full cardpool) for spell store, random rares and jackpots.
- Add a button for explicitly selecting your Qpref.BOOSTER_FORMAT preference as and when you want.
- Of course, also write a HOW-TO on modifying your formats.txt file so that you can add any number of custom "fantasy" environments that you can switch between in the quest mode. You could, for example, start in a "Ravnica format", then switch to "Innistrad format" and start collecting cards from that format, and so on. Or whatever format you want (the formats.txt file allows that).
(- And after that, you would need enemy decks that are consistent with your selected format...)
Thoughts, comments? Also, if I add more QPrefs that will be stored, do I risk breaking old quest data files?
Re: Quest thoughts
by friarsol » 03 Oct 2012, 14:57
I'll add my comments here since it wasn't particularly a bug, but relevant to an earlier commit:
Please, don't take this as me trying to call out your changes. I like what you've been doing on the SealedDeck side of things, but I'm nervous about the balance that your recent change affects Quest: "When you win a quest booster, you can now select a specific set (in addition to format-based boosters)."
Does this mean I can take an Alpha booster everytime I win a quest game? I don't think that's really a good idea, not only will people be running around with Power extremely early, they can also sell the mundane cards for super-cash and break the balance I've put into Quest mode.
I think the general idea of this feature works. But it needs some limitations.
For example, in the first 10 Wins you can pick any Set specific booster from Standard, in the first 25 Wins you can pick any Set specific booster from Extended. In the first 50 Wins, you can pick any Set specific booster from Modern. Etc.
Please, don't take this as me trying to call out your changes. I like what you've been doing on the SealedDeck side of things, but I'm nervous about the balance that your recent change affects Quest: "When you win a quest booster, you can now select a specific set (in addition to format-based boosters)."
Does this mean I can take an Alpha booster everytime I win a quest game? I don't think that's really a good idea, not only will people be running around with Power extremely early, they can also sell the mundane cards for super-cash and break the balance I've put into Quest mode.
I think the general idea of this feature works. But it needs some limitations.
For example, in the first 10 Wins you can pick any Set specific booster from Standard, in the first 25 Wins you can pick any Set specific booster from Extended. In the first 50 Wins, you can pick any Set specific booster from Modern. Etc.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Quest thoughts
by RumbleBBU » 03 Oct 2012, 15:45
Guess I hadn't thought about that aspect.
Obviously the concept needs some more work...
The ultimate aim was simply to allow limiting the quest cardpool in various ways instead of playing with the full cardpool all the time. Like, what would the Quest mode have looked like, if it had been implemented around Urza's Saga block? My personal interest was in the older sets, since I'm not really up to speed with the modern MtG - I originally lost interest sometime around the Time Spiral block). Which, in turn, gave me the idea of exploring the possibility of different "limited quest environments", and the possibility of "time travelling" between them.
Maybe, for starters, the chosen format should limit what booster sets can be picked individually?

The ultimate aim was simply to allow limiting the quest cardpool in various ways instead of playing with the full cardpool all the time. Like, what would the Quest mode have looked like, if it had been implemented around Urza's Saga block? My personal interest was in the older sets, since I'm not really up to speed with the modern MtG - I originally lost interest sometime around the Time Spiral block). Which, in turn, gave me the idea of exploring the possibility of different "limited quest environments", and the possibility of "time travelling" between them.
Maybe, for starters, the chosen format should limit what booster sets can be picked individually?
Re: Quest thoughts
by Sloth » 03 Oct 2012, 15:59
I think a lot of users will appreciate these features. There were some requests to restrict spell shop cards to one format (mostly Standard or Modern).RumbleBBU wrote:So here's what I'm planning to do:
- Add preference settings that allow you to use your Qpref.BOOSTER_FORMAT preference (instead of full cardpool) for spell store, random rares and jackpots.
- Add a button for explicitly selecting your Qpref.BOOSTER_FORMAT preference as and when you want.
Last edited by Sloth on 03 Oct 2012, 16:00, edited 1 time in total.
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Re: Quest thoughts
by friarsol » 03 Oct 2012, 16:00
I think a bunch of us are in the same boat. I played from around Homelands to Prophecy.RumbleBBU wrote:Guess I hadn't thought about that aspect.Obviously the concept needs some more work...
The ultimate aim was simply to allow limiting the quest cardpool in various ways instead of playing with the full cardpool all the time. Like, what would the Quest mode have looked like, if it had been implemented around Urza's Saga block? My personal interest was in the older sets, since I'm not really up to speed with the modern MtG - I originally lost interest sometime around the Time Spiral block). Which, in turn, gave me the idea of exploring the possibility of different "limited quest environments", and the possibility of "time travelling" between them.
Maybe, for starters, the chosen format should limit what booster sets can be picked individually?
I think if you chose a non-Eternal format as your starting cardpool we could save that and then allow set breakdown from that. This would limit access to expensive boosters, but still let people restrict the cardpool with a bit more customization.
And if you are curious, I had a similar idea to what it sounds like you are getting to a while back:
viewtopic.php?f=52&t=2804&p=36422&hilit=quest#p36422
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Quest thoughts
by RumbleBBU » 03 Oct 2012, 18:05
Yeah, you're right - that sounds frighteningly close to what I think I'm thinking of, in a good way. Perhaps the only difference is that I wouldn't necessarily want a 'linear' progression - rather, give the player a choice which expansion(s) he wants to "unlock" next (or, think of it, even starts with!). There might be different price tags attached to the different expansions.
Maybe the next step I will experiment with is an environment (or format) that you can choose when you start your quest (a bit like now), and if you do, it will be enforced for the rest of the quest: all your boosters, spell store purchases and random rares will be limited by this environment. In this context, being able to choose the exact booster set might work.
This would basically be like a variation of the current format-based quest, which only limits your starting pool.
Maybe the next step I will experiment with is an environment (or format) that you can choose when you start your quest (a bit like now), and if you do, it will be enforced for the rest of the quest: all your boosters, spell store purchases and random rares will be limited by this environment. In this context, being able to choose the exact booster set might work.
This would basically be like a variation of the current format-based quest, which only limits your starting pool.
Re: Quest thoughts
by friarsol » 03 Oct 2012, 18:34
Yea there's no reason to force it to be limited in this fashion. Of course, 2 years ago Forge was a completely different beast. I think this was even before we broke out card files into individual txt files. (Imagine the conflicts!) And we didn't have any setinfo, or AbilityFactories, or a ton of major progress that we've made since then.RumbleBBU wrote:Yeah, you're right - that sounds frighteningly close to what I think I'm thinking of, in a good way. Perhaps the only difference is that I wouldn't necessarily want a 'linear' progression - rather, give the player a choice which expansion(s) he wants to "unlock" next (or, think of it, even starts with!). There might be different price tags attached to the different expansions.
Sounds like a good path. I still think we have to be careful with the Eternal formats and booster set choosing, but if you are going to force the restriction on a high level, it should work fairly well (and as Sloth said, we have had this request previously, but no major interest in trying to push the changes through)RumbleBBU wrote:Maybe the next step I will experiment with is an environment (or format) that you can choose when you start your quest (a bit like now), and if you do, it will be enforced for the rest of the quest: all your boosters, spell store purchases and random rares will be limited by this environment. In this context, being able to choose the exact booster set might work.
This would basically be like a variation of the current format-based quest, which only limits your starting pool.
I've never actually touched the save format of the Quest files, so maybe someone who did (Max or DoubleStrike possibly?) can speak up about how we handle backwards compatibility.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Quest thoughts
by Max mtg » 03 Oct 2012, 19:54
That should be a field in QuestData class - not a global preference. Different saves will store different settings. Isn't it better?RumbleBBU wrote:So here's what I'm planning to do:
- Add preference settings that allow you to use your Qpref.BOOSTER_FORMAT preference (instead of full cardpool) for spell store, random rares and jackpots.
- Add a button for explicitly selecting your Qpref.BOOSTER_FORMAT preference as and when you want.
Thoughts, comments? Also, if I add more QPrefs that will be stored, do I risk breaking old quest data files?
I suggest making the setting readonly, so that you choose the format only at the begining of the quest and cannot choose starting cardpool better than the cards player will gain while playing (disallow legacy starting poll with T2 boosters to receieve as prized)
If you have any trouble with olded quest saves, ask me. I have a huge experience dealing with quest mode.
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: Quest thoughts
by Xitax » 03 Oct 2012, 20:40
Just an idea: What if when you win a booster, you're given three to pick from? That way you can control what appears there and it would be exciting when you get a rare booster to pick.
Re: Quest thoughts
by Jaedayr » 05 Oct 2012, 03:18
I like the idea of starting with the earliest cards and work your way up to current day with opponents and rewards to match your progress. Similar to what Everquest MMO does, start a new server with everyone starting at level 1, and only have the early expansions. After awhile, release the next expansion, etc. Even though you may have max level chars on other servers, the progression servers start all over. Even though you have ultimate card collections on other quests, the progression quest starts you all over. You could advance at the earliest opportunity or stay where you are in hopes of getting more rares.
Of course I could also see this turning into an epic length quest.... taking hundreds and hundreds of wins to get to the end.
Of course I could also see this turning into an epic length quest.... taking hundreds and hundreds of wins to get to the end.

Re: Quest thoughts
by RumbleBBU » 05 Oct 2012, 12:06
Thanks for the comments. I have now committed what I have coded so far. I'm currently playing a Quest in a 'limited' mode, and it seems to work as I intended it to (I'm using a custom "Quest" format that limits my sets to those available in the old MtG Encyclopedia "godbook", plus some custom enemy decks that use more or less the same cardbase).
Basically, this is how it works now:
When you start a new quest, there is a new checkbox now below the format selection box: "Enforce format during quest". If you select this (it can be selected only when you have first selected the format-based starting pool), the game will remember the format setting and use it for the whole quest. It will affect the cards and boosters you are awarded when you win duels as well as the spell store inventory. There are only two exceptions:
- Theme decks that are not in the format can still be generated in the spell store. This is deliberate (because I couldn't think of a neat way to handle them for every imaginable format - except perhaps to disbale them completely when the format is being enforced).
- The enemy decks. Again, if the format were to be enforced here, we would need lots more enemy decks for all imaginable now and future formats. (If people submit them, this could be changed.)
There is also one more significant difference in game behavior: if you are playing in an enforced format, instead of selecting a format for your booster award, you get to choose a set. However, you may not choose freely. Typically, you are given a choice between two random sets that are in the format. Every 5 wins, you get to choose from 3 different sets, every 25 wins from 4 different sets, and every 50 wins, from 5 different sets. If you get a booster after losing a duel (Easy setting), you will not be able to choose at all: instead, you just get a booster from one random in-format set.
...and that's what I have coded and committed so far.
What next?
Maybe after winning a Challenge or a some other milestone achievement (every 100 wins? 200 wins? 500 wins?) you could see a screen that gives you the option to "unlock" one more expansion and add it to your current format. You would get a choice between, say, 3 more randomly picked expansions, and you would need to pay credits to unlock the expansion you choose. Unlocking an expansion could cost, for example, 3 * starter pack price for that expansion, but you would immediately get a free booster pack from that expansion. How does that sound? Any other suggestions?
Basically, this is how it works now:
When you start a new quest, there is a new checkbox now below the format selection box: "Enforce format during quest". If you select this (it can be selected only when you have first selected the format-based starting pool), the game will remember the format setting and use it for the whole quest. It will affect the cards and boosters you are awarded when you win duels as well as the spell store inventory. There are only two exceptions:
- Theme decks that are not in the format can still be generated in the spell store. This is deliberate (because I couldn't think of a neat way to handle them for every imaginable format - except perhaps to disbale them completely when the format is being enforced).
- The enemy decks. Again, if the format were to be enforced here, we would need lots more enemy decks for all imaginable now and future formats. (If people submit them, this could be changed.)
There is also one more significant difference in game behavior: if you are playing in an enforced format, instead of selecting a format for your booster award, you get to choose a set. However, you may not choose freely. Typically, you are given a choice between two random sets that are in the format. Every 5 wins, you get to choose from 3 different sets, every 25 wins from 4 different sets, and every 50 wins, from 5 different sets. If you get a booster after losing a duel (Easy setting), you will not be able to choose at all: instead, you just get a booster from one random in-format set.
...and that's what I have coded and committed so far.
What next?
Maybe after winning a Challenge or a some other milestone achievement (every 100 wins? 200 wins? 500 wins?) you could see a screen that gives you the option to "unlock" one more expansion and add it to your current format. You would get a choice between, say, 3 more randomly picked expansions, and you would need to pay credits to unlock the expansion you choose. Unlocking an expansion could cost, for example, 3 * starter pack price for that expansion, but you would immediately get a free booster pack from that expansion. How does that sound? Any other suggestions?
Re: Quest thoughts
by moomarc » 05 Oct 2012, 12:31
Sounds great to me. Perhaps unlocking a new set for your pool should cost more but you'd get a full sealed pack (60/75 cards) instead of a booster. That way you have more commons from that set to start giving some baseline strategy (if you're changing your strategy that is).
-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: Quest thoughts
by Max mtg » 05 Oct 2012, 13:55
http://svn.slightlymagic.net/websvn/dif ... &peg=17354
Please do not make references from core classes to quest-related ones.
forge.game.GameFormatQuest should be in forge.quest.* package, and there should be no reference from any forge.game.* class to forge.quest.*
All the area-specific methods should stay in same package that defines that special functionality
Please do not make references from core classes to quest-related ones.
forge.game.GameFormatQuest should be in forge.quest.* package, and there should be no reference from any forge.game.* class to forge.quest.*
All the area-specific methods should stay in same package that defines that special functionality
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: Quest thoughts
by RumbleBBU » 05 Oct 2012, 14:06
Will fix in the next revision.Max mtg wrote:Please do not make references from core classes to quest-related ones.
forge.game.GameFormatQuest should be in forge.quest.* package, and there should be no reference from any forge.game.* class to forge.quest.*
Thanks for pointing this out.
Re: Quest thoughts
by Max mtg » 05 Oct 2012, 14:23
http://svn.slightlymagic.net/websvn/dif ... &peg=17354
Please keep in mind that external code might modify the lists you are returning from GameFormat class. If any code does, that would be a pity. So make sure that either a copy of source list is returned, or the collection (iterator) is immutable.
You have repeated a number of time the same structure:
Please keep in mind that external code might modify the lists you are returning from GameFormat class. If any code does, that would be a pity. So make sure that either a copy of source list is returned, or the collection (iterator) is immutable.
You have repeated a number of time the same structure:
- Code: Select all
Predicate<CardEdition> myFilter = CardEdition.Predicates.xxxxxx;
if (qc.getFormat() != null) {
myFilter = Predicates.and(myFilter , isLegalInQuestFormat(qc.getFormat()));
}
- Code: Select all
public Predicate<CardPrinted> applyFormatFilter(Predicate<CardPrinted> source)
{
return qc.getFormat() == null ? source : Predicates.and(source, isLegalInQuestFormat(qc.getFormat()));
}
- Code: Select all
Predicate<CardEdition> myFilter = applyFormatFilter(CardEdition.Predicates.xxxxxx);
Single class for single responsibility.
- Max mtg
- Programmer
- Posts: 1997
- Joined: 02 Jul 2011, 14:26
- Has thanked: 173 times
- Been thanked: 334 times
24 posts
• Page 1 of 2 • 1, 2
Who is online
Users browsing this forum: No registered users and 57 guests