Quay trở lại những ngày (1990), các trò chơi pinball cũ đã được thực hiện như thế này:
Có một số lớp cho sân chơi (những gì bạn thấy khi chơi trò chơi):
và một số lớp cho va chạm:
Hình ảnh thang độ xám bên trái là bản đồ va chạm cho trò chơi chính, hình bên phải là bản đồ va chạm cho khu vực đặc biệt: đường dốc pinball.
White
= diện tích tự do cho bóng, chỉ số màu có 255.
Gray
= bóng sẽ bị "đẩy ra" khỏi khu vực này. chỉ số màu = góc của vector để thêm vào vị trí bóng. xám nhạt = 0 độ. màu xám đậm = 360 độ.
Một số mã giả:
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; //
}
}
Một số chỉ số màu sắc đặc biệt cũng có thể được sử dụng cho một cái gì đó khác hơn là va chạm, một loạt màu sắc tùy chỉnh (ví dụ: 240-255) có thể được dành cho việc phát hiện vùng đặc biệt như spinners
, triggers
, bumpers
, holes
, ...
Như bạn có thể thấy, điều này rất đơn giản. Chỉ có một vài pixel "đọc" trên mỗi khung. Do đó, bạn có thể thực hiện mô phỏng vật lý chạy ở tốc độ khung hình cao thực sự, ví dụ: 200 khung hình / giây. Sử dụng tốc độ khung hình cao sẽ mô phỏng trơn tru và giảm "đường hầm" (điều này xảy ra khi bóng đi quá nhanh và vượt qua các yếu tố máng mà không va chạm). Sự đơn giản đó cũng là điều làm cho các trò chơi pinball mượt mà có thể trở lại 386 computers
(và thậm chí nhanh 286
) trong những ngày qua (trong số một số thủ thuật khác như đạp xe màu, cuộn vga và che mặt nạ ...).
Ngày nay, hầu hết các trò chơi pinball không còn được thực hiện như thế này. Thay vào đó, sân chơi là một cảnh 2d / 3d sử dụng đa giác hoặc họa tiết và va chạm được thực hiện đối với một số đường đơn giản, đường cong bezier hoặc hình cầu đại diện cho hình dạng đơn giản của sân chơi trực quan.
ví dụ (từ pinball trực quan ):
Một số công ty trò chơi sử dụng công cụ vật lý của riêng họ nhưng một cách khác, dễ dàng hơn là sử dụng công cụ vật lý như Box2D
hoặc Bullet
. Hầu hết các trò chơi pinball trên iPhone mà tôi thấy đều sử dụng công cụ vật lý có sẵn + một số tài sản 3d.