[LMS7 23/28주차] 1013 C# 윈폼 기반 온라인 멀티 게임(C# 윈폼 명코파크) 완료 보고서

2025. 11. 11. 11:50·C#/Project

0. 프로젝트 완료 보고서

제출일 : 2025.10.19(일)

​

개발 완료 보고서
프로젝트
명코파크
개발인원
이명진
활동일시
25.10.13 ~ 25.10.19
장소
공학 1관 드론융합실
주요주제
협동 물리 2D 게임 구현
개발 환경
- OS : Windows 11
- Language : C#
- IDE : Microsoft Visual Studio
- Framework : .NET 9.0 (WinForms)
- VersionControl : GitHub
구현기능
1. 닉네임 입력 후 로그인 기능
2. 수평으로 좌우 이동
3. 수직으로 점프
4. 추락
5. 별 획득
6. 문 열기
7. 멀티
예상문제점
1. Winform은 업무용 데스크톱 UI용 프레임워크이기 때문에 멀티 기능 또는 실시간 그래픽 처리가 약함
​
2. 물리적 요소를 구현하여야 함(중력 및 충돌)
해결방법
1. 멀티 기능은 비동기적으로 클라이언트의 접속을 지속적으로 처리할 수 있도록 함.
​
2. 실시간 그래픽 처리의 경우 더블 버퍼를 이용해 깜빡임을 최소화하려고 하였음.
​
3. 물리적 요소는 크게 수평과 수직의 충돌과 중력의 적용을 받아 공중에서는 떨어지는 효과를 구현해야하는데 물리 루프에서 중력과 바닥의 충돌을 담당하고, 충돌 루프에서 캐릭터 및 발판과의 수평 수직 충돌을 담당하였음.
요구사항 분석서 체크리스트
1. 참조
수정 문서
2. 참조
구현 스크린샷 및 기능 설명
3. 참조
실행 영상
4. 참조
소스코드
5. 참조
개인 개발 후기
6. 참조

1. 요구사항 분석서 체크리스트

유형
요구분석 내용
분류
세부내용
USE
CASE
수행
여부
시작
시작화면
시작화면 출력
UC01
⭕
기능
1. 닉네임 입력
2. 입장
메인
메인화면
게임을 할 수 있는 메인화면 출력
-
⭕
이동
기능
좌우 이동(캐릭터 x좌표 이동)
UC02
⭕
점프
기능
1. 점프(캐릭터 y좌표를 위 방향으로 이동)
2. 중력(캐릭터 y좌표를 아래 방향으로 이동)
UC03
⭕
충돌
기능
별 획득 및 문에 대한 충돌시 해당하는 이벤트 발생
-
⭕
별
기능
별과 충돌 시 캐릭터에게 별 고정
UC04
❌
문
기능
문과 충돌 시 해당 캐릭터는 클리어 상태가 됨
UC05
⭕
클리어
기능
모든 캐릭터들이 클리어 상태가 되면 최종 클리어 됨
UC06
⭕
종료
종료화면
종료화면 출력
UC07
⭕
별
변경점
별 획득 시 문이 개방됨

2. 수정문서

없음


3. 구현 스크린샷 및 기능 설명

SERVER

▲ 서버에서는 클라이언트의 요청을 무엇을 받았는지, 그 요청에 대해 어떻게 처리를 했는지를 콘솔창으로 출력

 

CLIENT

▲ 첫 시작화면(닉네임 입력과 로그인)

 

▲ 첫 게임화면(0~200 사이에서 랜덤 스폰, 별 위치 고정, 문 고정)

 

▲ 별 획득 시 문 열림(문으로 입장 시 다음 맵 로드)

 

▲ 다음 맵으로 이동

 

▲ 협동을 통해 별 획득

 

▲ 게임종료 화면(재시작 및 종료 선택 가능)


4. 실행영상

 

https://www.youtube.com/watch?v=la0Oyxnner4&t=4s

 


5. 소스코드

ZIP : 최대 20MB 까지 업로드가 허용되어 업로드 불가

 

GIT : https://github.com/mmmmz986/MCO_PARK

 

GitHub - mmmmz986/MCO_PARK: [LMS7 23/28주차] 1013 C# 윈폼 기반 온란인 멀티 게임(C# 윈폼 명코파크)

[LMS7 23/28주차] 1013 C# 윈폼 기반 온란인 멀티 게임(C# 윈폼 명코파크) - mmmmz986/MCO_PARK

github.com


6. 개발후기

기존 로컬 게임에서는 키 입력 -> 로직 -> 출력 의 순서였지만 멀티 게임에서는 클라이언트 키 입력 -> 서버로 전송 -> 서버의 로직 -> 모든 클라이언트 브로드캐스트 -> 클라이언트 출력의 순서로 진행이 되었다.

처음 시작할 때 공통 프로토콜을 만들었는데 이유는 제일 처음 TCP IP 네트워크를 이용한 프로젝트를 할 때 서버에서 필요한 변수들이 클라이언트에서도 필요할 때가 많았고, 그 반대의 경우도 많았기 때문에 한번 정의 후 using해서 사용하면 매우 편리할 것이라 생각했기 때문이었다.

또한 게임이 타인의 머리 위로 올라가 점프를 하는 등 협동을 요하는 게임이였기 때문에 캐릭터-캐릭터 및 캐릭터-발판 간 물리적으로 겹쳐지는 상황이 나오면 안되었는데 이는 미리 사각형 박스를 만들어 겹쳤을 때는 캐릭터의 좌표를 최소한으로 보정하면서 브로드캐스트해서 해결하였다.

예전 2d 게임을 만들면서 느꼈지만 게임은 보기에는 단순한 것 같지만 내부에 보이지 않는 로직들이 많은 것을 수행하고 있는 것 같다.

다음은 게임 말고 UI를 극대화 할 수 있는 관리 프로그램을 만들어보고 싶다.

'C# > Project' 카테고리의 다른 글

[LMS7 27/28주차] 1114 WPF 자유 프로젝트 "RCS (차량 원격 제어 시스템)" 완료 보고서  (0) 2026.05.06
[LMS7 27/28주차] 1114 WPF 자유 프로젝트 "차량 원격 제어 시스템" 개발계획서  (0) 2026.05.06
[LMS7 23/28주차] 1013 C# 윈폼 기반 온라인 멀티 게임(C# 윈폼 명코파크) 개발 계획서  (0) 2025.11.11
'C#/Project' 카테고리의 다른 글
  • [LMS7 27/28주차] 1114 WPF 자유 프로젝트 "RCS (차량 원격 제어 시스템)" 완료 보고서
  • [LMS7 27/28주차] 1114 WPF 자유 프로젝트 "차량 원격 제어 시스템" 개발계획서
  • [LMS7 23/28주차] 1013 C# 윈폼 기반 온라인 멀티 게임(C# 윈폼 명코파크) 개발 계획서
m_Dev
m_Dev
  • m_Dev
    m_Dev
    m_Dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • MAIN STUDY
        • 정보보안
        • 빅데이터
        • 정보처리
        • 컴퓨터 구조
        • 기타
      • JOB
        • Study
        • Project
      • LMS 7
        • 개발일지
      • FRAMEWORK
        • Qt
        • MFC
        • Winform
        • WPF
        • MAUI
      • NETWORK
        • Study
        • Assignment
      • PYTHON
        • Set
        • Study
        • Assignment
        • Project
      • C
        • Set
        • Study
        • Assignment
        • Project
      • C++
        • Set
        • Study
        • Assignment
        • Project
      • C#
        • Set
        • Study
        • Assignment
        • Project
      • DATABASE
        • MySQL
        • SQLite
      • IDE
        • VisualStudioCode
        • VisualStudio
        • Pycharm
        • Colab
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
m_Dev
[LMS7 23/28주차] 1013 C# 윈폼 기반 온라인 멀티 게임(C# 윈폼 명코파크) 완료 보고서
상단으로

티스토리툴바