피니엔진 | |
200px | |
개발사 | nooslab |
유형 | 게임 엔진 |
최신 버전 | 2015년 11월 23일[1] |
기반 엔진 | cocos2d-x |
기반 언어 | Lua, LNX |
라이센스 | 유, 무료 관계없이 무료 |
piniengine.com |
목차
1 소개
국내 온라인 게임 쉽팜 인 슈가랜드의 개발사로 알려진 누스랩이 개발해 2015년 1월 11일 정식 공개된 무료 크로스 플랫폼 비주얼 노벨 엔진이다. 자체 한글 스크립트인 LNX 스크립트를 사용하며 에디터 내의 미리보기와 자동 완성 등 개발 편의성이 뛰어나다. 단순한 스크립트 뿐만 아닌 Lua를 사용한 확장 모듈을 지원하며 추후 cocos2d-x를 사용한 모듈, 파티클 도구를 지원할 예정이라고 한다. 이처럼 개발자를 배려한 기능으로 주 장르인 비주얼 노벨 뿐만 아닌 틀린그림찾기와 같은 아케이드 게임부터 검은방 같은 어드벤처 게임까지 소화할 수 있다.
개발사 측에선 피니엔진의 제공 뿐만 아니라 국내 소규모 또는 동인 게임 개발을 장려하기 위해 상업적 사용도 무료이며 개인이나 소규모 팀이 도움을 요청하면 채널링을 도와준다는 의사를 밝혔다.
여기까지만 읽으면 게임 지옥 대한민국의 하늘에서 내려온 한 줄기의 빛처럼 느껴지겠지만...
2 재정난
피니엔진은 누군가의 취미로 만들어진 프로젝트가 아니다. 라이센스 비용을 전혀 받지 않고 이익을 얻기 위한 프로젝트가 아니여도 어디까지나 한 회사의 프로젝트이기 때문에 회사가 망하면 프로젝트, 곧 엔진도 같이 망한다. 오픈소스가 아니기 때문에 망하면 엔진도 엔진으로 개발하고 있던 게임들도 모두 잿더미가 되어 하늘 멀리 날아가버린다.
그리고 우려했던 일이 결국 발생했다. 피니엔진의 개발사인 누스랩에게 설마했던 재정난이 발생하고 2015년 11월 24일을 마지막으로 공지사항, 업데이트, 버그 수정 등 관련 소식이 전혀 올라오지 않고 있다. 프로젝트를 담당하던 개발자를 타 부서로 이동시켜 개발이 무기한 중단된 상황이기 때문이다. 피니엔진을 유료나 부분 유료로 변경한다는 선택도 있지만 재정난에도 불구하고 유료화에 대한 계획은 전혀 없다고 한다. 결국 편리한 기능으로 인해 엔진을 떠나지 못하는 여러 개발자들에 의해 연명하고 있는 상황이 되어버렸다.
2016년 9월 19일 피니엔진 개발자가 모여 만든 비공식 후원이 텀블벅에서 시작됐다. 후원 목적은 재정난으로 업데이트가 불가피해진 피니엔진의 업데이트와 버그 수정으로 프로그래머의 평균 월급인 3,200,000원이 목표 후원금이며 100%가 채워질 때마다 한달 치 작업을 할 수 있다고 한다. #
3 개발
개발하는 방법에 대해서는 피니엔진/개발 문서를 참조하십시오.
4 기능
4.1 크로스 플랫폼
윈도우즈는 개발 환경, 인스톨러를 통한 배포를 지원하고 안드로이드는 애플리케이션 배포, 확장 파일, 인앱 결제, 광고 등을 지원한다. iOS 지원을 계획중이였지만 재정난으로 버그마저 고치기 힘들어진 상황으로 빠른 시간 내에 지원하기엔 힘들 것으로 보인다. 하지만 크로스 플랫폼이 비교적 자유로운 cocos2d-x와 Qt를 사용하고 있기 때문에 가능성이 아예 없는 것은 아니다.
4.2 확장 모듈
개발자가 엔진 본래 스크립트 외에도 Lua 언어로 확장 모듈을 제작해 게임에 직접 적용할 수 있다. 엔진의 외각을 조작하는 Pini API 를 모듈에서도 사용할 수 있기 때문에 엔진의 본래 장르를 벗어날 수 있을 수준으로 수정할 수 있다. 다시 말해 코딩할 수 있는 능력만 있다면 엔진을 처음부터 끝까지 갈아엎는 등 마개조가 가능하다는 뜻이다. 마개조할 실력으로 다른 엔진으로 갈아탄다..
4.3 LNX 스크립트
<syntaxhighlight lang="cpp" line="1">
[이미지 아이디="피니" 파일명="피니.png"]
[대화 이름="피니"]
- 안녕 난 피니라고 해!
[대화]
- 피니엔진을 다운받아줘서 고마워!<클릭>
- 더 좋은 엔진이 되도록 늘 노력할게!
[대기 시간=1]
[대화]
- 아! <색상 255 0 0 0>이제 가봐야할 시간이야!
- 미안! 나중에 다시 봐!
</syntaxhighlight>
LNX 스크립트는 피니엔진에서 주로 사용되는 스크립트이다. 개발 경험이 전무한 사용자도 쉽게 배울 수 있는 스크립트를 목표로 만들어졌기 때문에 배우는 시간은 겨우 1시간 수준이라고 주장한다. 국가별 언어를 사용해 개발할 수 있도록 계획 중인 스크립트이기에 이미 지원중인 한국어 외에도 일본어, 중국어, 영어가 계획되어있다고 한다.
전체적인 문법은 키리키리 엔진에서 사용하던 KAG 를 계승하는 것으로 보인다. 물론 어디까지나 모습만 비슷하게 만들었을 뿐 KAG 스크립트에 익숙해진 개발자를 배려해 이쪽 문법을 선택한 것으로 보인다. 스크립트와 관련된 파일인 LXVM.lua 와 PiniAPI.lua 을 열어보면 처음부터 끝까지 피니엔진을 위해 새로 만들었다는 것을 알 수 있다.
4.4 FAL
<syntaxhighlight lang="cpp" line="1">
@애니메이션 애님1 : # '애님1' 이름을 가진 사용자 애니메이션
@노드 1: # 첫번째 노드를 선택
@프레임 0: # 0프레임부터 시작해서
&위치X 0
&위치Y 0
@프레임 10: # 10프레임에 끝나는 애니메이션.
&위치X 100 # 10프레임에 걸쳐 X값을 0부터 100으로 증가시킨다.
&위치Y 100 # 10프레임에 걸쳐 Y값을 0부터 100으로 증가시킨다.
</syntaxhighlight>
FAL(Frame Animation Language) 는 사용자가 직접 프레임 단위의 애니메이션을 만들어 노드에 적용할 수 있는 기능이다. 기존에 지원했던 애니메이션 매크로가 노드의 복잡하고 자세한 애니메이션을 소화하지 못하는 것을 보완하기 위해 추가된 기능으로 애니메이션이 모두 끝난 뒤 특정 매크로를 실행하는 등 여러 기능을 같이 사용할 수 있어 애니메이션을 많이 사용하는 게임을 만들기 편리하지만 많이 사용하면 게임이 전체적으로 느려진다.
5 문제점
5.1 부족한 레퍼런스 위키
사용 방법과 스크립트 레퍼런스 등 공식 위키에 형식 상으로 존재하기는 하나 내용이 굉장히 부실해 엔진을 막 접하는 초심자에게 큰 부담이 든다. 가장 최신판에는 이미 삭제된 매크로나 매개변수가 그대로 남아있는 등 업데이트도 허술하고 문서의 편집이 가능하긴 하나 기존 문서를 정리하는 정도만 간간히 올라오는 수준이다.
5.2 매우 취약한 암호화
게임을 배포할때 이미지, 사운드, 스크립트를 포함한 리소스 암호화를 지원하지만 이는 리소스 파일을 압축해둔 비밀번호 걸린 7z 파일에서 확장자만 변경한 것이다. 실제로 이 기능을 켜면 용량이 어느정도 줄어들지만 리소스를 불러오는 속도가 느려진다. 암호화된 파일의 비밀번호는 배포 파일 중 간단한 문자열 변형이 된 상태로 내장되어있기 때문에 암호화라고 하기엔 터무니없다.
6 피니엔진으로 개발된 게임
6.1 안드로이드
- 비주얼 노벨
- 기타
- 스쿨엑시트 (방탈출, 어드벤쳐)[2]
- 냥바구니! (캐주얼)
- Color Match (퍼즐)
- 천애고아 (SF 키네틱 노벨)