전체 글 1221

리더보드 - 4) 리더보드의 구성과 갱신

- 개요상위 점수의 플레이어들의 정보를 표현하는 리더보드를 구성하고 갱신할 수 있도록 설정한다리더보드는 플레이어 개별의 정보를 표현하는 하위 열 UI로 구성되어 있고,하나의 게임이 끝나면 갱신되도록 설정한다 - 스크립트 작업1) DedicatedServers 모듈 관련1 - 1) HTTPRequestTypes 클래스 DSLeaderboardItem 구조체에 place 멤버변수를 추가하여 리더보드에서의 순번을 나타낸다 1 - 2) LeaderboardCard 클래스 리더보드의 하위 UI로 사용할 LeaderboardCard 클래스를 생성한다멤버변수는 위와 같다TextBlock_Username 멤버변수 : 플레이어의 이름TextBlock_Wins 멤버변수 : 플레이어의 승수TextBlock_Place 멤버변..

오일러 공식 (2) - 미분

- 개요오일러 공식의 구성을 알아보았으므로 다음은 미분에 대해 알아본다미분은 미분 가능한 함수를 대상으로 특정 지점에서의 접선의 기울기를 측정하는 작업을 의미한다이때 미분 가능한 함수는 뾰족점 없이 끊이지 않고 연속으로 이어져 있어야 한다오일러 공식을 구성하는 자연지수함수, sin 함수, cos 함수 모두 미분가능한 함수들이다 - 접선의 기울기 미분을 진행하기 위해서는 접선의 기울기가 무엇인지 알 필요가 있다미분 가능한 함수가 주어졌을 때, x 값 a와 b에 대응되는 두 좌표를 연결한 직선을 할선이라고 표현한다 직선의 기울기 공식을 그대로 적용하여 할선의 기울기도 위와 같이 계산할 수 있다 이때 a를 고정시킨 상태에서 b를 서서히 a로 이동시킨다고 가정한다이 경우에 할선의 기울기는 위의 이미지와 같이..

오일러 공식 (1) - 오일러 공식의 구성

- 개요이전에 알아본 실수와 허수와의 관계를 응용하여삼각함수와 자연지수함수와의 관계를 나타내는 오일러 공식을 사용할 수 있다옹일러 공식은 전기 공학의 신호 처리 분야의 기반이 되며게임 그래픽스에서도 이전에 발생한 3차원 공간의 회전의 짐벌락 문제를 해결해줄 수 있다오일러 공식이 유도되는 과정을 이해하여 4차원 공간의 수인 사원수를 사용하여3차원 공간의 회전의 짐벌락 문제를 해결하는 방법을 알아본다 - 오일로 공식의 구성 오일러 공식은 위와 같이 무리수, 허수, 삼각함수를 이용하여 정리할 수 있다 오일러 공식을 이해하기 위해선 좌변의 자연지수함수와 우변의 두 삼각함수의 미분을 이해하고,이들을 급수로 표현하는 과정을 알아야 한다 1) 무리수 e 무리수 e에 대한 유도 식은 야코프 베르누이가 은행의 복리 이..

레벨 관리 - 3) 메인 씬과 인게임 씬간의 전환

- 개요메인 메뉴가 있는 메인 씬과 실제 게임이 동작하는 인게임 씬과의 전환을 구현한다 - 스크립트 작업1) GameEvents 클래스 이벤트 버스 역할을 수행하는 GameEvents 클래스에 위와 같이 멤버변수와 멤버함수를 추가한다OnStageCleared 이벤트 멤버변수 : 스테이지를 클리어하는 경우 동작할 이벤트OnReturnMainScene 이벤트 멤버변수 : 인게임 씬에서 메인 씬으로 전환하는 경우 동작할 이벤트RaiseStageCleared 함수 : OnStageCleared 이벤트에 바인드된 콜백함수를 호출하는 함수RaiseReturnMainStage 함수 : OnReturnMainScene 이벤트에 바인드된 콜백함수를 호출하는 함수 2) PlayerInputHandler 클래스 임시 코드를..

번외) 리팩토링 (3) 보일러 플레이트 문제 해결

- 개요 서비스 로케이터인 GameServices 클래스에서 발생하던 보일러 플레이트 문제를 해결하고UnitManager를 서비스 로케이터에 등록하여 사용하도록 개선한다 - 스크립트 작업1) GameServices 클래스 GameServices 클래스를 위와 같이 수정하여 제네릭 방식으로 동작하도록 개선한다서비스 로케이터에서 사용할 매니저들은 각각 Register + UnRegister + Get 함수를 통해 등록 + 등록해제 + 접근한다 2) UnitManager 클래스 싱글톤 인스턴스를 생성하는 방식을 제거하고OnEnable 함수와 OnDisable 함수를 추가하여 서비스 로케이터에 등록 + 등록해제한다 3) 이외의 다른 클래스들3 - 1) 서비스 로케이터에 클래스를 등록하는 경우 OnEnable 함..

번외) 리팩토링 (2) - 기존의 클래스 수정

- 개요리팩토링에 맞춰 기존의 클래스들을 수정한다 - 스크립트 작업1) CameraController 클래스 PlayerInputHandler 클래스에서 키 입력을 감지한 후에 호출할 함수들을 위와 같이 추가한다 2) BuildTileSlot 클래스 기존의 싱글톤 인스턴스를 사용하던 방식에서 서비스 로케이터를 사용하여 함수를 호출하도록 수정한다 3) Enemy_Base 클래스 기존의 싱글톤 인스턴스 대신 서비스 로케이터를 사용하여 함수를 호출하도록 수정한다 Die 함수를 수정하여 이벤트 버스에서 적의 죽음과 관련된 이벤트의 콜백함수를 호출하도록 수정한다 4) Enemy_Portal 클래스 기존의 싱글톤 인스턴스 대신 서비스 로케이터를 사용하여 함수를 호출하도록 수정한다 5) BuildManager 클래..

번외) 리팩토링 (1) - 이벤트 버스 패턴 + 클래스 역할 분리

- 개요이전의 프로젝트 구조에서는 무분별한 싱글톤 오브젝트의 사용과 클래스의 역할이 과도하게 집중되었다따라서 구조를 수정하여 싱글톤이 아닌, 이벤트 버스 패턴을 사용하여 클래스들간의 작업을 연결하고클래스들의 역할을 분리하여 하나의 클래스에 역할이 과하게 집중되는 것을 방지한다 - 스크립트 작업1) GameEvent 클래스 이벤트 버스 패턴으로 사용할 GameEvents 클래스를 생성한다멤버변수를 위와 같이 구성한다Player Status 이벤트 : 플레이어와 관련된 이벤트Gameplay Status 이벤트 : 적과 관련된 이벤트Wave progress 이벤트 : 웨이브와 관련된 이벤트이후 Raise 계열 함수들을 사용하여 이벤트에 연결된 콜백함수를 호출 2) GameServices 클래스 서비스 로케이터..

리더보드 - 3) 리더보드 관련 람다 함수의 실행 요청과 반환 결과 처리

- 개요리더보드와 관련된 AWS 람다 함수를 클라이언트에서 서버로 실행해줄것을 요청하고서버에서 반환된 요청한 람다 함수의 실행 결과를 클라이언트에서 분석하여 처리하는 작업을 진행한다 - 스크립트 작업1) HTTPRequestTypes 클래스 DSLeaderboardItem 구조체를 새로 추가하여 RetrieveLeaderboard 람다 함수의 실행 결과를 저장한다멤버변수의 구성은 다음과 같다databaseId 멤버변수 : Leaderboard 데이터 테이블의 파티션 키username 멤버변수 : 반환된 플레이어의 이름matchWins 멤버변수 : 반환된 플레이어의 승수 2) GameStatsManager 클래스 OnRetrieveLeaderboard 델리게이트를 추가하여서버에서 RetrieveLeader..

리더보드 - 2) 리더보드 관련 AWS 람다 함수 배포

- 개요이전에 생성한 Leaderboard 데이터 테이블을 갱신하는 UpdateLeaderboard 람다 함수와Leaderboard 데이터 테이블을 조회하여 데이터를 반환하는 RetrieveLeaderboard 람다 함수를외부에서 사용하기 위해 스테이징하는 작업을 진행한다스테이징된 람다 함수의 호출 URL을 GameplayTag와 연결하여 데이터 애셋에서 관리한다 - AWS 콘솔 작업 사용중인 GameStats API에 위와 같이 2개의 리소스를 생성한다 update-leaderboard 리소스에 대한 메서드를 설정한다Leaderboard 데이터 테이블을 갱신해야 하므로 POST 메서드를 사용하고UpdateLeaderboard 람다 함수를 호출하도록 설정한다 retrieve-leaderboard 리소..

복소수 (3) - 켤레 복소수와 복소수와 행렬의 관계

- 개요 복소평면에서 두 복소수와의 관계를 나타내는 켤레 복소수의 의미를 알아본다또, 복소수를 수의 관점이 아닌 변환의 관점에서 바라보아2차원 복소평면 상의 복소수를 2차원 행렬에 대응하여 알아본다 - 복소평면에서의 켤레 복소수 임의의 복소수 (a, b)가 존재한다면 해당 복소수의 켤레 복소수는 (a, -b)이다이때 복소수와 켤레 복소수를 복소평면 상에 위와 같이 표현할 수 있다최종적으로 임의의 복소수와 켤레 복소수는 실수부 축(Re)를 중심으로 서로 대칭된 형태를 이룬다 실수부가 0이고 크기가 1인 단위 복소수를 (cosθ, sinθ)라고 표현한다면해당 단위 복소수의 켤레 복소수는 (cosθ, -sinθ)라고 표현할 수 있다최종적으로 삼각함수의 성질을 활용하면 켤레 복소수는 위와 같이 표현할 수 있다..