Langjam Gamejam
I’m happy to translate the article for you, but I need the full text of the post. Could you please paste the content you’d like translated (excluding any code blocks or URLs you want to keep unchanged)? Once I have the text, I’ll provide the Korean translation while preserving the original formatting and the source line at the top.
1일차
Suicmez, the Language
Suicmez는 PDD(패닉 주도 개발)를 겪었습니다. 언어를 처음부터 구현하는 스피드런을 두 번—두 번 모두 Rust로—한 뒤, 약 두 시간 만에 렉서와 파서를 급조했습니다. 연습 덕분에 도움이 되었지만, 프로젝트는 예상보다 더 어려웠습니다.
Performance
어떤 비트리비얼 게임이든, 기가바이트 단위의 RAM을 잡아먹고 2 FPS로 실행되는 부풀린 DSL은 받아들일 수 없습니다. 이전 스피드런에서는 트리 워크 인터프리터를 사용했으며(하나는 실행 후 JIT를 얻음) Suicmez는 세 가지 실행 전략을 고려했습니다:
- 바이트코드 VM
- Cranelift를 이용한 JIT
- C로 컴파일
견고한 타입체커도 필요했습니다; 추론이 부족하면 불필요한 어노테이션을 강요하고, 너무 복잡하면 프로젝트가 무한히 지연될 수 있습니다. 타입체커가 완성된 뒤에는 런타임, 내장 함수, 그리고 FFI 지원을 구현해야 게임 작업을 시작할 수 있었습니다.
Hopium
범위가 한 사람에게는 너무 크다는 것을 깨닫고 팀원을 찾았습니다. 다행히도 Nishi가 합류했습니다.
What We Did
우리는 전체 계획과 컴파일러가 시스템의 다른 부분과 어떻게 상호작용할지 논의했습니다. Nishi는 처음에 자신의 그래픽 라이브러리인 Milsko를 사용하려고 했지만, 필요한 수학 작업이 너무 방대해 Raylib으로 전환했습니다.
Nishi는 게임 작업을 세 부분으로 나누었습니다:
- 렌더링
- 충돌 처리
- 네트워킹
그는 또한 게임용 네트워킹 라이브러리 libfishsoup를 시작했습니다.
Day 2
The Best Team Ever
Wildered와 El1i0r가 곧 합류했습니다.
- El1i0r는 깊은 PLTDI 이론 지식을 제공하여 언어 설계를 다듬고 이전 결정을 수정하는 데 도움을 주었습니다.
- Wildered는 우리의 요구에 맞춘 세대별 가비지 컬렉터를 구축하고 코드 생성 작업을 수행했습니다.
우리는 언어와 게임 모두에 대해 명확한 목표를 설정했습니다. 성능 문제로 인해 바이트코드 VM을 거부했으며, JIT의 복잡성 때문에 C 백엔드를 “Goldilocks” 솔루션으로 선택했습니다.
Days 3‑4‑5
우리는 마지막 플레이어가 살아남는 멀티플레이어 3D FPS를 만들기로 결정했습니다.
- Wildered의 GC는 완벽하게 작동했습니다.
- 저는 Suicmez의 표준 라이브러리에 집중했습니다.
- 프로젝트는 물리 엔진으로 ODE, 렌더링에는 Raylib을 사용했습니다.
돌이켜보면, 전체 엔진을 선택하지 않은 것을 후회했지만, 이미 약속은 깊어졌습니다.
5일 차 즈음에 Suicmez의 고수준 추상화가 C와의 상호 운용을 방해한다는 것을 발견했고, 그래서 Wildered와 저는 밤새 저수준 기능을 추가했습니다.




6일차와 7일차
우리의 목표는 6일차까지 마치는 것이었지만, 셰이더 오류 때문에 작업이 7일차까지 밀렸습니다.

처음에 지형이 초록색 덩어리처럼 보였지만, 문제를 해결하고 게임을 원활하게 실행할 수 있었습니다. 마지막 15시간 동안 우리는 게임을 Nishi의 VPS에 배포하고 제출 준비를 마쳤습니다.
우리는 잼 내내 정말 즐거운 시간을 보냈으며, 플레이 테스트 세션으로 마무리했습니다—하지만 모두가 게임에 아직 개선할 부분이 많다는 데 동의합니다.