Damals (1990) wurden alte Flipperspiele wie folgt hergestellt:
Es gibt mehrere Ebenen für das Spielfeld (was Sie beim Spielen des Spiels sehen):
und mehrere Schichten für Kollisionen:
Das linke Graustufenbild ist eine Kollisionskarte für das Hauptspiel, das rechte Bild ist eine Kollisionskarte für ein spezielles Gebiet: Flipper-Rampen.
White
= freie Fläche für Kugel, Farbindex gibt es 255.
Gray
= Ball wird aus dieser Zone "weggeschoben". Farbindex = Winkel des Vektors, der zur Ballposition hinzugefügt werden soll. hellgrau = 0 Grad dunkelgrau = 360 Grad
Ein Pseudocode:
void do_ball_physics()
{
while(1)
{
byte color = read_pixel_under_ball(ballx, bally); //one pixel read
if(color == 255) //see remark below
break;
float vectorx = sin(color/255.0f * 2.0f * PI);
float vectory = cos(color/255.0f * 2.0f * PI);
ballx += vectorx; //push ball away from one unit
bally += vectory; //
}
}
Einige spezielle Farbindizes können auch für etwas verwendet werden , sonst als Kollision, eine benutzerdefinierte Farbbereich (zB: 240-255) kann zur Erkennung Sonderzonen wie reserviert spinners
, triggers
, bumpers
, holes
, ...
Wie Sie sehen können, ist dies sehr einfach. Pro Frame werden nur wenige Pixel "gelesen". Aus diesem Grund können Sie die Physiksimulation mit einer wirklich hohen Framerate ausführen, z. B. 200 fps. Die Verwendung einer hohen Framerate glättet die Simulation und reduziert das "Tunneln" (dies geschieht, wenn der Ball zu schnell geht und durch die Elemente läuft, ohne zu kollidieren). Diese Einfachheit ermöglicht auch reibungslose Flipperspiele in früheren Zeiten 386 computers
(und sogar schnell 286
) (neben einigen anderen Tricks wie Farbwechsel, VGA-Scrolling und Sprite-Maskierung ...).
Heutzutage werden die meisten Flipperspiele nicht mehr so gemacht. Stattdessen ist das Spielfeld eine 2D / 3D-Szene mit Polygonen oder Sprites, und es werden Kollisionen mit einigen vereinfachten Linien, Bezierkurven oder Kugeln durchgeführt, die eine vereinfachte Form des visuellen Spielfelds darstellen.
Beispiel (vom visuellen Flipper ):
Einige Spielefirmen verwenden ihre eigene Physik-Engine, aber eine andere, einfachere Möglichkeit ist die Verwendung einer Physik-Engine wie Box2D
oder Bullet
. Die meisten iPhone-Flipperspiele, die ich gesehen habe, verwendeten eine bereits vorhandene Physik-Engine + einige 3D-Assets.