아카이브사이트맵
© 2026 Rayon. All rights reserved.
DevDay
아티클랭킹스페이스채용
해커뉴스 favicon해커뉴스

23시간 턴제 Freeciv, Fly.io로 친구들과 즐기세요!

by DD
2026-03-19
4개월 전
조회수 12

Fly.io를 활용하여 Freeciv 3.2.3 멀티플레이어 서버를 구축, 장기전(23시간 턴) 지원

이메일 알림, 실시간 랭킹 페이지, AI 생성 신문 등 게임 경험을 향상시키는 기능 제공

FIFO 파이프를 통한 서버 통신, Docker를 활용한 컨테이너 환경 구성

OpenAI API를 활용한 AI 기반 게임 내 신문 생성 기능으로 게임 몰입도(Immersion)를 높임

Fly.io 기반 서버 아키텍처

본 서버는 Fly.io 컨테이너(Container) 환경에서 실행되며, entrypoint.sh를 통해 시작된다. 주요 구성 요소로는 Freeciv 서버(Freeciv Server), HTTP 서버(HTTP Server), FIFO 파이프(FIFO Pipe), 자동 저장 기능(Auto-saver), 턴 알림 기능(Turn Reminder) 등이 있다. 특히, 지속적인 볼륨(Persistent Volume)을 사용하여 게임 데이터를 저장하고, SQLite 데이터베이스(SQLite Database)를 통해 플레이어 인증 정보를 관리한다.

AI 기반 게임 내 신문 생성

이 프로젝트는 OpenAI API를 활용하여 각 턴마다 AI가 생성한 신문(AI-generated Newspaper)을 제공한다. generate_gazette.sh 스크립트는 OpenAI를 호출하여 시대에 맞는 기사를 생성하고, 이를 게임 내에서 확인할 수 있도록 한다. 이는 장기전의 지루함을 덜고, 게임 몰입도(Immersion)를 높이는 효과적인 방법으로 평가받는다.

FIFO 파이프를 이용한 서버 통신

서버는 FIFO 파이프(/tmp/server-input)를 통해 외부 스크립트로부터 명령을 받는다. 스크립트는 이 파이프에 명령을 기록하여 Freeciv 서버(Freeciv Server)를 제어하며, 게임 상태를 변경하거나 정보를 요청할 수 있다. 이러한 방식은 서버와 외부 스크립트 간의 비동기 통신(Asynchronous Communication)을 가능하게 하며, 서버의 안정성을 유지하는 데 기여한다.

이메일 알림 및 상태 페이지

서버는 이메일 알림(Email Notifications) 기능을 통해 턴 시작, 마감 시간 등을 플레이어에게 알린다. turn_notify.sh 스크립트는 턴이 변경될 때마다 HTML 형식의 이메일을 발송하며, 랭킹, 신문 기사, 마감 시간을 포함한다. 또한, 실시간 상태 페이지(Live Status Page)를 제공하여 게임의 진행 상황을 시각적으로 확인할 수 있도록 지원한다.

Show HN: Playing LongTurn FreeCiv with Friends
중급
아키텍처
Freeciv
Fly.io
Docker
OpenAI
SQLite
JavaScript
C/C++
SQL
Backend
DevOps
AI/ML
Data
Frontend
원문 읽기
원문 읽기

댓글 0

첫 번째 댓글을 남겨보세요!

관련 추천 글

AI 해커톤: 개발의 미래를 엿보다

조코딩 로고

이번 주 DEV 인기글 TOP 7을 만나보세요!

데브투 로고

Claude Code가 뽑은 최고의 기술 스택!

테오 로고

S3 기반 Docker 레지스트리, 쿼리 성능 문제 해결!

레딧 로고

2026년 배포 플랫폼 선택 가이드

테오 로고

오프라인 지도, 라우팅, 검색을 Docker로!

해커뉴스 로고
해커뉴스 favicon해커뉴스
중급
아키텍처
Freeciv
Fly.io
Docker
OpenAI
SQLite
JavaScript
C/C++
SQL
Backend
DevOps
AI/ML
Data
Frontend

관련 추천 글

AI 해커톤: 개발의 미래를 엿보다

조코딩 로고

이번 주 DEV 인기글 TOP 7을 만나보세요!

데브투 로고

Claude Code가 뽑은 최고의 기술 스택!

테오 로고