# game idea: "space wars" on Klein bottle surface?

I was trying to envision a two-person shoot-at-each-other game in 3D, where one races around on a semi-transparent Klein bottle surface. Controls would be “classic”: turn left, turn right, forward thrust and shoot, but the implementation would be over the geometry of a Klein Bottle surface.

I’m imagining the bulk of the screen being POV (for the individual player), but with maybe a 3D model/map on the side.

Part of the charm, on the surface in front of you, the “enemy” might be right-side-up (on the same surface as you) or upside-down and slightly blurry (on the “other side” of the Klein bottle). One would have to get a feel for the geometry of how to approach/ambush. Bullets would follow along the surface, curving around as the surface curves, but would die before they loop back to their origin! (No shooting self in the butt except in the narrow neck areas.)

Any thoughts on the math needed to make this work? Thought it might be a neat collaborative project.

Part of the problem: Klein bottles are by definition a “non-orientable” surface. So the coding of travel directions for “straight lines” for visuals, flight paths, bullet trajectories, would require some thought! Maybe every point on the surface is encoded as if a tangential plane but with some sort of curvature component…iieeyyaah! Or maybe it is no worse than putting a cartesian coordinate system onto a sphere? This is the first time I’ve tried to actually think about this.

How would you handle the 3D intersection (where in 4D it would not happen)?

Aren’t old-school game maps (Of the wrapping over head sort) basically these? I’m just saying that you can probably model it by doing positions based off of one of these maps but with some sort of mapping that states that if you’re more than 1/4th a map length away on the height/length of the bottle (arbitrary Y axis) then you’re on opposite ‘sides’ of the surface?

Further, the circumfrence surface (Arbitrary X axis) could be controlled by some sort of mapping that adjusts the relative radius of the infinite cylinder.

Of course, this doesn’t help if you want to include the wonkiness of the handle if you honestly want the world to be shaped like a klein bottle.

is it possible to make a surface like that which has several branches but everything still loops on both sides of the surface?

[quote]How would you handle the 3D intersection (where in 4D it would not happen)?
[/quote]
My first inclination would be to create some sort of rift/hole, where the 2D grid doesn’t exist. I’m not sure if that is possible. I’m not a purist. Maybe just make a hole.

@LiquidNitrogen – That seems like a very cool idea. I saw the picture, too, of the embedded Kline bottles. http://en.wikipedia.org/wiki/File:Science_Museum_London_1110529_nevit.jpg

Okay, let’s say you define the world to have two axises. You have the Y axis which is basically the length of the Klein bottle; The part that goes from the inner surface to the outer surface. This axis is basically infinite in that it has no edges. However, it has some length Y0 such that if you travel along for Y0 distance you arrive back at the same spot you started.

Knowing this, then for some object traveling this axis there is some point on the horizon, both in front and behind, where an object on the same axis will appear to be on the surface below the object.

Now, we look at the X axis which is basically the circumference of a cylinder. When two objects are at similar Ys they will have similar Xs (Two objects at the same Y will be able to move on the same X). Objects that are 1/2 Y0 away from each other will be on opposite sides of the surface and inhabit the same X, save being on opposite sides of the Surface.

I’ve always like the Clifford torus (http://en.wikipedia.org/wiki/Clifford_torus).

Wouldn’t the question become just finding a good projection operation for all points…one that has no local intersections in 3D?

I once wrote up a design proposal for a puzzle game on a surface of genus 2, but I never made the game. I can’t remember now what the reaction from the rest of the team was. IIRC I had some scheme involving 7 screens which gave the right topology, but it was a pretzel rather than a Klein bottle.

And I think I’ve seen occasional mention of other games which do puzzles on surfaces other than the simple plane, sphere, or torus, but no names come to mind now.

[quote=“philfrei,post:1,topic:48911”]

[quote=“Roquen,post:7,topic:48911”]
I would think that you want to project symmetrically, such that (modulo textures) the view is unchanging. Then if the projection has a local intersection and a narrow neck area, pick a part of the projection which puts them way beyond the horizon so that the player is unaware of them.

[quote=“UprightPath,post:3,topic:48911”]
No, they’re tori. A bit simpler.

Actually it’s pretty trivial to do this by just tweaking the way screen wrapping works. Right at the the top of the wikipedia page it shows how to write the mapping from left-side to right-side and top to bottom: http://en.wikipedia.org/wiki/Klein_bottle.

It’s more fun when you make top map to left and bottom to right though. I’ve used that before as a quick way to model a planet’s surface on a diamond. It has some nice properties where the longitudinal lines at the equator are longer than those near the poles which is a bit more realistic than the cylinder maps.

Thought #1:
Suppose one just wanted to draw a Moebius strip on a screen in 3D, and be able to rotate it, view it from any angle. Would this pose difficulties? (In OpenGL?) I don’t know much about 3D representations of surfaces. There’s something about breaking things into triangles, yes? But going with that isn’t there also something in the data structure about specifying whether something is “inside” or “outside” having to do with orienting the data in a clockwise or counter-clockwise order? Would that be possible for a Moebius strip?

Clearly, 3D animation of a moebius strip has been done…

Also travelling on Klein bottles! (Note–I haven’t heard the dialogue yet, my sound is effed up.)

Thought #2:
Trying to think (naively, this is new to me) about the data structure for the Klien Bottle surface (to allow 3D representation and ‘grid-oriented’ movement). Suppose the surface was broken into unit-length “squares”, and each unit has four triangles (left, forward, right, backward). For movement, the triangles would be treated “as if” each was identical in size and coplanar to interpolate the movement. However, the mapping of each quadrant-triangle to a 3D location could be more flexible to account for the various curvatures. Am assuming with the mapping that the triangles will not be the same in size nor coplanar.

Or maybe the unit would be a “diamond” with four square quadrants.

Any vehicles or objects moving on this surface would be 3D (have a top/bottom/sides), so that we can use both the transparency degradation (per surface) and the object’s orientation to help determine visually where it is.

To get away from complications of 2-person games, maybe an “Asteroids” sort of game could be played on such a surface. Or such could be used as a stepping-stone project.