최근 게임 개발 기술은 비약적으로 발전했다. 게임 개발자는 다양한 기술과 새로운 게임 플랫폼으로 개발하는 사람을 말한다. 게임 만들기는 쉬워지지 않았지만, 소셜, 모바일, 웹 기술의 발전이 많은 사람들이 게임을 하는 것을 쉽게 만들어줬다.
하지만 문제가 있다. 플랫폼이 너무 많다. 게임 개발자는 많은 사람들이 손안에서 게임하기를 원하지만 사용자는 통제되지 않는다. 그래서 게임을 각 플랫폼에 맞게 만들어야 하고, 시간 및 비용의 낭비, 유지보수의 어려움 등의 문제가 있다. 이런 이유로 PlayN이 태어났다.
Modern game developers have to worry about many platforms.
PlayN은 오픈소스 크로스 플랫폼 추상 레이어이다. GWT 컴파일러를 이용해 자바로 작성된 하나의 코드 베이스를 HTML5, Flash, Java, 안드로이드 어플로 컴파일한다. PlayN 아키텍처는 서비스-프로바이더 인터페이스 패턴을 사용하는데, 코어 부분은 코어 API 집합을 가지고 있고, 나머지 각 타겟에 구현이 분리되어 있다. PlayN을 사용하면 소스 코드에서 플랫폼 종속적인 호출은 제거되고, 하나의 코드 베이스에서 각 플랫폼 종속적인 구현의 결과물이 만들어진다.
PlayN API service provider interface design
PlayN은 게임 엔진이 아니다. 같은 게임을 여러 플랫폼으로 컴파일해주는 라이브러리이다. 많은 부분에서 각 플랫폼의 구현 코드만 가지고 있다.
PlayN은 asset 툴체인, 애니메이션 효과, 추상 게임 로직 등을 가지고 있지 않다.
PlayN의 목표는 update/render 루프, 유저 입력 처리, 리소스 관리 같이 일반적인 게임 오퍼레이션을 위한 크로스 컴파일 코드를 지원하는 기본 기술을 제공하는 것이다. 이는 핵심 라이브러리의 크기를 작게 유지하고, 특정 게임을 위한 코드 팽창을 피할 수 있다.