Ergoswarm - 실시간 비트코인 가격 기반 진화형 생태계 시뮬레이션
실시간 비트코인 가격이 디지털 생태계의 진화를 결정하는 곳
https://ergowarm.zendoc.uk
이름은 거창한데 rust WASM + sveltekit PWA 토이 프로젝트 한번 만들어 봤음
기술 스택 하이라이트
* 코어 엔진: Rust (고성능, 메모리 안전성)
* 웹 실행: WASM
* 물리 엔진: Rapier2D
* 렌더링: Macroquad
* 프론트엔드/PWA: SvelteKit
* 데이터 백엔드: Axum (Rust), Redis
* 데이터 소스: 실시간 Binance API (BTC)
게임 + 코인 + WASM + 미니PC = 내가 만든 생태계 시뮬
요즘 심심해서 게임 하나 만들고 있었는데, 생각보다 너무 깊게 들어가버림…
게임엔진은 Rust macroquad 물리엔진은 rapier2d. cargo build --target wasm32-unknown-unknown 하면 .wasm 하나 뚝딱 나옴.
프론트는 SvelteKit PWA 웹 전체를 canvas로 렌더링함. 이게 wasm이랑 붙어서 게임 화면이 돌아감.
BTC 가격 데이터는 백엔드에서 1분마다 1초봉 60개씩 받아옴 프론트가 1분마다 백엔드에 요청 → indexedDB에 저장.
백엔드는 내가 만든 미니PC 2대로 구성
1번 WAS 서버: cloudflared tunnel → nginx reverse proxy → rust WAS 여기서 binance API로 BTC 가격 받아옴.
2번 DATA 서버: redis + postgreSQL redis에 1초봉 60개 캐싱 → redis streams로 프론트에 순차 전송.
프론트에서 indexedDB에 저장된 가격을 wasm이 읽어서 캔들차트 그림 1초봉이 상승/보합/하락이면 생태계에 먹이 다르게 줌. 예: 상승이면 고기, 보합이면 풀, 하락이면 돌멩이… 이런 식.
문제는 wasm ↔ js 데이터 주고받기
처음엔 별거 아니겠지 했는데… wasm이 indexedDB에서 데이터 읽고 js랑 주고받는 부분에서 개고생함. 정신이 피폐해져서 그냥 여기까지만 하고 나중에 다듬기로 함.
결론
기술적으로는 다 돌아가는데, 디테일하게 시뮬레이션 다듬으려면 wasm ↔ js 통신 구조를 더 깔끔하게 짜야 할 듯. 근데 지금은 너무 지쳐서… 나중에 재미 붙으면 다시 손대볼 예정.
Gpt써서 글 싸지르지좀마 개발도 ai조지게 돌려놓고선 힘들다고 찡찡대지도말고. 코인충 티내지도 말고 좀..
적응해