목록프로젝트 (30)
cyphen156

현재 윈도우 기본 메세지 루프를 사용하고 있다. 이 방식의 최대 단점은 사용자 입력이 윈도우에서 발생해야만 프로그램이 동작하고, 그 외에는 무한정 대기하고 있다는 것이다. 잠깐 생각해보면 백그라운드 작업시 돌아가지 않는 게임을 생각할 수 있다. 윈도우가 최상단에서 실행되고 있어 무효화 영역이 발생하지 않을때만 프로그램이 동작하고, 조금이라도 무효화 영역이 발생하거나, 백그라운드로 넘어가면 일시정지되어 프로그램이 멈추는 것들을 생각하면 될 것같다.최종 완성된 결과물은 다음과 같이 동작한다. 이러한 원인이 발생되는 함수가 다음 반복문에 존재하는 조건 GetMessage()함수의 사용때문이다.// 기본 메시지 루프입니다:while (GetMessage(&msg, nullptr, 0, 0)){ if (!..

맨 처음에는 png를 그대로 쓰고싶어서 gdi+를 통해 작업하려고 했는데 왜인지 모르게 이미지가 로드되지 않더라. 그래서 그냥 개별적으로 파이썬 스크립트를 통해 ktech룰 통해.png로 변환된 latex파일을 다시 bmp파일로 변환해주는 스크립트를 통해 자동화해서 리소스를 죄다 추출했더니 용량이 1.5기가쯤 되더라. 아마 애니메이션을 표현하기 위한 scml파일도 포함되어 있어서 그럴거다. 어쨋든 주말동안 했던 내용을 정리하자면 WM_KEYDOWN 케이스문을 작성하여 개별적으로 키입력 동작 메세지 발생시 hBitMap 객체가 좌표이동을 하도록 하고, invalidateRect() 함수를 통해 무효화 영역을 강제로 발생시켜 다시 그리도록 지시했다.우선 화면에 표시될 오브젝트 한개의 좌표를 저장할 정적 변수..

진짜 돈스타브 Ktools에 있는 ktech랑 krane 작동안되서 뒤지게 삽질했다. 거의 한 3일동안 이것만 본거같은데유니티 에셋 스타일로 되잇는것도아니라서 추출도 안되가지고 시작도못하고 모작프로젝트 타이틀 바꿀뻔햇다.추출안됬던 근본적인 원인은 imagemagick 버전이 7로 올라가면서 api 사용법이 바뀌엇기 때문이었다.우선 ktech는 Latex파일 확장자인 .tex파일을 png로 바꿔주는 프로그램으로 텍스쳐 뽑으려면 필요했고, 이 뽑아진 텍스쳐를 가지고 krane을 통해 애니메이션 처리를 도와주는 스프라이트 애니메이션 포맷인 .scml로 변환해준다. 아무튼 WINDOWS 11운영체제를 기준으로 설명하자면 imagemagick을 6.9.13-17-q16-x64-dll을 설치한다.ImageMagic..

유니티는 기본적으로 C# 소스 파일을 오브젝트의 컴포넌트로 활용할 수 있다. 무슨 말이냐 하면 유니티를 사용하는 게임 개발자는 전체 시스템에 대한 구조를 고민할 필요 없이 하위 컨텐츠만을 생각하면 된다는 이야기이다. 특이하게 유니티는 전통적으로 프로젝트의 진입점을 정의하는 main파일을 제공하지 않는다. 대신 엔진내부에서 MonoBehaviour 클래스를 통해 게임 오브젝트의 컴포넌트를 제어한다. 유니티는 다양한 샘플 스크립트들을 제공하는데 가장 많이 쓰이는 것은 MonoBehaviour 스크립트이다.MonoBehaviour 클래스는 다른 모든 유니티에서의 동작 클래스들을 상속하고 있는 클래스로 가장 범용적으로 사용되기 때문이다. 프로젝트 창에서 샘플용 MonoBehaviour C#스크립트를 생성해보면 ..

레벨 디자인이라 함은 씬 하나를 기준을 삼아 게임 플레이에 필요한 리소스들을 모두 저장소에서 메모리로 가져오기 위한 일종의 프로젝트 패키징 이라고 볼 수 있다.다른말로는 맵이라고도 불리고 있으며, 게임을 진행할 때 로딩중...이라고 뜰 경우가 레벨 디자인(씬 또는 맵)이 변경되어 메모리에 적재되어가는 과정이라고 할 수 있다. 레벨 디자인에 포함되는 것은 씬 내의 지형, NPC와 같은 인스턴스들, 캐릭터 오브젝트들 그리고 UI와 같은 플레이할 때 사용자의 경험에 직 간접적으로 적용되는 모든것들에 대한 디자인을 포괄한다. 에셋 스토어 사용법에 대한 것은 이전 포스팅에서 다뤘으니 오늘은 에셋의 이름 정도만을 언급하고 넘어가겠다.이전과는 다르게 3D Core(URP)프로젝트를 levelDesign이라는 이름으로..

레벨 디자인에 들어가기에 앞서 유니티 프로젝트를 생성할 때 선택하게되는 렌더링 파이프라인에 대해 설명하도록 하겠다. 우선 렌더링이란 컴퓨터에 저장되어 있는 리소스들을 불러온 것을 화면에 표시하여 보여줄 떄 여러가지 프로세스를 거쳐서 사용자에게 최적화 하여 보여주게 되는데, 이것을 렌더링 파이프라인이라고 한다. 자세한 렌더링 방법에 대한 내용은 나중에 DX11공부할 때 정리하도록 하겠으니 지금은 그냥 렌더링이 저런거구나 하고 넘기자.렌더링 파이프라인은 총 세가지로 이전 프로젝트에서 사용된 Built-in- Render Pipeline, URP, HDRP로 세가지가 존재한다.세가지 렌더링 파이프라인에 대한 자세한 내용은 유니티 공식 문서에 존재하니 링크로 연결하겠다. Unity - 매뉴얼: 렌더 파이프라인 ..

유니티는 유저간 커스텀 패키지를 거래하고, 공유하기 위해 에셋스토어가 존재한다. 여기서 다운받은 패키지를 사용하여 누구나 간편히 에셋을 추가하고, 에셋에 포함된 프리펩 및 스크립트, 리소스를 사용할 수 있게 도와준다. 오늘 할 것은 기본적인 에셋스토어 사용법과 프로젝트에서 프리펩을 만들고, 수정하는 방법을 공부할 것이다.에셋 스토어 사용법에셋 스토어는 유니티 엔진의 상단 도구모음중 Window - Asset Store에 존재한다.1. 에셋 스토어는 웹 링크를 통해 사용자가 로그인된 계정에 에셋을 구매하여 마이 에셋에 추가할 수 있도록 도와준다.2. 마이 에셋은 내 계정에 등록되어있는 에셋들을 관리할 수 있게 도와준다. 3. 패키지 매니저는 프로젝트에 포함시킬 에셋 패키지를 선택/해제하여 프로젝트별로 관리..

대학교 재학중 3학년 수업으로 시스템 프로그래밍 대신 게임프로그래밍이라는 과목을 배웠었다, 남들 다 재미없다하던 유니티 수업 나는 재미있다고 느꼇고, 예제 뒷부분에 존재하는 정답 코드를 보는 대신에 항상 내 맘대로 구글링 해가면서 스크립트를 작성하여 이벤트가 발생되도록 구현해보았었다. 취직하는데 도움이 될까? 는 싶은데 언리얼 엔진 본격적으로 공부하기 전에 좀 더 범용적이고 쉽게 만들 수 있는 유니티 엔진을 사용하여 게임 프로젝트를 한번 만들어 볼까 한다. 그때는 어려웠던 UI제작, 이제는 Cinema 4D 때의 경험을 살려 좀 더 쉽게 이해할 수 있을 것 같다는 생각이 든다. 한가지 고민이었던것은 Unity 6가 출시되었다는것이다. 근데 유니티도 언리얼 엔진이 4->5로의 버전 업처럼 프로젝트 자체..