HTML/JavaScript 기반의 사이버 배틀 아레나를 Python Flask + Socket.IO로 완전히 변환한 실시간 멀티플레이어 탄막 전투 게임입니다.
- 📱💻 크로스 플랫폼: 모바일, 태블릿, PC 어디서나 접속 가능
- 🤝 언제나 매칭: 24시간 자동 매칭 시스템
- ⚔️ 대결신청: 원하는 상대에게 직접 대결신청 가능
- 🔄 실시간 알림: 매칭, 대결신청, 전투 결과 즉시 알림
- 100개+ 무기 스킬: 다양한 탄막 패턴과 전투 시스템
- 🏆 다양한 모드: 캐주얼, 랭크, 커스텀 매칭 지원
- 🌐 실시간 멀티플레이어: Socket.IO를 통한 실시간 통신
- ⚙️ 관리자 패널: 플레이어 관리 및 게임 제어
- 🎨 사이버펑크 UI: 네온 색상과 글래스모피즘 디자인
- 캐주얼 모드: 편안한 대전, 레벨 차이 무관
- 랭크 모드: 경쟁적 대전, 실력 기반 매칭
- 커스텀 모드: 특별 룰 적용
- 스마트 매칭: 레벨, 승률, 대기시간을 고려한 자동 매칭
- 크로스 플랫폼: 모바일과 PC 유저간 매칭 가능
- 직접 신청: 플레이어 목록에서 원하는 상대에게 대결신청
- 메시지 전송: 대결신청시 개인 메시지 포함 가능
- 실시간 알림: 브라우저 푸시 알림 지원
- 자동 만료: 1분 후 자동 만료로 스팸 방지
- 신청함 관리: 받은/보낸 대결신청 통합 관리
- 백엔드: Python 3.8+, Flask, Flask-SocketIO
- 프론트엔드: HTML5, CSS3, Vanilla JavaScript
- 실시간 통신: Socket.IO
- 데이터 관리: 메모리 기반 (확장 가능)
- 플랫폼 지원: Web, Mobile, Desktop
# 실행 권한이 있는 스크립트로 간편 실행
./start.sh# 의존성 설치
pip install -r requirements.txt
# 서버 시작
python app.py
# 브라우저 접속
# http://localhost:5000같은 네트워크의 모바일에서 접속:
http://[서버IP]:5000
-
로비에서 매칭 모드 선택
- 😎 캐주얼: 편안한 대전
- 🏆 랭크: 경쟁 대전
- ⚙️ 커스텀: 특별 룰
-
대기 상태
- 실시간 대기 인원수 확인
- 평균 대기 시간 표시
- 언제든 취소 가능
-
매칭 완료
- 상대방 정보 표시
- 자동으로 전투방 입장
- 플레이어 목록에서 ⚔️ 버튼 클릭
- 개인 메시지 입력 (선택사항)
- 상대방이 수락하면 즉시 대전 시작
- 마우스 이동: 전투 중 플레이어 캐릭터 조작
- 스킬 클릭: 무기 스킬 사용
- 방어/카운터: 전략적 방어 액션
- 방 생성/입장: 로비에서 방 생성 또는 빠른 매칭
- 턴제 전투: 15초 턴 동안 스킬 사용
- 탄막 피하기: 마우스로 적 탄막 회피
- 승부 결정: 체력이 0이 되면 패배
- 기본 검: 빠르고 안정적인 스킬들
- 화염검: 고데미지 폭발형 스킬들
- 혼돈 마법검: 예측 불가능한 패턴
- 레이피어: 정밀하고 빠른 연타형
- 철퇴: 강력한 광역 공격
- 사슬채찍: 유연한 곡선형 공격
- 전설 무기: 최강 위력의 특수 스킬
- 일반: 기본 직진 탄막
- 폭발: 착탄시 범위 데미지
- 유도: 플레이어를 추적하는 탄막
- 레이저: 관통형 고속 탄막
- 혼돈: 무작위 패턴 탄막
- 터치 이동: 화면 터치로 플레이어 이동
- 탭 스킬: 스킬 버튼 터치로 사용
- 스와이프 회피: 빠른 회피 동작
- 자동 크기 조정: 화면 크기에 따른 UI 최적화
- 큰 터치 영역: 모바일 친화적 버튼 크기
- 세로/가로 모드: 다양한 화면 방향 지원
# app.py에서 수정 가능
app.config['SECRET_KEY'] = 'your_secret_key_here'# 외부 접속 허용
socketio.run(app, host='0.0.0.0', port=5000, debug=True)# 다른 포트 사용시
socketio.run(app, host='0.0.0.0', port=8080, debug=True)cyber-battle-arena/
├── app.py # 🐍 메인 Flask 서버
├── requirements.txt # 📦 Python 의존성
├── start.sh # 🚀 실행 스크립트
├── README.md # 📖 이 파일
├── templates/
│ └── index.html # 🎨 메인 UI 템플릿
└── static/
├── css/
│ └── style.css # 💄 사이버펑크 스타일
└── js/
└── game.js # ⚡ 클라이언트 로직
Player: 플레이어 데이터 클래스BattleRoom: 전투방 관리 클래스MatchmakingQueue: 매칭 대기열 클래스MatchRequest: 대결신청 데이터 클래스GameState: 전체 게임 상태 관리@socketio.on(): Socket.IO 이벤트 핸들러들
initializeSocket(): Socket.IO 연결 초기화startMatchmaking(): 자동 매칭 시작sendChallenge(): 대결신청 보내기createBulletPattern(): 탄막 패턴 생성detectPlatform(): 플랫폼 자동 감지
현재 메모리 기반 → SQLite/PostgreSQL 연동 가능
- 무기 뽑기 시스템
- 레벨링 및 경험치 시스템
- 길드 및 친구 시스템
- 매칭 시스템 ✅
- 대결신청 시스템 ✅
- 관전 모드
- 토너먼트 시스템
- 리플레이 기능
- Redis를 통한 세션 관리
- nginx 프록시 설정
- 로드 밸런싱
- CDN 적용
- 관리자 비밀번호:
admin123(변경 권장) - CORS 설정: 모든 도메인 허용 (운영시 제한 필요)
- 입력 검증: 추가 검증 로직 구현 권장
- 대결신청 스팸 방지: 1분 자동 만료 시스템
- 메모리 기반: 100-500명 동시 접속
- Redis 적용시: 1000명+ 동시 접속 가능
- 클러스터링: 무제한 확장 가능
- 평균 매칭 시간: 30-60초
- 실시간 알림: 100ms 이내
- 크로스 플랫폼: 지연시간 최소화
- 탄막 충돌 감지가 클라이언트 기반 (서버 검증 필요)
- 메모리 기반 데이터 (재시작시 초기화)
- 단일 서버 인스턴스 (스케일링 제한)
- 닉네임 설정: 고유한 닉네임 입력
- 직업 선택: 무투가, 억만장자, 암살자, 방패병 중 선택
- 게임 시작: 로비 진입
- 모드 선택: 원하는 매칭 모드 선택
- 대기: 자동 매칭 진행
- 전투: 매칭 완료시 즉시 전투 시작
- 플레이어 선택: 로비에서 원하는 상대 선택
- 메시지 작성: 친근한 메시지 작성
- 신청 전송: 상대방이 수락하면 대전 시작
- Fork 프로젝트
- 기능 브랜치 생성
- 커밋 및 푸시
- Pull Request 생성
MIT License
- ✅ 자동 매칭 시스템: 캐주얼/랭크/커스텀 모드
- ✅ 대결신청 시스템: 직접 대결신청 가능
- ✅ 실시간 알림: 브라우저 푸시 알림
- ✅ 크로스 플랫폼: 모바일/PC 완전 지원
- ✅ 스마트 매칭: 레벨/승률 기반 매칭
- ✅ 신청함 관리: 받은/보낸 신청 통합 관리
- ✅ Python Flask + Socket.IO 변환
- ✅ 실시간 멀티플레이어 전투
- ✅ 100개+ 무기 스킬 시스템
- ✅ 관리자 패널
📱 모바일에서도, 💻 PC에서도, 🤝 언제든 매칭 가능!
지금 바로 친구들과 함께 사이버펑크 세계에서 펼쳐지는
⚔️ 실시간 탄막 전투를 즐겨보세요!
🎮 게임 시작: python app.py → http://localhost:5000