[객체지향의 사실과 오해] 2장. 이상한 나라의 객체
·
책/객체지향의 사실과 오해
“2장. 이상한 나라의 객체”에서는 ‘객체란 무엇인가’라는 본질적인 질문에 대답하려고 합니다. 제목이 암시하는 것처럼 2장의 대부분은 루이스 캐롤이 쓴 ‘이상한 나라의 앨리스’를 모티브로 하고 있습니다. 앨리스의 이야기를 듣고 나면 객체가 상태와 행동, 식별자를 가진 존재라는 사실을 이해하게 될 것입니다. 목차에 나온 글로 2장은 객체에 대해 추상적으로 설명합니다. '이 장을 통틀어 가장 중요하고 반드시 기억해야 하는 진실은 바로 “행동이 상태를 결정한다” ' 라는 문장이 있을 정도로 2장부터 계속해서 이 내용이 반복해서 나올 예정입니다. 아기의 인지 실험 사례를 들면서 사람은 태어난 지 얼마 안 된 시기부터 뚜렷한 경계를 가지고 함께 행동하는 물체를 하나의 개념으로 인지한다는 사실을 말하고 있다. 객체..
[객체지향의 사실과 오해] 1장. 협력하는 객체들의 공동체
·
책/객체지향의 사실과 오해
https://www.yes24.com/Product/Goods/18249021 객체지향의 사실과 오해 - 예스24『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝게도 많은 사람들이 객체지향의 본질을 오해하고 있다. 가장www.yes24.com 매주 프로그래밍 책 스터디를 하는데 지난 주에 '객체지향의 사실과 오해' 책 스터디를 마쳤습니다. 책의 내용이 정말 중요하다고 느껴, 블로그에 책 내용을 정리할 계획입니다. “1장. 협력하는 객체들의 공동체”에서는 객체지향 패러다임의 핵심이 자율적인 객체들의 협력이라는 사실을 강조합니다. 지금까지 객체지향의 중심이 클래스나 상속이라고 생각했던 분들은 1장을 읽고 나서 약간의 당혹감을 느낄 수도..
[내일배움캠프 Day29] 정렬
·
내일배움캠프/TIL
https://www.youtube.com/playlist?list=PLDV-cCQnUlIZXLSUeF2Fav3_7X7ku-F63 코딩테스트 SortingBubble Sort https://youtu.be/s3FdRKHTp_o Insertion Sort https://youtu.be/TyF-UHnoqw4 Selection Sort https://youtu.be/AWEevNhJVjs Merge Sort https://youtu.be/...www.youtube.com 코드없는 프로그래밍 유튜브와 뇌를 자극하는 알고리즘 책을 보면서 정렬 알고리즘에 대해 공부했습니다. 정렬 내용이 많아 O(n^2) 를 가지는 버블, 삽입, 선택 정렬만 정리해보겠습니다. Bubble Sort (버블 정렬)데이터 집합을 순회하면서..
[내일배움캠프 Day28] 7주차 과제 진행
·
내일배움캠프/TIL
[7번 과제] Pawn 클래스로 3D 캐릭터 만들기처음에는 Move / Look / UpDown / Roll 로 필수 과제에서 구현한 이동, 회전 함수에 추가로 상/하 이동 함수, Roll 회전 함수를 따로 만들었습니다. 구현하던 중 기존 xy에서 z를 추가로 구현한다는 사실을 깨닫고 상/하 이동을 Move 함수에, Roll 회전을 Look 함수에서 구현하도록 변경하였습니다. Input Action 또한 Axis2D에서 Axis3D로 변경했습니다. 도전 과제 이외에도 추가로 지면에 닿았을때 똑바로 서도록, 직립 상태가 되도록 구현했습니다. 이는 지면에 닿았을 때 각도가 기울어져 있으면 이동이 제대로 되지 않아 이렇게 변경하였습니다. 또한, 구현하면서 오래 걸렸던 문제는 낙하는 잘 되는데 shift를 누르..
[내일배움캠프 Day27] 플레이어 이동 처리하기
·
내일배움캠프/TIL
과거 언리얼 엔진 5 이전 버전에서는 프로젝트 세팅 Bindings에서 Action Mappings, Axis Mappings를 설정하여PlayerInputComponent->BindAxis(FName("MoveForward"), this, &APJECharacterPlayer::MoveForward);PlayerInputComponent->BindAxis("MoveRight", this, &APJECharacterPlayer::MoveRight);위와 같이 플레이어 입력을 받았었는데 UE5부터는 향상된 입력(Enhanced Input)을 사용합니다. 관련 공식 문서는 다음과 같습니다.https://dev.epicgames.com/documentation/ko-kr/unreal-engine/enhance..
[내일배움캠프 Day26] C++ 6주차 과제 진행
·
내일배움캠프/TIL
[6번 과제] 회전 발판과 움직이는 장애물 퍼즐 스테이지회전 발판, 이동 플랫폼 외에 추가적인 액터 (예: 톱니바퀴, 엘리베이터, 트랩 등)을 직접 발상해서 구현했는가? - 라는 평가 기준도 있어 일정 시간마다 사라졌다 나타나는 발판도 만들었습니다. 이동 발판 #include "MovingPlatform.h"AMovingPlatform::AMovingPlatform(){ PrimaryActorTick.bCanEverTick = true; MovingMesh = CreateDefaultSubobject(TEXT("MovingMesh")); RootComponent = MovingMesh;}void AMovingPlatform::BeginPlay(){ Super::BeginPlay(); //..
[내일배움캠프 Day25] 액터의 라이프 사이클
·
내일배움캠프/TIL
내일배움캠프 강의 CH3 1주차 5강 내용에 액터의 라이프 사이클이 나와 '이득우의 언리얼 C++ 게임 개발의 정석' 책 3장 내용을 추가로 정리했습니다.  액터는 내부적으로 여러 종류의 컴포넌트를 조합해 만들지만, 게임플레이 관점에서는 하나의 배우서 게임 콘텐츠에 기여합니다. 게임이 시작될 때 액터는 준비와 게임 참여 그리고 퇴장의 과정을 거칩니다.액터의 준비 과정이라는 것은 액터를 구성하는 모든 컴포넌트의 세팅이 완료돼 게임이라는 무대에 비로소 나설 수 있게 되는 것을 의미합니다. 액터에 속한 모든 컴포넌트의 세팅이 완료되면 언리얼 엔진은 액터의 PostInitializeComponents 함수를 호출합니다.준비된 액터는 이제 비로소 게임에 참여하게 되는데, 이때부터 액터는 자신에게 주어진 역할을 수..
[내일배움캠프 Day24] 개발 환경 설정
·
내일배움캠프/TIL
내일배움캠프 강의 CH3 1주차 1, 2강 내용에 언리얼, c++ 개발 환경 설정이 나와 '이득우의 언리얼 C++ 게임 개발의 정석' 책 1장 내용을 추가로 정리했습니다.  1강 - 언리얼 엔진 C++ 개발 환경 준비하기 프로젝트 폴더 내 주요 파일SpartaProject.sin (Visual Studio 솔루션 파일) : C++ 소스 코드와 빌드 설정이 연결된 핵심 파일. 솔루션이 관리하는 각 프로젝트 파일은 Intermediate 폴더 내 ProjectFiles 폴더에 있습니다. 프로젝트 파일과 솔루션 파일은 삭제하더라도 uproject 파일을 우클릭해 뜨는 Generate Visual Studio project file 메뉴를 선택하면 언제든지 재생성할 수 있습니다.SpartaProject.upro..
[내일배움캠프 Day23] CH2 팀 프로젝트
·
내일배움캠프/TIL
1/10 ~ 1/16 동안 진행한 텍스트 기반 RPG 게임 제작 프로젝트로 오늘 1/17에 발표를 끝으로 완료했습니다. https://teamsparta.notion.site/1-3-6275cd21563d4ddeba5d7ce71f361581 1기 3조 | NotionMade with Notion, the all-in-one connected workspace with publishing capabilities.teamsparta.notion.site관련 자료는 노션에 정리되어 있으므로 생략하겠습니다. 제가 맡은 역할은 아이템 장착 시스템 구현으로 대략적으로 무엇을 구현했냐는 아래 노션에 정리한 내용 캡쳐본으로 대신하겠습니다. 구현한 내용이 많지 않아 프로젝트를 하면서 새롭게 배운 부분은 없었습니다. 다만..
[내일배움캠프 Day18] 인라인 함수(inline function)
·
내일배움캠프/TIL
평소 getter/setter 함수는 인라인 함수로 구현했었는데 과제를 진행하는 도중 인라인 함수로 써도 괜찮을지 의문이 들어 찾아보게 되었습니다. 먼저 포르잔 C++ 바이블 책에서 인라인 함수에 대해 잘 명시가 되어있어 관련 내용을 정리했습니다. 함수 본문이 너무 짧으면, 함수를 실행하는 시간(매개변수 저장, 제어 이동, 매개변수 추출, 리턴값 저장 등)이 함수 내부의 코드를 실행하는 시간보다 오래 걸릴 수 있습니다. 프로그램의 성능을 위해서 컴파일러가 함수 호출 부분을 실제 코드로 대체해버리게 만들고 싶을 때는 함수를 인라인 함수로 선언합니다. 물론 컴파일러가 이를 무시할 수도 있으며 인라인 함수는 필요한 곳에서 사용할 수 있습니다. 암묵적 인라인 함수클래스 정의 내부에 함수를 정의하면, 해당 함수는..