Dominion Strategy Forum

Please login or register.

Login with username, password and session length
Pages: 1 ... 6 7 [8] 9 10 11  All

Author Topic: Features Thread  (Read 107436 times)

0 Members and 1 Guest are viewing this topic.

theblankman

  • Witch
  • *****
  • Offline Offline
  • Posts: 461
  • Respect: +383
    • View Profile
Re: Features Thread
« Reply #175 on: April 19, 2015, 01:26:26 pm »
+3

Okay, I'm gonna pitch a far-out idea, since MF does seem receptive to users developing on their platform (API made the list of desired features)...

If setting up and documenting a good API proves challenging, what about open-sourcing the client?  That ought to accomplish the same things as an API for client extension, and then some.  People who wanted to develop features the way we did on Salvager could literally put them into a version of the client.  They could also contribute those features directly back to MF, to potentially be folded into the official product if desired. 

I'm bringing this up now because I just realized that in the current version, we mostly do have the client source.  Since it's HTML+JS, we can hit "view source" in the browser, inspect the DOM, etc.  That's what made Salvager possible in the first place; people were able to look under the hood of the existing client to see where/how an extension could hook into it.  So releasing the client source would be giving user-devs what they have now, just in a nicer, more official way.

Note I said client, not server, obviously MF has a vested interest in keeping some or all of the online Dominion code private and I respect that.  Even a client-side source release could be under a license with terms like, "this code and modifications to it can only be used to connect to MF's Dominion server(s)."
Logged
it's a shame that full-random is the de facto standard

Lord Humanton

  • Dominion Online Staff
  • *****
  • Offline Offline
  • Posts: 35
  • Respect: +240
    • View Profile
Re: Features Thread
« Reply #176 on: April 19, 2015, 03:40:27 pm »
+5

One item that hasn't been mentioned much because most people here play little multiplayer: when someone resigns or quits in multiplayer, the game should not end. Instead, the best bot should replace the player who resigned/quit.

In fact, more people here might play multiplayer if this were changed.

I would say replace them with the bot closest to them in rating (or perhaps the one with the lowest rating higher than theirs).

This has certainly been suggested before. On the plus side:
1) Everybody's time isn't be wasted if there's an interesting battle, but one player is a jerk or has connection problems.
2) It takes away king-maker power, e.g. if one of the remaining players is building up an awesome engine while another is just buying VP cards

I think it's a good feature, but also has some issues:
1) Replacement would work a lot better if there were a real variety of bot strengths, but right now, that's not the case. There is basically only Serf Bot who plays like a beginner, and the rest who play like experienced middle-of-the-road players. (Really Lord Bottington is supposed to the best, as the others are dumbed down in certain ways, but in practice, that only comes into play on certain types of boards, like when Village Bot is buying a millions Schemes because it makes him happy.) So, I like this whole idea better when there's a much better bot (btw I can do very easily as soon as I get time) and better variations on dumbing it down.
2) Ratings may be involved, which is a catalyst for making players very upset, especially if they see something unexpected. In this case some will see a bait-and-switch on their opponent: "I had a great strategy geared to that opponent and then a bot stepped in playing differently and it ruined my plans and made me lose rating points." And rating the game at the time of the quit doesn't fix this, because a player will be unhappy that he got rated as a loser when he ultimately won the game. So I like this better for unrated games.

Also, can we keep the alchemy discussion elsewhere? We've definitely had this conversation before and I would prefer the MF people not have to wade through it to see feature suggestions.

Okay, I had a lot to say on that topic, but I'll keep quiet. :-)
Logged

LastFootnote

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 7495
  • Shuffle iT Username: LastFootnote
  • Respect: +10721
    • View Profile
Re: Features Thread
« Reply #177 on: April 19, 2015, 03:44:03 pm »
+7

I think a player that drops out doesn't need to be replaced by a bot. The game can continue without that player. It's possible that there will need to be some very rudimentary AI for the cases where the player dropped during his/her own turn, but that's it. Yes it means that there will be too many Victory/Curse cards in cases where all but two players drop out very early, but that doesn't just ruin those games.
Logged

dondon151

  • 2012 US Champion
  • *
  • Offline Offline
  • Posts: 2522
  • Respect: +1856
    • View Profile
Re: Features Thread
« Reply #178 on: April 19, 2015, 03:54:36 pm »
+8

When a player in a multiplayer game drops out, I think the other players should be prompted if they want to continue the game. If all players agree, then the game continues.
Logged

enfynet

  • Torturer
  • *****
  • Offline Offline
  • Posts: 1691
  • Respect: +1162
    • View Profile
    • JD's Custom Clubs
Re: Features Thread
« Reply #179 on: April 19, 2015, 03:56:20 pm »
0

Without going back and reading the whole thread:

For Mobile development, has the idea come up to allow multiple games without time-out issues? Playing your turn would be the Mobile equivalent of replying to a text message, or snapchat, or facebook/twitter post. I know this is probably a long shot, but it is becoming more common in mobile gaming to have multiple "matches" without worrying about being timed out.
Logged
"I have no special talents. I am only passionately curious."

Titandrake

  • Mountebank
  • *****
  • Offline Offline
  • Posts: 2210
  • Respect: +2854
    • View Profile
Re: Features Thread
« Reply #180 on: April 19, 2015, 03:59:06 pm »
+2

Without going back and reading the whole thread:

For Mobile development, has the idea come up to allow multiple games without time-out issues? Playing your turn would be the Mobile equivalent of replying to a text message, or snapchat, or facebook/twitter post. I know this is probably a long shot, but it is becoming more common in mobile gaming to have multiple "matches" without worrying about being timed out.

I know async gameplay was discussed on these forums, and people pointed out that it would take forever to do things like, play an Advisor engine, or a Scrying Pool game when a player has Moat/other reactions.

Edit: It would probably be okay with Base only, at worst you have Militia to worry about, but I'd rather see a synchronous version working first.
« Last Edit: April 19, 2015, 04:00:36 pm by Titandrake »
Logged
I have a blog! It's called Sorta Insightful. Check it out?

enfynet

  • Torturer
  • *****
  • Offline Offline
  • Posts: 1691
  • Respect: +1162
    • View Profile
    • JD's Custom Clubs
Re: Features Thread
« Reply #181 on: April 19, 2015, 04:00:28 pm »
0

Without going back and reading the whole thread:

For Mobile development, has the idea come up to allow multiple games without time-out issues? Playing your turn would be the Mobile equivalent of replying to a text message, or snapchat, or facebook/twitter post. I know this is probably a long shot, but it is becoming more common in mobile gaming to have multiple "matches" without worrying about being timed out.

I know async gameplay was discussed on these forums, and people pointed out that it would take forever to do things like, play an Advisor engine, or a Scrying Pool game when a player has Moat/other reactions.
Ah, right. Forgot about the interactive decisions.
Logged
"I have no special talents. I am only passionately curious."

pubby

  • Minion
  • *****
  • Offline Offline
  • Posts: 548
  • Respect: +1046
    • View Profile
Re: Features Thread
« Reply #182 on: April 19, 2015, 04:02:23 pm »
0

Replacement would work a lot better if there were a real variety of bot strengths, but right now, that's not the case.
I've noticed most quits either happen at the start of the game (turn 1), or very close to the end (turn 15). If it's very early then I don't care about the result and so I'd rather start a new game than play with a bot. If it's very late then the bot's strength doesn't matter as much because "buy as many victory cards as possible" becomes a pretty good strategy regardless of the kingdom. So a variety of bot strengths would be nice, but it may be less important than you think.

Also, I haven't been following this thread too closely, but has Linux support been confirmed yet? I would have no way of playing otherwise.
Logged

theblankman

  • Witch
  • *****
  • Offline Offline
  • Posts: 461
  • Respect: +383
    • View Profile
Re: Features Thread
« Reply #183 on: April 19, 2015, 04:30:24 pm »
0

Also, I haven't been following this thread too closely, but has Linux support been confirmed yet? I would have no way of playing otherwise.
Nor would I.  I haven't seen confirmation or denial, just a statement that desktop support will initially be through Unity Web Player, although in this thread Lord Humanton has implied that there would be native desktop builds.  Unity Web Player is for Win/Mac only, so Linux users would need a native build, though I have also found some google results about getting Unity Web player for Windows to run under Wine (but I doubt I'd go to that much trouble... no offense, I love Dominion but getting stuff to work under wine can be a real headache sometimes).
« Last Edit: April 19, 2015, 04:32:52 pm by theblankman »
Logged
it's a shame that full-random is the de facto standard

Lord Humanton

  • Dominion Online Staff
  • *****
  • Offline Offline
  • Posts: 35
  • Respect: +240
    • View Profile
Re: Features Thread
« Reply #184 on: April 19, 2015, 04:45:33 pm »
+8

I haven't been following this thread too closely, but has Linux support been confirmed yet? I would have no way of playing otherwise.

At the very least you should be able to able to play in a browser, because we'll target Unity 5's WebGL build, which just needs any browser supporting WebGL and asm.js.

Incidentally, ignore anything you read about the Unity webplayer and Linux, because that's old tech. It's based on the Netscape plugin API which is being phased out in browsers these days due to the security holes it creates.
Logged

theblankman

  • Witch
  • *****
  • Offline Offline
  • Posts: 461
  • Respect: +383
    • View Profile
Re: Features Thread
« Reply #185 on: April 19, 2015, 07:11:59 pm »
0

I haven't been following this thread too closely, but has Linux support been confirmed yet? I would have no way of playing otherwise.

At the very least you should be able to able to play in a browser, because we'll target Unity 5's WebGL build, which just needs any browser supporting WebGL and asm.js.

Incidentally, ignore anything you read about the Unity webplayer and Linux, because that's old tech. It's based on the Netscape plugin API which is being phased out in browsers these days due to the security holes it creates.

Sweet!  The post I read about you guys using webplayer was months ago, if you've decided to step up to WebGL that's great news for us Linux users! 
Logged
it's a shame that full-random is the de facto standard

Beyond Awesome

  • Global Moderator
  • *****
  • Offline Offline
  • Posts: 2941
  • Shuffle iT Username: Beyond Awesome
  • Respect: +2466
    • View Profile
Re: Features Thread
« Reply #186 on: April 19, 2015, 08:19:43 pm »
0

Without going back and reading the whole thread:

For Mobile development, has the idea come up to allow multiple games without time-out issues? Playing your turn would be the Mobile equivalent of replying to a text message, or snapchat, or facebook/twitter post. I know this is probably a long shot, but it is becoming more common in mobile gaming to have multiple "matches" without worrying about being timed out.

I would prefer rated games weren't like this. Too many ways to abuse this. Simply don't play any time you are about to lose. But, for unrated games, sure this could work.
Logged

GeoLib

  • Jester
  • *****
  • Offline Offline
  • Posts: 965
  • Respect: +1265
    • View Profile
Re: Features Thread
« Reply #187 on: April 20, 2015, 01:01:33 am »
+2

Kind of inspired by the league disconnect discussion, but I actually see a ton of other applications for this:

It would be awesome to be able to somehow start a game from a given gamestate and play it out. Probably this would have to be linked to the logs. Speaking of, it would be nice if the post-game logs actually perfectly recorded gamestate (I believe there are currently some issues with Masquerade).

Obviously, these (especially the former) are lower priority features, but I think that would be pretty cool for restarting an unfinished game, seeing how things would have played out differently if you'd made a different decision, etc.
Logged
"All advice is awful"
 —Count Grishnakh

enfynet

  • Torturer
  • *****
  • Offline Offline
  • Posts: 1691
  • Respect: +1162
    • View Profile
    • JD's Custom Clubs
Re: Features Thread
« Reply #188 on: April 20, 2015, 01:40:40 am »
0

What about a "pause" or "save" function? If you get interrupted, either online or IRL, you can come back later without losing anything?
Logged
"I have no special talents. I am only passionately curious."

JW

  • Jester
  • *****
  • Offline Offline
  • Posts: 968
  • Shuffle iT Username: JW
  • Respect: +1781
    • View Profile
Re: Features Thread
« Reply #189 on: April 20, 2015, 11:47:55 am »
0

I would say replace them with the bot closest to them in rating (or perhaps the one with the lowest rating higher than theirs).

That makes sense. Also, a player who quits/resigns from a 3+ player game should be treated as losing to all of the remaining players regardless of how the bot that replaces them does.

I think a player that drops out doesn't need to be replaced by a bot. The game can continue without that player. It's possible that there will need to be some very rudimentary AI for the cases where the player dropped during his/her own turn, but that's it. Yes it means that there will be too many Victory/Curse cards in cases where all but two players drop out very early, but that doesn't just ruin those games.

In addition to what you mention, another impact would be with cards that care about the player to your left/right. For example, a Masquerade/Militia/King's Court pin only destroys the deck of one opponent, but if that person resigns then you can move on to the next opponent in line. Possession could play out similarly. Tribute might no longer be a reliable +Actions, and so on. 
Logged

GeoLib

  • Jester
  • *****
  • Offline Offline
  • Posts: 965
  • Respect: +1265
    • View Profile
Re: Features Thread
« Reply #190 on: April 20, 2015, 12:29:42 pm »
+3

I would say replace them with the bot closest to them in rating (or perhaps the one with the lowest rating higher than theirs).

That makes sense. Also, a player who quits/resigns from a 3+ player game should be treated as losing to all of the remaining players regardless of how the bot that replaces them does.

Yes, this was absolutely my thinking. The bot is merely to improve the experience of the remaining players.
Logged
"All advice is awful"
 —Count Grishnakh

philosophyguy

  • Minion
  • *****
  • Offline Offline
  • Posts: 575
  • Respect: +299
    • View Profile
Re: Features Thread
« Reply #191 on: April 21, 2015, 07:58:28 am »
+5

I don't think I've seen this request yet, which may mean it's not incredibly important to the community. But…

One thing I dislike about the current implementation is that, when cards are trashed, there's nothing in the play area reminding you that the card was played. For some cards, like Feast, it's not as big a deal, but when you get into crazy Procession chains or have Knights giving you +whatevers and then getting killed off, it can be confusing to see the play area because it's hard to figure out what happened.

Obviously the log partially solves this problem, and you face the same issue in real life (although I find that it's much easier to keep up with what people do IRL). But I think it would help to have some way of showing how those cards were played, like a ghosted/semi-transparent version of the card remaining in the play area. For really complex chains of actions and for understanding what happens at the start of the turn with durations, it would improve the experience.
Logged

Schneau

  • Saboteur
  • *****
  • Offline Offline
  • Posts: 1174
  • Shuffle iT Username: Schneau
  • Respect: +1461
    • View Profile
    • Rainwave
Re: Features Thread
« Reply #192 on: April 21, 2015, 09:43:11 am »
+6

Besides automatch, my biggest complaint about the current implementation is the poorly designed UI. This has a few facets:

1. It encourages misclicks. Important buttons, such as "End Turn", should have dedicated space away from other oft-used buttons -- instead, it's easy to click them after playing coin tokens, etc. If the main way to play a card is to click it, then that shouldn't also be the trigger for discarding or trashing cards. Good UI design can help discourage these types of misclicks, but Goko's Dominion encourages them.
2. Buyable cards should not be on a second page.
3. The game log and chat should always be visible, searchable, and copy/pasteable. None of this popup nonsense where you can't even paste in a URL (say, to the Dominion Strategy Forums).

If you get the UI right, the game becomes much more playable by many more customers. Get it wrong, and you get an angry bunch of hardcore fans while casual fans try it once and walk away.
Logged

Elanchana

  • Minion
  • *****
  • Offline Offline
  • Posts: 697
  • Princess of Derpminion
  • Respect: +1013
    • View Profile
Re: Features Thread
« Reply #193 on: April 21, 2015, 12:24:00 pm »
+1

Thanks for the complete list, Lord Humanton. Although I personally would like to see reconnect prioritized higher than automatch - am I the only one on this?
Logged
Sure it's just a game. The same way that your best friend in the whole world is "just a friend".

TwitchYouTubeMusic

!!CHANGED MY USERNAME ON 2.0!!

pst

  • Minion
  • *****
  • Offline Offline
  • Posts: 584
  • Respect: +906
    • View Profile
Re: Features Thread
« Reply #194 on: April 21, 2015, 12:40:29 pm »
+4

As long as we're dreaming, I also have a wish that I think would mean a major overhaul of things that are supposed to stay the same in this new version, but that would lead to a much more streamlined experience especially when playing multiplayer,

Simply put: Allow stuff to be done beforehand when possible.

A simple example would be when player A plays Militia and players B and C have to discard. Let them discard simultaneously so C doesn't have to wait for B to discard. Of course things should really happen in the order they should happen. The interface would just in many cases to act beforehand in a way that would only be seen by themselves until it's time for it to actually happen.

If C doesn't want to discard until after they've seen if B discards Tunnels that's possible by just waiting, but B have to discard before getting to know what C discarded.

The attacker A on the other hand could go on with their turn without having to wait for anyone if they don't want to. Not until everyone has discarded this actually happens.
Of course it can be important to know how the other players react. In those cases it might be good to wait, but at other times you can just continue playing quickly.

It can be a bit tricky, but I don't think this would have to be very complicated. There would be a queue of things that have been decided but that haven't actually happened yet, where each player can have one event where they have to decide something. As soon as everyone has seen the first event on the queue it actually happens, etc.

A more complete example with A, B and C and it's A's turn:

1. A plays Village. No interaction, so nothing special.

2. A plays Margrave. Playing an attack is a possible interaction so now things are different. Let's say B has a Horse Traders and thus has to decide if setting it aside. There is a status text "B chooses a reaction" or something like that.

3. A executes the Margrave, getting 3 cards and 1 buy, but this happens only for A for the time being. Also C (who has no choice) draws a card, and then has to discard, but only in "C's reality".

4. Now all three players have something to do. A can play a new action, B still has to decide if setting the HT aside, and C has to discard cards. The status message is still about B (and the clock is on B) and A and C might want to wait to see what happens, but can also act.

Suppose A is first and plays a Masquerade. As before A immediately draws 2 cards in "Reality A". No one else notices anything about this.

5. Next suppose C discards down to 3 to the Margrave. Then C will se A draw cards and play Masquerade, since there are no new decisions for C to do before that. Similarly A will see C discarding cards immediately. Only B is stuck on where the game "actually" is. These are the events on the queue that haven't really happened yet:
  • A draws 3 cards and gets 1 buy (seen by A and C)
  • B should act out their part of the Margrave (has not happend at all)
  • C draws 1 card and discards some cards (seen by A and C)
  • A plays Masquerade (seen by A and C)
  • A draws 2 cards (seen by A and C)
  • A should pass a card (A's current decision)
  • B should pass a card (still unknown)
  • C should pass a card (C's current decision)

Suppose that B continues to be the slow player. As soon as A and C have passed cards A can continue; maybe trashes a card, plays a bunch of Treasures and buys a couple of cards. In A's and C's reality it is now B's turn while B is still stuck on that Horse Trader.

Finally B sets the Horse Traders aside; gets to see everything happening, drawing, discarding, and passing a card, and then quickly it is their turn and everyone is in synch again.

But there can be information leakage!

Yes, that's possible. C may chat "uh oh, I didn't expect a Masquerade" which will warn B before B discards. You could argue that you shouldn't get to see chats before you are in synch with the chatter, but I think a better solution is simply to wait for the others when you want to do something like this. The important thing is to avoid unnecessary waits when it really doesn't matter to you how what the others do.

It can be tricky!

Indeed. Suppose A's first buy in the example was a Province and B has a Fool's Gold. Then A should see whether B trashes it before buying the next card (maybe Noble Brigand!). Then we must have A start waiting after that first buy since there is no way to know what B will do or even if B will pass Fool's Gold to C. If the reaction that B is thinking about using for the Margrave is Secret Chamber instead there's even less knowing if Fool's Gold will be in any hand.

But fortunately most of the time it will not be that complicated, and it does not have to be complete at all. Just having some logic for doing like this can come a long way from unnecessary waits that you wouldn't do if playing afk. Also some of the complications will only happen when specific cards are in the game. When Fool's Gold is in the game some things have be done more by the letter. When Caravan Guard is in the game some other things have be done more carefully, etc.
Logged

Witherweaver

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 6476
  • Shuffle iT Username: Witherweaver
  • Respect: +7861
    • View Profile
Re: Features Thread
« Reply #195 on: April 21, 2015, 04:42:55 pm »
+1

Improve the AI for bots and charge for "one-on-one" bot time in a private chatroom... date bots.
Logged

GendoIkari

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 9701
  • Respect: +10741
    • View Profile
Re: Features Thread
« Reply #196 on: April 21, 2015, 05:10:04 pm »
+2

I'm not sure if it was stated here, but if we are talking about an always visible game log, we are talking about an always visible log of the current and last turn (I assume).

No, I certainly want the full thing, text-searchable as Salvager's is.

The fact that the full thing exists on Goko is one of the reasons I don't play on Goko. Isotropic had a great system of showing the most recent couple of turns; being able to see the entire game removes an important element from the game of Dominion; and leads to the possibility of tedious games while you wait for people to search through logs looking at old turns.
Logged
Check out my F.DS extension for Chrome! Card links; Dominion icons, and maybe more! http://forum.dominionstrategy.com/index.php?topic=13363.0

Thread for Firefox version:
http://forum.dominionstrategy.com/index.php?topic=16305.0

blueblimp

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2849
  • Respect: +1559
    • View Profile
Re: Features Thread
« Reply #197 on: April 21, 2015, 05:15:08 pm »
+2

I'm not sure if it was stated here, but if we are talking about an always visible game log, we are talking about an always visible log of the current and last turn (I assume).

No, I certainly want the full thing, text-searchable as Salvager's is.

The fact that the full thing exists on Goko is one of the reasons I don't play on Goko. Isotropic had a great system of showing the most recent couple of turns; being able to see the entire game removes an important element from the game of Dominion; and leads to the possibility of tedious games while you wait for people to search through logs looking at old turns.
Does anybody seriously go digging through the entire log when making decisions in-game, though? This hasn't been a practical problem in my experience even though it's theoretically doable.
Logged

GendoIkari

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 9701
  • Respect: +10741
    • View Profile
Re: Features Thread
« Reply #198 on: April 21, 2015, 05:19:12 pm »
0

I'm not sure if it was stated here, but if we are talking about an always visible game log, we are talking about an always visible log of the current and last turn (I assume).

No, I certainly want the full thing, text-searchable as Salvager's is.

The fact that the full thing exists on Goko is one of the reasons I don't play on Goko. Isotropic had a great system of showing the most recent couple of turns; being able to see the entire game removes an important element from the game of Dominion; and leads to the possibility of tedious games while you wait for people to search through logs looking at old turns.
Does anybody seriously go digging through the entire log when making decisions in-game, though? This hasn't been a practical problem in my experience even though it's theoretically doable.

It's possible that it's a problem more in theory than in practice. I'm bothered by the fact that the option exists; even if people don't tend to take advantage of it. People also might only do it when it really matters; which might be only once every several games; etc.
Logged
Check out my F.DS extension for Chrome! Card links; Dominion icons, and maybe more! http://forum.dominionstrategy.com/index.php?topic=13363.0

Thread for Firefox version:
http://forum.dominionstrategy.com/index.php?topic=16305.0

SCSN

  • Mountebank
  • *****
  • Offline Offline
  • Posts: 2227
  • Respect: +7140
    • View Profile
Re: Features Thread
« Reply #199 on: April 21, 2015, 05:55:14 pm »
+3

I'm not sure if it was stated here, but if we are talking about an always visible game log, we are talking about an always visible log of the current and last turn (I assume).

No, I certainly want the full thing, text-searchable as Salvager's is.

The fact that the full thing exists on Goko is one of the reasons I don't play on Goko. Isotropic had a great system of showing the most recent couple of turns; being able to see the entire game removes an important element from the game of Dominion; and leads to the possibility of tedious games while you wait for people to search through logs looking at old turns.
Does anybody seriously go digging through the entire log when making decisions in-game, though? This hasn't been a practical problem in my experience even though it's theoretically doable.

It's possible that it's a problem more in theory than in practice. I'm bothered by the fact that the option exists; even if people don't tend to take advantage of it. People also might only do it when it really matters; which might be only once every several games; etc.

Iso also displayed the full log when the point counter was enabled. And people indeed use the log to search for deck compositions using the browser's text-search (ctrl-f). I learned the trick from Stef who credited Hyphenated, and I've since seen others use it too. It's really fast and not at all game-disrupting. Typing "o gains Mini" and seeing 6 hits tells me I indeed have 6 Minions!
Logged
Pages: 1 ... 6 7 [8] 9 10 11  All
 

Page created in 0.12 seconds with 21 queries.