/c for y=-4,4,2 do
game.player.surface.create_entity({name="straight-rail", force=game.player.force, position={game.player.position.x, game.player.position.y+y}})
end
for x=-4,4,1 do
game.player.surface.create_entity({name="heat-pipe", force=game.player.force, position={game.player.position.x+x, game.player.position.y}})
end



콘솔에 위 커맨드를 입력하면


이런식으로 설치가 됨

기본적으로 entity끼리는 서로 충돌 판정이 존재하지만 이렇게 create_entity를 이용하면 충돌 판정을 씹고 설치하는게 가능함

이걸 하기 위해서는 지금까지 data.lua를 건드려서 prototype stage만 건드리는걸 넘어서 controllua=runtime stage까지 어느정도는 할 줄 알아야 함

https://lua-api.factorio.com/latest/classes/LuaSurface.html#create_entity

LuaSurface - Runtime Docs | FactorioLuaSurface - Runtime Docs | Factoriolua-api.factorio.com


위의 문서에서 LuaSurface::create_entity에 대한 내용을 확인 가능




runtime 단에서 해결하는 걸 안하고 prototype stage에서만 해결을 보려면 열파이프의 충돌레이어를 잘 고쳐준다면 애초에 스크립트 안쓰고 손으로도 겹치게 설치가 될 것 같긴함

근데 문제는 "철도"와의 충돌판정만 없애고 나머지 다른 엔티티와 충돌판정 유지하는건 좀 힘들 것같음





열 파이프의 기본 collision mask중에 object-layer에 포함이 되어있는데 철도 또한 object-layer이기 때문에 철도와 충돌 판정을 없애려면 저 속성을 제거해줘야하고 문제는 이러면 열파이프는 다른 엔티티하고 겹치기가 가능해진다는 뜻

철도를 제외한 모든 나머지 엔티티에 임의의 충돌 마스크 "heat-pipe-layer"를 하나 추가해주는 식이 아니면 해결하기 난감할 것 같음


그냥 런타임 스크립트 방식으로 할거라면 철도 옆에 열파이프가 설치된다거나 하면 그 이벤트를 감지해서 자동으로 바닥에 열파이프를 추가로 깔아주는식으로 사용 가능