Thursday, March 13, 2008

ColorDots in... 3D?

So I'm thinking out loud here (sorta like the poker thing), but I think we could do ColorDots in 3D.

No wailing and gnashing of teeth yet, people. We're not going to throw out what's working in 2D just to go chasing some potential 3D skirt. I'm just saying that pretty much everything we're doing now that applies to circles, we could probably apply to spheres as well.

So let's break it down into a list of what would break.
  • Controls - is there anything about 3D that wouldn't require a control overhaul?
  • Effects - curved surface means all of our 2D effects would have to change, or at least work really differently.
  • Occlusion - a sphere makes it possible to have accident-matches you can't even see.
  • 4-matches * 8-colors = fun - if you can pack 6 circles around a circle, you can probably pack even more spheres around a sphere. Does 12 seem like too many? 14 even? Would that makes matches almost constant?
  • Dot-spawn - if dots fall on the other side of a sphere, will anyone know they're there?
  • Loss-condition - will we be able to maintain a dot-count that means anything to people?
  • Loss-warning - holy crap, loss warning. Where would it go in 3D?
I think... that's everything. It's also pretty much every part of the game. Only powerups would escape unscathed, and they're not entirely awesome right now, so that might be a bad thing.

But, we have all of our problems, let's find some solutions.

Controls:
Since we're making the game world a sphere, I think we can probably make the mouse/camera track a sphere too. Move mouse/joystick left, revolve left around the sphere. Move mouse/joystick up, revolve up around the sphere. Move diagonally, revolve diagonally. The background is going to get upended pretty quickly, but we're in space! It's ok!

The dot that is currently being pointed at will light up, and clicking will draw it up to us. Clicking again will drop it back down wherever the reticle is on release. Maybe it'll shove it down, so that it doesn't sit on top, or potentially roll around. Maybe we just increase the friction on the dots to avoid the rolling thing instead? Something to look into.

The trouble? We won't be able to see the reverse side of the sphere, and maybe we want to. Well, maybe that's not too much trouble with a mouse, as you can move those pretty fast to get around the sphere. But it might make some trouble with a gamepad. Perhaps you'd want a "speedy" button, or use both sticks to make the revolution go faster. Then slow it down for the fine-motion-control.

Effects:
  • General: effect zones will have to be spheres instead of circles.
  • Red and Orange are ok once the above is satisfied, as they just rely on effect zones.
  • Yellow is ok because it just zaps random dots in the field of play.
  • Green and Blue need to deal with explosions. That's complicated, so let's tackle that in a subsection.
  • Purple is probably mostly ok. We'll need to make the lasers rotate further to ensure that some of them hit the other dots. Maybe we constrain them to an angle a bit less than the current shell's tangent plane, so they still smash lots of dots, and flail about like pretty pinwheels. That'd be neat.
Explosions:
Whew. Ok. If we have a big explosion, we run the risk of blasting the entire sphere out of the area that we're looking at. That's less of a problem with a mouse in 2D because if you're quick you can just snag something in mid-flight. But in 3D, everything is going to move much more slowly because of the whole revolving controls thing. So, explosions that fling the world out of our camera angle are really bad.

We could probably fix this by having less powerful explosions, but come on, what's the point? Another option is to have the dots be a little more bouncy, so that when they pop, the majority of the dots are expelled outwards. Just having the explosion start deeper down and exploding outwards is another option, I guess.

But what I really think we need to do is to root the sphere at the center, so that it can't fall all apart like that. So what I'm thinking, and I'm not saying it would absolutely work, but I'm thinking that as the sphere starts to build up, only the top 2 layers should be manipulatable via effects, or available for matching. That seems fair to me because you're only really going to be able to see the top two layers anyway. The inside of the sphere will be largely invisible to you at any given time. So if it's 3 layers down, we enclose it in a spherical steel sheath, and make it completely invulnerable, as though it isn't even there.

It has a drawback. Besides some coding difficulty, it's not always easy to decide what the highest or lowest level is. If the outer sphere is mostly blown up, like down to 1 or 2 dots, does that count? How do you get rid of the sphere? How does it appear? Well, I'm going to say that the outer shell would no longer count as a shell if it were down to 2/5 of the maximum dot count of the shell. When a layer builds up to that point, the shell will sort of Stargate-helmet ensconce the layer two-below. When it drops below that point, the shell will retract. It'd need to have a buffer of some percentage to keep it from flitting back and forth, but that's no real trouble.

I like this because it has some side benefits. For one, we can root the steel sphere, so that explosions won't move it. First-and-a-half, a rooted sphere would work like a racquetball court wall: fast-moving dots like after explosions will bounce right off of it. Second, it removes any chance of inner-sphere invisible matches (Nice! I can skip the occlusion bullet!). Lastly, it makes the game play sort of like the current 2D ColorDots, except that there are now 2 levels to the playing field that interact with each other. Which brings us to the next point:

4-match * 8-colors = Fun:
Ok, here's a real problem. Matching 4 dots in the current game means looking for triples and then building quads. With two levels, however, the occurrence of triples would overlap with the occurrence of singles of the same color in the upper level. Same with doubles matching other doubles, and singles matching overhead triples. I'm just estimating here, but that probably makes quad matches about 5 times more likely by just adding another layer.

However, matching 5's doesn't really fix this problem, because quads are going to be as rare as accidental matches are now: not so infrequent, but not frequent enough to get you past level 6 without taking an active role in building them. It'll be hard, therefore, to find a quad, and even harder to find a triple that is touching a single below it. Matching quints is not such a good idea.

Increasing the number of colors, however, may be a worse idea. You might not have noticed because Joe and I are awesome, but we were already scraping the bottom of the effect idea barrel when we came up with the yellow and green effects. By the way, you know the designer is out of ideas when they make a yellow electric effect, a goo green effect, and a fire red effect. When someone suggests that, it is a bad day for everyone who isn't a pokemon trainer.

We can add colors, but in all likelihood, they won't be as cool as the effects we already have. And I don't think we can get away with more than 3 colors that just don't have effects (we already have black and off-white, we might be able to whiten the white and throw a real grey in there).

So we're kind of stuck on that point for now. Oh well. Fixable later. Feel free to comment if you have a solution! :) Then again, maybe 5's would just work. That'd be nice, right?

Dot Spawn:
Your blog post is getting too long if it takes awhile to scroll back up to your list.

Dot spawning is random in ColorDots. That's ok, really, because it's a pretty simple play space. But in 3D, depending on the size of the spawn circle, there's a lot of room to be random, and you'd have to drop a lot of dots to make it look like dots were falling. I don't think we can handle firepower of that magnitude, especially since a 3D version would be inherently more difficult.

So as for solutions, we'd probably want to drop dots in patterns. Have spawning spouts that move around the game space, and have them drop lines of dots at a time, then cool down for a bit. Instead of a steady stream of dots, then, we'd have spurts of dots followed by a bit of downtime. The amount of downtime, and so the dots per second, would be similar to what we have now. Hmm, actually, this isn't such a bad idea for the 2D game. I'll keep it in mind.

Loss Condition:
Does this really have to change? Should we only count dots inside the metal sphere? Dots outside the metal sphere? All the dots? All the dots you can see? A certain number of shells? Tough to say, I think, until there's a playable game to find out what is hard to maintain. We'd probably want to keep the grace period in, though.

Loss Warning:
Maybe that sphere thingy could glow? Maybe electricity would arc all around between the second level of dots? Maybe a sphere around the entire play field would glow brighter and brighter until KABOOM! ? Points to ponder, I guess.

Aaaaand, that's it - working game! (With just the one tiny major flaw :) Super long, right? Sorry about that. The last one was short, so this one had to be extra-long. Thanks all the more-so for reading!

Any suggestions, comments, concerns, or innuendo, feel free to drop me a line in the comments section, at my real address, or since it's colordots-related, at colordots.team@gmail.com.

-s

      No comments: