Skip to content

ynhoyaynhoya-arch/siu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

🎮 사이버 배틀 아레나 v4.0 - Python Edition

📋 프로젝트 개요

HTML/JavaScript 기반의 사이버 배틀 아레나를 Python Flask + Socket.IO로 완전히 변환한 실시간 멀티플레이어 탄막 전투 게임입니다.

⚡ 주요 기능

  • 📱💻 크로스 플랫폼: 모바일, 태블릿, PC 어디서나 접속 가능
  • 🤝 언제나 매칭: 24시간 자동 매칭 시스템
  • ⚔️ 대결신청: 원하는 상대에게 직접 대결신청 가능
  • 🔄 실시간 알림: 매칭, 대결신청, 전투 결과 즉시 알림
  • 100개+ 무기 스킬: 다양한 탄막 패턴과 전투 시스템
  • 🏆 다양한 모드: 캐주얼, 랭크, 커스텀 매칭 지원
  • 🌐 실시간 멀티플레이어: Socket.IO를 통한 실시간 통신
  • ⚙️ 관리자 패널: 플레이어 관리 및 게임 제어
  • 🎨 사이버펑크 UI: 네온 색상과 글래스모피즘 디자인

🆕 NEW! 매칭 & 대결신청 시스템

🎯 자동 매칭

  • 캐주얼 모드: 편안한 대전, 레벨 차이 무관
  • 랭크 모드: 경쟁적 대전, 실력 기반 매칭
  • 커스텀 모드: 특별 룰 적용
  • 스마트 매칭: 레벨, 승률, 대기시간을 고려한 자동 매칭
  • 크로스 플랫폼: 모바일과 PC 유저간 매칭 가능

⚔️ 대결신청 시스템

  • 직접 신청: 플레이어 목록에서 원하는 상대에게 대결신청
  • 메시지 전송: 대결신청시 개인 메시지 포함 가능
  • 실시간 알림: 브라우저 푸시 알림 지원
  • 자동 만료: 1분 후 자동 만료로 스팸 방지
  • 신청함 관리: 받은/보낸 대결신청 통합 관리

🛠️ 기술 스택

  • 백엔드: Python 3.8+, Flask, Flask-SocketIO
  • 프론트엔드: HTML5, CSS3, Vanilla JavaScript
  • 실시간 통신: Socket.IO
  • 데이터 관리: 메모리 기반 (확장 가능)
  • 플랫폼 지원: Web, Mobile, Desktop

📦 설치 및 실행

1️⃣ 빠른 시작

# 실행 권한이 있는 스크립트로 간편 실행
./start.sh

2️⃣ 수동 실행

# 의존성 설치
pip install -r requirements.txt

# 서버 시작
python app.py

# 브라우저 접속
# http://localhost:5000

3️⃣ 모바일 접속

같은 네트워크의 모바일에서 접속:

http://[서버IP]:5000

🎮 게임 플레이

🔥 매칭 시스템 사용법

자동 매칭

  1. 로비에서 매칭 모드 선택

    • 😎 캐주얼: 편안한 대전
    • 🏆 랭크: 경쟁 대전
    • ⚙️ 커스텀: 특별 룰
  2. 대기 상태

    • 실시간 대기 인원수 확인
    • 평균 대기 시간 표시
    • 언제든 취소 가능
  3. 매칭 완료

    • 상대방 정보 표시
    • 자동으로 전투방 입장

대결신청

  1. 플레이어 목록에서 ⚔️ 버튼 클릭
  2. 개인 메시지 입력 (선택사항)
  3. 상대방이 수락하면 즉시 대전 시작

기본 조작

  • 마우스 이동: 전투 중 플레이어 캐릭터 조작
  • 스킬 클릭: 무기 스킬 사용
  • 방어/카운터: 전략적 방어 액션

전투 시스템

  1. 방 생성/입장: 로비에서 방 생성 또는 빠른 매칭
  2. 턴제 전투: 15초 턴 동안 스킬 사용
  3. 탄막 피하기: 마우스로 적 탄막 회피
  4. 승부 결정: 체력이 0이 되면 패배

🎯 스킬 시스템

스킬 카테고리

  • 기본 검: 빠르고 안정적인 스킬들
  • 화염검: 고데미지 폭발형 스킬들
  • 혼돈 마법검: 예측 불가능한 패턴
  • 레이피어: 정밀하고 빠른 연타형
  • 철퇴: 강력한 광역 공격
  • 사슬채찍: 유연한 곡선형 공격
  • 전설 무기: 최강 위력의 특수 스킬

탄막 종류

  • 일반: 기본 직진 탄막
  • 폭발: 착탄시 범위 데미지
  • 유도: 플레이어를 추적하는 탄막
  • 레이저: 관통형 고속 탄막
  • 혼돈: 무작위 패턴 탄막

📱 모바일 최적화

터치 지원

  • 터치 이동: 화면 터치로 플레이어 이동
  • 탭 스킬: 스킬 버튼 터치로 사용
  • 스와이프 회피: 빠른 회피 동작

반응형 UI

  • 자동 크기 조정: 화면 크기에 따른 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       # ⚡ 클라이언트 로직

🎨 주요 클래스 및 함수

백엔드 (app.py)

  • Player: 플레이어 데이터 클래스
  • BattleRoom: 전투방 관리 클래스
  • MatchmakingQueue: 매칭 대기열 클래스
  • MatchRequest: 대결신청 데이터 클래스
  • GameState: 전체 게임 상태 관리
  • @socketio.on(): Socket.IO 이벤트 핸들러들

프론트엔드 (game.js)

  • initializeSocket(): Socket.IO 연결 초기화
  • startMatchmaking(): 자동 매칭 시작
  • sendChallenge(): 대결신청 보내기
  • createBulletPattern(): 탄막 패턴 생성
  • detectPlatform(): 플랫폼 자동 감지

🚀 확장 가능성

데이터베이스 연동

현재 메모리 기반 → SQLite/PostgreSQL 연동 가능

추가 기능

  • 무기 뽑기 시스템
  • 레벨링 및 경험치 시스템
  • 길드 및 친구 시스템
  • 매칭 시스템
  • 대결신청 시스템
  • 관전 모드
  • 토너먼트 시스템
  • 리플레이 기능

성능 최적화

  • Redis를 통한 세션 관리
  • nginx 프록시 설정
  • 로드 밸런싱
  • CDN 적용

🔒 보안 고려사항

  • 관리자 비밀번호: admin123 (변경 권장)
  • CORS 설정: 모든 도메인 허용 (운영시 제한 필요)
  • 입력 검증: 추가 검증 로직 구현 권장
  • 대결신청 스팸 방지: 1분 자동 만료 시스템

📊 시스템 성능

동시 접속자 지원

  • 메모리 기반: 100-500명 동시 접속
  • Redis 적용시: 1000명+ 동시 접속 가능
  • 클러스터링: 무제한 확장 가능

매칭 성능

  • 평균 매칭 시간: 30-60초
  • 실시간 알림: 100ms 이내
  • 크로스 플랫폼: 지연시간 최소화

🐛 알려진 이슈

  1. 탄막 충돌 감지가 클라이언트 기반 (서버 검증 필요)
  2. 메모리 기반 데이터 (재시작시 초기화)
  3. 단일 서버 인스턴스 (스케일링 제한)

🎮 사용자 가이드

첫 접속시

  1. 닉네임 설정: 고유한 닉네임 입력
  2. 직업 선택: 무투가, 억만장자, 암살자, 방패병 중 선택
  3. 게임 시작: 로비 진입

매칭하기

  1. 모드 선택: 원하는 매칭 모드 선택
  2. 대기: 자동 매칭 진행
  3. 전투: 매칭 완료시 즉시 전투 시작

대결신청하기

  1. 플레이어 선택: 로비에서 원하는 상대 선택
  2. 메시지 작성: 친근한 메시지 작성
  3. 신청 전송: 상대방이 수락하면 대전 시작

🤝 기여하기

  1. Fork 프로젝트
  2. 기능 브랜치 생성
  3. 커밋 및 푸시
  4. Pull Request 생성

📄 라이선스

MIT License

🎉 업데이트 내역

v4.0 - 매칭 & 대결신청 시스템

  • 자동 매칭 시스템: 캐주얼/랭크/커스텀 모드
  • 대결신청 시스템: 직접 대결신청 가능
  • 실시간 알림: 브라우저 푸시 알림
  • 크로스 플랫폼: 모바일/PC 완전 지원
  • 스마트 매칭: 레벨/승률 기반 매칭
  • 신청함 관리: 받은/보낸 신청 통합 관리

v3.0 - 기본 멀티플레이어

  • ✅ Python Flask + Socket.IO 변환
  • ✅ 실시간 멀티플레이어 전투
  • ✅ 100개+ 무기 스킬 시스템
  • ✅ 관리자 패널

🏆 언제 어디서나 즐기는 실시간 탄막 전투!

📱 모바일에서도, 💻 PC에서도, 🤝 언제든 매칭 가능!

지금 바로 친구들과 함께 사이버펑크 세계에서 펼쳐지는
⚔️ 실시간 탄막 전투를 즐겨보세요!

🎮 게임 시작: python app.pyhttp://localhost:5000

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages