전체 글177 01_01_유니티 기초_에디터 입문 main camera의 위치를 가상 카메라 위치로 오게 하고 싶으면 Hierarchy에서 Main Camera 클릭한 다음에 ctrl + shift + f를 누르면 된다. Unity engine 2022. 8. 24. 00_01_OT Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진 https://www.inflearn.com/course/mmorpg-%EC%9C%A0%EB%8B%88%ED%8B%B0/dashboard 을 보고 기억할 내용들을 정리할 것입니다. 프레임 워크(틀, 뼈대)를 쌓아 올리는 식으로 학습할 거야. 록맨처럼 보스 잡으면 보스의 스킬을 얻을 수 있듯이 하나를 배우면 유용하면 무기창고에 넣는 식으로 쌓아 갈 것이다. 다 필기하면 너무 시간이 너무 오래 걸리니 1회차는 그냥 빠르게 따라 해보고 2회차 부터는 안외워지거나 이해가 어려운 거 위주로 메모를 할 것입니다. Unity engine 2022. 8. 24. 02_08_멀티쓰레드 프로그래밍_Sleep Q1. context switching는 어떨 때 발생하나오? Q2. 스케줄링에 대해 설명해 보세요. Q3. 스레드 상에서 준비, 실행, 대기 되는 프로세스를 유저스페이스와 커널 스페이스와 연관해서 설명해 보세요. Q4. 일단 자리로 돌아가는 코드를 3가지 버전으로 작성해 보세요. 대기를 하는 두번째 방법인 렌덤 메타에 대해 알아볼거야. 지난 시간에 거의 대부분의 기능을 구현해서 오늘은 단순해. 그냥 sleep 계열의 함수하나만 호출하면 끝이야. sleep 한다는 거 자체가 운영체제의 스케쥴링 관리와 밀접한 관련이 있기 때문에 이거에 관해서 몇가지 언급을 해야 할 거 같아. 두번째 상황 같은 경우는 화장실에 누가 있을 때 서서 무한으로 대기하는게 아니라 일단 자리로 돌아온 다음에 일정시간을 기다렸다 다시.. Server programming 2022. 8. 5. 02_07_멀티쓰레드 프로그래밍_SpinLock Q1. Spin Lock 의 개념에 대해 설명해 보세요. Q2. volatile 키워드의 의미는? Q3. 스핀락은 어떨 때 쓰는게 좋고 어떨 때 쓰면 안좋은가? Q4. SpinLock 클래스를 구현하고 이를 이용해서 2개의 각 스레드가 1을 10000번씩 더하고 빼는 코드를 구현해 보아라. 이번 시간에는 스핀락을 구현해 보는 실습을 할거야. 많은 것들을 배울 수 있을거야. 면접에 단골로 등장하는 주제야. 멀티 스레드가 중요하면서도 멀티 스레들와 관련해서 스핀락만 물어봐도 멀티스레드에 대해 이해하고 있는지를 간단하게 테스트할 수 있는 질문이기 때문이야. 오늘 실습을 해볼거는 일단 지난 시간에 했던 코드를 복원하고 시작한다. #include "pch.h" #include #include "CorePch.h".. Server programming 2022. 8. 5. 02_06_멀티쓰레드 프로그래밍_Lock 구현 이론 Q1. 락이 걸렸을 때 정책 3가지의 장단점을 설명해 보세요. Q2. 컨텍스트 스위칭이 일어나는 과정을 설명하세요. 앞으로 할 것 Lock을 표준에서 제공하는 mutex만을 사용하는게 아니 실질적으로 우리만의 방법으로 Lock을 구현해 보는 연습을 해볼거야. 왜 하냐? 서버 개발을 할 때 평생 달고 다닐 정도로 Lock이 중요하기 때문 면접에서 자주 나오는 개념들이 많이 들어간다. 멀티스레드 프로그래밍을 할 때 도움이 많이 되는 내용들이다. 그래서 돌고 돌아서 우리가 하고 싶은건? 자물쇠를 만들어서 안에 누가 들어가 있으면 한번에 한 명만 들어갈 수 있는 상황을 만들어 줘야 하기에 대기를 해야 하는데 여기서 여러 생각할 점이 있어. 밖에 있는 애 기준으로 안에 누군가가 안에 있다고 가정을 할 때 어떤 정.. Server programming 2022. 8. 3. 02_05_멀티쓰레드 프로그래밍_DeadLock Q1. 데드락이 발생하는 이유는? Q2. 데드락을 막기 위한 방법은? lock_guard 를 활용한다고 해서 세상의 모든 데드락이 사라지는게 아냐. lock이랑 unlock 짝 안맞춰서 발생하는 데드락 상황은 1차원적이고 자주 일어나지 않는 부분들이야. 까다롭게 데드락 발생하는 상황이 존재한다. 크래시가 일어나는 경우 1. 높은 확률로 null 포인터 잘못 참조하는 경우 2. 그 외에 데드락도 상위권으로 등장하는 버그다. 예제를 통해 알아보자. 실습용 클래스 2개 추가. AccountManager, UserManager를 Main 필터에 생성한다. 온라인 게임에서 입장할 때 계정이 있을 거고, 그 계정을 토대로 캐릭터 받아오는 작업을 할텐데 그 Account 라고 보면 된다 AccountManager.h.. Server programming 2022. 8. 3. 02_04_멀티쓰레드 프로그래밍_Lock 기초 Q1. vector v; void Push() { for (int32 i = 0; i < 10000; i++) { v.push_back(i); } } int main() { std::thread t1(Push); std::thread t2(Push); t1.join(); t2.join(); cout Server programming 2022. 8. 1. 02_03_멀티쓰레드 프로그래밍_Atomic Q.힙, 스택, 데이터 영역의 차이는? 예를 들어 설명하시오. Q. 왜 멀티 쓰레드로 전역 변수를 수정하면 결과가 이상하게 나오는지 설명하시오. Q. atomic을 사용하면 왜 제대로 값이 나오는지 원리를 설명해 보시오. Q. atomic의 단점은? 이번시간은 멀티스레드 환경에서 공유 데이터 사용할 때 일어나는 문제점 알아볼거야. 이렇게 하면 당연히 값은 0이 출력된다. 하지만 이번에는 각각의 스레드로 실행을 하게 되면 0이 아닌 할 때 마다 엉뚱한 다른 값이 나온다. 왜 당연히 0이 안되는 걸까? stack 같은 경우는 각기 자신의 영역을 따로 가지고 있다. 만약 sum 변수가 Add() 함수 내부에 있다면 void Add() { int sum = 0 ; for (int i = 9; i < 100'00.. Server programming 2022. 7. 29. 블루프린트(Blueprints)를 C++ 코드로 바꾸기 https://www.youtube.com/watch?v=8KFl5jDJ8no CodeLikeMe님 강의 'Unreal Engine Converting Blueprints to C++'의 내용을 정리한 포스트입니다. 3인칭으로 새 프로젝트를 만든다. Blueprint로 만든다. ThirdPersonCharacter 는 character class의 subclass이다 모든게 블루 프린트로 쓰여있다. 어떻게 이걸 C++로 변환할 수 있을까? 먼저 새로운 C++ 클래스를 만든다. ThirdPersonCharacter가 Character의 자식 클래스이기 때문에 Character를 선택한다. 이름은 CPP_ThirdPersonCharacter로 했다. 이렇게 생성이 된다. Character에서 확장 된 거 알.. Unreal engine 2022. 7. 17. 이전 1 ··· 12 13 14 15 다음