Friday Facts #283 - 런칭 준비
Posted by kovarex, Albert, V453000, Bilka, Sanqui on 2019-02-22, 모든 게시물

테스트 플레이 (kovarex)

몇일 테스트 플레이를 하면서, 버그를 고치고 많은 데이터를 쌓았어. 총 3개의 멀티플레이어 베이스를 후반부까지 진행했어.

공해 트윅

우리가 3개의 베이스를 완성하는 동안, 타일의 공해 흡수 값이 상당히 이상하다는 것을 발견했어. 물이 잔디에 비해 너무 환경친화적이라는 점이야.

바다로 이루어진 세계에는 바이터가 적고 목진지가 많은것도 한몫해서, 너무 바이터 막기가 쉬워져버렸지.

그리고 풀밭보다 사막에서 바이터 공격이 거세게 들어오는것도 문젠것 같고.

오염 흡수 설정

0.16 고급 맵 시작 옵션 오염에는 '소멸률' 옵션이 있는데 "공해가 얼마나 빨리 자연 소멸할지 제어합니다."라고 쓰여 있어.

근데 이걸 이해하는 사람들이 몇이나 될까. 결국 아무도 이걸 건드리지 않았지

사실 이 옵션은 1틱마다 (1/60초) 한 타일이 얼마나 많은 공해를 흡수되는지를 나타내는 수식어야. 1~1000 사이에서 설정 가능하고 1보다 낮게 설정할 수 없어.

문제는 기본값이 1이라는 건데, 100으로 설정하면 100배나 더 빨리 공해가 사라지는게 되어버려.

이제 우리는 설정 이름을 '흡수율'로 바꾸고 설명도 바꿨어. 이제 툴팁에 "나무와 타일에 의해 얼마나 많은 오염이 흡수되는지 나타내는 수식어"로 표시하고 값 범위를 10%~400%로 바꿨어. 이걸로 게임의 난이도 조정하는게 더 쉬울거야. 아, 죽세는 기본값 50% :) 스포너 공해 흡수 조정

스포너는 공해를 %단위로 무제한으로 흡수할 수 있었어. 흡수한 공해를 바이터에게 먹여서 공격하게 할 수 있고.

거대한 바이터는 더 많은 공해가 필요하고.

우리는 기지 옆에 있는 스포너의 디버그 데이터를 보고 문제를 발견했어. %단위로 흡수한 공해에 비해 훨씬 적은 양만을 바이터가 먹고 있더라고.




보시다시피, 스포너는 200 PU 공해를 먹여서 바이터 한마리를 공격 부대로 보낼 수 있어.

근데 지금 100,000PU가 넘게 쌓여있잖아. 500마리 배불리고도 남아.


기본적인 문제가 여기서 나오는데, 스포너가 사용하는 속도보다 훨씬 빠르게 무한한 양의 공해를 빨아들인다는 거야. 공해를 앞줄에 있는 스포너가 모두 먹으면 뒷줄에 스포너는 먹을 공해가 없잖아. 그럼 바이터가 적게 나오는데 이건 난이도 설정과 메카니즘에도 영향을 줘.


그래서 스포너가 이제 공해를 배터지면 못먹게 했어. 현재 진화 요인에서 스폰할 수 있는 제일 비싼 유닛 3배만큼만 먹을수 있게 했지


우리는 이후 몇 가지 기본적인 테스트를 통해, 생존 가능한 수준으로 값을 설정했지만 0.17 안정화 동안 기본 오염/진화/공격 값을 조정해야 할 수도 있어.

기지에 갇혀있는 바이터

또 다른 문제는, 바이터들이 너무 자주 기지에 갇혀있다는 거야. 우리는 이런 문제가 스포너/땅벌레의 위치 설정에 의해 쉽게 발생한다는 것을 발견했어.

이를 해결하기 위해 collision_box가 기본값이 되는 개체 정의 map_generator_bounding_box에 새로운 선택적 속성을 추가했어. 복잡하게 이야기하자면 맵 생성기가 객체 주변 공간에 대한 객체 추가를 제한하여 객체 주변의 공간을 비워두는 거고

간단하게는, 모든 스포너/땅벌레 주위에 한 칸 여유공간을 둬서, 바이터가 이동할 수 있게 하는거야.

물론 이 속성은 바이터들이 새 기지를 건설할 때에도 사용하고.

이후에 나무 밀도를 조정하는 등의 용도로도 사용할 수 있어.

벨트에 끼는 바이터

하드코어 맵에서 벽 앞에 벨트박는건 게임 플레이의 좋은 예시지만. 벨트가 너무 센건 사실이잖아. 사실, 코드에 작은 문제 때문에 벨트 속도가 필요보다 훨씬 더 많은 영향을 미치고 있어서 센거였어.


posila가 이 문제를 발견하고 해결했어. 물론 해결한 뒤에도 바이터가 벨트의 영향을 받지만, 벽처럼 막지는 못할거야. 큰 문제였는데 왜 2년 동안 발견 못했을까?

도입부 캠페인 (NPE/Tutorial/Demo)

0.17 공개와 함께 새로운 도입부 캠페인의 첫 공개 버전도 출시할거야.

추가된 캠페인은 기존의 '첫 걸음'과 '새로운 희망' 캠페인을 대체할 예정이야.

'메인 캠페인'은 나중에 추가할거고, 자세한 내용은 다음 주에 보여줄게.

유체

알고리즘을 테스트하면서 많은 수정이 있었지만, 고치기 어려운 문제도 있었어. 일이 더 꼬이면 0.17 못나오니까 변화를 나눠서 출시하기로 했어.

유체 혼합 방지와 유체 업데이트 최적화는 0.17과 같이 나오지만, 새로운 알고리즘은 추가적 조사가 필요할것같아.

위키 플랜 (Bilka)

새로운 실험 버전이 출시될 때, 위키가 언제 출시를 반영할지 결정해야 했어. 전에는 몇 주 후에 반영했지만, 우리가 원했던 것은 아니야.

몇 가지 스크립트를 통해, 출시와 동시에 0.17로 정보를 업데이트할 수 있게 했어. 더 이상 업데이트를 기다릴 필요가 없지 동시에 0.16 위키 복제본도 읽기 전용으로 다음 사이트에 둘거야: stable.wiki.factorio.com,

모드 썸네일 (Sanqui)

모드 제작자를 위한 작은 소식도 있어. 새로운 in-game mod GUI (FFF-272)가 모드의 미리 보기도 표시하는데, 이걸 오프라인에서도 온라인 연결 없이 봐야하니까 모드 패키지에서 썸네일을 로드할 수 있도록 해야해. 썸네일 파일을 thumnail.png로 이름을 바꿔서 info.json와 같이 두기만 하면 돼. 다만, 해상도는 144x144여야 하고 해상도를 준수해야 모드포털에 반영되는것 같아.

고해상도 상자 (Albert)

작은 것일수록 도트 짜기가 더 쉬워보이지만 꼭 그렇지만은 않아. 아이콘과 비슷하게 컨셉, 재료, 사용, 스타일 등을 표현할 수 있는 공간이 매우 협소해서

합성하는 데 많은 작업을 해야 했어. 초안은 여기 만들어뒀어..

나무 상자: 바꿀 게 없어보여서 고해상도화하고 도트를 더 명확하게 했어.
철 상자: 철과 강철 상자는 똑같은 모양이여서 혼동할 수도 있었어. 하지만 이제 명확히 구분할 수 있지.
강철 상자: 운송용 컨테이너와 같이 현대적이고 산업화된 모습으로 바꿨어.
무한 상자: 무한 상자는 0.16때 디버그 목적으로 추가된 상잔데, 존재 자체를 모르는 사람도 있을거야. 지도 편집기에 이미 존재하는 기능이고, 명령어로도 만들 수 있어.
Logistics: 로보포트 스타일을 모방하려고 노력했고, 열리고 닫히는 새로운 문 애니메이션도 구현했어.

고해상도 로켓 격납고 (V453000)

구형 객체 그래픽 대다수가 고해상도화되거나 재설계되었지만 로켓 격납고는 매우 위협적인 몇 가지 특별한 특성때문에 어려웠어.

하지만 이제 그들을 마주할 때가 와버렸지.


0.16 로켓 격납고 디자인이 우리가 다루고자 하는 다양한 문제들을 가지고 있다는 것을 알았어.

첫 번째로, 팩토리오의 시각적 스타일에 더 이상 어울리지 않는 것처럼 보였어.

매우 어두운 데다가 9x10의 거대한 타일이 직사각형 모양으로 완전히 채워져 있는 게 통합된 개체 대신 화면에 직사각형 스티커처럼 보이는 데 기여했어.

구형 그래픽 모델의 많은 요소들은 현대적인 팩토리오 모델에 비해 너무 복잡하고 인위적이기에.

시간이 지남에 따라 기본적인 그래픽 모델의 모든 영역을 새로운 디자인으로 교체했어.


Albert는 아래 보이는 격납고 내부 콘크리트 기지에 새로운 로봇 팔과 로봇 격납고를 만들면서 도움을 줬어.


로켓 격납고를 고해상도하면서 9x9로 크기를 변경하기로 했는데

이걸로 청사진에서 회전해도 문제가 없을거야. 그리고 원래 로켓 사일로의 꼭대기쪽 구조물을 지우고 로켓을 보다 객체의 중심부로 옮겼어.


로켓이 없는 로켓 사일로는 16개나 되는 8192x8192px 텍스쳐를 가지고 있기에, 1080Ti의 VRAM조차도 버티기 힘들었어.

Python 스크립팅을 통해 렌더링 작업을 최대한 최적화했어.


장기적인 관점에서 자동화 및 적절한 워크플로우에 집중하지 않았다면 이는 매우 큰 문제가 될 수 있었습니다.

로켓 사일로는 애니메이션에 엄청난 양의 레이어, 레이어 전환 그리고 다른 기이한 것들을 가지고 사용하고 있어.


posila가 모든 문제들을 해결할 수 있도록 도와줬어, 비록 그가 도중에 자신에게 몇 가지 추잡한 말을 언급했을 수도 있고, 그의 헌신적인 메시지에 '흑마법' 같은 단어들이 한 번 이상 들어있었을 수도 있지만.

마지막으로, 로켓 격납고에는 많은 애니메이션이 자연적으로 발생하는데, 이는 소스 이미지 자체가 정적 PNG라는 것을 의미했지. 이게 기차와 같은 무거운 애니메이션이 아니기에, 많은 유연성과 능력을 갖춘 포토샵 후처리가 가능했고. 이를 통해 이 과정을 매우 즐겁고, 효율적으로 마칠 수 있었어.

0.17을 위한 길

보시는 바와 같이, 마지막 순간에 많은 일들이 일어나고 있지만, 다음 주에 출시하는 데 큰 장애물이 되지는 않을 것 같아.

늘 그랬듯이, 당신의 생각을 포럼에 알려줘.



요약
1. 공해 자연소멸량 조정
2. 스포너 공해 흡수 상한선 추가
3. 바이터 벨트로 방어 불가
4. 캠페인 변경. "새로운 희망" 삭제
5. 다음 주에 0.17 출시 '예정'