분류 전체보기 55

그래프 - 데이터 구조

우리는 실생활속 많은 그래프들을 마주한다. 이게 주식이 될 수 있는 것이고, 또한 어떤 통계 자료들을 보며 이 그래프는 어떻게 생겼는지 알 수 있다. 그러나 우리는 컴퓨터 공학도로써 데이터 구조의 그래프를 알아야 한다. 일단 그래프가 무엇인지부터 시작해보자.그래프란 무엇인가?데이터 구조에서의 그래프는 다른 데이터 구조와 마찬가지이다. 연결 리스트, 배열 등 데이터들을 저장하고 관리하는 역할을 한다. 그러나 그래프는 다른 유형의 데이터 구조와는 약간 다르다. 여기서 다르다는 것은 어떤 차이가 있는가? 우선 배열, 스택, 큐, 링크 리스트 등의 여러 데이터 구조는 선형 데이터 구조이다. 그러나 그래프는 '비선형 데이터 구조' 이다. 더 정확하게 말하다면 유한한 정점 집합으로 구성된 비선형 데이터 구조이다...

해시 테이블

우리가 자료 구조체를 만들때 다음과 같은 형식으로 만들었다 가정해보자.const priceList = [ ["사과", 5], ["오렌지", 3], ["포도", 7], ["멜론", 9], ["키위", 2], ["수박", 12], ]; 이제 고객이 들어와 수박의 가격을 물어본다 가정할 경우, 그 가격을 알기위해선 위의 리스트의 모든 항목을 돌아다니며 수박을 찾고 반환해 주어야 할 것이다. 이 상황에서의 시간 복잡도는 O(n) 이다. 물론 위와같이 여섯개의 상품만 있는 경우에는 이런 시간 복잡도를 가지는 것은 큰 문제가 없다. 그러나 여기서 상품이 2,000 개 , 10,000 개 정도로 불어나면 그만큼의 시간복잡도가 늘어난다는 의미가 된다. 그렇게 된다면 데이터의 처리속도는 더..

Unreal 1기 대형 프로젝트 2번째 KPT 회고 - Unreal Engine

내일 배움 캠프 Unreal 1기 4조 - SkyWars KPT 회고록 4인용 대전 PVP 대난투 게임개요 이번 주제는 멀티플레이 환경에서의 PVP 대전 게임을 목표로 제작하였습니다. 비영리 목적인 공부를 위한 프로젝트이며, 총 5명의 팀원과 같이 하였고 각각 캐릭터, UI/UX, 서버, 게임모드 등의 분야를 나누어 협업하여 만들었습니다. 총 4명의 캐릭터가 있고 Steam Advanced Session 을 이용하여 스팀과 연동되는 멀티 플레이 게임입니다. (캐릭터는 슈퍼 바이브와 배틀 크러쉬의 게임의 에셋에서 가져왔습니다.파트김종선 - 서버 및 게임모드 담당 (레벨 포함)최정욱 - UI/UX 및 옵션, 세부사항 담당 (레벨 포함)박찬영 - 캐릭터 부문 팀장 및 나이아가라 이펙트, 캐릭터 기준 클래스 담..

카테고리 없음 2025.04.18

멀티플레이 메뉴 부터 게임 로비 까지 (1) - UnrealEngine

이번 프로젝트에 내가 맡은 부분은 서버에 대한 연결, 게임모드 이다. 3주에 걸친 프로젝트인데 1주 반절이 지난 지금 메인 메뉴와 로비 시스템, 서버 찾기 시스템등이 구현되어서 어떤 형식으로 만들어 졌는지 적어보도록 하겠다.  대부분의 시스템과 블루프린트는  이분의 유튜브를 보고 참고하였다. (대부분 여기에서 가져왔다.)https://www.youtube.com/@NiceShadow NiceShadowI'm creating Unreal Engine tutorials!www.youtube.com   언리얼의 플러그인 중 스팀과 연동이 가능하게 해주는 플러그인이 있다. 이는 아래 사이트에 들어가 다운 받을 수 있다.https://vreue4.com/advanced-sessions-binaries Advanc..

Unreal 2025.04.09

멀티플레이 RPG System 만들기 (1) - Unreal Engine

최근 유튜브를 돌아다니며 멀티플레이에 대한 정보를 모으고 있었다. 찾는 도중 엄청 좋은 강의를 찾게 되어 이를 적어놓고 공부하고자 따라해보기 시리즈를 시작하겠다. 코드는 여기에 올리지 않고 따로 내가 만들어놓은 Github 레포지트리에서 확인하면 된다. 아니면 이 유튜버의 강의를 따라 보며 확인해 보아도 좋다.https://www.youtube.com/@uhr2842 내 깃허브에서는 코드에 대한 주석이 달려있기는 하나 정확하진 않기에 이해가 안되는 부분은 잠시 멈추고 정보를 찾으면서 따라하자.사용하는 플러그인Gameplay Abilities System : 언리얼 에디터 플러그인 중 기본적으로 존재하는 플러그인이다. 에픽게임즈에서 지원해 주는 플러그인으로 GAS 라고 부르기도 한다. 이게 뭐하는 물건인가..

GameModeBase 와 GameMode - Unreal Engine

요즘 멀티플레이에 대해 다루고있다. 아직 네트워크에 대해 배워야할점이 많지만... 지금 당장은 이게 궁금해서 정리해 보겠다. 유튜브를 보는데 멀티플레이에 대한 GameMode 를 만드려면 GameModeBase 보다는 GameMode 를 사용하는 것이 더 좋다고 하였다. 그럼 이 둘의 차이는 뭐고 왜 멀티플레이에서는 GameMode 를 더 선호하는가? 오늘은 이에 대해 알아보겠다. 더 나아가 GameStateBase 와 GameState 또한 어떤 차이가 있는지 알아보자.GameModeBaseGameModeBase 는 기본적인 게임 규칙과 흐름을 정의하는 추상 클래스이다. 다양한 게임 모드에서 공통적으로 사용되는 기능들을 제공한다. ( PlayerArray , GetServerWorldTimeSecond..

Unreal 2025.03.27

숫자 야구 게임 - UnrealEngine

내일배움 캠프 9번째 과제 저장용입니다.전체적인 구성은 블루프린트를 이용해 제작하였습니다. 추후 C++ 을 이용해 재구성할 예정입니다.전체적인 흐름은 다음과 같습니다.게임모드 -> OnLogin 으로 플레이어의 입장 감지. New Player 에서 플레이어 컨트롤러로 캐스팅 후 플레이어 스테이트 캐스팅. 플레이어 이름을 입장 순서에 따라 1, 2 로 나눔. Begin Play 에서 GenerateRandom Number 라는 블루프린트 클래스를 이용해 같은 수가 없는 세자리 숫자를 생성 후 GoalScore 라는 String 변수에 저장. GetMessage (Custom Event) 를 통하여 Controller 에서 메세지, 플레이어 이름, 플레이어 스테이트를 받아옴. (RPC) 받아온 정보를 통해 ..

Unreal 2025.03.26

Unreal Engine 의 RPC (2)

저번 시간에는 Replication 에 대해 알아보았다. Replication 은 서버가 클라이언트에게 변경된 게임의 데이터들을 실시간으로 전달해 주는 역할이었다. 즉, 특정 액터의 데이터나 플레이어들의 데이터가 바뀌면 서버가 클라이언트에게 갱신된 값들을 복제해 주는 역할이다. 그러나 여기서 의문이 드는데... 그럼 클라이언트는 서버에 어떻게 데이터를 보냄? 당연하게도 변경된 데이터를 서버도 알아야하기에 클라이언트가 서버에게 데이터를 보내줄 방법이 필요하다. Replication 은 저번 시간에 배웠듯이 서버에서 클라이언트로의 일방 통행임으로 Replication 을 이용하여 클라이언트가 서버에게 데이터를 전송할 수 없다. 그렇기에 우리는 RPC - RemoTe Procedure Call 을 사용해야한다..

Unreal Engine 의 Replication (1)

요즘 UnrealEngine 에서의 네트워크 시스템에 대해 공부를 계속 하고있지만 아직 이해하지 못하는 부분이 많다. 그렇기에 Unreal Engine 에서 지원하는 Gameplay FrameWork 를 살펴보며 어떤 방식으로 서버와 클라이언트가 소통을 하는지, 그리고 각 Class 가 어떤 인스턴스 에 존재하는지 살펴보겠다. Gameplay FrameWork 가 무엇인가? FrameWork 가 무엇인지부터 알아보자. FrameWork. 란 구조 즉, 소프트웨어 구조를 의미한다. 더 정확하게 알아보자면 소프트웨어 개발에서 특정 목적을 달성하기 위한 구조 또는 뼈대라고 할 수 있다. 그렇다면 Gameplay FrameWork 또한 무엇인지 알 수 있을 것이다. 이는 게임 개발에서 특정 장르나 스타일의 게임..

블루프린트로 채팅 만들기(1) - Unreal Engine

저번 시간에 채팅을 만들었었다. 그러나 그런 방식의 채팅은 현재 쓰이지 않는 방향이다. 그래서 오늘은 좀 더 좋은 모습의 채팅창을 만들어 보겠다.  먼저 컨트롤러 부터 만들어 주자. 블루프린트 클래스 생성에서 플레이어 컨트롤러를 상속 받아 BP_ChatController 로 이름을 붙여준다.  그 뒤 컨트롤러에 추가해줄 액터 컴포넌트를 만들어 준다. 이 또한 블루프린트 클래스 생성에서 액터 컴포넌트를 상속받아 BP_ChatActorComponent 로 이름을 붙여주겠다.  여기서 의문이 생긴다. 액터는 어느정도 알겠는데 액터 컴포넌트는 무엇인가?   일단 액터는 월드(레벨)에 배치될 수 있는 모든 오브젝트를 의미한다. 말 그대로 그 자체로 존재가 가능하며 월드에 배치가 가능해진다.  액터 컴포넌트는 액터..