요약: 바닐라에서 연구 레벨, 비용, 과학팩 재고 다 고려해서 최적의 무한연구를 돌리는 시스템을 만들 수 있다. 







샌드박스 전용 청사진


일반연구 다 해금해주면 바로 동작함 


/c for _,v in pairs(game.player.force.technologies) do v.researched=false end    game.player.force.research_all_technologies() 

https://factoriobin.com/post/ipvlj6


auto_infinite_research_v20260714_9 - FactorioBinFactorioBin is a site for quickly and easily sharing Factorio blueprintsfactoriobin.com



+ 연구 선택기 회로와 가중치에 오류가 좀 있어서 뜯어고쳤음 

















팩토리오 2.1부터 회로로 연구를 조건에 따라 자동설정할 수 있고, 여러 정보를 읽어올 수 있다. 


치명적인 흠이 있다면, 동시 연구가 불가능하다. 


모든 연구 설정은 공유되며, 만일 여러 개의 연구를 동시에 지정하려고 하면 레시피 간에 깜빡임이 발생하면서 제어가 어려워진다.


심지어 이와 관련된 모드도 있다.  

https://mods.factorio.com/mod/simultaneous-research











따라서, 바닐라에서 23개의 무한연구 제어를 효과적으로 하려면 


스위칭과 메모리를 이용해 필요한 정보를 추출할 수 있는 시스템이 요구된다. 





각각의 무한연구에 1~23의 고유번호를 매기자. 









무한연구 추가 등 확장성과 유동성을 염두에 두고, 단일 채널로 연구 스위칭을 해보자. 





핵심 컴포넌트는 4개다. 


1. 연구 순회 및 정보 추출 

2. 메모리 

3. 필터

4. 연구 선택기 














1. 연구 순회 및 정보 추출 


- 600틱 중 23틱을 소모해서 존재하는 모든 무한연구 레시피를 한 번씩 돌린다. 나머지 시간에는 4번에서 선택된 연구를 돌린다. 


- 연구소에서 나온 레벨, 연구 재료 목록을 메모리로 보낸다. 





- 연구 재료 목록은 (편의상) 비트 압축을 먹인다. 











2. 메모리 

- 현재 진행중인 연구의 고유 번호와 일치하는 메모리 셀에 정보 (레벨 L, 연구 재료 M)을 저장한다. 




- 출력부에 시분할 멀티플렉싱(TDM)을 사용한다. 


  (모든 메모리 셀의 내용을 하나의 와이어로 압축한다. 입력부와 독립적으로, 23틱 주기로 모든 고유 번호를 돌리면서 연관된 정보 L, M을 뿌린다.)


- 첫 번째 조합기는 디멀티플렉서 + 메모리 셀, 두 번째 셀은 멀티플렉서에 해당한다. 


- 여기까지만 작업해도 총알, 로켓 데미지와 연동해서 우주선의 최고 속력을 조절하는 식의 응용이 가능하다. 





3. 필터


- 단순하지만, 연구 병목을 방지하는 중요한 컴포넌트다. 


- 연구소 벨트 입력부에 올라간 과학팩 수량을 체크해서 가능한 연구만 추출한다. 





비트 연산 딸깍 

















4. 연구 선택기 


- 가능한 무한연구 중 최대 하나를 선택한다. 


- 여기부터는 개인 취향이다. 여러 가지 방식이 존재하며, 이들의 조합을 사용할 수 있다.


- 사진에서 계획하는 빌드는 다음과 같다.

A. 파칩, 플라스틱 생산성에 높은 우선순위를 준 뒤 13렙을 넘으면 배제한다. 


A가 불가능하다면,


B. 레벨에 가중치를 먹여 정확한 연구 비용으로 환산하고, 요구 비용이 가장 낮은 대상을 선택한다. 

대상이 여럿이라면 고유 번호가 높은 순으로 선택한다. 

추가로, 연구 생산성에 타 연구 대비 20배 많은 자원을 투자하도록 가중치를 더한다.  




- 특정 고유 번호의 연구 정보를 얻기 위해선 디멀티플렉서 + 메모리 셀이 필요하다. 메모리 입력부와 똑같은 조합기를 사용한다. 




대부분의 연구 비용은 지수적으로 증가하나, 채굴 생산성과 전투 로봇 수 등 일부 연구는 선형적으로 동작한다. 따라서 예외 처리로 로그를 취해줘야 한다.


(계산 디테일은 청사진 안에 디스플레이 패널에다 주석 달아놨다.)


 https://wiki.factorio.com/Technologies











금속, 전자기, 농업, 극저온, 프로메튬 팩 공급에 간헐적인 제한을 걸고 돌려주니까 이런 느낌으로 고르게 연구가 진행된다. 


A에서 설정한 플라스틱, 파칩부터 먼저 13렙을 찍은 뒤, 연구 생산성을 제외하면 모든 연구에 자원이 고르게 분배된다.