본문 바로가기
반응형

개발779

개발용어) 메시지 큐 (Message Queue : MQ) 메시지 큐 (Message Queue : MQ) 게임 개발에서 Message Queue는 다양한 시스템 간 통신 및 이벤트 처리를 하는 과정에서 필요한 중요한 개념중 하나로 비동기적 작업을 처리하거나 안전하게 이벤트에 대한 정보를 전달하는데 도움을 준다. 해당 특징은 다음과 같다. 설명 비동기 통신 게임은 여러 시스템 및 모듈로 구성되다보니 종종 병렬로 실행되며 서로에게 의존성이 생길때 Message Queue를 사용하면 이러한 시스템 간 통신이 비동기적으로 구현이 간으하다. ex : 게임 서버와 클라이언트 간의 통신이나 서로 다른 게임 엔진 시스템 간의 데이터 전송은 Message Queue를 통해 처리 이벤트 처리 게임은 플레이어의 입력, 적들의 행동, 충돌, 게임 내 상태 변경 등 다양한 이벤트는 .. 2024. 1. 31.
알고리즘) Given When Then Pattern ( 테스트 케이스 작성 기법 ) Given When Then Pattern ( 테스트 케이스 작성 기법 ) 주로 테스트 케이스를 작성하거나 스펙을 정의할때 사용하는 패턴으로 이 패턴은 테스트 케이스의 구조를 명확하게 만들고 테스트의 목적을 명시적으로 표현하는데 도움이 된다. 주로 BDD(Behavior-Driven Developement), TDD(Test Driven Development)에서 사용한다. 테스트를 시작하기 전에 시스템이 특정 상태어야 하는 전제 조건이다. 이미 주어진 환경, 혹은 필요한 환경도 포함된다. 어떤 조건이나 특정한 상황을 설정하는 부분으로 특정한 행동이나 이벤트를 트리거하너 전제 조건을 설정한다. When에서 설정한 조건에 대한 기대 결과 혹은 예.. 2024. 1. 31.
읽을거리)소프트웨어 개발자의 생산성을 측정하는 방법 소프트웨어 개발자의 생산성을 측정하는 방법 소프트웨어 개발자의 생산성을 측정하는 방법이라는 글을 일고 간단하게 정리 및 추가로 개인적인 생각과 견해를 포함해서 포스팅한다. 원본 링크 : [링크] 기고 | 소프트웨어 개발자의 생산성을 측정하는 방법 소프트웨어 개발자의 효율성을 측정하는 것은 수십 년 동안 불가능한 것으로 여겨졌다. 두 명의 맥킨지 컨설턴트는 개발자가 개발자의 생산성을 측정할 www.itworld.co.kr 생산성을 측정하기 위한 방법으로 DORA(DevOps Research and Assessment)나 , SPACE(Satisfaction Performance,Activity., Communication/ Collaboration and Efficiency)를 활용해서 한다. 이런 맥킨지.. 2024. 1. 30.
개발용어) 버스 지수(Bus Factor), 트럭 지수(Truck Factor), 로또지수 (Lotter Factor) 버스 지수(Bus Factor), 트럭 지수(Truck Factor), 로또지수 (Lotter Factor) 버스 지수, 트럭 지수 등으로 불리우는 이 표현은 '프로젝트를 진행하는 과정에서 팀원이 갑작스럽게(버스, 트럭 사고등) 이탈하는 경우에 프로젝트에 미치는 영향 혹은 심각도`를 말하는 리스크 지표 를 말한다. 버스 지수, 트럭지수 의 수치가 낮을수록 그 사람에게 의존하는 의존도가 낮다고 볼수있다. 한 사람에게 의존하는 의존성이 높으면 그사람이 키맨의 역할을 한다고 볼수 있는데 그만큼 리스크는 높아진다. 그사람이 부재가 되는 경우에도 진행이 어렵다는 이야기 이다. 비슷한 표현으로 로또 지수 (극단적으로 로또를 맞아 회사를 사직하는 형태)도 있다. ★☆☆☆☆ 2024. 1. 30.
Unity) 옵션 설정-자동 품질(퀄리티 : Auto Qulity Setting) 옵션 설정-자동 품질(퀄리티 : Auto Qulity Setting) 자동 품질을 설정하기 위해서 방법을 강구하다가 발견한 코드이다. 해당 코드를 최신화 해서 간략하게 정리한다. 퀄리티에 대한 설정은 좀더 다양하게 가능하다. 해당 코드는 참고용 코드로 생각하면 된다. FPS, 메모리 사이즈/ 프로세스 카운트를 통해서 간략하게 퀄리티에 대한 설정을 하는 코드이다. 3D 게임에서는 퀄리티 옵션에 대해서 추가로 더욱 다양하게 설정이 가능하다. LOD, 오클루전 컬링, 카메라 설정변경 등등이 가능하다. eQualityLevel AutoChooseQualityLevel() { Assert.IsTrue(QualitySettings.names.Length == Enum.GetNames(typeof(eQu.. 2024. 1. 22.
읽을거리) Unity 에서 AI를 만드는 방법 1부, 2부 Unity 에서 AI를 만드는 방법 1부, 2부 Game Dev tv 사이트를 보다가 간단하게 설명이 잘되어 있는 글을 발견하게 되어서 간략하게 포스팅 한다. Unity 에서 AI를 지각 있게 만드는 방법 1부 - 원본 링크 : [링크] How to make AI sentient in Unity, Part I In the first of two parts miniseries about AI senses, I'm going to guide you through an implementation of eyes and ears for NPCs, that takes advantage of inheritance and UnityEvents. In the subsequent part, I'll show you how.. 2024. 1. 19.
VisulStudio) .Net FrameWork Change (프레임워크 변경) .Net FrameWork Change (프레임워크 변경) Visual Studio 2022 버전으로 작업르 하다가 프레임워크 버전이 맞지 않는 경우가 발생했다. 재귀 패턴으로 작업을 했는데 C# 7.3에서는 사용할수 없다고 했다. 컴파일러 버전에 따른 .NET을 확인해야 한다. .NET 8.x C# 12 .NET 7.x C# 11 .NET 6.x C# 10 .NET 5.x C# 9.0 .NET Core 3.x C# 8.0 .NET Core 2.x C# 7.3 .NET Standard 2.1 C# 8.0 .NET Standard 2.0 C# 7.3 .NET Standard 1.x C# 7.3 .NET Framework 모두 C# 7.3 [프로젝트]-[속성]-[.. 2024. 1. 18.
Unity) ScriptableObject Insecptor 조건부 노출 (Custom Editor) ScriptableObject Insecptor 조건부 노출 (Custom Editor) Scriptable Object를 사용하다보면 조건에 따라서 너무 많은 불필요한 조건이 노출되는 경우가 있다. 단순하게 룰이라고 기억하고 사용하기에는 휴먼이슈도 생기고 생각보다 직관적이지 않다. 불필요한 데이터를 넣을수도있고 정보가 많다보니 헷갈릴수도 있다. 조건부로 노출하는 방법으로 수정해보자. using UnityEditor; [CustomEditor(typeof(CardScriptableObject))] public class CardScriptableObjectInspector : Editor { private Serialized.. 2024. 1. 17.
개발지식) 금칙어/욕설/비속어 필터(Profanity filter,Expletive filter) 금칙어/욕설/비속어 필터(Profanity filter,Expletive filter) 금칙어 필터는 애플리케이션, 웹사이트, 또는 다른 소프트웨어에서 사용자가 입력하는 텍스트 중에 특정 단어나 구절을 차단하거나 필터링하는 기술이다. 이는 불쾌하거나 부적절한 내용을 방지하거나 관리하기 위해서 사용된다. 해당 특정 단어를 가지고 있는 데이터 리스트에 해당하는 항목이 있으면 치환하는 형태이다. 대체적으로 xxx 나 *** 형태로 표시 되거나 다른 언어로 대체된다. 방법 설명 단어 기반 필터링 특정 단어나 구절을 사전에 정의된 목록에서 차단합니다. 이 목록은 미리 정의된 금칙어나 부적절한 표현을 포함합니다. 정규 표현식 정규 표현식을 사용하여 특정 패턴이나 규칙을 갖는 텍스트를 차단합.. 2024. 1. 16.
Unity) Layout Group(Auto Layout) 을 사용할때 비활성화로 값 변경이 안될때 변경하는 방법들 Layout Group(Auto Layout) 을 사용할때 비활성화로 값 변경이 안될때 변경하는 방법들 다음과 같이 Layout Group 을 사용하는 과정에서 비활성화되어서 값을 변경하지 못하는 경우가 있다. 해당 케이스는 대체적으로 상위 객체의 영향을 받는 경우이다. 이런 경우에는 상위 Component를 비활성화 하고 수정하고 다시 활성화하는 방법으로 해결이 가능하다. Layout Element Component를 추가해서 해당 값을 변경하고 재정의한다. Unity 자동 레이아웃 (Auto Layout) : [링크] 자동 레이아웃 - Unity 매뉴얼 자동 레이아웃(Auto Layout) 시스템은 수평 그룹, 수직 그.. 2024. 1. 12.
AppleStore)Apple Store Update Version Check (iOS 앱 업데이트 체크하기) App Store Update Version Check (iOS 앱 업데이트 체크하기) iOS App Store에 업로드 이후에 낮은 버전에서 업데이트에 대한 체크를 하기 위한 방법이다. 스토어에 올라간 버전을 체크하면 된다. https://itunes.apple.com/lookup?bundleId={패키지명} 해당 정보를 넣으면 JSON으로 된 Apple Store에 업로드된 패키지명에 해당하는 스토어에 정보를 준다. < 예시 Apple 에 내장된 날씨 어플의 패키지명을 넣어보면 다음과 같다. https://itunes.apple.com/lookup?bundleId=com.apple.weather 다운받아지는 JSON 파일의 정보를 보면 다음과 같다. 하단에서 보면 Version 정보가 있는것을 확인 .. 2024. 1. 5.
Tip).Git 저장소 정리 ( gc 호출 명령어로 용량 확보 ) .Git 저장소 정리 ( gc 호출 명령어로 용량 확보 ) git gc 명령어는 Git 저장소의 가비지 컬렉션을 수행하는데 사용한다. gc(가비지 컬렉션)은 저장소에서 사용하지 않는 객체들을 정리하여 저장소의 크기를 최적화하는 작업이다. 기본적으로 gc --auto를 통해서 하는것을 추천한다. git gc --auto --prune=now --quiet .git 파일의 gc를 정리를 해서 용량을 확보해보자. .git 파일이있는곳에서 해당 git 명령어를 진행하면 된다. 기본적으로 자동으로 gc가 처리가되지만 좀더 타이트하게 정리를 하면 용량이 확보가 된다. git gc --aggressive --prune=now 옵션 설명 --aggressive 가비지 컬렉션을 더 적극적으로 수행하도록.. 2024. 1. 2.
개발 Tip) 자주 사용하는 Git 명령어 정리 보호되어 있는 글 입니다. 2024. 1. 2.
개인생각) 개발팀의 행복을 유지하는 요소 개발팀의 행복을 유지하는 요소 개발팀의 행복을 유지하는 요소가 있다고 해서 해당 웹 사이트의 내용을 보고 개인적인 생각을 간단하게 포스팅 한다. 원본링크 IT World - 개발팀의 행복을 유지하는 전략 : [링크] 개발팀의 행복을 유지하는 9가지 전략 소프트웨어 개발자 수요가 늘고 있다는 것은 더는 비밀이 아니다. 불확실한 경제 상황에도 기업은 코딩할 줄 아는 사람을 찾고 유지하려고 전력을 다 www.itworld.co.kr 대 주제를 대략 다음과 같다. 주제 어려운 프로젝트 유연한 업무 환경 일과 삶의 균형(워라밸) 공정한 보상과 해택 혁신적이고 의미 있는 프로젝트 협업적 환경 원하는 도구를 사용할 수 있는 환경 효율적이고 합리적인 개발 프로세스 사람에 따라 기준이 다르긴하지만 어느정도 다 연관성이 .. 2023. 12. 29.
Unity)애니메이션 커브 반전(Animation Curve Mirror) 애니메이션 커브 반전(Animation Curve Mirror) Animation Curve를 로 생성하는 코드이다. 해당 AnimationCurve를 실행하는걸 시간의 역순으로도 처리가 가능하지만 시각적으로 Curve도 확인이 되는 형태가 되면 좋을것 같았다. AnimationCurve를 통해서 특정 수치값에 대한 처리를 하는데 활용하다가 이번에 미러링(반대)로 Animation Curver 기능이 필요해서 구현하게 되었다. using UnityEngine; public static class AnimationCurveExtensions { public static AnimationCurve Mirror(this AnimationCurve curve) { Keyframe[] keys = c.. 2023. 12. 28.
반응형