| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- 작계훈련
- 2023 게이밍 인 구글 클라우드
- 448일선
- 전주비빔 라이스 버거
- 224일선
- 주식
- 2023 구글 클라우드
- shader
- 상계9동
- 2023 Gaming
- 주식단테
- 스즈메의 문단속
- 언리얼 5
- unity
- JavaScript
- 리팩터링
- 리팩터링 4장
- 2023 게이밍
- 산토리 하이볼
- 언리얼5
- 112일선
- 공부
- GenAI
- URP
- 구글 컨퍼런스
- 이득우의 언리얼 프로그래밍 1
- 1일차
- 이득우의 언리얼 프로그래밍1
- 리팩터링 3장
- 스포일러 주의
- Today
- Total
목록전체 글 (95)
개발 이야기 안하는 개발자
게임 플레이 어빌리티 시스템(GAS) 액터가 소유하고 발동할 수 있는 어빌리티 및 액터간의 인터랙션 기능을 제공하는 프레임웍. 큰 규모의 RPG및 네트워크 멀티 게임에 효율적으로 적합함. 장점 - 유연성과 확장성 - 모듈러 시스템 - 네트워크 지원 - 데이터 기반 설계 - 완성도 단점 - 배우는 학습 비용 - 오버헤드 ASC(어빌리티 시스템 컴포넌트) 와 GA(게임플레이 어빌리티) ASC에는 호출될때 발동할 수 있는 액션들을 저장한다. GA 발동 과정. 1. ASC의 GiveAbility()에 발동할 GA의 타입을 전달한다. (GA의 타입정보를 게임 플레이 어빌리티 스펙이라 함) 2. ASC에게 어빌리티를 발동하라고 명령함. 3. 발동된 GA에는 발동한 액터와 실행 정보가 기록됨 (SpecHandle_발..
28. 소프트웨어 공학 초기 아이디어부터 최종 제품에 이르기까지 단계적으로 진행하도록 프로세스를 정의해서 무질서한 소프트웨어 개발을 체계화하는 소프트웨어 라이프사이클 (소프트웨어 수명 주기)모델도 다양하게 나와있다. 폭포수 모델 계획 , 설계 , 구현 , 단위 시험, 서브시스템 시험, 통합 시험, 평가 순서대로 진행되는 라이프 사이클이다. 간결하기 때문에 프로젝트를 계획하면 관리하기 쉽다. 하지만 현실은 개발과정을 수행하는 동안에도 요구사항이 새로 추가되는 경우가 많기 때문에 이는 이행하기 어려운 모델이다. 사시미 모델. 단계는 폭포수와 동일하지만 앞뒤가 단계적으로 부분적으로 겹치는 점이 다르다. 바로 앞 뒤 단계를 이행 하기도 하고 병행하기도 한다. 나선형 모델 현재 단계에 문제가 있떠라도 다음 단계에..
25. 표준 라이브러리 커스터마이즈 및 확장 방법 find_all() 인수로 주어진 프레디케이트를 만족하는 원소를 주어진 범위에서 모두 찾는 알고리즘을 구현한다고 하자. find()와 find_if() 모두 한 원소만 가리키는 반복자를 리턴한다. 이렇게 새롭게 알고리즘을 제작 및 확장하려면 프로토타입부터 정의해야 하는데, 이때 find_if()에 적용된 모델을 그대로 따르면 제작하기 쉽다. 비슷한 기능을 참고하면 된다. template OutputIterator find_all(InputIterator first, InputIterator last, OutputIterator dest, Predicate pred) { while (first != last) { if (pred(*first)) { *des..
7. 메모리 관리 int i { 7 }; 로컬 변수 i는 자동 변수라 부르며 스택에 저장된다. 변수가 선언된 스코프를 벗어나면 자동으로 메모리가 해제된다. new와 delete int* ptr { nullptr }; ptr = new int; new 키워드로 메모리를 할당하면 프리스토어에 메모리가 할당된다. new로 할당한 메모리는 delete 키워드로 해제한다. 만약, 포인터를 담았던 변수가 스코프를 벗어나면 할당한 메모리에 접근할 수 없게 되고 이를 "미아가 된다" 라고 표현한다. 이를 메모리 누수(메모리 릭)이라 부른다. new가 실패하는 경우는 해당 메모리 만큼 가지고 있지 않을때 그런다. 예외처리로 막으면 되는데 이때 nothrow를 사용하면 예외처리가 가능하다. int* ptr { new(no..
4. 전문가 답게 C++ 프로그램 설계하기 프로그램 설계 정의 프로그램에 기능을 추가하는 작업에 들어가기전에 가장 먼저 할일은 요구사항 분석이다. 이해 당사자와 함께 논의해서 핵심 기능 요구 사항 문서를 정리하는 것이다. 최종 시스템의 동작이 아닌 속성을 표현하는 비기능 요구사항 문서도 나올 수 있다. (보안성, 확장성 등등) 여기에서 나온 표현도 모두 적는다. 요구사항을 모두 수집했다면 프로그램 설계를 진행한다. 설계 문서는 대체로 서브시스템(시스템에서 작업이 처리되는 위치)사이의 상호작용과 클래스 계층을 보여주는 다이어그램이나 표로 구성된다. 설계를 진행함에 있어 예상치 못한 문제나 변화에 유연하게 대처하도록 구성된 소프트웨어 공학 프로세스도 많다. 그 대표적인 예로 스크럼이라는 애자일 소프트웨어 개..
1. C++ 기초 import ; int main() { std::cout
월드 - 게임 컨텐츠를 담기 위해 제공되는 가상의 공간 - 공간(Transform), 진행(Tick), 시간(Time), 환경 설정(WorldSetting), 구성요소(Actor) 등을 담고있음. 게임 모드 - 게임 규칙을 지정하고 게임을 판정하는 최고 관리자 액터 - 멀티게임에선 판정을 처리하고, 게임 데이터를 검증하기도 한다. (로그인) - 하나의 게임모드만 존재한다. (각 Maps마다) 기믹 - 게임 진행을 위해 이벤트를 발생시키는 사물 액터이다. - 트리거나, 스폰을 활용하여 상호작용과 컨텐츠를 전개한다. 플레이어 - 게임 캐릭터와는 별개의 개념이다. 게임에 입장한 사용자 엑터이다. - 게임에 입장한 사용자와의 1대1 대응이 가능하고, 사용자의 상태 및 데이터를 관리한다. - 사용자의 입력을 1차..
직렬화 오브젝트나 연결된 오브젝트의 묶음을 바이트 스트림으로 변환하는 과정 복잡한 데이터를 일렬로 세우기 때문. 데이터 압축 , 암호화를 통해 데이터를 효율적이고 안전하게 보관할 수 있다. 파일경로 알아오기 (Saved 파일까지) const FString SaveDir = FPaths::Combine(FPlatformMisc::ProjectDir(), TEXT("Saved")); FArchive라고 하는 파일 경로 끝에 데이터를 담을 수 있다. struct FStudentData { FStudentData() {} FStudentData(int32 InOrder, const FString& InName) : Order(InOrder), Name(InName) {} friend FArchive& opera..
Unreal Container Library (UCL) 언리얼 엔진이 자체 제작해 제종하는 자료구조 라이브러 C++ STL은 표준이라 범용성이 넓고 호환성이 높다. 하지만 기능이 많아 컴파일 시간이 오래걸린다. UCL은 언리얼 전용이라 가볍고 게임 제작에 최적화 되어있다. TArray https://docs.unrealengine.com/5.1/ko/array-containers-in-unreal-engine/ vector와 비슷하며, 오브젝트를 순서대로 담아 효율적으로 관리하는 용도로 사용. 데이터가 순차적으로 모여있기 때문에 메모리를 효과적으로 사용할 수 있고 캐시 효율이 높다. 데이터의 접근이 빠르고, 고속으로 요소를 순회하는 것이 가능하다. 하지만, 중간요소에 추가나 삭제를 하게 되는 작업은 무겁..
UInterface 언리얼 Interface는 기존 C++와 다르게 설계되어 있다. 기본 클래스에 가까운 형태를 띄고 있다. Uinterface를 제작하면 2개의 클래스가 생성이 되는데, 이때 UINTERFACE라는 매크로를 받는 클래스는 타입정보를 관리하기 위해 언리얼 에디터가 제작한 클래스이다. 해당 클래스는 수정할 게 없다. 그 하단에 있는 클래스(접두사 I가 붙어있는 클래스_인터페이스)를 수정하면 된다. 언리얼이 사용하는 인터페이스는 정의가 가능하다. (기본 틀이 클래스이기 때문) virtual void DoLesson() { UE_LOG(LogTemp, Log, TEXT("수업에 입장을 합니다")); } 이를 상속받는 자식 클래스에서는 override한다. UCLASS() class UNREAL..
셋팅 언리얼 매크로할때 도움이 되는 툴 : https://vlasovstudio.com/visual-commander/ 언리얼 탭 자동줄맞춤 : https://github.com/hackalyze/ue4-vs-extensions 언리얼 작업을 진행하며 알아 둘 점 - 비주얼 스튜디오에서 수동으로 클래스 추가하지 말 것 - 헤더가 변경되면 에디터를 끄고 컴파일할것. (Ctrl + Shift + B) - 소스파일이 변경되면 라이브 코딩으로 컴파일할 것.(Ctrl + Alt + F11) - 에디터 없이 컴파일이 안된다면 Ctrl + F5로 빌드해서 에러나는지 확인해 볼 것. (언리얼 쪽에서 꼬인내용일 수 있음) 구글 코딩 스타일 : https://google.github.io/styleguide/cppguid..
안녕하세요! 반갑습니다~ 제가 2023년 6월 27일 화요일! 게이밍 온 구글 클라우드에 다녀왔습니다 다녀온 후기를 공유하려고 글 씁니다! 제가 열심히 적어봤거든요! 사진이랑 녹화는 안되기때문에 제가 뭐 이미지는 못올리지만 제가 보고 들은거 그리고 느낀거 기록용입니다~ 문제되면 삭제하겠습니다! 구글 일정~ https://cloudonair.withgoogle.com/events/korea-gaming-2023?mkt_tok=ODA4LUdKVy0zMTQAAAGMlDAe5wG_lLsFa36X6bX2hij7rklQqeyoKGprRWCDvm9NDLhe9_j1_pDRupucsfqa4Wb6-VYkmE-GmTuEVrDStzpktOjs0CgSrmOzsRGqCRy_20G6Pbw 2023 Gaming on Google C..