기본 콘텐츠로 건너뛰기

11월, 2020의 게시물 표시

Django-Channels와 HTTP 통합해보기

Django-Channels와 HTTP 통합해보기 프로젝트로 IoT 애플리케이션을 제작하고 있는데, 처음 시도 해보는 부분이라서 어떻게 구축을 시작해야할지 막막한 부분이 많았습니다. 개인적으로 Python을 주로 사용하고 있고, 중앙 서버를 Django로 구축하기로 했기 때문에, Django에 관한 여러 정보들을 찾아보다가 Channels라는 Django 애드온을 알게 되었습니다. Channels를는 주로 채팅 관련 서비스에 사용 되는것 같은데, Django를 웹소켓 서버로 사용할 수 있도록 도와주는 점에서 잘 활용하면 계속 연결이 유지되어야하고, 양방향 통신이 필요한 IoT 서버로 사용할 수 있다고 판단하여 Channels를 사용 해보게 되었습니다. 하지만 어플리케이션과 IoT 서버가 항상 WebSocket으로 연결되어 있진 않을것 같았고... IoT기기와 서버가 웹소켓을 통해 항상 연결되어 있고, 어플리케이션은 해당 웹소켓 연결에 HTTP로 데이터를 던져주는 방향으로 생각을 해보게 되었습니다. Django-Channels 외부 Consumer에서 접근 Django-Channels 공식 문서에 힌트가 될 부분을 찾았습니다. Channels-Layer를 외부 Consumer에서 접근할 수 있는 방법에 대한 설명이었는데, 이 부분을 잘 활용하면 Django api로 웹소켓에 접근이 가능해보였습니다. ⚠️ 여기서 데이터를 받는 Consumer는 WebsocketConsumer를 통해 생성되었습니다. from channels.layers import get_channel_layer channel_layer = get_channel_layer() 먼저 이렇게 get_channel_layer() 함수로 channels를 조작할 수 있는 객체를 받을 수 있었습니다. await channel_layer.group_send( chat_name, {"type": "chat.system_message", "

가장 대중적인 게임 엔진 중 하나인 유니티 엔진에 대해서

  2005년 경에 출시한 유니티 엔진은 현재 명실상부 세계에서 가장 많이 사용하는 게임 엔진 중 하나가 되었습니다. 최근 유니티 2020버전이 출시되었고, 레이 트레이싱 등 많은 차세대 기술들을 도입하고 에픽 게임즈의 언리얼 엔진과 함께 PC, 모바일, 콘솔 등 수 많은 분야들에서 두각을 나타내고 있습니다. 유니티 엔진의 시작은 2005년에 게임 개발을 더 대중적으로 만들자는 취지로 데이비드 헬가슨, 조와치 앤티, 니콜라스 프란시스가 맥OS X 기반으로 제작했습니다. 2006년에는 애플의 Apple Design Awards에서 Mac OS X Graphics 활용 부문에서 2위를 차지하기도 했습니다. 그리고 유니티는 실시간 그림자, direction light, 비디오 재생 등 여러 기능을 추가한 2.0버전이 출시되었고, 3.0, 4.0, 5 등등 여러 버전을 거쳐 현재의 유니티가 탄생하게 되었습니다. 현재의 유니티는 물리 엔진, 실시간 글로벌 조명, 파괴 효과, 레이 트레이싱 등 여러 차세대 기술을 도입하고, 벌칸 API, 구글 데이드림, 뷰포리아, 닌텐도 스위치 등의 여러 접근성 및 편의성을 증강하고 있습니다. 또한, 유니티 에셋 스토어나 유니티 공식 문서들이 굉장히 잘 되어있기 때문에 1인 개발 또한 유리한 편에 속합니다. 유니티 엔진은 C# 스크립트를 사용하고, 대부분 소규모 프로젝트, 인디 게임, 모바일 게임 등에 주로 쓰이고 반대로는 언리얼 엔진을 사용하고 있는 추세입니다. 위에 적었던 많은 기능들이 있음에도 불구하고, 언리얼 엔진에 비해 지원하는 기능들이 적고, 엔진의 최적화가 부족하기 때문입니다. 특히 멀티스레드 지원 부분이 크게 작용하는데, 유니티 엔진은 멀티코어를 제대로 지원하지 않기 때문입니다. 그럼에도 불구하고 유니티 엔진은 누구나 간편하게 게임을 제작할 수 있다는 점에서 크게 성공하고 있고, 블리자드의 하스스톤, 라이엇 게임즈의 리그 오브 레전드 : 와일드 리프트 등 중대규모 프로젝트에도 꾸준히 사용되고 있습니다. 하스스톤 리그 오브