본문 바로가기
반응형

개발878

개인생각) 다수의 인원이 개발을 진행할 때 알아야하는 9가지항목 다수의 인원이 개발을 진행할 때 알아야 하는 9가지 항목 개발을 진행할 때는 거의 대부분이 여러 명이 합께 협력을 해야 한다. 다수의 인원이 한 개의 프로젝트에 연관이 있기 때문에 개발하는 과정에서의 규칙이라던지 룰, 여러 가지 툴이 있어야 수월하게 개발할 수 있다. 다수의 인원이 개발을 하는 경우 정해지고 협업하는 과정에서 가장 많은 이슈가 생기고 필요한 9가지 항목이다. 1. 버전 관리에 대해서 알아야 한다. 버전 관리라는 것은 작업한 것에 대한 기록으로 (누가, 언제, 어디를 혹은 어떤 것을) 수정 및 추가 변경했는지 알 수 있는 항목으로 문제가 생기면 롤백(Rollback)을 진행할 수 있는 관리 도구이다. 어떤 식으로 구성되고 어떤식으로 되어있는지 원리를 알아야 한다. 2. 프로젝트 설정 방법은.. 2020. 9. 23.
개발용어)LOD(Load Of Details) LOD(Load Of Detail) 카메라의 거리에 따라 더욱더 디테일하게 표현하는 기술이다. 카메라와 거리가 멀 때는 조금 더 폴리곤이 적은(뭉탱이)로 면을 표현하는 텍스쳐를 사용해서 렌더링을 진행한다. 오브젝트의 렌더링의 부하를 줄이기도 하고 카메라의 원근감을 더 잘 나타내기도 한다. 실제 사람의 눈도 먼 물체는 작게 보이고 흐리게 보인다. 기본적으로는 메인카메라와의 거리를 비율로 계산해서 텍스쳐를 처리한다. 거리에 따른 텍스쳐를 따로 준비해서 한다. 엔진은 대부분 포함되어있는 기술이다. ★★☆☆☆ 2020. 9. 22.
개발용어) 밉맵(Mipmap) 밉맵(Mipmap) 밉맵은 3D 그래픽스에서 텍스쳐를 씌우는 과정에서 렌더링 속도를 향상하기 위한 축소된 패턴이다. 밉맵(mipmpas, Mip map)이라고도 표현을 하는데 의미는 같다. 2D에서는 패턴이 비슷한 개념이다. 밉맵은 LOD(Load of Detail)에 의해서 결정되는데 가까이 갈수록 비율이 큰 텍스쳐를 세팅하는 방식이다. 스케일링을 해야 하기 때문에 2의 배수로 세팅을 해야 한다. 256 x 256 텍스쳐를 읽으면 내부에서는 (128*128, 64*64, 32*32 , 16*16.. 2*2)의 텍스쳐를 만들어서 메모리에 올려둔다. 이렇게 세 부화된 밉맵이 있으면 실제 적용되는 건 다음과 같다. 카메라를 기준으로 화면이 이중 선형 필터링해서 텍스쳐를 그려준다. 단순하게 밉맵을 사용하면 저.. 2020. 9. 22.
Unity)해결)Copying assembly from 'Temp/Assembly-CSharp.dll' to 'Library/ScriptAssemblies/Assembly-CSharp.dll' failed Copying assembly from 'Temp/Assembly-CSharp.dll' to 'Library/ScriptAssemblies/Assembly-CSharp.dll' failed 프로젝트를 외부 저장소(Git, Svn 등등)에 받는 과정에서 한 번씩 위와 같은 오류가 발생한다. 원인은 컴파일러가 정상적으로 로드가 되지 못해서 에러가 나는 과정인데 여러 가지 방법이 있다. -Temp 파일 폴더를 삭제하고 프로젝트를 실행 -> 여부 확인 - [Assets]-[Reimport All] -> 여부 확인 - 유니티 프로젝트를 새로 만들고 script, resource 등을 카피해서 덮어쓰기. 컴파일을 처리하는 라이브러리가 정상적으로 연결되지 않아서 이런 이슈가 생기는 듯하다. ★★☆☆☆ 2020. 9. 18.
Unity) 조이스틱 구현하기(JoyStick) 조이스틱 구현하기(JoyStick) 유닛의 이동을 처리하기 위해서 작업하는 과정에서 조이스틱을 작업하기로 구성을 했다. 조이스틱은 실질적으로 방향에 대한 입력만 구분을 하고 실제로는 속력을 처리했다. 물리에 대한 고려를 처리하지 않기 위해서 (Velocity)를 처리하지 않고 SetPosition으로 처리를 했다. 핵심 코드를 이루고 있는 요소는 입력이다. IBeginDragHandler IDragHandler IEndDragHandler 에서 입력받은 순간 Vector2 inputDir = eventData.position - rectTransform.anchoredPosition; this.m_vMoveDir = inputDir.magnitude 2020. 9. 17.
잡학지식) 어뷰징(Abusing) 어뷰징(Abusing) 게임이나 온라인에서 사용되는 용어로 어떠한 트릭이나 정당하지 않은 방법을 통해서 이득을 취하는 행위를 통칭해서 표현하는 말이다. 어뷰징의 예로는 LOL의 대리게임, 리뷰의 평점 조작, 랭킹 밀어주기 등 여러 가지 상황에서 사용 가능하다. 이득을 얻기 위해서 불공평한 행위를 해서 이득을 취하는 것들이다. 패작, 버스도 어뷰징이라고 표현할 수 있다. 실시간 검색어 클릭 매크로도 포함된다. 종류 간략한 설명 치팅(Chatting) 원래 룰로는 이뤄질수 없는 비 정상적인 행위를 인지하고도 계속 하는 행위 '부정행위' 대리 랭크 실력있는 유저가 특정 대가를 받고 대신 플레이해서 특정 랭크로 올려주는 행위 패작 매치메이킹 시스템(경쟁)에서 일부로 승부에서 져서 패를 해서 낮은 MMR을 받아서.. 2020. 9. 10.
Unity) PlayMode 시작 씬 설정 PlayMode 시작 씬 설정 Unity에서 여러 가지 씬을 작업하다 보면 PlayMode (재생 버튼)을 누르게 되면 해당 씬을 시작한다. 강제로 시작씬을 만들어서 플로우를 정상 처리할 수 있다. 필요한 경우는 (회원가입, 초기화등) 순서가 필요한 것이나 언제든지 다른 씬에서 플레이를 할 수 있도록 하는 방식이다. 코드는 다음과 같다. [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] static void InitScene() { Logger.LogFormat("[SceneTitle] Init Scene --------------"); if (UnityEngine.SceneManagement.SceneManager.Ge.. 2020. 9. 9.
Unity)Firebase) Unity 연동하기 Firebase Unity 연동하기 Unity에서 Firebase를 연동해서 Auth 까지 진행하는 포스팅이다. Firebase 설명은 다음과 같다. 개발하는 과정에서 필요한 솔루션(지표, 푸쉬, 이벤트, 플랫폼 로그인, 스토리지, DB등)을 지원해주는 모바일 웹 어플리케이션 개발 플랫폼 이다. Firebase에서 로그인을 진행하고 프로젝트 만들기를 진행한다. 프로젝트이름 (파이어베이스 콘솔에서 확인할 이름) 여기서 Google 애널리틱스를 사용을 추천한다. 계정이 있으면 계정을 선택한다. 프로젝트 만들기를 진행하면 프로젝트가 생성된다. 이후의 가이드는 Firebase의 가이드를 참고한다. https://firebase.google.com/docs/auth/unity/start?hl=ko Unity에서 .. 2020. 9. 9.
Unity) IL2CPP란? IL2CPP란? 유니티에서 빌드를 할 때 IL2CPP라는 형식으로 난독화 하는 옵션이 있다. 유니티는 C#기반으로 CIL(MSIL)이라는 미들 코드를 만들어 낸다. 미들 코드를 가지고 원시 코드(네이티브 코드)로 변경하는 과정을 JIT Compiler가 수행을 한다. 중간 코드(CIL)에서는 실행 머신 환경에 관계없이 동일 코드를 실행할 수 있다. 공식 설명은 다음과 같다. URL :https://docs.unity3d.com/kr/2019.1/Manual/IL2CPP.html IL2CPP - Unity 매뉴얼 IL2CPP(C++로 변환하는 중간 언어)는 Unity에서 개발한 스크립팅 백엔드로, 여러 플랫폼용 프로젝트를 빌드할 때 Mono 대신 사용할 수 있습니다. IL2CPP를 사용하여 프로젝트를 빌드.. 2020. 9. 7.
기본기)코드 난독화(Code Obfuscation) 코드 난독화(Code Obfuscation) 코드 난독화(Code Obfuscation)라는 것은 코드를 바로 직관적으로 알 수 없도록 어떠한 규칙에 의거해서 코드를 변환시켜서 코드를 읽기 힘들게 만들어서 보안적인 측면에서 적용되는 기술이다. 코드 난독화는 코드를 변경시키는 것이고 바이너리 난독화는 컴파일 후에 생성된 바이너리를 역공학(Reverse Engineering)을 통해 분석하기 힘들게 변조하는 기술이다. 난독화된 코드는 다음과 같다. 난독화가 되었다고 보안에 완벽한 것은 아니다. 그러나 기본적으로 개발을 진행하는 과정에서는 포함되어야 할 항목이라고 생각한다. ★★☆☆☆ 2020. 9. 7.
Unity) Logger Class Logger Class 유니티에서 Debug.Log 를 쓰다보면 특정상황에서 로그를 모두 출력을 하지 않는다 던가. 특정상황에서 로그를 컨트롤해야하는 상황이 생긴다. 기본적으로 Logger에서 값을 찍는 과정에서 (테스트 및 확인등등)여러 용도로 확인하기 위해서 많이 사용하기 때문에 로그를 처리안하는것만 진행해도 효과를 보는 경우가 많다. 디버그 모드 > 상용 모드로 작업하는 과정은 필수라고 보면 된다. 기본 메커니즘은 전처리기능을 사용한다. [Player Setting] -[Other Settings] -[Scripting Define Symbols] - 'ENABLE_LOG'라고 설정하고 사용한다. /** * 생성일 : 2019년 12월 10일 PM 1시 23분 * 생성자 : - * [Project .. 2020. 9. 7.
문제풀이)프로그래머스)c#) 가장 큰 수 가장 큰 수 URL : https://programmers.co.kr/learn/courses/30/lessons/42746# 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 �� programmers.co.kr 문제는 심플하다 주어진 numbers를 결합해서 가장 큰 수를 만드는 값을 return 하는 문제이다. 처음 짠 소스는 다음과 같다. using System; using System.Collections.Generic; public class Info{ public i.. 2020. 9. 7.
Unity)해결) Copying assembly from 'Temp/com.unity.multiplayer-hlapi.Runtime.dll' t Copying assembly from 'Temp/com.unity.multiplayer-hlapi.Runtime.dll' to 'Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Runtime.dll'failed 해결 유니티 프로젝트를 실행하니 위와 같은 오류가 발생했다.프로젝트를 열면서 프로젝트의 Temp파일이 생기는데. 이 Temp파일에서 라이브러리를 인식하는 과정이 실패한 경우이다.이럴 때는 과감하게 [Assets]-[Reimport All]을 실행한다. 라이브러리 및 환경을 다시 세팅하는데 시간이 좀 걸린다. 다시 링크 깨진 것들이라던 지, 캐싱 등을 다시 프로젝트를 구성하는 과정에서 해결된다. ★★☆☆☆ 2020. 9. 6.
기본기)정렬)c#)퀵 정렬(Quick Sort) 퀵 정렬(Quick Sort) 퀵 정렬은 분할 정복 알고리즘으로 평균적으로 매우 빠른 수행 속도로 정렬을 한다고 해서 Quick이라는 이름이 붙여진 정렬이다. 불안정 정렬에 속하고 분할 정렬(merget sort)과 달리 비 균등하게 분할한다. 피벗(Pivot)이라는 개념으로 정렬을 수행한다. 피벗을 기준으로 피벗보다 작은 요소들은 왼쪽으로 옮겨지고 큰 요소들은 피벗의 오른쪽으로 옮겨진다. 피벗을 제욓나 리스트와 오른쪽 리스트를 다시 정렬한다. 분할된 리스트에 대해서 순환 호출을 이용해서 정렬을 반복한다. 리스트가 0이나 1이 될 때까지 반복한다. 퀵 정렬의 단계에 대한 설명은 다음과 같다. 분할(Divide) : 입력 정렬을 피벗을 기준으로 비 균등하게 분할(피벗을 기준으로 왼쪽, 오른쪽) 정복(Con.. 2020. 9. 3.
기본기)람다식(Lambda Expression) 람다식(Lambda Expression) 람다식은 수학의 알론조(Alonzo Church)가 발표한 계산법인데 이를 존 매카시(John Macarthy)가 프로그래밍 언어에 도입하게 되면서 널리 알려졌다. 람다식(Lamdaba Expressions)은 추상화 익명 메서드(Anonymous functions)로써 함수형 프로그래밍에 적합한 문법적 표현방식이다. 람다식의 특징은 다음과 같다. 코드의 간결성과 필요한 정보만 사용하는 방식으로 퍼포먼스의 향상이 있다. 익명 함수의 특성상 외부 캡처나 시간 제약, 디버깅 시 콜 스택의 추적의 어려움, 코드의 난해함이 있을 수 있다. 람다식의 기본적인 표현방식은 다음과 같다. (타입 매개변수, ...)=>{ 실행문 ;} 실제 사용 코드로 보면 매개 인자 생략해서 표.. 2020. 9. 3.
반응형