게임 개발팀은 디렉터, PM, 개발, 아트, 기획, QA, 사운드, 마케팅, 사업 팀으로 구성됩니다. 디렉터는 게임 프로젝트 전체를 총괄하고, 개발 PM은 게임의 전반적인 틀과 형식을 정하는 기획자 혹은 개발, 아트, 기획, QA 팀의 일정 조율이나 게임 운영 업무를
씬(Scene) 이란 하나의 장면 또는 레벨을 나타내는 단위이다. 게임은 하나 이상의 씬으로 구성되며, 씬은 게임의 일부를 구성하는 고유한 환경, 오브젝트, 에셋, 스크립트, UI 등을 포함하는 모음이라고도 할 수 있다.일반적으로 게임은 다음과 같은 씬들로 구성된다.타
언리얼이란 무엇일까? 이것을 알기위해선 게임엔진이 무엇인지 이해해야 한다. 게임엔진은 비디오 게임, PC 게임의 개발에 기반이 되는 구성 요소들을 가진 필수 구성 요소들인 그래픽 엔진, 물리 엔진, 오디오 엔진, UI 시스템, 게임 플레이 프레임워크 등이 잘 융합된
12월 10일 언리얼5를 통해 팀 단위 프로젝트를 하라는 숙제가 주어졌다. 그러나 우리조는 게임을 만들고 싶다는 열정은 대단하지만 아직 언리얼에 대한 지식이 전무하거나 거의 없는 사람들 이였기때문에 프로젝트를 어떻게 진행해야 될지 막막하였다. 참고할 수 있도록 주어진
하나의 직업에 다양한 스킬이 존재하지만 고유의 특징에 따라 평타스킬, 일반스킬, 아이덴티티 스킬, 초각성스킬, 각성기(초각성기), 기상기스킬, 이동기스킬이 있다. 그 중 일반스킬, 초각성스킬, 각성기(초각성기) 같은 경우 실제로 전투에 쓸 수 있는 스킬의 갯수는 제한되
드디어 언리얼 캠프가 시작되었다!!! 우선 오늘은 라이브세션 강의로 진행되었고 첫날인만큼 간단하게 진행되었다. 언리얼을 설치하고 수업에 필요한 프로젝트를 설치한 뒤 기본적인 툴을 감각적으로 익히는 정도랄까? 첫날부터 빡세게 진도가 나가버리면 정신없어서 어떡하지 하는 생
와우! 내일배움캠프 언리얼 2일차! 오늘은 드디어 언리얼 에디터를 조작해보았다. 사실 사전캠프때 몇번 조작을 해보았지만, 정식강의때 수업을 들으며 에디터를 조작하는건 느낌이 또 다르달까..ㅎㅎ 약간의 긴장감과 즐거움이 더해져서 설레었던 것 같다. 에디터를 만지는게 설레
오늘은 언리얼의 꽃? 이라고나 할까. 오브젝트, 레벨 등 게임안의 거의 모든것이 움직이며 살아 숨쉬는 듯이 만들어 주는 마법같은 존재. 블루프린트 강의가 시작되었다. 코딩을 그림처럼 설계할 수 있다는 점에 '비주얼 스크립팅'이라고도 불리는 블루 프린트는 애초에 코딩을
오늘은 첫날부터 오늘까지 5일간 배운 경험을 바탕으로 드디어 인생 첫게임을 만들었다! 정말 꿈만 꾸던 순간부터 오늘 만들게되기까지.. 비록 여전히 배움은 적어 초라한 게임이지만 고생했던 노력의 '첫 결실'이였기 때문에 만족한다. 일단 오늘도 정말 많이 배웠기 때문에 정
드디어 캠프 본강의에서 C++을 진행하였다. 발제는 라이브세션으로 진행되었고 강의는 언제나 들을 수 있게 업로드되어 볼 수 있었다. 금요일까지 최대한 공부를 하여 도전문제까지 풀 수 있도록 최선을 다해보겠다.우선 오늘은 프로그래밍 기초 강의를 모두 들었다. 대부분 C를
C++ 수업을 시작한지 5일차이다. 첫 과제는 프로그래밍 문법을 활용한 과제로 금방한 것 같은데 두 번째 과제는 C++의 꽃, 객체지향을 이해하고 있어야해서 공부하는데 많은 시간이 소모되었다. (크리스마스도 15시간 정도 공부만 한 것 같다.) 그래도 시간이 모자랐던
일반 변수들은 대부분 스택 메모리 공간을 차지한다.변수는 선언된 중괄호안에서 생존하게 된다. 괄호가 시작되면서 변수 선언을 하면 메모리에 할당되고, 괄호가 끝나는 순간 저절로 회수된다.그러나 static 을 붙이면 변수는 사라지지 않는다. 초기화도 최초 한번 실행되고
클래스, 템플릿, 컨테이너, 반복자, 맵, Solid원칙, 스마트 포인터 등등 너무 많은 정보가 머리에 한번에 들어오니깐 내가 이것을 이해하고 있는것인지 그냥 추상적으로 머리에 용어만 기억하는 것인지.. 너무 답답한 마음에 우선 무작정 각 개념들이 적용된 코드들을 많이
이번주 캠프 첫번째 과제가 커스텀 벡터를 만들어서 구현해보는 것이라 만들고 있는 중이다.난생 처음으로 소스코드가 아닌 헤더파일을 만들어서 ifndef, define endif를 써보았다. 순서대로 만약 특정매크로가 정의되지 않았으면, 정의하겠다., 특정매크로를 여기까지
simplevector.h ` main.cpp `
요즘 과제를 한다고 정신이 없다. 아직 클래스에 대해 감이 잘 오지 않는다. 대충 추상적으로 클래스에 종속되어 있는 느낌이면 자식클래스로 만들고 상속시키고, 그렇지 않으면 컴포넌트형식으로 클래스들이 서로 상호작용하는 느낌이 들도록 한다는 느낌. 그리고 클래스의 멤버변수
Book.hBookManager.hBorrowManager.hmain.cpp이번 작업을 할때는 오류가 거의 나지 않았다. 그래도 커스텀 벡터를 한번 만들어 봤다고 진짜 아주 조금 익숙해진 기분도 든다. 그러나 아직 미숙한건 내가 가장 잘안다. 이번 과제를 하면서 가장
오늘은 처음 C++과 언리얼이 어떤 관계인지 알아보았다. 저번에 인생 첫 게임을 만들었을 땐 블루프린트를 활용해서 만들었었는데 C++을 배운 현재는 어떤 모습으로 게임을 만들어 나갈 수 있을지 사뭇 긴장되고 설렌다. 그러나 여전히 C++의 실력이 부족한 상태이므로 C+
1. 환경 설정 이번 과제는 언리얼 엔진에서 C++ 스크립팅을 통해 간단한 좌표이동 프로그램을 제작하는 것이다. 우선 언리얼 프로젝트를 실행할 때 매번 블루프린트로 체크하고 실행했었는데 C++을 배우고 처음 C++로 실행시켜주었다. 프로젝트를 실행시키면 디폴트로 설
Object(UObject)의 개념UObject는 언리얼 엔진에서 모든 클래스의 최상위 부모이다.스스로 월드(레벨)에 배치될 수 없다. 주로 데이터나 로직만 담당예: 플레이어 능력치(HP, 경험치), AI정보, 게임 설정 값 등화면에 보이지 않는 추상적인 부분을 처리하
오늘은 어제 배운 강의를 바탕으로 움직이는 액터들을 만들어 보았다. 선형으로 이동하는 액터, Sin을 활용해서 자연스럽게 반복이동과 제자리 회전하는 액터, 게임 시작후 3초 뒤에 스폰되어 10초동안 중심점을 기준으로 회전이동한 뒤 사라지는 액터를 구현해보았다. 1.
GameMode는 게임의 전반적인 규칙과 흐름을 총괄 관리하는, 일정의 컨트롤 타워 역할을 하는 클래스이다.어떤 Pawn(또는 Character)을 플레이어에게 스폰해줄지, 어떤 PlayerController를 사용할지, 승패 조건이나 점수 계산 방법은 어떻게 설정할지
PlayerController는 사용자가 키보드, 마우스, 게임패드 등에서 입력을 받으면, 그 입력을 해석하여 캐릭터나 다른 오브젝트에게 동작을 명령하는 핵심 클래스이다.\-> PlayerController는 플레이어 입력을 처리한다.입력이 처리되는 기본 흐름키보드,
이제 PlayerController에 InputMappingContext까지 활성화를 시켰다. 이제 PlayerController은 입력에 맞는 IA를 인식을 하므로 Character클래스에 구현부를 호출하는 명령을 해주어야한다. 우선 전체적인 흐름은 다음과 같다고 볼
근 몇일간 Pawn의 이동구현에 얼마나 시간을 할애했는지 모르겠다. Pawn은 Character와 달리 CharacterMovementComponent도 없을 뿐더러 FloatingPawnMovement가 있더라도 이것을 사용하지 않고 직접 이동을 구현할 생각이였다.
이번에는 과제를 하면서 애먹었던 부분에 대해서 짚고 넘어가고자 한다. 수학적인 부분에서 미숙하기도 하고 어떻게 작동되는지 잘몰라서 막혔던 부분이 많았다. 흔히 Actor의 Local방향을 들고오는 함수인GetActorForwardVector(),GetActorRight
이전에 구현했던 Pawn기반 Character 는 bUseControllerRotationYaw = true 로 인해 컨트롤러의 회전에 따라 Pawn의 회전이 동일하게 이루어졌었다. 마우스 이동에 따라 컨트롤러의
언리얼에서 인터페이스 클래스는 다양한 액터와 객체가 구현할 수 있는 인터페이스 함수들을 선언하는 클래스이다. UInterface 베이스 클래스와 IInterfaceName 인터페이스 객체를 다루고 있다.
게임에 있어서 UI와 HUD는 매우 중요한 요소이다. 왜냐하면 게임은 현실이 아니기 때문에 플레이어게 정보를 보여주는 UI가 필수불가결한 요소이기 때문이다. 그러나 최근 대작 게임에는 몰입도를 올리기 위해 화면에 보이는 UI를 최소화 시키거나 아이들 상태에서는 UI
나는 GameMode (시작, 종료, 일시정지, 게임로직, 레벨디자인시스템) 파트를 맡게 되었다. S.A 피드백때는 GameMode 담당의 작업량이 너무 적다는 의견이 나와서UObject 기반 작업 + Actor 관련 작업을 추가로 하기로 했다.우선 기획단계에서 Gun
✅ 일일 목표1 : Player, AI SpawnProcess & Stage(Level) System Implement ✅ 일일 목표2 : GameMode Prototype 대략적으로 완성 🎮 AI SpawnProcess 기획단계에서 Enemy 스폰의 경우 스테이지가 높아질수록 적이 생성되는 수가 많아지도록 설계를 하였다. 최적화를 위해 ObjectP...
Object Pooling을 하는데 InitializePool은 잘되지만 GetPooled함수가 정상적으로 작동이 되지 않아 디버깅 하면서 오류를 해결해야 했다. 우선 디버깅로그를 찍어보기로 했다. 우선 GetPooled함수가 호출되는 GameMode클래스의 Spawn
🎮 개념 전략 패턴은 객체의 행위를 바꾸고 싶을 때, 직접 수정하는 것이 아니라 전략 객체를 만들어서 교체하는 방식으로 동작하는 디자인 패턴인다. 이는 객체 지향의 개방-폐쇄원칙 OCP을 따르며, 코드의 유연성과 확장성을 높이는 데 도움이 된다.
스테이지 진행중 TrapLevel로 이동한 뒤 다시 원래의 레벨로 돌아오는 로직을 구현해보았다.원래의 레벨로 다시 돌아와야 하므로 Game의 상황을 저장하고 레벨을 왕복해야한다. 우선 기본적인 레벨 오프너인 OpenLevel 을 사용하면 UEngine에서 관리하는 최상
프로젝트 명 : GunFire_Paragon 개발 일정 : 2025.02.17 ~ 2025.03.07 (3Weeks) 개발 환경 : C++ 17 (v14.38) MSVC v143 Unreal Engine 5.5 Visual Studio 2022 Git LFS 개발 특징
분산 시스템에서 네트워크 장애(Partition)가 발생해도 게임이 계속되도록 하는 기술들은 다음과 같다.게임 데이터를 여러 서버에 복사본으로 저장해서, 한 서버가 죽어도 다른 서버에서 데이터를 제공할 수 있도록 함.대표적인 방법:마스터-슬레이브 복제 (Master-S
📌 Dormancy(휴면)과 Relevance(관련성)은 언리얼 엔진에서 네트워크 최적화를 위해 사용되는 개념.📌 두 개념 모두 멀티플레이어 네트워크 최적화를 위한 것이지만, 동작 방식과 목적이 다름.💡 한마디로 정리하면:Dormancy(휴면) → "변하지 않는
언리얼 엔진의 멀티플레이 네트워킹을 이해하기위해 클라이언트-서버 모델과 레플리케이션(Replication) 개념을 중심으로 학습했음.언리얼은 클라이언트-서버 모델을 사용하여 멀티플레이를 처리한다. 이를 통해 데이터 일관성을 유지하면서 여러 플레이어가 동일한 게임 환경을
이전에 BluePrint로 만들었던 ScrollChat을 C++로 구현을 해보았다. 나아가 실제 게임에서 RPC와 Replecated 가 어떻게 작동하는지 학습하기 위해 ChatBased-Baseball 게임을 만들어보았다. Project : Baseball MultiGame Project Duration : 2025.03.10 ~ 2025.03.28 G...
프로젝트를 하면서 따로 TIL을 정리를 말끔하게 할 수 없어서 프로젝트를 하는 기간에는 TIL을 쓰는 방식을 바꾸기로 했다.프로젝트를 하는 중간중간에 메모를 하는 느낌으로 진행프로젝트를 진행하기 위해 참고하는 Templete인 Multiplayer Arena의 Blue
Character가 어떻게 애니메이션이 동작하는지 보기위해서 Character에 할당된 ABP 클래스를 확인해보았다.AnimGraph는 동작이 Output Pose로 나오는 로직이다.복잡해 보이지만 찬찬히 살펴보면 다음과 같이 동작한다Default State의 Stat