게임 내에서 기본 모드 (크탐모 기본 설정) 이외의 다른 모드는 쓰고 싶지 않아서 직접 만듬


간단한 설계 구상을 위해 게임을 켤 필요가 없다는 것도 장점이야


바닐라 하면서 간단한 계산기를 하나 만들었는데, 크탐모 오니까 공정이 너무 복잡해져서 (하나의 아이템을 만드는 공정이 여러개, 인풋과 아웃풋에 같은 아이템이 들어가는 등) 각 잡고 새로 만들었어



<기능>

원하는 아이템/공정의 수량을 입력하면 해당 요청을 만족시키는 최적의 비율을 계산해줌.


반대로 아이템/공정의 수가 제한되어 있을 때 특정 아이템을 최대한으로 얻는 공정 또한 구성해줌


예를 들어 사진은, 모듈이 없는 상황에서 벌카나이트 채광 드릴(채광 속도 0.75, 채산성 2레벨)이 160대 돌아갈 때 벌카나이트 블록은 최대 몇 개가 나오냐? 에 대한 출력이야.


최적화 공정은 텍스트(왼쪽)와 그래프(오른쪽)으로 나와서 편한 걸 선택해서 확인하면 되고, 게임을 진행하며 변하는 상수들 (조립기계 레벨, 용광로 레벨, 드릴 레벨 등)은 매크로로 정의해서 일괄 적용할 수 있음


레시피는 직접 다 써서 넣어야 함.. ㅎㅎ



<기능 상세>

최적의 공정이 무엇이냐? 는 기준에 따라 다름.


예를 들어, 철판 10개를 얻기 위해 철 주괴를 녹여도 되고 농축된 철을 써도 되고 그냥 철광석을 바로 구워도 되지만, 철 주괴는 공정 단계가 너무 많아서 소량 생산에는 적합하지 않음.


따라서 공장 개수 / 부산물 양 / 요청한 아이템 갯수 의 3가지를 기준으로 최적화를 진행하며 상대적인 중요도는 바꿀 수 있음 (사진에선 1 / 1 / 100 으로 되어있어)


또한, 정수/실수 값으로 최적화가 가능해서 더욱 정확한 결과가 나와.


예를 들면 벌카나이트 농축 과정은 출력이 3종류나 되기 때문에 하나라도 막히면 공정이 중단되고, 이에 정확한 출력을 계산할 필요가 있는데 이런 공정들은 정수로 구하고


벌카나이트 블록을 굽는 과정은 인풋이 모자라면 모자란대로 돌아가기 때문에 1.91개가 필요하다고 하면 건물 2개를 지으면 됨 (가동률이 95%정도 나오겠지)



<구현>

핵심 로직은 python + cvxopt라는 최적화 라이브러리를 썼고 개인 서버에서 돌아감.


인터페이스는 flask + html + vis js (그래프 라이브러리)으로 만들어서 일반 인터넷 브라우저에서도 사용이 가능한데, 핵심 로직 자체는 내 서버에서 동작하기 때문에 불특정 다수에게 공개는 어려울 것 같아.


필요한 사람이 많으면, 남 보여줄 수준은 아니지만 소스 공개라도 긍정적으로 검토해볼게


오늘 집 가면 벌카나이트로 철 주괴 굽는 공정 짜야겠다.


혹시 궁금한거 있으면 물어봐주고


그럼 모두 수고!