What is Pong?

Pong은 최초의 아케이드 비디오 게임이자 최초의 스포츠 아케이드 비디오 게임 중 하나로 단순한 2차원 그래 픽을 차용한 탁구 스포츠 게임이다. Pong은 현재까지도 다양한 버전이 출시되고 있으며, 대표적으로는 온라인 멀티플레이를 지원하는 Pong World가 있다. 또한, Pong 기반의 다양한 변형 게임도 출시되어 있으며, 이 중에서는 Breakout, Arkanoid 등이 있다.

How?

Pong은 두개의 막대기와 하나의 공으로 게임이 진행이 된다.

in_game.gif

막대와 상,하 벽에 닿게되면 튕기도록 해야하며 좌, 우 벽에 닿으면 점수가 쌓이는 방식이다.

그림을 그려주는 부분은 프론트에서 처리할 수 밖에 없고 계산하는 부분은 프론트와 백 둘 중 하나를 선택해야 하는데 실제 서비스했던 게임들(ex 서든, 카트)는 서버(백)에서 계산을 하지 않는다고 한다. 프론트에서 계산하고 뿌려주는 방식을 만들라고하면 만들 수 있을 것 같은데 도저히 빠르게는 못 끝낼 것 같아서 간단하게 서버(백)에서 계산하기로 결정했다.

Flow

setting(초기화)

Screen Shot 2023-06-09 at 12.46.08 PM.png

게임 시작전 공, playerA. playerB의 정보를 register함수를 통해서 초기화한다. 게임방은 함수 내부의 객체 배열로 관리를 하고있고, 프론트에는 배열에 있는 각 방의 객체에 따라서 개별적으로 데이터(ball, paddle)를 전송한다.

Screen Shot 2023-06-09 at 12.54.30 PM.png

각 paddle(막대기)의 정보는 playerA와 playerB를 각각 따로 받게끔 되어 있으며, player가 속해있는 방의 번호도 같이 넘겨받아 데이터를 수정해준다.

Collision(충돌)