News:

A forum for users of LackeyCCG

Main Menu

Defined Board Zones

Started by Ascent, November 20, 2011, 03:00:39 AM

Previous topic - Next topic

Ascent

I don't know how much programming it would take or how much of a priority it would be, but I'm tossing it out there anyway.

The idea is automated card zones. By defining areas on the board, pieces/cards can't go anywhere on the board except where defined by either the player or the plugin. Here are the two scenarios:

1. Plugin-defined Zones. The plugin says that certain card types can only be played in a certain area. The size of the area is defined in the plugin. The plugin defines the rectangle's upper left and lower right corners and Lackey automatically identifies a rectangular area within those parameters. A player may then double-click a card of that type and it automatically plays to that zone. The plugin defines where to set that card in relation to the border (whether from the upper or lower and left or right border or centered). Each card placed is placed at a certain distance from any other card (to the left, right, top or bottom) defined by a single value within the plugin. The plugin can define multiple card types to be played to a zone and restrict all other card types from being able to be played there. A card type would be given a value within that zone of whether it is exclusive to that zone or may be played to other zones. When all available positions are taken up, no more cards can be automatically played, but you can still manually play them wherever you like, including the defined zone.

2. Player-defined Zones. A player may add a zone no larger than a card and assign a card type to it. Only one card type can be assigned to it. Each card zone has a position number assigned to it so that the first card played automatically goes to position one, and the second card to position two and so forth. That card type can be played elsewhere without restriction. But when automatically played, it goes to the first available position. When all available positions are taken up, no more cards can be automatically played, but you can still manually play them wherever you like, including the defined zone.

The benefit to this is that games that normally take an hour or two to play would be reduced significantly. The setup time could be cut down by as much as 70%. So 10 minutes of setup time online could be reduced down to as much as 3 minutes, more closely resembling offline play. The entire game time could be reduced by as much as 50%, turning a 1 1/2 hour game into a 45 minute game, which is a bit closer to the offline experience.

Again, I realize this probably a tall order and may not be a high priority. But it seems to me a good idea and a major time saver for everyone who plays.

Trevor

#1
I think, in practice, all that would do is take away control from users, and make plugin creation more daunting for plugin makers.

You really don't need the program telling, nay forcing, you where you can and cannot put things on the table. Even if all the coding for this was already done, I would disable it. It's one of those things that sounds cool in theory, but allowing would just be allowing people to shoot themselves in the foot.

Regarding plugin-defined zones, if I am understanding you right, it sounds like you want the real world equivalent of you tossing a handful of cards in the air and have them all land magically where you would have wanted them to land if you placed them each intentionally.

Putting a card from your hand onto the table is easy, and the likelihood of the card ending up where you don't want it is 0.

Not only is it a bad idea to do from a user's perspective, but such a thing would be necessarily complex such that barely any plugin makers would implement it, and if they were brave enough, they would be frequently asking me for tech support to understand it.

Regarding player-defined zones, if I understand what you mean, I think barely anyone would understand how to do that. You're more likely to frustrate and perplex than help people.

I appreciate that you are trying to think of ideas to make gameplay better, but those 2 you mentioned will not work well in practice. If you have more suggestions on how to add better gameplay, please present them.

Ascent

I disagree with everything you just said on the grounds that every professional card game program does exactly what I suggested. Also, hyperbolizing my view is insulting and I don't appreciate it. No, it is not the same as tossing cards up and having them magically fall where you want them to.

I appreciate the work you do, but I don't appreciate being treated with disrespect. Have a nice day.

Trevor

#3
I don't think I was being disrespectful, and that was not my intent.

Quote from: Ascent on November 20, 2011, 03:36:29 PMNo, it is not the same as tossing cards up and having them magically fall where you want them to.
My point was it is not something that people can do in the real world, so it is hardly something they should expect to be able to do in the virtual world.

I don't see how dragging a card from your hand and dropping it where you want it (something that is simple, intuitive, precise, and mistake-proof) is not the best system.

Right now, people can right click a card in your hand and "Play" it, and this puts it on your side of the table, where there is a free space. If you want, I could let plugin makers define the default behavior of where things land when "Played" like this more. Is that what you are talking about? No system like that could ever be reliable to produce the result you want (like simply dragging and dropping can), but I suppose some might like to do that.

What I am opposed to is any sort of forcing things to be done this way. Whenever I have used a program that won't let me drop a card where I want to put it, it greatly annoys me. That's the sort of thing I don't want, and that's what I was railing about.

I am not sure I understand your Player-defined Zones idea. How exactly would a player define them? Would there be some sort of interface? That seems too complicated for most people to understand what it does, let alone actually implement.
If you think these are good ideas, please give me some real world game examples of why these sorts of things would be both useful and user-friendly. I'm not convinced that they would be either, and if you convince me, I'll add them.

ani-mayhem

This would be useful for Ani-Mayhem (the most complicated ccg) possibly, and you could have the cards pile in a certain way, and Zone Actions like like flip the first card of a certain type. I'm loving the unlimited deck zones, keep up the good work.

Ascent

#5
Quote from: Trevor on November 20, 2011, 04:55:57 PM
My point was it is not something that people can do in the real world, so it is hardly something they should expect to be able to do in the virtual world.

I don't see how dragging a card from your hand and dropping it where you want it (something that is simple, intuitive, precise, and mistake-proof) is not the best system.

Seeing as there's a major disparity between the time it takes to play a game offline and playing a game in Lackey, I'd say that mimicking reality in Lackey is not the way to go and that doing everything you can to bring down play-time (regardless of whether you can do it in real life or not) is exactly what's needed whether you use my idea or not. In real life, in the time it takes you to double-click, you can perform most actions. In Lackey, you not only have to click and drag, but you have to wait for Lackey's lag time to catch up (at least on PC's before 2009. I don't know how well it works on the latest computers).

Also, I wasn't saying the cards just go by themselves automatically. You would still have to double-click each card for auto-actions.

Ascent

#6
Quote from: Trevor on November 20, 2011, 04:55:57 PM
Right now, people can right click a card in your hand and "Play" it, and this puts it on your side of the table, where there is a free space. If you want, I could let plugin makers define the default behavior of where things land when "Played" like this more. Is that what you are talking about? No system like that could ever be reliable to produce the result you want (Choosing a menu option on right-click is slower than the real life action), but I suppose some might like to do that.

What I am opposed to is any sort of forcing things to be done this way. Whenever I have used a program that won't let me drop a card where I want to put it, it greatly annoys me. That's the sort of thing I don't want, and that's what I was railing about.

That's why I tried to make it clear that you could still drag and drop a card where you want it. What I was suggesting was controlling the default behavior of a double-click (or right-click as the case may be).

QuoteI am not sure I understand your Player-defined Zones idea. How exactly would a player define them? Would there be some sort of interface? That seems too complicated for most people to understand what it does, let alone actually implement.
If you think these are good ideas, please give me some real world game examples of why these sorts of things would be both useful and user-friendly. I'm not convinced that they would be either, and if you convince me, I'll add them.

I already explained all that. (It's very clearly spelled out.) I was thinking it would work just like trying to place a free-floating image in html. You simply state the coordinates in relation to the top, left, right, bottom of a rectangle whose sides are also defined by top left and bottom right. (Or top left and define the height and width of the rectangle.)

You could also provide a means of stacking unique cards in this way. (But of course, that would require a little extra programming that I wouldn't blame you for rejecting.)

Yu-Gi-Oh, Bakugan, other for-purchase TCG/CCG computer games or apps. Personally, I have to ask what for-purchase or advertiser-funded program doesn't provide delimited play zones and auto-play cards to where they belong? Then there's the obvious question, if players don't give a rat's ptooey about realism on a computer (beyond the look of a card), why should a programmer seek to maintain such an arbitrary limitation of 'keeping it real'?

Trevor

#7
Quote from: Ascent on November 22, 2011, 11:09:16 PM
Seeing as there's a major disparity between the time it takes to play a game offline and playing a game in Lackey, I'd say that mimicking reality in Lackey is not the way to go and that doing everything you can to bring down play-time (regardless of whether you can do it in real life or not) is exactly what's needed whether you use my idea or not. In real life, in the time it takes you to double-click, you can perform most actions. In Lackey, you not only have to click and drag, but you have to wait for Lackey's lag time to catch up (at least on PC's before 2009. I don't know how well it works on the latest computers).
There shouldn't be any lag. If a person has lag, some of the appearance preferences should fix that.
Dragging a card is really fast.
QuoteAlso, I wasn't saying the cards just go by themselves automatically. You would still have to double-click each card for auto-actions.
I can see the utility of double-clicking a card and having it auto-sent to the table at a place that an AI determines is a place the player would be happy with.

The problem, it seems to me, is determining an algorithm (that a plugin maker can easily implement) so that a cards are sent to the right part of the table. To further complicate things, the logic must deal with existing cards on the table. For example, if a playing a card to the middle of the table is what you'd want, then what do you do if a card is already there? And if a card is already in the 2nd place? And so on? You need to define a complete logic for where you want cards put under any circumstances.

If you can show me an example of the syntax a plugin maker could write so your idea would work, I might be able to make it work.

Trevor

Quote from: Ascent on November 22, 2011, 11:22:51 PM
I already explained all that. (It's very clearly spelled out.) I was thinking it would work just like trying to place a free-floating image in html. You simply state the coordinates in relation to the top, left, right, bottom of a rectangle whose sides are also defined by top left and bottom right. (Or top left and define the height and width of the rectangle.)
I'm inquiring exactly how they state the data. Are you suggesting they right click a card and choose an option that opens a dialog window with various check box and text input fields? That's seems far more complicated than the alternative.

If you have any ideas for the actual interface to implement that request, send me a mock up.

Ascent

Quote from: Trevor on November 22, 2011, 11:30:49 PM
There shouldn't be any lag. If a person has lag, some of the appearance preferences should fix that.
Dragging a card is really fast.
When no other program on the computer has lag because of dragging graphics, it suggests to me that the fundamental issue is with Lackey, not the computer.

QuoteI can see the utility of double-clicking a card and having it auto-sent to the table at a place that an AI determines is a place the player would be happy with.

The problem, it seems to me, is determining an algorithm (that a plugin maker can easily implement) so that a cards are sent to the right part of the table. To further complicate things, the logic must deal with existing cards on the table. For example, if a playing a card to the middle of the table is what you'd want, then what do you do if a card is already there? And if a card is already in the 2nd place? And so on? You need to define a complete logic for where you want cards put under any circumstances.

Again, I already addressed that issue. No offense, but did you read my entire original post? You define a space that each card must be placed from any other card. It's an age old algorithm that's been around since the Apple II/e.

I'm not a programmer, so I can't tell you how to do it. I know some HTML, and I can only tell you based upon what little I know of that language.

Trevor

#10
I think you're being a bit vague.

Try coming up with a pseudo code syntax, and I think you'll see things more from my perspective. You don't need any programming knowledge, just a logical algorithm that would work.

I'll give it a shot:
So it seems like a plugin maker would need to define regions. Let's take magic for example. There are 3 horizontal regions for each player: lands, permanents, and a 3rd row, closest to the opponent, where non-lands and non-permanents would be played to.
So when the play function is called on a card in your hand, it looks at the type of the card. If its a land, it places it as close to the center of the "lands" row as there is space. And when there is no more space, I guess cards could just be played to the left and right, ad infinitum, and a zoom would be required.

That sound like what you want?

So my syntax would be something like:
<autoplayzone>//for lands
normalizedstartX=-1;
normalizedstartY=-1;
normalizedendX=1;
normalizedendY=-.667
"Type" contains "Land"
</autoplayzone>

So that defines a rectangular region to try to put a card, and the data type and and value that qualifies.
You'd have to make 2 more of these, and also another one to explain how to handle cards that don't get handled by the other ones.

Is this generally applicable to all/most CCGs?
Would plugin makers want to use this?

Ascent

#11
I was actually thinking that whenever a card can't find room within the delimited space, that the double-click would stop functioning for that zone (if no space then no play), though there may be alternatives.

Quote from: Trevor on November 22, 2011, 11:35:04 PM
I'm inquiring exactly how they state the data. Are you suggesting they right click a card and choose an option that opens a dialog window with various check box and text input fields? That's seems far more complicated than the alternative.

No. I'm suggesting double-click and the card goes. For example, with SWTCG, you double-click a Character card and it would be sent to the Character arena automatically (there being 3 arenas. If you want to put it in the build zone face-down, if the card is turned face-down first while in hand, then perhaps double-click would put the card in the build zone. Or you could do another short-cut for having it play to the build zone.

To me this seems to be simply enough done by A) the first entry looks for a field header called "type" where the plugin designer inputs the card type, then B) define the distance from the top and left edges where the rectangle that you will be placing the card type is located in relation to the small squares you already have defined in Lackey, and finally C) define the size of the rectangle height and width. So it might look like:

ZONETYPE: Character 5,15 (40,30)

or

ZONETYPE: Character 5,15,40,30

or (in the case of Locations, you would also want to define subtypes, so you would do it this way)

ZONETYPE: Type:Location, Subtype:Character 15,-5,7,10

Of course, cards with multiple types or type-based subtypes would not respond to the autoplacement.

Don't ask me what position the numbers represent. I'm just typing fake coordinates.

Ascent

#12
Quote from: Trevor on November 22, 2011, 11:48:44 PM
I think you're being a bit vague.

Try coming up with a pseudo code syntax, and I think you'll see things more from my perspective. You don't need any programming knowledge, just a logical algorithm that would work.

I'll give it a shot:
So it seems like a plugin maker would need to define regions. Let's take magic for example. There are 3 horizontal regions for each player: lands, permanents, and a 3rd row, closest to the opponent, where non-lands and non-permanents would be played to.
So when the play function is called on a card in your hand, it looks at the type of the card. If its a land, it places it as close to the center of the "lands" row as there is space. And when there is no more space, I guess cards could just be played to the left and right, ad infinitum, and a zoom would be required.

That sound like what you want?

So my syntax would be something like:
<autoplayzone>//for lands
normalizedstartX=-1;
normalizedstartY=-1;
normalizedendX=1;
normalizedendY=-.667
"Type" contains "Land"
</autoplayzone>

So that defines a rectangular region to try to put a card, and the data type and and value that qualifies.
You'd have to make 2 more of these, and also another one to explain how to handle cards that don't get handled by the other ones.

Is this generally applicable to all/most CCGs?
Would plugin makers want to use this?
I suppose that would work too.

Yes, I think it would work for at least most TCG's. Some might not need it for only placing a single permanent in the center of the board on their side.

Ascent

#13
You might want to make it more intuitive to understand, instead of "normalizedstartX", you might say "zonestartleft", "zonestarttop", "zonestartright" and "zonestartbottom".

Each zone would need to be distinguished from the next, so using a number for each autoplayzone# would be the likely solution.

Trevor

#14
Normalized coordinates work better than actual coordinates because normalized coordinates are scalable. Suppose there is a 4 player game. Instead of playing cards to your half of the table, all your cards go to your quadrant of the table. That's less confusing if things are all normalized to a player's allotted space.

There are number of CCGs that just won't work with this system. There are a number of specific cards that will not work well with this system. (Consider a card that is attached to an opponent's card.)

But I suppose, for some CCGs at least, a system like the one described will produce the desired result most of the time, which is useful. I will implement a system like this soon and plugin makers can give me some feedback. I want it to support a number of different kinds of CCG, but at the same time I realize that it likely won't work for all CCGs. But in the worst case scenario, a player would just be doing things as they are now: manually, so there is no down side to me implementing this.