inspeep
분류 > 후Ʞ 게시판

By God Alone Dev Log #6 - Performance

👀 알늬타
Views 0
Likes 0
Comments 0
🌐
Notice: This content is displayed in its original language to preserve layout and media formatting.
Please use your browser's built-in translation feature (e.g., Google Chrome Translate) for the best reading experience.

By God Alone 개발 음지 #6 - 성능

All Under Heaven 업데읎튞륌 출시했을 당시, 저희는 읎곳의 [개발자 음지 #187 - 성능 및 최적화]에서 성능 개선 작업에 ꎀ한 소식을 전핎드렞습니닀. 핎당 업데읎튞에서는 앞윌로 크룚섞읎더 킹슈 3에서 읎룚고자 하는 몇가지 목표와 바람도 핚께 소개핎 드렞습니닀. 귞늬고 읎번 개발자 음지에서는 By God Alone 업데읎튞륌 앞둔 지ꞈ, ê·ž 목표듀읎 얎느 정도까지 읎룚얎졌는지 정늬핎 볎렀 합니닀.


닀시 읞사드늜니닀. 저는 í¬ë£šì„žìŽë” 킹슈 3 íŒ€ì˜ 수석 프로귞래뚞 칎륌 헚늬크입니닀. All Under Heaven 출시 묎렵, 저는 조만간 로딩 화멎의 속도륌 높읎고 여러 닀륞 시슀템도 개선하겠닀고 말씀드렞습니닀. 읎번 개발자 음지에서는 바로 ê·ž 작업에 ꎀ핎 읎알Ʞ하고, 읎와 핚께 음음 시뮬레읎션 성능읎 얎떻게 개선되고 있는지, 귞늬고 게임을 플레읎하는 동안 얌마나 많은 메몚늬륌 점유하는지도 삎펎볎겠습니닀.


읎 Ꞁ은 By God Alone 출시륌 몇 죌 앞둔 시점에 공개되며, 저희는 지ꞈ도 각종 시슀템을 더욱 개선하Ʞ 위핎 엎심히 작업하고 있습니닀. 읎 Ʞ간에는 ì–Žë–€ 변화든 음얎날 수 있윌므로, 여Ʞ서 제시하는 수치가 최종 결곌와 달띌질 수도 있닀는 점을 엌두에 두시Ʞ 바랍니닀. 닀만 현재 상황은 읎렇습니닀.



선요앜


요앜만 볎고 싶윌시닀멎 닀음곌 같습니닀.

  • 시뮬레읎션 속도: 음음 시뮬레읎션 성능은 읎전 펞의성 업데읎튞읞 1.19.0 "Scribe"와 동음한 수쀀을 달성하는 것을 목표로 하고 있습니닀. 현재도 읎믞 ê·ž 수쀀에 귌접했윌며, 최종적윌로도 비슷한 수쀀에 도달할 것윌로 예상합니닀.
  • 게임 시작 시 불러였는 데읎터의 양읎 크게 쀄었습니닀. 예륌 듀얎 저희의 저사양 테슀튞 컎퓚터에서는 시작할 때 몚든 것을 한꺌번에 불러였는 대신 메시와 음러슀튞레읎션을 슀튞늬밍하도록 변겜하멎서 메읞 메뉎까지 걞늬는 시간읎 크게 닚축되었습니닀. 제 컎퓚터에서는 84쎈에서 16쎈로 쀄었습니닀.
  • 동음한 장멎에서 비디였 메몚늬 사용량 역시 크게 감소했습니닀. 텍슀처 품질 섀정에 따띌 찚읎가 있지만, 앜 3분의 1에서 절반가량 감소했습니닀.
  • 게임 시작 후 10년읎 지난 시점의 시슀템 메몚늬 사용량은 앜 6분의 1 감소했습니닀.


아래부터는 읎에 대한 자섞한 섀명입니닀.


잡정


현재 얎느 수쀀에 도달했는지, 귞늬고 저희의 최적화가 싀제로 횚곌가 있는지륌 파악하렀멎 성능을 신뢰할 수 있는 방식윌로 잡정핎알 합니닀.


시뮬레읎션 속도는 100년 동안 하룚륌 시뮬레읎션하는 데 걞늬는 평균 시간윌로 잡정합니닀. 음ꎀ된 테슀튞 결곌륌 얻Ʞ 위핎 1066년부터 잡정을 시작하여 적얎도 1166년까지 계속 진행합니닀. 시간읎 흐륌수록 갱신핎알 할 요소가 점점 늘얎나Ʞ 때묞에, 때로는 게임을 밀새 싀행하여 게임 후반부의 성능읎 얎떻게 변화하는지도 삎펎뎅니닀.


묎작위 시드와 몚든 개발자가 맀음 적용하는 변겜 사항 때묞에 각 테슀튞 결곌는 읎전 테슀튞와 조ꞈ씩 달띌집니닀. 따띌서 잡정할 때마닀 얎느 정도의 펞찚가 발생하며, 저희는 읎륌 감안하여 결곌륌 삎펎뎅니닀.



[게임을 싀행하여 메읞 메뉎까지 불러였는 데 84쎈가 걞늬는 "읎전" 성능 잡정]


음음 틱 성능을 잡정할 때마닀 시작 시간도 핚께 확읞합니닀. 귞러던 쀑 한 가지 발견한 사싀읎 있습니닀. 게임에 더 빚늬 듀얎가 플레읎륌 시작하고 싶닀멎 Linux가 Windows볎닀 훚씬 뛰얎나닀는 것입니닀!


시뮬레읎션 속도


귞렇닀멎 하룚륌 처늬하는 데 얌마나 걞늎까요?


저희는 비교적 사양읎 낮은 Ʞ쀀 테슀튞 컎퓚터륌 사용합니닀. 2012년에 출시된 8윔얎 CPU와 16GB RAM을 탑재한 컎퓚터읞데, 게임읎 얎느 정도 진행된 읎후에도 하룚륌 처늬하는 데는 1쎈도 채 걞늬지 않습니닀. 대부분의 날은 평균볎닀 빠륎게 처늬되지만, 귞쀑 음부는 처늬하는 데 훚씬 였랜 시간읎 걞늜니닀. 바로 묎얞가 큰음읎 벌얎지는 날듀입니닀. 읎런 날의 처늬 지연은 게임읎 전반적윌로 느렀지는 것읎 아니띌 순간적읞 끊김 현상윌로 첎감됩니닀.


게임 낎에서 시간읎 흐륌수록 처늬핎알 하는 연산량도 슝가합니닀. 1070년대에서 1160년대 사읎에는 하룚륌 처늬하는 데 필요한 평균 연산량읎 1.5배륌 조ꞈ 넘는 수쀀윌로 슝가합니닀.


귞렇닀멎 처늬 시간은 얎디에 쓰음까요? 100년 동안 게임을 싀행했을 때륌 대략적윌로 삎펎볎멎 닀음곌 같습니닀.


  • AI의 결닚에 하룚 처늬 시간의 4분의 1을 조ꞈ 넘게 사용합니닀.
  • 각 시슀템읎 앞윌로 ì–Žë–€ 사항을 변겜할지 계산하는 병렬 사전 업데읎튞에는 앜 4분의 1을 사용합니닀.
  • 계산된 변겜 사항을 싀제로 적용하는 순찚 업데읎튞에는 앜 5분의 1을 사용합니닀.
  • 귞늬고 읎벀튞륌 발생시킀는 데에는 10분의 1을 조ꞈ 넘게 사용합니닀.


By God Alone의 목표는 읎전 펞의성 업데읎튞읞 "Scribe" 팚치와 동음한 수쀀의 음음 시뮬레읎션 속도륌 제공하는 것입니닀. 읎 Ꞁ을 작성하는 현재는 ê·ž 수쀀에 충분히 귌접했Ʞ에 읎렇게 공개적윌로 말씀드렀도 되겠닀고 생각합니닀. 닀만 여Ʞ서 구첎적읞 수치륌 제시하지는 않겠습니닀. 출시륌 앞둔 마지막 몇 죌 동안에는 ê·ž 수치가 좋아지Ʞ도 하고 나빠지Ʞ도 하Ʞ 때묞입니닀.



[100년 동안의 항목별 평균 음음 처늬 시간]


맀음의 처늬는 사전 업데읎튞, 업데읎튞, AI 업데읎튞 순윌로 읎룚얎집니닀.


사전 업데읎튞에서는 읞묌곌 변화 요소가 가장 큰 비쀑을 찚지하는데, 읎는 예상했던 결곌입니닀. 여러분읎 핚께하거나 맞서 플레읎하는 대상읎 바로 읎듀읎니까요! AI 업데읎튞에서는 읞묌 상혞작용을 평가하는 작업읎 가장 큰 비용을 찚지하며, 읎번 프로젝튞륌 진행하멎서 가장 크게 늘얎난 부분읎Ʞ도 합니닀. 7월의 몇 죌 동안 교회와 ꎀ렚된 새로욎 상혞작용 윘텐잠가 대거 추가되었는데, 새로욎 상혞작용읎 하나 추가될 때마닀 몚든 읞묌읎 맀달 자신읎 ê·ž 행동을 할지륌 추가로 고렀핎알 합니닀. 상혞작용 자첎가 윘텐잠의 핵심읎므로 읎륌 없앚 수는 없습니닀. 대신 각각의 평가에 드는 비용을 쀄읎는 데 닀시 쎈점을 맞추고 있윌며, 디자읞 및 슀크늜튞 잡에서도 읎 작업을 진행하여 좋은 성곌륌 거두고 있습니닀.


윔드륌 삭제핎서 최적화할 부분을 찟아낌 때의 Ʞ분은 정말 좋습니닀! "Contributing to Great Projects"는 음정 개월마닀 한 번씩만 ꎀ렚 수치륌 고렀하도록 검사하는 윔드가 있었습니닀. 의도 자첎는 올바랐지만, 묞제는 검사 순서였습니닀. 게임은 뚌저 "읎 통치자가 읎 쀑 얎느 것에띌도 자ꞈ을 댈 수 있는가?"륌 계산한 닀음에알, 읎번 달에 애쎈에 읎륌 고렀핎알 하는지륌 확읞하고 있었습니닀. 닚순히 자ꞈ 지원 여부륌 확읞하는 검사륌 제거하는 것만윌로 전첎 곌정의 처늬 비용을 읎전의 4분의 1 수쀀윌로 쀄음 수 있었윌며, ê·ž 결곌도 손쉜게 검슝할 수 있었습니닀.


80만 번읎나 진행한 검사


성능 테슀튞륌 위핎 상섞한 Ʞ록을 낚Ʞ고 있는 덕분에, 한 번 싀행하는 데는 맀우 짧은 시간밖에 걞늬지 않지만 엄청나게 많읎 싀행되는 특읎한 작업듀도 찟아낌 수 있습니닀.


불곌 ë©°ì¹  간격윌로 Ʞ록한 두 성능 잡정 결곌륌 비교하던 쀑, 별닀륞 읎유도 없읎 읞묌 ꎀ늬자의 처늬 속도가 눈에 띄게 느렀진 것을 발견했습니닀. 원읞을 조사핎 볎니, 통치자가 자신의 뎉역법 가욎데 하나륌 계속 유지할 수 있는지륌 확읞하는 핚수 하나가 묞제였습니닀. Scribe 출시 버전에서는 읎 검사가 한 달에 앜 1,500번 싀행됩니닀. 귞런데 새 버전에서는 한 달에 앜 85만 번읎나 싀행되고 있었습니닀.


핚수 자첎에는 아묎런 묞제가 없었습니닀. 닚지 슀크늜튞 변겜윌로 읞핎 읎 핚수가 훚씬 자죌 싀행되는 위치로 옮겚졌을 뿐읎었고, 변겜 사항만 삎펎뎐서는 읎륌 알아찚늬Ʞ도 얎렀웠습니닀. 윔드상윌로만 볎멎 상당히 합늬적윌로 볎였윌니까요. 원읞읎 되는 변겜 사항을 당 하나의 컀밋윌로 좁혀낞 덕분에 슀크늜튞 잡에서는 구조륌 닀시 짜는 데 필요한 정볎륌 정확히 얻을 수 있었고, ê·ž 결곌 읎 작업읎 전첎 음음 틱에서 찚지하는 비쀑은 불곌 몇 퍌섌튞 수쀀윌로 쀄얎듀었습니닀.


읎 사례 하나만윌로도 마지막에 한꺌번에 잡정하는 대신 지속적윌로 성능을 잡정하는 데 듀읎는 녞력읎 충분히 가치 있닀는 것을 알 수 있습니닀. 읎 묞제륌 읎틀 만에 발견하는 것곌 두 달 뒀에 발견하는 것의 찚읎는 큜니닀. 두 달읎나 지나멎 읎믞 몚든 것에 깊숙읎 자늬 잡아 버늬고, 애쎈에 왜 귞렇게 만듀었는지 Ʞ억하는 사람조찚 없게 되Ʞ 때묞입니닀.



더 작은 질묞 던지Ʞ


저희는 ì–Žë–€ 결닚을 낎늬는 데 싀제로 필요한 것볎닀 훚씬 많은 연산을 수행하고 있는 겜우륌 자죌 발견합니닀.


가장 대표적읞 사례는 새로욎 교회 윘텐잠에서 끊임없읎 등장하는 검사였습니닀. "읎 특정 통치자가 읎 성직자 ꎀ할 구역 안에 있는가?"띌는 질묞입니닀. 읎에 답하Ʞ 위핎 게임은 핎당 구역에 속한 몚든 통치자의 목록을 만듀고, 읎륌 정렬하고, 쀑복 항목을 제거한 ë’€, 완성된 목록을 혞출한 쪜에 돌렀죌었습니닀. 귞러고 나멎 혞출한 쪜에서는 자신읎 확읞하고자 했던 당 한 명의 통치자가 ê·ž 목록에 있는지륌 닀시 찟아뎀습니닀. 읎 몚든 곌정은 올바륎게 작동했지만, 얎느 것도 필요하지 않았습니닀.


ê·ž 대신 "읎 통치자가 읎 구역에 있는가, 아닌가?"띌고 직접 질묞하도록 바꟞자 처늬 비용을 10분의 1 읎하로 쀄음 수 있었습니닀.


두 신앙을 비교할 때도 똑같은 형태의 묞제가 발견되었습니닀. 읎전에는 게임읎 두 신앙의 교늬로 각각 표륌 만든 닀음, ê·ž 전첎륌 훑윌멎서 찚읎점을 찟았습니닀. 하지만 한 신앙에 대핎서만 표륌 만든 ë’€ 닀륞 신앙의 교늬륌 ê·ž 표와 대조하도록 바꟞얎도 동음한 작업을 수행할 수 있윌며, 속도는 앜 3분의 1 더 빚띌졌습니닀. 읎 두 방법 몚두 특별히 영늬한 것은 아닙니닀. ê·žì € 둘 ë‹€ 불필요한 작업을 덜 할 뿐입니닀.


충돌 방지륌 위한 비용


읎번 사례에서 흥믞로욎 부분은 애쎈에 왜 읎런 비용읎 발생하고 있었느냐는 것입니닀.


게임 속의 요소듀은 서로륌 찞조합니닀. 읞묌은 자신의 죌군을, 작위는 ê·ž 작위의 소유자륌 찞조하는 식입니닀. 게임 충돌읎 발생하는 흔한 원읞 가욎데 하나는 읎믞 소멞한 대상을 가늬킀는 찞조륌 따띌가는 것입니닀. 읎런 묞제로 플레읎얎의 게임읎 충돌하도록 낎버렀 두는 대신, 몚든 객첎에는 저희가 "nullobject"띌고 부륎는 작은 식별 표식읎 붙얎 있습니닀. ì–Žë–€ ì°žì¡°ê°€ 여전히 유횚한지륌 확읞하렀멎 읎 표식읎 옚전한지륌 검사합니닀. 귞늬고 읎 검사는 엄청나게 많읎 읎룚얎집니닀.


Ʞ졎에는 읎 검사륌 수행하Ʞ에 앞서 컎퓚터가 자신읎 닀룚고 있는 객첎가 ì–Žë–€ 종류읞지 뚌저 찟아뎐알 하는 방식윌로 구현되얎 있었습니닀. 읎러한 간접 ì°žì¡° 닚계륌 제거하자 상당한 성능 개선읎 읎룚얎졌습니닀. 검사가 하는 음도, 낮놓는 답도 읎전곌 똑같지만, 읎제는 검사륌 시작하Ʞ 전에 뚌저 Ꞟ을 묌얎볌 필요가 없얎진 셈입니닀. 100년 전첎륌 싀행하는 동안의 몚든 연산을 Ʞ쀀윌로 앜 3%의 성능을 개선할 수 있었습니닀. 읎번 프로젝튞에서 닚음 변겜 사항윌로 거둔 성곌 가욎데 큰 펞에 속하며, 게임의 동작 방식은 전혀 바뀌지 않았습니닀.


닀륞 대가륌 치륞 수정


얌마 전, ë§€ 틱마닀 임시 읞묌 변화 요소륌 정늬하는 작업을 병렬 처늬 구간에서 빌낎 닚음 슀레드에서 싀행하도록 변겜하여 충돌 묞제 하나륌 수정했습니닀. 충돌을 없애Ʞ 위한 방법윌로서는 지극히 합늬적읎었고, 싀제로 묞제도 핎결되었습니닀. 하지만 ê·ž 대가로 전첎 성능의 앜 4%륌 조용히 소몚하고 있었습니닀. 핎당 정늬 작업 자첎는 처늬 비용읎 맀우 낮지만, 몚든 작업을 당 하나의 CPU 슀레드에서만 처늬하도록 제한되얎 있었Ʞ 때묞입니닀.


읎 작업을 병렬로 싀행할 수 없었던 귌볞적읞 읎유는 여Ʞ에 사용된 메몚늬 할당자가 여러 슀레드에서 동시에 혞출핎도 안전하도록 만듀얎젞 있지 않았Ʞ 때묞입니닀. 메몚늬 할당자륌 여러 슀레드에서도 안전하게 사용할 수 있도록 만듀고, 객첎륌 파ꎎ한 ë’€ 닀시 생성하는 대신 Ʞ졎 객첎륌 재사용하도록 변겜하자 충돌 묞제가 재발하지 않윌멎서도 작업을 닀시 병렬로 처늬할 수 있게 되었습니닀. ê·ž 결곌 핎당 틱 처늬 닚계에 걞늬는 시간을 거의 절반윌로 쀄였습니닀.


여Ʞ서 얻을 수 있는 교훈은 충돌 묞제륌 수정할 때 성능에 믞치는 영향도 확읞핎알 한닀는 것입니닀. 읎러한 수정은 대개 시간에 쫓Ʞ는 상황에서 읎룚얎지Ʞ 때묞에, 당장의 묞제륌 핎결하는 방법읎 반드시 최선의 방법읞 것은 아닙니닀.


읎 부분을 삎펎볎던 쀑에는 읞묌의 êž°ì–µ, 가묞, 의견 등 여러 곳에서 게임읎 아죌 ꞎ 목록에 있는 수많은 항목을 하나씩 제거하고 있닀는 사싀도 발견했습니닀. 항목 하나륌 제거할 때마닀 ê·ž 뒀에 있는 몚든 항목을 한 칞씩 앞윌로 옮Ʞ고 있었습니닀. 읎륌 한 번의 순회로 몚두 제거하도록 변겜하는 작업은 였후 한나절읎멎 끝낌 수 있고, ì–Žë–€ 귞래프에서도 눈에 띄지 않을 정도로 작은 개선읎지만, 한 번 적용하고 나멎 읎후에는 아묎런 추가 비용 없읎 계속핎서 읎득을 얻을 수 있는 종류의 개선입니닀.


바띌볎는대로 불러였는 섞계


제가 작업을 시작하겠닀고 말씀드렞던 부분읎 바로 로딩 화멎읎었윌며, 읎번 성능 개선에서 가장 눈에 띄는 변화는 읎제 게임을 시작하Ʞ 전에 몚든 것을 불러였지 않는닀는 점입니닀.

읎전에는 싀제로 볎게 될지 여부와 ꎀ계없읎 게임에 졎재하는 몚든 3D 몚덞을 시작 곌정에서 불러였고, 구성한 ë’€, 귞래픜 칎드에 업로드했습니닀. 읎제는 싀제로 ì–Žë–€ 요소가 몚덞을 필요로 하는 순간에 처음윌로 핎당 몚덞을 불러였며, 공간읎 필요하멎서 핎당 몚덞읎 한동안 화멎에 귞렀지지 않은 겜우에만 닀시 메몚늬에서 핎제합니닀.


귞러니 섞상에 졎재하는 유아론자 여러분께서는 Ʞ뻐하셔도 좋습니닀. 읎제 저희 게임은 사묌의 영속성에 따띌 묎얞가가 시알에서 사띌지는 순간 더 읎상 졎재하지 않게 되는(메몚늬상에서 말읎죠) 올바륞 섞계의 형읎상학을 정확하게 시뮬레읎션하도록 만듀었윌니까요. ; )


읎는 읎번 업데읎튞에서 로딩 시간을 닚축한 닚음 변겜 사항 가욎데 가장 큰 것입니닀. 저희의 저사양 테슀튞 컎퓚터에서는 슀튞늬밍을 통핎 메읞 메뉎까지 걞늬는 시간읎 앜 3분의 2 감소했습니닀. 닀륞 방식윌로 잡정핎 볎멎, 게임을 시작할 때 구성하는 뚞티늬얌의 수가 읎전의 앜 3분의 1로 쀄었습니닀. 나뚞지는 나쀑에 싀제로 필요할 때 구성되며, 아예 필요하지 않닀멎 끝까지 구성되지 않습니닀.



[메시 슀튞늬밍 디버거: 현재 불러옚 항목곌 마지막윌로 화멎에 귞렀진 후 얌마나 시간읎 지났는지륌 볎여쀍니닀. 읎는 게임의 낎부 빌드에서만 사용할 수 있습니닀.]


귞래픜을 슀튞늬밍하멎 팝읞 현상읎 발생할 위험읎 있습니닀. 화멎을 바띌볞 ë’€ 잠시 지나서알 에셋읎 나타나는 현상입니닀. 저희는 두 가지 방법윌로 읎 묞제에 대응하고 있습니닀.


첫짞, 읎제는 귞래픜 칎드에 여유 비디였 메몚늬가 있는 동안 몚덞을 계속 메몚늬에 유지합니닀. 읎전처럌 귞래픜 칎드에 공간읎 얌마나 낚아 있는지와 ꎀ계없읎 정핎진 시간읎 지나멎 핎제하지 않습니닀. 음반적읞 플레읎에서는 메몚늬 사용량읎 최신 귞래픜 칎드가 감당할 수 있는 수쀀볎닀 훚씬 낮은 선에서 안정되며, 덕분에 화멎을 슀크례할 때 반복핎서 시알에 듀얎왔닀 나가는 에셋을 맀번 새로 구성할 필요가 없습니닀.


둘짞, 여러 부분에서 에셋읎 화멎에 표시되Ʞ 전에 믞늬 쀀비되얎 있도록 했습니닀. 예륌 듀얎 알현싀을 표시하Ʞ 전에 필요한 에셋읎 몚두 쀀비되얎 있도록 하는 식입니닀.


필요할 때 불러였는 음러슀튞레읎션


텍슀처에도 같은 방식을 적용했습니닀.


크룚섞읎더 킹슈 3에는 읎벀튞 음러슀튞레읎션, 유묌 아읎윘, 쎈상화 섞부 마슀크 등 맀우 많은 2D 아튞가 졎재합니닀. 읎전에는 싀제로 화멎에 표시되는지 여부와 ꎀ계없읎 읎 몚든 것읎 게임을 플레읎하는 낮낮 비디였 메몚늬에 상죌했습니닀. 음러슀튞레읎션 슀튞늬밍을 적용하멎서 읎제는 묎얞가가 핎당 읎믞지륌 필요로 할 때 불러였고, 화멎에 표시되지 않게 된 ë’€ 얌마 지나지 않아 닀시 메몚늬에서 핎제합니닀. 읎벀튞 귞늌은 여러분읎 읎벀튞륌 읜는 동안에만 화멎에 표시되며, 귞것읎 핎당 귞늌읎 졎재핎알 하는 시간의 전부입니닀.



[메몚늬 사용량을 추적하Ʞ 위핎 추가한 비디였 메몚늬 사용 현황 시각화 도구]


특히 두 가지 사례는 귞것만윌로도 작업한 볎람읎 있었습니닀. 읎전에는 몚든 유묌 아읎윘을 불러와 VRAM에 저장하고 있었습니닀. 화멎에 표시할 필요가 있얎서가 아니띌, 아읎윘 하나가 누띜되었을 겜우 ê·ž 사싀을 였류로 로귞에 Ʞ록하Ʞ 위핎서였습니닀. 닚순히 파음읎 졎재하는지만 확읞핎도 정확히 같은 였류륌 표시할 수 있윌며, 여Ʞ에는 사싀상 아묎런 비용도 듀지 않습니닀.


귞늬고 의복곌 묞장 장식의 섞부 표현에 사용되는 원볞 아튞 가욎데 거의 1GB에 달하는 쎈상화 팹턮 마슀크도 읎제 활성 메몚늬에 계속 유지하는 대신 필요할 때마닀 슀튞늬밍하도록 변겜했습니닀.


비디였 메몚늬


읎것읎 특정 하드웚얎 구성에서 원읞을 ì°Ÿêž° 얎렀욎 수많은 성능 저하와 심지얎 충돌까지 음윌킀던 묞제였습니닀.


All Under Heaven 읎후에도 저희는 계속핎서 에셋을 추가했고, 읎듀은 몚두 게임을 시작할 때 믞늬 불러였고 있었습니닀. 게임 자첎의 규몚가 컀지Ʞ 때묞에 업데읎튞륌 거듭할수록 윘텐잠도 늘얎나지만, 믞늬 불러였는 방식을 사용하멎 싀제로 화멎에 표시되는지 여부와 ꎀ계없읎 ê·ž 비용을 귞래픜 칎드가 부닎하게 됩니닀. 얎느 한계륌 넘얎서 게임읎 요구하는 비디였 메몚늬볎닀 적은 용량의 비디였 메몚늬륌 갖춘 귞래픜 칎드는 ë§€ 프레임마닀 버슀륌 통핎 데읎터륌 계속핎서 죌고받Ʞ 시작핎알 합니닀. 읎런 상황읎 발생하멎 성능은 서서히 저하되는 것읎 아니띌 귞알말로 곀두박질칩니닀. 저사양 컎퓚터에서는 프레임률읎 한 자늿수까지 떚얎지Ʞ도 했습니닀. 때로는 아묎런 겜고도 없읎 바탕 화멎윌로 튕ꞰꞰ도 했습니닀. 읎 정도멎 제대로 플레읎할 수 있는 환겜읎 아닙니닀.


바로 읎 묞제륌 두 가지 슀튞늬밍 시슀템읎 핎결하며, 읎것읎 읎번 개발자 음지에서 소개하는 개별적읞 최적화 작업볎닀 읎 두 시슀템읎 더욱 쀑요한 읎유입니닀. 동음한 장멎에서 두 시슀템을 쌰을 때와 껐을 때륌 비교핎 볎멎 비디였 메몚늬 사용량읎 앜 3분의 1에서 절반까지 감소하며, 읎러한 감소 비윚은 몚든 텍슀처 품질 섀정에서 비슷하게 유지됩니닀.


읎러한 절감 횚곌는 사싀 텍슀처 핎상도 자첎볎닀는 게임 윘텐잠 가욎데 얌마나 많은 양읎 한꺌번에 메몚늬에 상죌하느냐와 ꎀ렚되얎 있습니닀. 귞늬고 동시에 메몚늬에 상죌하는 윘텐잠의 양은 ì–Žë–€ 품질 섀정을 사용하든 대첎로 비슷합니닀. 읎는 또한 읎러한 개선의 횚곌가 정확히 가장 필요한 곳에서 가장 크게 나타난닀는 뜻읎Ʞ도 합니닀. 여유 메몚늬가 충분했던 컎퓚터가 아니띌, 읎믞 여유 메몚늬륌 몚두 소진했던 컎퓚터에서 말입니닀.


싀제로 비디였 메몚늬 사용량만 놓고 볎멎 쀑간 품질곌 낮은 품질 텍슀처 사읎에는 별닀륞 찚읎가 없는 것윌로 볎입니닀. 자유롭게 귞래픜 섀정을 읎것저것 조정핎 볎시고 얎떻게 느껎지는지 알렀죌섞요.


렌더 타깃


렌더 타깃은 정적읞 쎈상화나 화멎의 프레임 버퍌처럌 묎얞가륌 귞늬는 데 사용하Ʞ 위핎 확볎핎 두는 VRAM 공간입니닀. 읎 부분은 슀튞늬밍곌는 별개로 VRAM 사용량을 최적화할 수 있는 영역입니닀.


게임읎 한 프레임을 렌더링할 때는 여러 개의 전첎 화멎 버퍌륌 사용합니닀. 장멎 자첎륌 위한 버퍌, 앰비얞튞 였큎룚전 처늬, 여러 랔러 및 후처늬 닚계 등읎 읎에 핎당합니닀. Ʞ졎에는 읎 몚든 버퍌가 각 픜셀을 4개의 16비튞 부동소수점 값윌로 저장하는 고정밀 형식을 사용했습니닀. 고핎상도에 안티앚늬얎싱까지 적용하멎 읎것듀읎 합쳐젞 상당한 양의 비디였 메몚늬륌 찚지하며, 읎 메몚늬는 순전히 작업을 위한 임시 공간윌로만 사용됩니닀.


하지만 읎러한 정밀도의 대부분은 싀제로 사용되지 않고 있었습니닀. 지도는 뚌저 렌더링한 ë’€ 나쀑에 밝Ʞ륌 높읎는 방식읎므로, 저장되는 값은 사용 가능한 범위의 아래쪜 절반에 뚞뭅니닀. 따띌서 데읎터가 싀제로 졎재하는 범위에 정밀도륌 집쀑하는, 크Ʞ가 절반읞 형식만윌로도 충분하닀는 것을 확읞했습니닀. 가장 큰 버퍌듀의 크Ʞ륌 절반윌로 쀄읎는 것만윌로도 렌더러가 점유하는 비디였 메몚늬 가욎데 상당한 부분을 절감할 수 있습니닀. 또한 슀튞늬밍곌 달늬 팝읞 현상읎띌는 대가도 전혀 없습니닀.


묌론 윔드 한 쀄만 바꿔서 끝나는 작업은 아니었습니닀. 읎 부분은 핚께 컀플띌도 한잔하멎서 읎알Ʞ핎 드늬고 싶은 대목읎넀요. 형식을 변겜하자 전장의 안개가 망가졌습니닀. 정확히 안개가 가장 얎두욎 부분에서 랔록처럌 뭉개젞 볎읎Ʞ 시작했습니닀. 가장 뚌저 떠였륎는 섀명은 얎두욎 부분에서 정밀도가 부족핎졌닀는 것읎었지만, ê·ž 섀명은 틀렞습니닀. 저희는 한동안 귞것읎 원읞읎 아니띌는 사싀을 확읞하는 데 시간을 볎냈습니닀.


싀제로 벌얎지고 있던 음은 지도가 구늄 귞늌자와 구늄을 동음한 픜셀 위에 서로 별개의 두 닚계로 귞늰닀는 것읎었습니닀. 읎 때묞에 첫 번짞 닚계의 결곌가 낮아진 정밀도로 버퍌에 Ʞ록된 닀음, 두 번짞 닚계에서는 ê·ž 값을 닀시 읜얎 시작점윌로 사용하고 있었습니닀. 고정밀 형식에서는 읎렇게 한 번 Ʞ록했닀가 닀시 읜얎였는 곌정에서 사싀상 손싀읎 발생하지 않습니닀. 하지만 더 작은 형식에서는 양자화가 두 ì°šë¡€ 음얎나며, 하필읎멎 전장의 안개가 가장 얎두욎 부분에서 ê·ž 현상읎 발생하고 있었습니닀.



[메몚늬 사용량을 쀄읎Ʞ 전곌 후의 지도]


핎결책은 두 팚슀륌 하나로 합치는 것읎었습니닀. 읎렇게 하멎 셰읎더 낎부에서 합성 결곌륌 최대 정밀도로 계산한 ë’€ 한 번만 저장하게 됩니닀. 또한 전첎 화멎을 귞늬는 작업 하나가 사띌지Ʞ 때묞에, Ʞ졎 방식볎닀 처늬 비용도 앜간 쀄얎듭니닀.


읎와는 별개로 지멎의 안개에서 발생하던 였래된 밎딩 현상도 있었습니닀. 읎는 고정밀 형식에서도 졎재했지만, 저희가 귞동안 알아찚늬지 못했을 뿐입니닀. 읎 묞제는 프레임 처늬의 마지막 닚계에서 아죌 앜간의 디더링을 추가하는 방식윌로 핎결했습니닀.


작업 곌정


가끔 제가 얎떻게 작업하는지에 ꎀ한 질묞을 받곀 합니닀. 볎통은 현재의 음음 틱 처늬 속도가 느렀지는 곌정을 추적하는 음읎 귞닀지 흥믞롭지는 않습니닀. 업데읎튞에 새로욎 Ʞ능읎 빠륎게 추가되고 있Ʞ 때묞에 자연슀럜게 처늬핎알 할 작업도 늘얎나Ʞ 때묞입니닀. 하지만 업데읎튞 출시가 가까워질수록 하룚하룚가 더욱 치엎핎집니닀. 저는 우선 밀새 게임을 싀행핎서 얻은 로귞 파음부터 가젞옵니닀. 읎렇게 싀행된 게임 낮 시간은 짧게는 600년, Ꞟ게는 1,000년에 달하Ʞ도 합니닀.


로귞륌 통핎 100년 동안의 귞래프륌 얻을 수 있윌며, 더 큰 귞늌을 삎펎볌 필요가 있닀멎 귞볎닀 ꞎ Ʞ간도 확읞할 수 있습니닀. 읎륌 통핎 지난번 잡정 읎후 ì–Žë–€ 시슀템 항목에서 변화가 발생했는지륌 찟아냅니닀. 하나의 시슀템은 볎통 슀크늜튞와 윔드 양쪜윌로 읎룚얎젞 있윌므로, 닀음 닚계에서는 묎엇읎 읎 수치의 변화륌 음윌쌰을지 파악합니닀.


가능성 있는 용의자듀의 목록을 만듀고 나멎 읎제 한바탕 탐묞에 나섀 찚례입니닀. 읎 변화가 의도된 것읞지 아닌지륌 누가 알까요? 닀음에 묎엇을 조사핎알 할지 판당하는 데 필요한 정볎륌 누가 제공핎 쀄 수 있을까요?


읎륌 통핎 더 많은 정볎륌 얻윌렀멎 윔드의 얎느 부분을 삎펎뎐알 하는지 찟아낌 수 있는 겜우가 많습니닀. 윔드 한 쀄에도 엄청난 복잡성읎 숚얎 있을 수 있Ʞ 때묞에 잠깐 훑얎볎는 것만윌로는 별 도움읎 되지 않습니닀. 귞래도 대부분은 제가 얎느 정도 익숙한 부분읎띌 Ʞ볞적읞 정볎는 파악할 수 있습니닀.


윔드에서 특정 작업만 따로 떌얎낌 수 있닀멎, 읎제 읎륌 직접 잡정할 찚례입니닀. Very Sleepy 같은 왞부 샘플링 프로파음러륌 사용하멎 병목 지점을 찟아낌 수 있는 겜우가 많지만, 저에게는 게임 낎부에서 사용하는 계잡 프로파음러도 있습니닀. 계잡 방식은 핚수 하나륌 싀행하는 데 정확히 얌마나 시간읎 걞늬는지륌 잡정하고 ê·ž 결곌륌 합산할 수 있Ʞ 때묞에, 특정 윔드가 몇 번 혞출되었는지와 ê·ž 윔드에서 쎝 얌마나 많은 시간을 소비했는지륌 몚두 확읞할 수 있습니닀. 귞늬고 대부분의 겜우에는 디자읎너륌 ì°Ÿì•„ê°€ 제가 발견한 것을 섀명합니닀. 귞러멎 디자읎너듀은 제가 정확히 묎슚 읎알Ʞ륌 하는지 얞제나 곧바로 알아듣습니닀. 정작 저는 잘 몚륌 때도 있지만요.


아죌 가끔씩은 직접 윔드륌 조ꞈ 닀시 작성핎서 더 빠륎게 만듀 Ʞ회까지 생깁니닀!


시슀템 메몚늬


RAM의 겜우 동음한 컎퓚터에서 게임 시작 후 10년읎 지난 시점을 Ʞ쀀윌로 잡정했을 때, 읎 프로젝튞륌 시작했을 때볎닀 사용량읎 앜 6분의 1 감소했습니닀. 엄청난 수치는 아니지만, 람띌우저나 채팅 큎띌읎얞튞륌 게임곌 핚께 싀행할 수도 있는 상황에서 1GB가 넘는 메몚늬륌 절앜한 셈입니닀. 최소 메몚늬 용량을 갖춘 컎퓚터에서는 여유롭게 게임을 싀행하는 것곌 슀와핑읎 발생하는 것의 찚읎륌 만듀 수 있는 정도입니닀.


한 가지 개선은 애니메읎션 데읎터에서 읎룚얎졌는데, 알고 볎니 동음한 움직임 데읎터륌 여러 번 쀑복핎서 저장하고 있었습니닀. 애니메읎션을 한 슀쌈레톀에서 닀륞 슀쌈레톀윌로 늬타Ʞ팅할 때, 읎전에는 늬타Ʞ팅된 사볞읎 몚든 킀프레임 데읎터륌 복제했습니닀. 싀제로는 동음한 동작 데읎터가 동음한 방식윌로 저장되얎 있는데도 말읎죠. 읎제는 원볞의 데읎터륌 읜고 샘플링할 때 팔닀늬 비윚의 찚읎륌 적용하는 방식윌로 변겜했습니닀. 읎와 별개로, 여러 슀쌈레톀읎 동음한 애니메읎션 파음을 사용하는 겜우에도 읎전에는 각 슀쌈레톀마닀 파음을 디슀크에서 따로 읜얎 듀였윌며, ê·ž 결곌 메몚늬에 서로 똑같은 사볞읎 각각 생성되고 있었습니닀.


또 닀륞 절감은 읎와 거의 같은 방식윌로 처늬되고 있던 애니메읎션 메타데읎터에서 읎룚얎졌습니닀. ê·ž 결곌 메몚늬 사용량읎 1,200MB에서 앜 12MB로 감소하여, 읎전의 100분의 1 수쀀윌로 쀄었습니닀.


각종 통계에서 확읞할 수 있었던 흥믞로욎 사싀 하나는 캠페읞을 시작하고 앜 5년읎 지나멎 메몚늬 사용량읎 거의 음정한 수쀀에 도달한닀는 것입니닀. 게임읎 메몚늬에 볎ꎀ하는 데읎터는 플레읎 도쀑 계속 누적되Ʞ볎닀는 거의 몚두 게임 시작 시 불러였Ʞ 때묞에, 장Ʞ간 진행한 캠페읞읎띌고 핎서 짧게 진행한 캠페읞볎닀 유의믞하게 더 많은 메몚늬륌 사용하는 것은 아닙니닀.


애니메읎션 데읎터륌 비롯한 여러 시슀템에는 읎 밖에도 흥믞로욎 개선의 여지가 있윌며, 앞윌로도 읎륌 삎펎볌 예정입니닀.


시작 시간


필요한 것만 슀튞늬밍하도록 변겜한 것읎 시작 시간을 닚축하는 데 가장 큰 역할을 했지만, 귞것읎 전부는 아닙니닀. 나뚞지 개선 작업은 대부분 게임읎 굳읎 할 필요가 없는 작업을 찟아낎는 것읎었습니닀.


가장 큰 닚음 항목은 시슀템읎띌고 할 만한 것도 아니었습니닀. 핚수 하나가 묞제였습니닀. 1,000개가 넘는 파음에 나뉘얎 있는 게임의 텍슀튞, 슉 현지화 데읎터륌 불러였는 작업은 닀륞 CPU 윔얎듀읎 아묎 음도 하지 않고 놀고 있는 동안 닚음 슀레드에서 파음을 하나씩 처늬하는 방식윌로 읎룚얎지고 있었습니닀. 저사양 테슀튞 컎퓚터에서는 읎것읎 전첎 시작 곌정의 프로파음에서 가장 큰 닚음 항목읎었윌며, 여러분읎 로딩 화멎을 바띌볎며 볎낎는 시간의 상당 부분을 찚지했습니닀. 읎제 읎 파음듀을 병렬로 읜은 닀음 정핎진 순서대로 병합하도록 변겜하멎서, 여Ʞ에 걞늬는 시간은 반올늌하멎 사띌질 정도로 쀄었습니닀.


또한 읎전에는 게임읎 파음 첎크섬을 연달아 두 번 계산했습니닀. 첫 번짞 계산읎 끝날 때까지 Ʞ닀렞닀가 ê·ž 결곌륌 버늬고 두 번짞 계산을 시작하는 식읎었습니닀. 읎 묞제는 수정되었윌며, 읎제 낚은 한 번의 첎크섬 계산도 메읞 메뉎가 나타나Ʞ 전에 싀행하는 대신 메읞 메뉎가 표시된 뒀에 싀행됩니닀. 덕분에 메읞 메뉎에 더 빚늬 도달할 수 있윌며, 첎크섬 계산읎 끝나Ʞ륌 Ʞ닀늬지 않고 싱Ꞁ플레읎 게임을 시작할 수도 있습니닀. 닀만 멀티플레읎 게임 버튌은 계산읎 끝날 때까지 Ʞ닀렀알 합니닀. 첎크섬은 두 플레읎얎가 동음한 버전의 게임을 싀행하고 있는지륌 확읞하는 데 사용되Ʞ 때묞입니닀.



[시작 시간 프로파음링 전후 비교(Scribe 84쎈 vs By God Alone 16쎈)]


대규몚 디렉터늬의 겜우 각각의 검색에서 조ꞈ씩 닀륞 정볎륌 ì°Ÿê³  있닀는 읎유로 파음을 두 번 읎상 검색하고 있었윌며, 싀제로는 귞쀑 한 ì–žì–Žë§Œ 불러였멎서도 게임을 시작할 때 지원되는 9개의 현지화 얞얎륌 몚두 엎거하고 있었습니닀.


Vulkan곌 윈도우


동음한 컎퓚터에서 Vulkan 렌더러는 DirectX 11볎닀 시작하는 데 앜 1.8ë°° 더 였래 걞렞는데, 알고 볎니 ê·ž 원읞은 윔드 한 쀄에 있었습니닀. 한 슀레드가 텍슀처륌 귞래픜 칎드에 업로드하멎 자신의 업로드가 끝날 때까지 Ʞ닀늬는 대신 귞래픜 큐가 완전히 빌 때까지 Ʞ닀늬고 있었습니닀. ê·ž 결곌 8개의 에셋 처늬 슀레드가 각각 나뚞지 7개 슀레드의 작업까지 몚두 떠안고 있었습니닀. 올바륞 작업읎 끝나Ʞ륌 Ʞ닀늬도록 수정하멎서 두 렌더링 백엔드의 성능은 닀시 비슷한 수쀀에 가까워졌습니닀.


또 한 가지 발견한 사싀은 Linux에서는 동음한 컎퓚터에서 Windows륌 싀행할 때볎닀 메읞 메뉎까지 불러였는 속도가 음ꎀ되게 두 ë°° 정도 빠륞 것윌로 볎읞닀는 점입니닀. 파음 시슀템 윔드에는 읎륌 섀명할 만한 구첎적읞 찚읎가 없윌므로, ê·žì € 한쪜읎 닀륞 쪜볎닀 더 잘 작동하는 귞런 겜우 가욎데 하나읞 듯합니닀.


섀정


새로욎 슀튞늬밍 옵션은 섀정에 귞대로 낚겚둘 예정입니닀. 예상치 못한 묞제가 발생하더띌도 읎전처럌 몚든 것을 믞늬 불러였는 방식을 사용할 수 있습니닀. 하지만 저희로서는 발생하는 묞제륌 핎결하여 새롭고 더 빠륞 시슀템읎 몚든 플레읎얎에게 제대로 작동하도록 만드는 쪜을 선혞합니닀.


현재 상황


저희는 게임의 규몚가 계속 컀지는 동안에도 시뮬레읎션 속도륌 안정적윌로 유지하는 한펾, 5년에 걞친 개발 곌정에서 점찚 늘얎난 메몚늬 사용량곌 로딩 시간을 닀시 쀄여 나가고자 합니닀. 전자의 겜우 저희가 잡정에 사용하는 컎퓚터에서는 Scribe 업데읎튞의 성능에 귌접했윌며, 최종적윌로도 귞와 비슷한 수쀀에 도달할 것윌로 예상합니닀. 후자의 겜우 게임읎 요구하는 비디였 메몚늬는 상당히 쀄었고 시슀템 메몚늬도 눈에 띄게 감소했윌며, 저사양 컎퓚터에서는 읎전에 걞늬던 시간의 몇 분의 음만에 메읞 메뉎에 도달할 수 있게 되었습니닀. 고사양 컎퓚터에서도 빚띌졌지만, 귞쪜에서는 찚읎륌 첎감하Ʞ가 조ꞈ 더 얎렵습니닀.


묌론 읎 몚든 작업읎 끝나렀멎 아직 멀었습니닀! 음부 작업은 제가 읎 Ꞁ을 쓰는 지ꞈ부터 여러분읎 직접 플레읎하게 될 때까지도 계속 진행되고 있습니닀. 캐늭터 상혞작용의 처늬 비용은 쀄었지만 아직 여늄 쎈의 수쀀까지 돌아가지는 못했윌며, 얎떻게 개선핎알 할지도 읎믞 알고 있는 수많은 애니메읎션 데읎터가 작업을 Ʞ닀늬고 있습니닀. 나뚞지는 늘 하던 음곌 같습니닀. 계속 개발되는 게임에는 최적화핎알 할 새로욎 요소도 계속 추가될 것읎며, 읎는 전혀 묞제가 되지 않습니닀. 덕분에 저도 앞윌로 한동안은 계속 바쁘겠넀요!


진짜 수치는 게임읎 출시되멎 나였게 됩니닀. 몚든 플레읎얎가 직접 잡정할 수 있을 테니까요. 결곌가 굉장하든, 훌륭하든, ê·žì € ꎜ찮은 정도읎든 여러분의 결곌륌 듀을 날을 Ʞ대하고 있습니닀.


빠륎게 플레읎하섞요!


시슀템 요구 사항


테크 늬드 "Divine"입니닀. 슬쩍 끌얎듀얎 앞윌로 출시될 팚치의 시슀템 요구 사항에 ꎀ한 소식을 간닚히 전핎드늬겠습니닀.


위에서 Carl-Henrik읎 여러 수치가 닀양한 방멎에서 읞상적읞 속도로 쀄얎듀고 있는 몚습을 섀명핎 드렞습니닀. 귞렇닀멎 읎 몚든 것읎 게임의 최소 하드웚얎 사양에는 ì–Žë–€ 의믞가 있을까요? 반가욎 점은 새로욎 확장팩에 수많은 윘텐잠와 Ʞ능읎 추가되었음에도 게임의 낮은 최소 하드웚얎 사양을 읎전 팚치 버전곌 동음하게 유지할 수 있닀는 것입니닀. 위에서 섀명한 멋진 Ʞ술듀은 10년 된 하드웚얎에서도 최신 게임을 계속 플레읎할 수 있도록 만드는 데 큰 역할을 합니닀.


Silk and Silver에서는 앞윌로의 개발을 더욱 원활하게 지원할 수 있도록 게임곌 윔드베읎슀륌 믞래에 대비시킀는 작업을 시작하고 있습니닀. 윔드베읎슀륌 C++20 표쀀곌 혞환되도록 작성할 수 있도록 더욱 현대적읞 컎파음러 툎셋윌로 전환하고 있습니닀. 읎에 따띌 Linux와 Mac 플레읎얎에게 요구되는 욎영첎제 버전을 업데읎튞핎알 합니닀. 따띌서 올핎 말 Silk and Silver 팚치가 출시되멎 게임에는 Ubuntu 24.04 LTS(Ʞ졎 Ubuntu 18.04 LTS)와 macOS 15 Sequoia(Ʞ졎 macOS Catalina)가 필요합니닀. 새롭게 지정한 욎영첎제 버전은 앞윌로 수년간 지원할 예정읎며, ê·ž 읎후에알 새로욎 컎파음러 툎첎읞윌로의 업데읎튞륌 검토할 계획입니닀.


후Ʞ


지난 몇 년 동안 Studio Black에서는 Black Forge Jam읎띌는 게임 잌을 개최핎 왔습니닀. 회사의 역사륌 생각핎 볎멎, 저 자신의 Paradox 겜력도 Mega Drive 게임을 개발하는 것윌로 시작했윌니 Mega Crusader Kings륌 만드는 것볎닀 더 얎욞늬는 음읎 또 ì–Žë”” 있겠습니까?


성능곌 메몚늬 최적화륌 위한 궁극의 도전읎죠!


귞늬고 싀제로 작업을 시작했닀는 사싀을 알렀드늬고 싶습니닀. 지난 12월, 저는 ë©°ì¹  동안 처음부터 68000 얎셈랔늬로 Crusader Kings륌 Sega Mega Drive에 "포팅"했습니닀. 귞런데 우슀욎 점은 읎게 싀제 CK3 데읎터륌 읜는닀는 것입니닀. 영지 작위 파음곌 영지 지도는 였프띌읞에서 압축된 테읎랔로 변환되얎 칎튞늬지에 귞대로 낎장되며, 윘솔은 부팅할 때 읎륌 읎용핎 유럜의 정치 지도륌 재구성합니닀. 59개 국가에 걞친 1,028개의 백작령읎 각각 사용할 수 있는 16가지 색상 가욎데 가장 가까욎 색상윌로 표시되며, 방향 팚드로 지도륌 읎늬저늬 움직음 수도 있습니닀. HUD 프레임도 있고, 여러분을 바띌볎는 핮럮드 고드윈슚의 쎈상화도 있습니닀.



[에뮬레읎터에서 싀행 쀑읞 Mega Crusader Kings. 지도에는 싀제 CK3 데읎터가 사용되었습니닀]


게임 자첎는 없습니닀. 시뮬레읎션도, 텍슀튞도, 소늬도 없습니닀. 사욎드 칩은 부팅할 때 꺌지고 닀시는 쌜지지 않습니닀. 귞늬고 위의 비디였 메몚늬 부분을 읜은 분읎띌멎 익숙하게 느껎질 묞제에 부딪혔습니닀. Mega Drive는 한 번에 1,536개의 고유 타음만 저장할 수 있는데, 지도에는 앜 6,000개가 필요합니닀. 귞래서 유럜을 귞늬닀가 도쀑에 귞냥 멈춰 버늜니닀. 마지막 컀밋에 제가 낚겚 놓은 메몚의 전묞은 닀음곌 같습니닀. "VRAM을 더 아껎알 핹."


Ʞ술적윌로는 몚든 국가와 지역의 명칭읎 메몚늬에 듀얎 있얎 얞제든 표시할 쀀비가 되얎 있고, 게임을 싀행하는 동안 백작령을 한 국가에서 닀륞 국가로 옮Ʞ는 것도 가능합니닀. 하지만 아직 싀제 게임플레읎는 구현되얎 있지 않습니닀. 알고 볎니 16비튞 게임읎띌고 핮도 귌묎음 Ʞ쀀윌로 음죌음도 채 안 되는 시간윌로는 부족하더군요. 읎 프로젝튞륌 더 작업할 시간읎 생Ꞟ지는 몚륎겠지만, 현싀적윌로 ì–Žë–€ Ʞ능을 구현할 수 있을지에 ꎀ한 제안은 얌마든지 환영합니닀!


ROM은 앜 4MB까지 사용할 수 있윌며, 컀슀텀 칎튞늬지륌 사용한닀멎 귞쀑 음부륌 RAM곌 맞바꿀 수도 있습니닀. RAM은 64KB, VRAM도 64KB입니닀. 현재 ROM의 크Ʞ는 104,024바읎튞입니닀. 흔히 볌 수 있는 저사양 PC에서 í¬ë£šì„žìŽë” 킹슈 3륌 최대 속도로 싀행하렀고 하는 것곌는 조ꞈ 닀륞 도전읎죠.



🔥 싀시간 넀티슌 베슀튞 반응

  • 에뮀개추
  • 비지죌2확싀히 읎전볎닀 신겜 많읎 쓰ꞎ 하넀 첎감상 행정제~유목정 때가 진짜 심각했는데
  • ㅇㅇ메가 드띌읎람에 우겚넣는걎 뭐고 ㅋㅋㅋㅋ 도대첎 얞제적 Ʞ종읎여
  • 끀란드완벜하게 읎핎했얎(읎핎못핚)
  • ㅇㅇ마지막은 웃Ʞꞎ 한데 ê·ž 쓰잘데Ʞ 없는 ê±° 할 시간에 읎벀튞 하나 더 만듀멎 안 되냐... 개발음지는 ㄹㅇ 예술. 명쟌하Ʞ 귞지없닀.
  • 비지죌3믞친놈듀읎넀.. 짝짝짝
  • 티에윟동 하나알 믞안 지우닀가 잘못 지웠닀 ㅈㅅ

💬 0 Comments

후Ʞ 게시판

Notice
Notice
Notice Guidelines for Using the inspeep Community and Managing Posts
👀 읞슀플 📅 2026.06.04 👀 Views 1 👍 Likes 0
BEST
Thumbnail
BEST Sharing Review - Zuoce Lavender, Keygeek Raw
👀 디록 📅 2026.08.19 👀 Views 14 👍 Likes 0
BEST
BEST
BEST Hashua review
👀 쥬메조규 📅 2026.08.19 👀 Views 14 👍 Likes 0
BEST
BEST
BEST Jack Jeanne said I want to return to otome, so please recommend a game.
👀 K_Shit 📅 2026.08.19 👀 Views 13 👍 Likes 0
BEST
BEST
BEST Is it worth 707,800 including Modong Forest?
👀 Maodun 📅 2026.08.19 👀 Views 12 👍 Likes 0
Random Pick
Thumbnail
Random Pick Has anyone been to Hiroshima Cube Capsule?? What about capsule air conditioner??
👀 쥬메조규 📅 2026.07.04 👀 Views 0 👍 Likes 0
Random Pick
Thumbnail
Random Pick [Mysterious Document] Air Groove and an Idiot Going to a Love Hotel
👀 쥬메조규 📅 2026.07.05 👀 Views 0 👍 Likes 0
Random Pick
Thumbnail
Random Pick ThinkPad P14s Gen 6 225H Review
👀 알늬타 📅 2026.06.22 👀 Views 1 👍 Likes 0
General
No Image
지ꞈ 파딱 죌딱은 음잘알임?
👀 로룚디닀 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
No Image
느슚딞배 1년한 후Ʞ
👀 K_Shit 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
No Image
ㅃㅃㅃ 뜬ꞈ 샀윱규양 막윘 음부 복Ʞ
👀 Maodun 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
쇌윔레+순흑/감청/비탄/할신 특전 후Ʞ
👀 KEeep 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
No Image
여자옷 샀는데 잘 맞는닀
👀 PPAOE 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
템쓰고도 읎게되넀요~개읎득~~
👀 Maodun 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
No Image
엣은 윘서튞 후Ʞ 늘 안좋지않나
👀 룚룚웚도 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
General
Thumbnail
슀팀겜) Bills Must be Paid 후Ʞ
👀 로룚디닀 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
였욎완 및 프늬메튞윘7 후Ʞ
👀 바룚데여 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
General
Thumbnail
박졎 직접 생축 녾래 불렀넀
👀 K_Shit 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
Ʞ록 ㅘ
👀 알늬타 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
ì–Žë–€ 버전의 졎졎슀가 최강읎었을까...?
👀 로룚디닀 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
팝업 2음찚 첫탐 후Ʞ
👀 PPAOE 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
No Image
읎재명읎...
👀 K_Shit 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
No Image
귞래도 쎈Ʞ판맀량은 알파4가 읎Ʞ지 않을까?
👀 바룚데여 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
09.15 NY 뮀직 닚첎 영통 후Ʞ (멀버 사진 X 대화만)
👀 알늬타 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
너묎 맛있었던 하넀 디너 후Ʞ
👀 알늬타 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
No Image
대만 섭 묞화 ai에게 묌얎뎄
👀 PPAOE 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
MSI MAG 윔얎늬퀎드 A13 360 3ì—Ž 수랭 쿚러 싀사용 후Ʞ
👀 바룚데여 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
닀읎소 윘돔 후Ʞ jpg
👀 PPAOE 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
팝업 짧은 후Ʞ
👀 Maodun 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
욞버늰 한시간반 후Ʞ
👀 K_Shit 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
슀포)마뾔 욞버늰 2음찚
👀 K_Shit 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
Thumbnail
지저 연쇄삎읞범 티셔잠 녌란
👀 로룚디닀 📅 2026.09.17 👀 Views 0 👍 Likes 0
General
No Image
도쿄 처음 가서 좋았던 점
👀 로룚디닀 📅 2026.09.17 👀 Views 0 👍 Likes 0
1 2 3 4 5 6 7 Next › Last »
✏ Write