OpenRCT2 지금도 이리저리 손 대보고 있습니다.
소스가 공개되어있다보니 별의별걸 다 해볼 수 있더군요.
그러다 한가지 생각난게 있는데 openrct2-cli란게 있습니다. 이건 서버구축을 위해 만든거에 가까운데 게임자처는 돌아가도록 되어 있습니다. 콘솔명령을 내리면 실제로 공원에 적용이 되고요.
그렇게 생각해본게 그럼 이걸 띄우고 별도의 프론트엔드를 띄운다면 RCT2특유의 그래픽과 완전 별개인 그래픽으로 게임이 가능한거 아닌가? 라는 생각이 들었습니다.
실제로 비슷한 프로젝트가 있었습니다.
OpenRCT2-Unity
OpenRCT2를 내부에서 라이브러리 형태로 실행하고 Unity로 만드는 프로젝트입니다. Unity이기에 3D로 구동되는데 롤러코스터 타이쿤3 느낌이 납니다. 즉, 내가 만든 공원을 3D로 돌아다니는 것이지요.
근데 이 프로젝트는 현재 멈춰있습니다. 그게 딱히 기여자도 없고 흥미본위에 맞춰져 있었으니까요.
그런데 조금만 더 생각해보면 이야기는 조금 달라집니다. Unity든 Unreal이든 유명 게임엔진에 이걸 붙이면 디아블로2 리저렉션처럼 만들수 있다는 이야기가 됩니다.
OpenRCT2는 픽셀이 튀는 문제가 있습니다. FHD를 넘어 4k모니터가 보급되다보니 생기는 문제인데 기존 2D이미지를 뜯어고쳐서 고해상도로 올리고 프론트엔드처럼 만들면 고해상도로 충분히 게임이 가능해질 수 있습니다.
비슷하게 모바일버전인 롤러코스터 타이쿤 클래식의 경우 각 기기들의 해상도가 미친듯이 올라가다보니 픽셀튐과 색상이 더러워지는 문제가 생겼는데 이걸 OpenRCT2와 프론트엔드로 해결 할 수 있을지도 모릅니다. 그리고 프론트엔드에 따라 지금은 구동이 불가능한 iOS에서의 구동도 생각해볼 수 있습니다.
직접 현재 OpenRCT2를 뜯어서 고해상도에 맞추면 되지않냐고 생각할 수도 있습니다. 실제로 몇몇 옵션이 그걸 감안하고 생성되어 있습니다만 언제 완성될지 모릅니다. 그리고 전 그 때 그 감성도 좋지만 최신감성도 나쁘지 않다고 보거든요.
마치, 슈퍼마리오 메이커의 그래픽 스타일 변경처럼요.
일단 기존 OpenRCT2의 Viewport를 다른 게임엔진으로 들고오는것부터 생각해봐야겠네요.
PC프로그램의 상당수가 모바일로 이식된지는 오래됐습니다.
MS오피스도 그렇고 포토샵도 핵심기능에 한해 포팅되어있지요. 한컴오피스는 특이하게도 PC버전같은 UI로 모바일버전이 있지요.
다만 모바일버전의 경우 여러요소가 고려되다보니 PC버전과는 궤를 달리하는 물건도 꽤 많습니다. 그리고 포팅할때 UI/UX가 가장 골치아픕니다.
첫째로 화면이 작다보니 버튼들이 꽤 큰편입니다. MS오피스처럼 적극적으로 도구상자들을 쓸 경우 가뜩이나 작은 화면의 상단을 잡아먹습니다. 그러다보니 PC버전과 다르게 두번세번 클릭하게 만드는 경우가 많습니다. 그래서 상황에따라 필요한 도구상자를 띄우는 방식을 쓰거나 따로 기능메뉴 버튼을 만든뒤 기능을 메뉴에서 일일이 선택하는 방식을 씁니다. 이게 UX면에서 답답하게 만드는경향이 있어서 지금도 어떻게 하는게 좋을지 고민하게 만듭니다.
둘째로 마우스 동작방식이 다릅니다. 모바일은 기본적으로 마우스가 없습니다. 터치스크린이라는 조작계 하나뿐이지요. 그래서 커서가 버튼위에 있는 Mouseover상태가 없습니다.
옛날 프로그램의 경우 이 MouseOver상태를 상정하고 만든 경우가 꽤 있습니다. 이런경우 모바일로 넘어올때 해당기능이 골때립니다. 보통 이런경우 한번 터치(혹은 클릭)시 MouseOver에 해당하는기능이 나타나고 같은 부분을 터치(혹은 클릭)시 본래기능이 동작한다거나 해야합니다.
셋째로 마우스는 버튼이 3개나 있지만 터치스크린은 화면터치 하나 뿐이라는겁니다. 즉, 기존 입력계 기준 "마우스왼쪽버튼을 누른다" 하나만 있을 뿐입니다.
다만, Windows8이후 OS차원에서 터치스크린을 지원하다보니 이쪽은 OS에서 마우스를 에뮬레이션 해주기도 하니 좀 낫습니다. 특히 길게누르면 마우스 오른쪽버튼으로 처리해주는걸 OS에서 해주지요. 그래서 모바일로 포팅된 앱들을 보면 짧게 터치하면 왼쪽버튼 클릭이고 길게터치하면 오른쪽버튼 클릭되게끔 만들곤 합니다. 애초에 Windows에서 그렇게 해주니 똑같이 구현하는겁니다. 하지만 안드로이드나 iOS는 에뮬레이션 그런거 없으니 알아서 구현해야합니다.
넷째로 역시 터치스크린때문인데 스크롤 구현을 위해 "클릭"이라는 동작의 타이밍이 다릅니다. 이게 무슨소리냐면 MouseDown과 MouseUp의 차이인데, MouseDown은 마우스 버튼이 눌릴때, MouseUp은 마우스버튼이 눌렸다 떨어질때를 말합니다.
모바일이나 터치스크린은 "길게누른다"와 "스크롤 드래그"를 적극적으로 쓰기 때문에 PC에서 쓰던 "클릭"이라는 타이밍이 무조건 MouseUp상태가 되는 순간입니다. 만약 MouseDown때 기능이 동작한다면 "길게누르기"와 "스크롤 드래그"기능을 쓸 수가 없겠지요.
최근에 나오는 대다수 UI라이브러리의 경우 "Click"과 "MouseUp", "MouswDown"을 철저히 구분합니다만 옛날프로그램은 MouseUp과 MouseDown뿐이었습니다. 그래서 버튼을 클릭시 MpuseDown에다가 구현하는 경우가 꽤 있었고 이를 모바일에 포팅할때 애먹게 만들곤 했습니다. 그래서 입력기기에 따라 알아서 판단하는 "Click"이라는 상태가 하나 더 추가 됐습니다. 그래서 최근 라이브러리를 가져다가 Click에다가 구현하면 PC와 모바일 둘 다 해결가능합니다만 이미 만들어진 프로그램을 최신 라이브러리에 맞추는게 쉬운일은 아니겠지요. 그리고 모든 UI라이브러리가 다 그렇게 만들어진것도 아니고요. (여전히 MouseUp과 MouseDown만 있는 라이브러리도 꽤 많습니다)
아에 터치스크린의 입력상태와 마우스의 입력상태를 따로따로 구분하는 라이브러리도 있습니다만 이러면 고려할게 많아져서 코드가 길어지다보니 이쪽은 코더가 고생하게 됩니다.
다섯째로 상시 통신연결하는걸 자제해야합니다. 이건 무슨 이야기이냐면 PC는 대부분 유선으로 연결되었기에 통신을 수시로 하지만 모바일은 통신이 끊기는 경우가 잦아서 특정타이밍에 몰아서 하는경우가 많습니다. 미국같이 땅덩어리가 넓은 경우 고속도로가면 통신이 끊기는 경우가 꽤 있습니다. 이때 통신을 시도하면 할 수록 쓸데없이 배터리만 나갑니다. 그래서 이 부분을 손 봐야합니다. 역시 최근 라이브러리는 이런걸 감안하지만 문제는 옛날 프로그램이지요.
최근 OpenRCT2의 안드로이드버전을 손보면서 느낀걸 이야기해봤습니다. 이쪽은 SDL을 쓰면서 UI라이브러리 따로 쓰지 않아 지금 한창 애먹고 있는중입니다. 뭔가 하나 구현하면 다른게 터지는 등의 문제가 심해서 그냥 다 뜯어서 처음부터 입력쪽을 다시 구현할까 고민중입니다.(...)
'기타 삽질' 카테고리의 다른 글
JMS578 펌웨어 삽질기 (0) | 2025.03.22 |
---|---|
구글 픽셀을 이용해서 기존에 업로드된 구글포토를 어떻게든 무제한 업로드로 바꿔보자. (0) | 2024.11.24 |
키보드 커스텀에 맛들리면 안 되는데... (6) | 2024.11.13 |
ffmpeg-python 패키지 사용시 오류 문제 (3) | 2024.09.12 |
fairseq 모듈을 Pyinstaller로 패키징시 오류 (1) | 2024.09.07 |
옛날에 구해다 놓았던 SATA SSD를 써먹기 위해서 이번에 싸게 SATA USB 엔클로저를 구매했습니다.

대충 이렇게 생긴 상자에 담긴 엔클로저인데 매뉴얼이고 뭐고 아무것도 없습니다. 다만 한가지 알 수 있던건 Orico사의 엔클로저의 짝퉁이라는것.
Orico제품이 워낙 좋다고 하니 이것에 대한 짝퉁이 만들어 진듯 합니다. 다만 Orico제품은 VIA 칩셋을 이용한 반면 이 제품은 JMicron의 칩셋을 이용했습니다. 사실 두 칩셋다 괜찮기로 유명한 물건입니다.
그런데..

무슨 이유인지 SSD가 드라이브로 인식이 되지 않습니다. 그래서 혹시나 하고 HDD를 꽂아보니 이건 또 인식이 되더군요. 그런데 JMS578칩셋이 SSD 인식이 잘 된다고 보통 이야기 하거든요. 그래서 혹시나 하고 펌웨어 문제인가 하고 찾아봤더니...
뭔가 엄청나게 펌웨어가 많습니다.
의외로 Odroid라고 적힌게 있는데 하드커널에서 수정한 펌웨어라고 합니다. 아마도 Odroid에서 쓰기위해서 따로 만든 펌웨어 같은데 (여긴 별명이 취미로 소형 컴퓨터를 만드는 한국업체입니다.) 이걸로도 해보고 막 바꿔가며 해본 결과...

여기 있는 것중 구버전 v00.04.00.05 (선택된것이 아닌 Bus Power+ ODD가 적힌 펌웨어)로 바꾸니 이게 왠걸...?
갑자기 SSD가 인식이 됩니다.
어이가 없더군요. 이게 JMicron에서 제공한 표준 펌웨어 였고 여타 다른 업체에서 펌웨어 수정을 통해 별의별 작업을 해놓았나 보더군요. 그게 도리어 호환문제를 일으켰고 펌웨어를 계속 바꾸다보니 인식이 됐습니다. 이게 문제가 좀 있다고 하는데.... 그래도 일단 동작은 해야 뭘 쓰던가 말던가 하죠...
암튼 덕분에 고생좀 했습니다.
그런데 뭔가 좀 궁금해졌습니다. 다른 펌웨어는 어떨까?
그래서 작동이 되지 않던 1XX나 하드커널 펌웨어가 아닌 다른 펌웨어를 한번 해봤습니다.
JMS578_Beihuan_v68.01.00.02.bin

RD Version 체크하고 Inculde JMS577 NVRAM까지 하고 돌려봤습니다.
....? 이건 인식이 또 되네요?
이게 아마 UASP지원 펌웨어라고 알고 있는데 갑자기 뭔가 잘 되니까 또 이상한 기분....
일단 잘은 몰라도 뭔가 되기는 됐습니다.
'기타 삽질' 카테고리의 다른 글
PC용 프로그램을 모바일로 이식할때 생각해야하는 것 (0) | 2025.04.07 |
---|---|
구글 픽셀을 이용해서 기존에 업로드된 구글포토를 어떻게든 무제한 업로드로 바꿔보자. (0) | 2024.11.24 |
키보드 커스텀에 맛들리면 안 되는데... (6) | 2024.11.13 |
ffmpeg-python 패키지 사용시 오류 문제 (3) | 2024.09.12 |
fairseq 모듈을 Pyinstaller로 패키징시 오류 (1) | 2024.09.07 |