내가 일하며 알게 된 프로그래밍
article thumbnail
C# Winform vs WPF
프로그래밍/ETC 2024. 5. 13. 16:40

최근 개인 프로젝트를 진행하면서어떤 모델로 개발을 해야할까 싶은 생각에뉴비 시절 WPF를 썼던 기억이 다시금 떠올라이번에는 Winform으로 개발을 해봐야겠다는 생각이 들었다.(WPF을 수준급으로 하는것도 아니지만 Winform도 궁금했다)큰 규모의 프로젝트는 아니고연애 시뮬레이션처럼 지문과 선택지 노드들을 생성하고 노드끼리의 순서를 연결하여데이터 형태로 추출하는 프로젝트가 필요했다.(절대로 내가 미연시를 하려고 시작한 건 아니다)아직 프로젝트 개발중이지만 지금까지의 느낀점을 몇가지 적어보려고한다. 렌더링 차이- 진행하는 프로젝트가 [대화상자를 이어가는 툴] 이라고 생각했기에 굳이 렌더링에 대한 필요도는 높지 않았다.Winform : GDI+에 의존하여 렌더링을 한다.WPF : DirectX로 렌더링을 ..

article thumbnail
Unity - On-demand Rendering
프로그래밍/Unity3D 2024. 5. 13. 16:13

게임 설정의 최적화 및 옵션 관련 부분을 개발하다보면,흔히 말하는 풀옵, 상옵, 하옵 등 성능 관련을 작업하는 날이 올 것이다.오늘은 렌더링의 주기를 관리하는 "온디맨드 렌더링" 에 대해 알아보자. 렌더링 주기를 관리하는 방법이라면Application.targetFrameRate 혹은QualitySettings.vSyncCount 해당 프로퍼티를 수정해서 렌더링 주기를 관리할 수 있었다. 하지만 이러한 접근 방식은 렌더링 뿐만 아니라 Unity가 실행하는 모든 함수 주기에도 영향을 주기 때문에OnDemandRendering 을 통해 플레이어 루프 주기와 렌더링 주기를 분리할 수 있다. 쉽게 말해 매 주기마다 체크하는 터치이벤트는 그대로 60프레임을 기준으로 체크를 하면서렌더링은 이보다 낮은 프레임으로 표..

article thumbnail
함수 생명 주기(Life Cycle)와 FixedUpdate
프로그래밍/Unity3D 2024. 1. 9. 22:19

유니티에서는 특정한 순서대로 실행되는 함수들이 있다. 이러한 함수를 통해서 게임 오브젝트의 초기화, 업데이트, 렌더링 등의 작업이 이루어지는데 이를 통틀어 함수 생명 주기 라고 한다 이벤트 함수의 실행 순서 - Unity 매뉴얼 Unity 스크립트를 실행하면 사전에 지정한 순서대로 여러 개의 이벤트 함수가 실행됩니다. 이 페이지에서는 이러한 이벤트 함수를 소개하고 실행 시퀀스에 어떻게 포함되는지 설명합니다. docs.unity3d.com 유니티 엔진의 기초적인 부분이지만 그 중 Update, FixedUpdate, LateUpdate에 대해 설명을 해보려고 한다. 그림상으로 보았을 때 FixedUpdate -> Update -> LateUpdate 순으로 동작하는 것 같지만 Physics 부분에서 가장 ..

article thumbnail
Unity - 터널링 현상 (Tunnelling)
프로그래밍/Unity3D 2023. 12. 22. 18:34

유니티 터널링 (Tunnelling) 현상이란 충돌 처리가 필요한 게임 오브젝트가 다른 충돌체를 뚫고 지나가는 현상을 말한다. 터널링이 발생하는 이유는 프레임 드랍 현상이나 물체가 너무 빨리 움직이는 이유 등으로 충돌 처리가 제대로 이루어지지 않으면 발생할 수 있다 프레임 드랍과 이벤트 함수 호출 주기 유니티의 Update의 호출 간격은 일정하지 않기때문에 void Update() { transform.position += (Direction) * moveSpeed * Time.deltaTime; } 위처럼 Update 함수에서 물체를 움직이게 되면 Time.deltaTime의 시간이 프레임에 따라 변동됨으로 의도한 일정한 moveSpeed 만큼의 이동이 이루어지지 않을 수 있다. 따라서 일정한 비율만큼..

article thumbnail
다양한 충돌 체크 방법
프로그래밍/ETC 2023. 11. 15. 02:50

게임에서 충돌 체크를 하는 방법은 여러가지가 있다. 물론 이 글에서 모든 충돌 방법을 설명하기는 어려울 것이고, 알고 있는 충돌 방법 이외에 다른 충돌 체크 방법도 있기에 모든 충돌 체크를 설명한다는 것은 불가능할 것이다. 가장 많이 쓰였던 혹은 많이 쓰이는 충돌 체크 방법들을 알아보자 픽셀 충돌 이미지들의 텍스쳐 픽셀 데이터를 통해 픽셀들이 동일한 위치에 존재하는지 체크 하는 방식이다. 포트리스나 웜즈 같은 게임이 픽셀 충돌을 이용하여 자연스러운 이동을 표현할 수 있다. 충돌 체크 코드는 비교적 단순하지만 단순한 for문 연산이기때문에 픽셀의 사이즈가 커질수록 연산 횟수가 증가한다. private bool CheckPixelCollision(ObjectClass objectA, ObjectClass o..

article thumbnail
Early Return 코드가 정말 옳은 걸까?
프로그래밍/ETC 2023. 11. 7. 13:09

Early return(얼리 리턴)은 프로그래밍에서 조건을 미리 만족하는 경우 함수나 메서드 실행을 중간에 중단하고 값을 반환하는 프로그래밍 기법을 의미한다. 코드의 가독성을 높이고, 불필요한 연산을 방지하는 장점이 있긴한데 일단 예시 코드를 보자. public static bool CheckFunction(int value) { if(value > 0) { if(value > 5) { if(value < 10) { return false; } } else { //todo value... } } return true; } 이런 코드가 있다고 하면 CheckFunction의 함수는 return false를 리턴하기 위해선 3번의 if문을 검사해야한다. 이를 Early Return 형식의 코드로 수정하게 되..

article thumbnail
Unity - SendMessage
프로그래밍/Unity3D 2023. 11. 3. 09:46

유니티 개발을 하다보면 다른 스크립트의 함수 호출을 필요로 할 때가 있다. 유니티 Doc를 확인하면 SendMessage를 통해서 다른 함수를 호출 할 수 있다. 라고 말해주지만 Unity - Scripting API: GameObject.SendMessage Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close docs.unity3d.com 일단 결론을 말하자면 SendMess..

article thumbnail
Unity - Sprite Atlas 왜 사용할까?
프로그래밍/Unity3D 2023. 10. 30. 00:29

Unity Sprite Atlas 스프라이트 아틀라스 - Unity 매뉴얼 2D 프로젝트는 스프라이트와 다른 그래픽스를 사용하여 씬의 시각적 요소를 만듭니다. 따라서 단일 프로젝트에 다수의 텍스처 파일이 들어 있을 수 있습니다. 일반적으로 Unity는 씬의 각 텍스처 docs.unity3d.com 스프라이트 아틀라스는 여러개의 텍스쳐를 단일 텍스쳐로 결합하는 에셋이다. 왜 여러개의 텍스쳐를 그대로 쓰지않고 단일 텍스쳐로 만들어서 사용하는 기능을 만들었을까? 그건 바로 Drawcall과 관련이 있다. Material을 로드하게되면 Material 1개당 1개의 batches가 발생한다. batches 란 오브젝트를 그릴 횟수 + Set Pass Calls의 카운트로 계산된다 Set Pass calls는 s..