Skip to content

boostcampwm-2024/iOS08-Shook

Repository files navigation

Shook

잘하면 재밌고, 못하면 더 재밌는 실시간 게임 스트리밍!

shook_thumbnail

언제 어디서든 쉽게 모바일 게임 스트리밍을 할 수 있는 실시간 스트리밍 애플리케이션입니다.
Shook은 게임 스트리밍의 장벽을 낮추고, 누구나 쉽고 재미있게 스트리밍을 시작할 수 있는 환경을 제공합니다.

⭐️ 서비스 소개

🗂️ 스트리밍 리스트

실시간으로 스트리밍하는 방송을 확인하고, 스트리머와 소통해 보세요!
채팅을 직접 입력하거나 하트 이모티콘을 활용해 간단한 반응을 남길 수도 있어요.

description1

🎮 방송 시작

방송 이름과 간단한 설명만 입력하면 누구나 게임 방송을 시작할 수 있어요.
스트리밍 장비가 없어도 걱정하지 마세요. 아이폰 하나만 있으면 바로 시작할 수 있습니다.

description-17

🔄 가로모드

더 넓은 화면으로 스트리밍을 즐기고 싶으신가요?
버튼 한 번으로, 간편하게 가로모드로 전환해 보세요!

description-15

last

잘하면 재밌고, 못하면 더 재밌는 실시간 게임 스트리밍!
지금 바로 시작하세요!

🧑🏻‍💻 팀원

hyunjuntyler INYEKIM Siwon-L yongbeomkwak
김현준 김인예 이시원 곽용범

💻 개발 환경

⚙️ 기술 스택

🍎 First Party

Apple에서 제공하는 강력한 프레임워크들을 활용하여 안정성과 효율성을 극대화했습니다.

  • AVFoundation: 커스텀 플레이어 구성으로 Shook 만의 스트리밍 경험을 제공.
  • Combine: 비동기 데이터를 효율적으로 처리하고 뷰모델과 뷰 간의 데이터 바인딩을 구현하여 반응형 UI 제공.
  • ReplayKit, Broadcast Extension: 실시간 SampleBuffer를 전송하여 모바일 게임 스트리밍을 안정적으로 구현.
  • URLSession, WebSocket: Apple의 네트워킹 프레임워크를 활용해 안정적이고 실시간 반응이 가능한 채팅 시스템 구현.

🍏 Third Party

검증된 오픈소스 라이브러리를 활용하여 개발 효율을 높이고 사용자 경험을 향상했습니다.

  • Tuist: 프로젝트를 모듈화하여 프로젝트 세팅이나 코드 구조를 체계적으로 관리하여 개발 과정의 효율성을 높임.
  • HaishinKit: RTMP 프로토콜을 사용하여 실시간 스트리밍 전송의 안정성을 보장.
  • Lottie: 인터랙티브 애니메이션을 통해 앱 사용성을 강화하고 사용자 만족도를 높이고자 함.

🎈 Our Party

우리 팀의 전문성을 바탕으로 직접 설계하고 구현한 모듈들로, 프로젝트에 차별화된 강점을 더했습니다

  • EasyLayout: 레이아웃을 쉽고 직관적으로 구성할 수 있도록 설계된 커스텀 모듈. 기존의 Auto Layout에 비해 코드의 가독성과 유지보수성이 높아짐.
  • FastNetwork: 네트워크 요청 처리 및 데이터 핸들링을 단순화한 독자적 모듈. 프로젝트에 맞춤화된 통신 환경 제공.

☁️ Cloud Integration

클라이언트와 서버 간의 원활한 데이터 흐름과 실시간 스트리밍을 지원하기 위해 클라우드 기반 서비스를 적극적으로 활용했습니다.

  • Spring (Kotlin): 서버 사이드 로직과 데이터 처리를 위해 Spring 프레임워크와 Kotlin 언어를 사용. WebSocket 기반의 실시간 채팅 및 스트리밍 제어 기능 구현.
  • Naver Cloud LiveStation: RTMP 스트리밍 지원 및 방송 송출 기능을 통해 대규모 실시간 스트리밍을 안정적으로 제공.
  • Naver VPC (Virtual Private Cloud): Naver Cloud 플랫폼을 기반으로 안전하고 확장 가능한 네트워크 환경을 구축.

🚧 아키텍쳐

🏛️ 앱 다이어그램

app_struct

🎨 앱 디자인 패턴

designPattern

✨기능

🎮 모바일 게임 실시간 스트리밍

  • ReplayKit과 Broadcast Extension을 활용하여 모바일 게임 화면을 실시간으로 스트리밍.
  • HaishinKit을 통해 RTMP 프로토콜을 지원, 원활한 방송 송출 가능.

💬 시청자 실시간 시청 및 채팅

  • WebSocket 기반의 실시간 채팅 기능으로 스트리머와 시청자 간 원활한 소통 지원.
  • 시청자 입장 표시 및 채팅 내용 표시로 실시간 인터랙션 경험 제공.

📝 링크

Wiki 그라운드 룰 회의록 브랜드디자인 UX 피그마

About

잘하면 재밌고, 못하면 더 재밌는 실시간 게임 스트리밍! 🌠

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages