1. 오늘 할 일
(1). 게임 엔진 안정화 및 모듈화 - 프레임 제한 패치 (완료)
모르다시피, 내가 만들고 있는 게임 엔진의 물리 연산 주기는 화면 주사율을 그대로 따라간다. 그런데 이 방식은 주사율의 차이에 따라서 게임의 물리가 달라지게 된다.
이를 해결하려면 델타 시간을 이용하면 된다. 델타 시간은 이전 프레임에서 현재 프레임까지의 걸린 시간을 초 단위로 나타낸 것이다. 이 값을 속도나 힘을 나타내는 값에 곱해주면 프레임 속도 차이에 따른 물리 변화를 보간할 수 있게 된다.
하지만 여전히 문제가 있다. 여러 환경에서 주사율이 조금씩 다르다면 어떻게 될까? 예를 들어, 게임 기획 단계에서 60프레임을 가정하고 설계되었지만 120프레임으로 게임을 구동하면 절반의 프레임이 의미 없는 연산을 하고 있는 것이다.
결국, 사상 처음으로 메인 루프를 건드려서 1초에 항상 고정된 횟수만큼만 게임을 갱신하는 fixedupdate 콜백 함수 지원을 추가했다. 이 함수는 엔진의 설정값 이상으로 호출되지 않는다. 다시 말해, 설정값이 60이라면 120프레임의 환경에서도 60번의 호출만 한다.
원래는 이 부분에 조금 문제가 있었는데, 엔진의 틱 레이트가 높으면 물리값이 약해지는 문제가 있었다. 근데 이 글을 쓰던 중에 우연히 문제를 해결했다. 원인은 업데이트 함수에 델타 시간을 넣었는데 나중에 다시 물리값에 델타 시간으로 곱해버려서 느려짐.
다음 과제는, 주사율이 틱 레이트보다 높은 상황에서는 어떻게 대처해야 하는가? 임.
(2). 편리한 디버깅/리로딩 인터페이스 추가 (진행중)
이미 내가 개발하는 엔진에는 ImGUI가 내장되어 있어서 GUI 환경도 지원하고 있지만 정작 그걸로 뭘 할 수 있는 상황은 아니다. 이번에는 디버깅과 리로딩 인터페이스를 추가해서 반복된 재실행을 줄일 수 있게 하고 싶다.
(3). 타일 에디터와 게임 엔진을 연동해서 빠른 맵 개발 가능하게 하기 (진행중)
말 그대로, 맵 에디터가 없기 때문에 현재로서는 플레이어를 제한된 공간 안에서 가두어놓고 그냥 움직이는 것을 감상할 수 밖에 없다.
Tiled를 연동해서 맵을 쉽고 빠르게 만들 수 있게 해야겠다.
2. 이전 날의 개발 일지 내용
(1). 설정 인터페이스 추가
Love2D는 설정값을 conf.lua라는 파일에 저장하는데 이게 좀 편집하기가 어렵다. 게다가 게임 외부에 둘 수도 없어서 무조건 게임과 한몸이라 융통성도 없다. 그래서 conf.lua는 내가 정의한 설정값을 읽어오는 일종의 인터페이스 역할만 하도록 변경했다.
(2). 안정화 및 모듈화 - 섀이더를 외부에 분리
이전에는 섀이더 코드가 게임 코드안에 직접 임베딩되어 있었는데 이제는 외부 디렉터리에 두어서 모듈화도 이루어내고 복잡도도 줄였다.
3. 장기적인 로드맵
(1). 엔진에 대해
아직은 엔진이 미완성이고, 제대로 작동하는 부분도 적지만 일단 빨리 이 데모 게임을 완성해서 엔진의 방향성을 결정할 수 있었으면 좋겠다고 생각함. 원래 계획은 3D도 가능한 렌더러인데 호환성을 포기하고 대신에 2.5D 사이드뷰에 몰빵하는게 좋겠다고 생각함.
(2). 게임에 대해
무려, 엔진이 3번이나 교체된 보기 드문 사례임. 원래 계획은 유니티로, 그 다음엔 고도로, 결국 Love2D 프레임워크에 자체 개발 엔진까지 왔음. 이정도면 안망하는게 이상할 지경.
(3). 출시에 대해
약간 스팀이라는 플랫폼에 반감이 있는데, 오픈소스 프로젝트가 진출하는 것을 막는다는 것이 문제로서 이 데모 게임은 (꿈도 크지만 완성이 된다면) 자유 소프트웨어 및 오픈소스 소프트웨어 플랫폼 특히, F-Droid에 공개하고 싶은 마음이 있음. 거긴 아직 게임계에 있어서는 블루 오션이라고 생각함.
(4). 공개에 대해
이번 년도 안에는 작업을 다 끝낼거임! 아니, 끝냈으면 좋겠다. 그 정도로 해야할 일이 너무 많다.
프레임관련된거 잊고있엇는데 덕분에 다시 신경쓸듯
스팀이 오픈소스진출을 막음?
shapez나 OpenTTD 게임 올라와 있는거와는 다른맥락인가
직접적으로 막는다고 스팀에서 언급은 없긴 한데, Unciv가 스팀에서 리젝당한걸 생각해보면 무작정 오픈소스를 막는다기보단 상용 게임을 카피한 오픈소스를 막는다고 보는게 맞지. 본문에는 해당 내용이 안올라와있네.
Unciv라는걸 지금알았는데 룰에는 저작권이 없긴하지만 이건 나오면 2k에서 좀 화낼법하긴 하네 하지만 그런게임들이 한둘이 아닌데 이건 공짜라그런가