프로젝트 28

[메타버스 게임] 캐쥬얼 배틀로얄 프로젝트 Linux 빌드 환경 세팅(Makefile)

개요Windows에선 VisualStudio를 통해 편하게 빌드할 수 있었다면, Linux환경에선 Makefile을 통해 편하게 빌드할 수 있다.CMake가 크로스 플랫폼에서의 빌드 환경에 강점이 있다고 하는데 실제로 사용해 보니 그렇게 Windows와 Linux환경이 조금 많이 차이가 나서 왜 강점이라고 하는지는 잘 느끼지 못했다. 내가 잘못 썼을 가능성이 가장 크긴 하지만... Linux환경에선 패키지 유무가 C++ 프로젝트를 제대로 수행할 수 있는지 여부가 가장 크다, vcpkg를 clone하고 설치한 후 vcpkg.json을 통해 라이브러리를 설치 할 수 있다는 것은 Windows환경과 동일하다. 하지만 해당 라이브러리를 설치하는 과정에서 다양한 리눅스 패키지가 필요하기 때문에 오류가 자주 발생하..

[메타버스 게임] 캐쥬얼 배틀로얄 프로젝트 Windows 빌드 환경 세팅(VisualStudio)

개요vcpkg를 통해 설치한 라이브러리를 코드 작성 및 실제 컴파일 단계에서 오류 없이 사용하기 위해선 설치된 디렉토리를 프로젝트 속성에서 명시해 주어야 한다.이를 명시해 주지 않는다면 코드 작성 시 include 단계에서 부터 라이브러리를 인식하지 못하며, 링커 단계에서 라이브러리 디렉터리를 명시해 주지 않는다면 컴파일 단계에서 에러가 발생하게 된다. CMakeLists를 통해 CMake 빌드 환경을 구축할 수도 있지만 Windows환경에서 컴파일 및 빌드할 것이라면 더 쉽고 간편하게 VisualStudio 환경에서 세팅할 수 있는 방법을 알아보자  추가 포함 디렉토리프로젝트 -> 프로젝트 속성 -> C/C++ -> 일반 탭으로 이동해 준다.추가 포함 디렉터리에 vcpkg를 통해 설치한 include디..

[메타버스 게임] 캐쥬얼 배틀로얄 프로젝트 vcpkg C++ 라이브러리 설치

개요소켓 서버를 C++의 Boost.asio라이브러리를 기반으로 구현할 것이기 때문에 관련 패키지 설치가 필요하다.또한 PostgreSQL과 트랜잭션이 필요하므로 관련 라이브러리가 필요하다. 그 외에도 통신에 사용될 타입을 json으로 사용, 서버 로그를 기록하고 보안을 유지하기 위해 관련 라이브러리들의 설치가 필요하다. vcpkg를 사용한다면 마치 python의 venv처럼 프로젝트 내에서 필요한 패키지를 설치하고 사용할 수 있다.이는 컴퓨터 내에 전역으로 패키지를 설치하지 않기 때문에 다양한 장소에서도 레포지토리를 clone 후 이미 지정해 놓은 패키지들을 명시하여 설치해 줄 수 있어 편리하다.  vcpkg 설치윈도우 환경이라면 powerShell을 사용하여 설치할 수 있다.# vcpkg 저장소 클론..

[메타버스 게임] 캐쥬얼 배틀로얄 프로젝트 ERD 제작, 물리 DB 구현

개요본격적인 코드 작성에 앞서 데이터를 수집 및 검증해야할 것이 무엇이 있는지 생각해 보았다. 처음엔 CRUD 트랜잭션 처리를 통해 DB검증부터 로그 수집까지 모든걸 진행할 생각이었다. 하지만 게임 내 발생하는 이벤트 동기화는 Unity Mirror을 통해 진행할 것이므로 이는 좋은 선택이 아니라는 것을 깨달았다. 따라서 게임 내부에서 발생한 로그 관련 데이터는 모두 별도의 로그 서버에서 처리하기로 했고, 나는 회원가입, 로그인 등과 같이 게임의 시작부터 로비에 진입하여 방 생성, 참가, 퇴장 및 게임 시작, 종료등과 같은 이벤트 발생 시 DB검증을 통한 클라이언트 요청 동기화를 담당하기로 했다. 관련하여 초기 엔터티의 개수는 12개였고 각 테이블간 관계도 많이 설정되었었다, 하지만 실제 검증이 필요한 ..

[메타버스 게임] 캐쥬얼 배틀로얄 프로젝트 기술 스택

개요2주간의 명세와 MVP 기획 과정을 거친 후 직접 개발을 위한 기술 스택을 정리하는 시간을 가졌다. 우선 가장 크게 우려가 되었던 부분은 멀티 플레이 환경에서의 각 세션간의 동기화를 처리해주는 과정이었다. 클라이언트는 유니티를 사용하기로 결정하였으며, 서버는 지연이 가장 발생하지 않는 소켓 서버를 사용하기로 결정하였다. 직접 데디케이트 소켓 서버를 통해 연결된 모든 유저에게 브로드캐스팅 하는 방법으로 처리하고 싶었지만 프로젝트 기간이 한정되어있는 관계로 해당 부분은 프레임워크를 사용하기로 결정하였다. 선택한 프레임워크는 유니티 미러로 클라이언트 끼리의 동기화를 진행해 주는 기능을 사용하기 쉽게 제공해 준다. 프로젝트를 어느정도 진행하고 나서야 깨달은 것이지만 유니티 미러는 P2P방식으로, 만약 호스트..

[메타버스 게임] 캐쥬얼 배틀로얄 프로젝트 기획

개요핀테크와 메타버스 게임 프로젝트 중에서 고민을 하다가 결국 3D 메타버스를 통해 배틀로얄 게임을 구현하는 프로젝트를 시작하였다. 프로젝트 인원은 총 6명으로 클라이언트 3명, 백엔드 3명으로 구성된 팀이다. 멀티 플레이 환경의 게임 프로젝트를 진행하게 되어 기분이 좋다.여담으로 서울에서의 약 60팀 중 우리 팀이 유일하게 메타버스 게임을 선택하였으며, 전국적으로 우리팀을 포함하여 2팀만 메타버스 게임 프로젝트를 선택하였다.  주제선정어떤 게임을 만들지에 대해 약 2주간 명세기간을 가졌다.해당 기간동안 수없이 논의하며 이미 존재하는 레거시 게임을 디벨롭 하는 방향을 잡게 되었다.서로 재밌게 플레이했던 게임들을 브레인스토밍하여 리스트업 하였고 영상 자료등을 참고하여 그 중에서도 몇가지 게임을 추려내었다...

[AIoT] 무인 사물함 프로젝트 SpringBoot 서버 배포

개요로컬 환경에서 기능 구현이 끝났다면 로컬 환경 외에서 접속 가능하도록 웹 서버를 배포해야한다.AWS EC2 환경에서 서버를 배포하기 위해 우선 깃 허브에 레포지토리 생성 후 push를 해준다.  git clone '레포지토리URL' 이후 AWS환경에 접속하여 해당 레포지토리를 clone해준다.  이러면 깃 허브에 올렸던 개발 했던 내용을 해당 디렉토리에서 확인할 수 있다.  서버 빌드우선 디렉토리 안에서 프로젝트가 위치한 디렉토리로 이동해 준다.mvn clean package 위 명령어를 통해 mvn빌드를 실행해 준다. mvn기반 프로젝트에만 유요하다.clean은 이전 빌드 정보를 날리는 것이고, package를 통해 빌드를 실행한다. 만약 로직이 변경되어 로컬 환경에서 수정 후 git에 다시 pus..

[AIoT] 무인 사물함 프로젝트 환경 설정 Config

개요설정 파일(예: config.py, .env 파일)이나 환경 변수는 애플리케이션의 설정을 관리하는 역할을한다.MVC에서 직접적인 역할을 하지는 않지만, Model, View, Controller 모두에서 사용될 수 있다.MVC 아키텍처에 포함되지는 않지만, 함께 사용되면서 애플리케이션의 유지보수성과 안정성을 높이는 역할을한다. 해당 프로젝트에서는 총 3개의 Config를 작성하였으며, 각각 CORS, Swagger(API 명세), Session 관련 설정을 적용하였다.  WebConfig.javapackage com.a207.smartlocker.config;import org.springframework.context.annotation.Configuration;import org.springfra..

[AIoT] 무인 사물함 프로젝트 예외 처리 Exception

개요예외(Exception)는 애플리케이션의 오류를 처리하는 기능이다.런타임 시 발생하는 예외에 대해 NotFound나 HTTP관련 예외는 지원해 준다.하지만 정확히 어떤 오류가 발생했는지를 사용자가 직접 지정하여 발생시킬 수 있다. 예외 처리는 MVC 구조에서 Controller나 Model에서 발생하는 오류를 처리하는 데 사용된다.Exception Handling은 MVC의 일부는 아니지만, Controller나 Model에서 오류를 처리하는 데 필요하다.하지만 MVC와 함께 사용되면서 애플리케이션의 유지보수성과 안정성을 높이는 역할을한다. 또한 사용자 지정 예외 처리를 만들게 되면, 개발을 진행하면서 어느 부분에서 에러가 발생했는지 쉽게 파악할 수 있다는 장점이 있다.  exception패키지를 생..

[AIoT] 무인 사물함 프로젝트 MVC 모델 작성 Controller

개요MVC 아키텍처에서 Controller는 애플리케이션의 사용자 인터페이스 로직과 비즈니스 로직을 연결하는 중요한 구성 요소이다.클라이언트의 요청을 받아 처리하고, 서비스 계층의 비즈니스 로직을 호출한다.요청된 데이터를 가공하고, 적절한 응답을 반환한다. 주요 기능으로 HTTP 요청 처리, 요청 파라미터 매핑, 서비스 메서드 호출, 응답 데이터 포맷팅 등이 있다.HTTP 요청의 타입에 따라 매핑할 주소를 입력하면, 클라이언트는 해당 주소로 API 호출 요청을 보낼 수 있다.하기엔 무인 사물함 프로젝트를 진행하며 작성한 컨트롤러 정보이다.  AdminController.javapackage com.a207.smartlocker.controller;import com.a207.smartlocker.mode..

728x90