반응형 개발/게임) 개발관련183 개발원칙)디미터 법칙(Law of Demeter : LoD) 디미터 법칙(Law of Demeter : LoD) 객체 간 결합도를 줄이기 위한 원칙으로 객체가 다른 객체와 상호작용할 때,직접적으로 연관된 객체에만 접근하도록 제한하는 것을 목표로 한다.흔히 *"친구의 친구와는 대화하지 말라"*는 비유로 설명되며,LoD는 코드의 모듈성과 유지보수성을 높이는 데 중점을 둔다. 객체 A가 객체 B의 메서드를 호출할 때, 다음에 해당하는 객체의 메서드만 호출할 수 있도록 권장한다.자신의 메서드나 필드 자기 자신이 생성하거나 소유한 객체의 메서드 메서드 매개변수로 전달받은 객체의 메서드 전역 변수를 통해 접근 가능한 객체 (되도록 지양) 낮은 결합도(Low Coupling): 클래스 간의 의존 관계를 줄인다.높은 응집도(High Cohesion): 클래스가 자신의 책임만.. 2025. 5. 8. 개발지식) 동기 유발 패턴(Motivation Patterns) : 게임에서 동기 부여의 중요성 동기 유발 패턴(Motivation Patterns) : 게임에서 동기 부여의 중요성 게임에서 캐릭터의 이동이나 선택의 자유도가 높을수록, 플레이어가 내리는 선택이 즐겁고 보람 있다고 느끼도록 하는 데 필요한 동기가 강해진다.게임에서 동기부여나 목적성을 부여하는것은 매우 중요하다.유저가 게임에서 생각하고 경험하는 모든것들이 고려가 되어야 한다. 문제: 플레이어가 방대한 선택지 속에서 길을 잃을 수 있다.해결책: 항상 플레이어의 선택지 주변에 단기적 목표와 즉각적인 피드백을 제공하는 방식으로 해결이 가능하다.예: “이 길 끝에는 무엇이 있을까?” → 보상이 시각적으로 표현되거나 미니맵에 단서 표시. 문제: 플레이어가 자신의 선택이 무의미하게 느껴질 수 있다.해결책: 선택이 영향을 끼치며, 결과가 명확하게.. 2025. 4. 30. 개발Tip) 소스트리 외부비교 툴 설정(SourceTree : 비교 소스트리 외부비교 툴 설정소스트리에서 History에서 변경된 정보를 찾다보면 다음과 같이.변경된 항목을 표시를 못하거나 해당 패턴이 아닌 경우가 종종 생긴다.외부 비교설정을 통해서 비교를 좀더 쉽게 할수 있는 설정이 있다. Window 환경을 기준으로 다음과 같다. [도구]-[옵션] -[비교] 외부 비교 도구에서 원하는 형태의 비교 도구를 선택하면 된다.대체적으로 본인은 WinMerge가 익숙해서 WinMerge를 선택해서 사용한다. 외부 비교 도구로는 이미지도 확인이 가능하다.★★★☆☆ 2025. 4. 8. ChatGPT) Task 활용해서 게임뉴스 크롤링하기 : 매일알림 Task 활용해서 게임뉴스 크롤링하기ChatGPT에서 Task(스케줄)형태로 특정 명령을 등록할수 있는 기능이 생겨서 간단하게 해보았다. 스케줄이 등록이 가능하다.간단하게 매일 오전 10시에 해당 지침을 실행하는 형태로 스케줄을 등록한다.지침에는 좀더 디테일하게 가능하다.게임뉴스의 특정 참조 사이트 주소를 몇개 지정해두고 해당 사이트를 크롤링해서 게임뉴스를 받아본다. 푸시와 이메일로 설정을 해둔다. 알림은 연동된 메일로 오고 해당 메시지 보기를 누르면 연결된 채팅으로 가고 해당 내용이 출력이 된다. 아직은 Beta 기능이지만 ChatGPT에 기능이 개선될때마다 더 새로운 기능들로 접근할수 있어서 굉장히 맘에 들었다. Scheduled tasks in ChatGPT : [링크] ★★★★☆ 2025. 3. 18. AI활용) MGX 활용해서 Team Agent 형태로 개발하기 MGX 활용해서 Team Agent 형태로 개발하기 AI -Agent 형태로 개발을 해주는 웹 사이트(Beta)가 있어서 간단하게 사용해본다. C# 코드의 3 - Match Game을 만들라고 요청을 해보았다.총 5명의 agent 가 존재하는데 거의 리더가 요청을 하고 엔지니어가 하게되는 경우로 진행되었다. 만들어진 프로젝트의 스크립트 파일들이다. Unity 의 내장 함수를 가지고 구현을 해준점이 인상 깊었다.다른 AI와 다르게 전체적인 구성을 보면서 진행이 되어서 프로젝트를 구성하기에 꽤나 좋은 사이트같다. 다른 사람들이 만든 프로젝트들이 공유된 App World 에서는 미리보기도 가능하고 플레이도 가능하다. https://mgx.dev/app/0no4nd https://mgx.dev/app/8a.. 2025. 3. 13. 문제해결)Git 명령어 에러 ~ Filename too long error Git 명령어 에러 ~ Filename too long error Git 에서 Push / Commit / Pull 등 여러가지 명령어를 사용하는 과정에서 다음과 같은 에러가 발생했다. 해결한 방법을 간단하게 포스팅한다.Window에서 Git 명령어를 사용하는 과정에서는 Window 파일 경로 제한(260자) 가 있어서 발생한다.따로 설정을 하지 않으면 해당 제한에 따라 다음과 같은 에러가 발생한다. Git 설정 변경으로 긴 경로를 허용하는 옵션 설정하는 방법으로터미널에서 다음과 같은 명령어를 입력한다.git config --global core.longpaths true git의 Global config 설정 파일의 경로에 다음과 같이 추가되면서 긴 경로의 파일도 사용이 가능하다.해당 파일은 다음과 같.. 2025. 1. 7. 문제해결)Xcode) Device ~ is not registered to your team ~. Device must be registred in order to run your code, but you do not have permission to register them. Please check with your team's admin. Device ~ is not registered to your team ~. Device must be registred in order to run your code, but you do not have permission to register them. Please check with your team's admin. Xcode 빌드이후에 디바이스를 연결하는데 다음과 같은 에러가 발생했다.인증서 갱신 과정에서 갱신이 안된듯 하다. Apple Store Connect 사이트 로그인 이후에 인증서를 확인한다. Device를 연결된 MacOS에서도등록된 인증서를 확인한다. 인증서를 다시 추가하거나 갱신하면 디바이스 연결이 정상적으로 된다. Apple Developer - Register a sing.. 2024. 12. 29. 개발환경)GitLab + 슬랙(Slack) 연동하기 GitLab + 슬랙(Slack) 연동하기 Web Hooks 추가 GitLab에서 Commit을 할때마다 알림이 나온다. ★☆☆☆☆ 2024. 12. 16. 문제해결)Git Push 오류 (remote: GitLab: You are not allowed to push code to protected branches on this project.) remote: GitLab: You are not allowed to push code to protected branches on this project.Git Push를 하다보니 보호된 브런치에서 Push를 못한다는 오류가 발생해서간단하게 해결하는 방법을 정리한다. 설정환경은 GitLab이다. 1.GitLab Project 관리자 계정으로 로그인한다. 2. Settins - > Repository의 메뉴로 들어간다. 3. Proected Bransch 의 메뉴에서 해당 권한 설정을 변경한다. ★☆☆☆☆ 2024. 12. 3. 개발지식) 일급 컬렉션 (First-Class Collection) 일급 컬렉션 (First-Class Collection) 일급 컬렉션은 컬렉션(List, Set, Map 등)을 Wrapping하여 사용하는 디자인 패턴이다.컬렉션 자체를 하나의 객체로 취급하며, 컬렉션을 조작하는 로직을 그 객체 내에 캡슐화한다. 컬렉션 외의 다른 속성은 가지지 않는다.컬렉션과 관련된 로직은 모두 일급 컬렉션 내부에 존재한다.컬렉션은 외부에서 직접 접근하지 않는다. 인벤토리 시스템에서 다양한 아이템이 들어가는데 이때 일급 컬렉션 클래스르 만들어서 관리한다.public class Inventory { private List items = new List(); public void AddItem(Item item) { if (!CanAddItem(item)).. 2024. 11. 23. 코드관리) Doxygen 사용해서 C# 를 Document 만들기 Doxygen 사용해서 C# 를 Document 만들기 Doxygen은 코드 문서를 자동화해주는 도구로, 무료고 오픈소스이다.소프트웨어 개발에서 널리 사용되는 문서 생성 도구로 소스코드에서 주석을 기반으로 문서를 자동화 해서 생성한다.HTML 이나 PDF 같은 형식으로 출력을 해준다. 기본 설치 경로 : :C:\Program Files\doxygen ★☆☆☆☆ 2024. 11. 12. C#) Enum 값 순환 처리하기 Enum 값 순환 처리하기 Enum 값을 순환해서 처리해야할 때가 있다.간단하게 사용할수 있는 코드이다.결국은 현재 Enum의 값을 기준으로 마지막 혹은 처음 Enum 값으로 다시 선택해주는 코드이다. public enum TextShowOption{ Empty, Content, Font}public static class TextShowOptionExtensions{ public static TextShowOption Next(this TextShowOption option) { // Get the enum values as an array TextShowOption[] values = (TextShowOption[])Enum.GetValues(typ.. 2024. 9. 19. 잡학지식)인하우스(In-house) 빌드 인하우스(In-house) 빌드 게임 회사에서 "인하우스(In-house) 빌드"는 게임 개발과 관련된 빌드(컴파일, 패키징, 배포 등) 작업을 외부 업체나 클라우드 서비스를 사용하지 않고, 내부에서 직접 관리하고 수행이 가능한 내부에서 개발하는것을 말한다. 이는 게임의 소스 코드, 리소스, 엔진 등을 회사 내부의 서버나 시스템에서 빌드하고, 테스트와 배포까지 진행하는 것을 포함한다. 설명내부 자원 활용외부 빌드 서비스(예: 클라우드 빌드 서비스)나 다른 업체에 의존하지 않고, 자체적으로 운영하는 빌드 서버나 시스템을 통해 빌드 작업을 수행합니다.보안성빌드를 회사 내부에서 진행하기 때문에 소스 코드나 자산이 외부로 유출될 위험이 적습니다. 특히 보안이 중요한 대형 프로젝트에서 유리합니다.맞춤형 환경인하.. 2024. 9. 9. 개발지식) Stored Procedure (SP : 저장 프로시저) Stored Procedure (SP : 저장 프로시저) Stored Procedure는 데이터베이스 내에서 저장된 하나 이상의 SQL 문들을 모아 놓은 것이다,프로시저는 특정 작업을 수행하도록 미리 작성된 SQL 코드의 집합이며, 데이터베이스에서 직접 호출하여 실행할 수 있다. 이를 통해 동일한 작업을 반복해서 수행해야 할 때,동일한 SQL 문을 재작성할 필요 없이 저장된 프로시저를 호출하여 간편하게 실행할 수 있다. 장점설명재사용성동일한 작업을 여러 번 수행 할 때, 저장 프로시저를 사용하면 재사용할 수 있다.보안사용자에게 직접 SQL문을 노출하지 않아서 보안이 강화가 된다.성능저장 프로시저는 미리 컴파일되어서 최적화가 가능하고 성능 향상에 기여가 가능하다.유지보수SQL 코드를 중앙에 관리하고 유지.. 2024. 8. 20. 기본기) List<CustomClass>에서 특정 value 값의 최대치와 최소치를 찾는 방법 비교 List에서 특정 value 값의 최대치와 최소치를 찾는 방법 비교 정렬을 사용하여 첫 번째 항목을 최대 또는 최소 값으로 가져오는 방법은 간단하지만,성능 측면에서 비효율적일 수 있습니다.예를 들어, 리스트를 정렬하면 시간 복잡도는 O(n log n)이 된다.List list = GetCustomClassList();list.Sort((x, y) => x.Value.CompareTo(y.Value));var minValue = list.First().Value;list.Sort((x, y) => y.Value.CompareTo(x.Value));var maxValue = list.First().Value; LINQ를 사용하면 리스트를 정렬하지 않고도 최소값과 최대값을 빠르게 찾을 수 있다. LINQ의.. 2024. 7. 9. 이전 1 2 3 4 ··· 13 다음 반응형