기본 콘텐츠로 건너뛰기

2월, 2019의 게시물 표시

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", "

놀이의 4대 요소 (Agon(아곤), Mimicry(미미크리), Ilinx(일링크스), Alea(알레아))

네덜란드의 고전 학자인 '요한 하위징아'의 저서인 「호모 루덴스 」에서 인간을 '유희의 인간'이라고 칭했습니다. 프랑스의 '로제 카유아'라는 학자는 「호모 루덴스 」의 이론을 발전시켜 그의 저서인 「놀이와 인간」 (원제 「 Man, plays and games 」) 에서 ‘놀이의 4대 요소’를 말했습니다. 저자는 그것을 아곤, 미미크리, 알레아, 일링크스로 소개했습니다. 이 네 가지 놀이의 요소는 인간의 모든 유희, 놀이에서 발전되어 현대의 비디오 게임에서도 매우 중요한 이론으로 알려져있습니다. 먼저, 아곤(Agon), 경쟁 아곤은 놀이의 주체와 객체간의 경쟁을 의미합니다. 사람들은 경쟁에서 승리함으로써 성취감을 얻고, 우월감을 느끼게 합니다. 이 아곤을 현대의 게임에 대입 시켜보면 경쟁은 최근 가장 많이 플레이 하는 게임 중 하나인 ‘배틀 그라운드’나 ‘리그 오브 레전드’같은 게임들도 경쟁에 기반이 되어있고, 혼자 플레이 하는 게임에서도 자기 자신과의 경쟁, AI와의 경쟁 등이 포함되어있습니다. 예를 들어, 슈퍼 마리오 같은 게임에서도 플레이어들은 어떻게 이 게임을 더 빨리 클리어하기 위해 경쟁하고, 더 많은 점수를 받기 위해 노력합니다. 또한 비교적 MMR시스템이 잘 짜여져있는 '리그 오브 레전드'같은 AOS게임에서도 플레이어의 등급을 결정하는 랭크 게임 시스템이 중점적으로 돌아가고 있고, '오버워치'의 경쟁전 등 많은 게임에서 이런 경쟁을 유도하는 시스템을 만들어 놓았습니다. 게임을 계속 플레이하게 만드는 가장 큰 요소가 아곤입니다. 많은 게임에서 플레이어의 경쟁을 어떻게 잘 이끌어 나갔느냐에 따라서 그 게임의 성공이 나뉠 수도 있습니다. 미미크리(Mimicry), 역할 미미크리는 역할을 의미합니다. 사람들은 실제 세계에서 하지 못하는 일들을 놀이에서 느끼면서 큰 기쁨을 느낄 수 있습니다. 이 역할은 롤플레

Ketchapp의 게임들에 대하여

2014년 3월에 설립된 'Ketchapp'은 프랑스의 스마트폰 게임 개발사이자 'Ubi Soft'의 자회사입니다. 이들의 게임은 모두 터치 하나만으로 조작이 되는 정말 간단한 게임들입니다. 하지만 절대 재미 측면에선 가볍지 않고, 중독성이 있습니다. Ketchapp은 약 200개가 넘는 게임들을 개발하였습니다. 약 200가지의 게임은 조작이 매우 유사합니다. 대부분 터치와 꾹 누르는 것이 전부지요. 하지만 이 게임들은 모두 각각의 특별한 메커니즘을 가지고 플레이어에게 특별한 경험을 제공합니다. 게다가 매우 많은 게임들을 개발하였지만 매너리즘에 빠지지 않고 꾸준히 좋은 게임들을 만들어 나가고 있는 회사 중에 하나입니다. Ketchapp의 게임들 Ketchapp의 다양한 메커니즘의 예를 들어 보면 'Rider'라는 게임에선 플레이어가 터치만을 사용해 오토바이나 자동차를 운전하고, 'Knife Hit'라는 게임은 칼을 던지고, 'Space Frontier'에선 로켓을 발사합니다.     이런 다양한 사용자 경험은 모두 비슷한 방식의 조작 메커니즘을 가지고 있지만 플레이어에게는 새로운 경험을 제공합니다. 개발사 입장에선 빠르고 쉽게 다작을 할 수 있게 된 요소가 되었고, 터치라는 간단한 조작이라는 중심 메커니즘에서 크게 벗어나지 않기 때문에 좋은 아이디어를 많이 생산해낼 수 있었습니다. 쉽게 즐길 수 있지만 빠르게 질릴 수 있을 수 있는 형식의 게임에 Ketchapp은 '챌린지'와 '수집 요소'를 활용했습니다. 챌린지라는 특정 요소를 추가한 도전 모드로 더 많은 플레이 타임을 기대할 수 있고, 게임 중간에 획득할 수 있는 코인같은 요소로 매우 다양한 수집 요소를 모을 수도 있습니다. 그리고 Ketchapp의 게임들은 매우 가볍습니다. 'Rider'는 74MB, 'STACK'

새로운 안티 에일리어싱(Anti-Aliasing) 기술인 DLSS(Deep Learning Super Sampling)

우리가 흔히들 말하는 '좋은 그래픽'의 기준은 여러가지가 될 수 있습니다. 화려한 셰이더, 높은 해상도 등이 있죠. 그 중에 하나는 '계단 현상'이 없는 이미지가 될 수도 있습니다. 계단 현상은 모든 디스플레이들이 네모의 픽셀을 가지고 있기 때문에 어쩔 수 없이 일어나는 현상입니다. 계단 현상은 사용자가 보기에 매우 안좋습니다. 그래서 생겨난 그래픽 기법이 안티 에일리어싱(Anti-Aliasing)입니다. 제가 전문가가 아니라서 어떤 원리인지는 자세히 설명드릴 순 없지만 기존의 안티 에일리어싱 기법들은 TAA(Temporal Anti-Aliasing), FXAA(Fast Approximate Anti-Aliasing) 등 매우 많은 종류의 기법들이 있습니다. 하지만 최근 엔비디아의 GeForce RTX시리즈가 발표되면서 DLSS(Deep Learning Super Sampling)이라는 기술이 발표되었습니다. 기존의 TAA와 DLSS의 차이 DLSS는 말 그대로 딥 러닝을 이용하여 인공지능이 스스로 판단하여 적절한 색상과 값을 판단하고 학습하면서 안티 에일리어싱을 하는 방식입니다. DLSS는 그 특성상 기존의 TAA등과 같은 기법에 비해 훨씬 적은 연산량을 필요로 합니다. TAA는 품질이 매우 훌륭하지만 시간에 따라 변화하는 이미지를 사용하기 때문에 이미지가 흐려지는 현상이 생길 수도 있고, 정지된 이미지에선 효과를 보기 어렵습니다. 하지만 DLSS는 비교적 안티 에일리어싱의 효과는 적은 경우도 있지만 그 방식이 다르기 때문에 그런 단점이 생기지 않습니다. 엔비디아의 새로운 그래픽카드인 RTX 시리즈는 RT 코어와 텐서 코어라는 새로운 프로세서가 장착되어있습니다. 그 중 RT 코어는 레이 트레이싱(Ray-Tracing)을 담당하고 바로 텐서 코어가 DLSS를 담당하게 됩니다. 기존의 안티 에일리어싱과는 달리 따로 프로세서를 사용하기 때문

차세대 그래픽의 기준 레이 트레이싱(Ray Tracing)과 GeForce RTX

최근 게임 그래픽 기술의 발달로 날이 갈 수록 게임의 그래픽은 발달하고 있었습니다. 하지만 어느정도까지 올라오자 점점 한계에 부딪쳤고, 새로운 그래픽 기술이 필요로 하던 중 NVIDIA에서 새로운 그래픽카드인 GeForce RTX시리즈를 발표했습니다. 그래픽의 재창조(Graphics Reinvented)라는 타이틀을 달고 등장한 RTX시리즈는  기존의 엔비디아 그래픽 카드와는 달리 갑자기 2000번대로 뛰었고, 브랜드도 GTX에서 RTX로 변경되었습니다. RTX 시리즈는 1000번대보다 성능 향상에 더불어 Ray-Tracing과 DLSS라는 새로운 그래픽 기법이 사용 가능하다고 발표했습니다. 그래서 이름도 Ray-Tracing의 R을 따와 RTX로 지었습니다. 기존의 3D 그래픽 기술은 플레이어의 눈을 속이는 것에 중점을 두었습니다. 하지만 레이 트레이싱은 가장 간단하지만 가장 정확한 방식의 렌더링입니다. 레이 트레이싱이라는 기술은 전역 조명(Global Illuminatuin)의 표현 기법 중 하나로,   1980년 미국의 'Turner Whitted'가 'An improved illumination model for shaded display' 라는 논문에서 처음 발표했습니다.  그래서 대부분의 레이 트레이싱 기법을 'Whitted'스타일의 레이 트레이싱이라고도 합니다. 레이 트레이싱이란 말 그대로 광선(Ray)를 추적(Tracing)하는 기술입니다. 이는 픽셀 하나하나를 통과하는 광선을 역으로 추적하는 방식으로 현실과 가장 비슷한 렌더링 기법입니다. 하지만 이 기법은 픽셀 하나하나의 광선을 계산해야 하기 때문에 연산량이 매우 높았습니다. 기존의 기술로 레이 트레이싱을 구현 해보면 매우 심한 프레임 드랍과 노이즈가 발생하였습니다. 그래서 실시간으로 상황이 변하고 연산량이 매우 높은 게임 환경에선 사용이 불가능했고, 흔히들 말하는 스타워즈 스톰 트루퍼의 갑옷 등 렌더링 시간에 제약이 없는

'Doom'의 적, 전투 시스템에 대한 분석

▲이 글의 대부분은 Game Maker's Toolkit의 What We Can Learn From Doom 영상에서 인용하였습니다. 1993년 출시된 '이드 소프트웨어'의 '둠'은 FPS게임의 역사의 큰 획을 그었습니다. 둠이 재밌는 게임으로 느껴지는 이유에는 여러가지가 있을 것입니다. 비선형적인 레벨 디자인, 다양하고 개성있는 무기들이나 그 당시에 획기적인 그래픽이 될 수도 있겠죠. 하지만 이 글에선 둠의 아이덴티티인 전투, 적에 대해 알아보겠습니다. 둠을 플레이하다 보면 플레이어들은 마치 춤을 추는 듯한 움직임을 보여줍니다. 이런 움직임은 현대의 현실감있는 FPS게임과는 확연히 다른 움직임입니다. 플레이어들은 실시간으로 적의 공격을 피하고, 빠르게 움직이면서 어떤 적을 사격할지, 어떻게, 어디로 움직일지 고민하고 선택합니다. 플레이어들이 그런 화려한 움직임을 만들게 하는 요인 중 하나는 둠의 몬스터들입니다. 신참 시절 둠의 레벨 디자인을 개발했던 2K게임즈의 'Matthias Worch'는 둠의 완성도가 높았는 이유는 모든 적들의 차이가 분명하고, 일관성이 있고 알아보기 쉬운 행동 습관들 가졌기 때문이라고 설명했습니다. 둠의 몬스터들은 개성이 있습니다. 좀비맨과 샷건 가이는 체력이 적지만 히트스캔 방식의 공격을 합니다. 임프는 천천히 날아오고 피할 수 있는 파이어볼을 발사합니다. 데몬은 플레이어를 쫓아와서 근접 공격을 합니다. 로스트 소울은 플레이어에게 직선으로 날아옵니다. 카코데몬과 바론 오브 헬은 각각 체력이 400, 1000 정도로 중간 보스급의 역할을 맡고 있습니다. 이런 디자인을 데우스 엑스의 'Harvey Smith'디자이너는 '직각의 유닛 차별화'라고 언급했습니다. 이것은 게임의 유닛을 디자인 할 때 완전히 독특한 속성(좀비맨의 히트스캔 공격, 임프의 파이어볼 등)을 가져야 하고,

게임안의 불쾌한 골짜기들(Uncanny Valley)

최근에 저는 TV에서 '알리타 : 배틀엔젤'라는 영화의 광고를 봤습니다. 제가 조금 예민하게 느꼈던건진 모르겠지만, 그 영화에서 본 '알리타'라는 이름의 사이보그 소녀 캐릭터는 비정상적으로 큰 눈을 가져 저에게 불쾌함, 약간의 혐오감을 주었습니다. 영화 '알리타: 배틀엔젤' 로봇 등의 어떤 것들이 인간을 어설프게 닮을 수록 불쾌함이 커진다는 일본의 로봇 공학자 '모리 마사히로'의 'Uncanny Valley'라는 논문이 있습니다. 이것은 사람의 모습에 크게 벗어나면 불쾌함이 적지만(디즈니 등의 애니메이션 캐릭터), 점점 사람의 모습에 가까워지면서 갑자기 불쾌한 기분이 느껴지는 구간이 생긴다는 것을 설명했습니다. 위의 그래프를 보면, 갑자기 그래프가 떨어지는 구간을 볼 수 있습니다. 이 구간이 사람들이 혐오감을 느낄 수 있는 '불쾌한 골짜기'입니다. 이 현상이 발생하는 이유로는 인간과의 이목구비 비율의 차이나 등속, 대칭의 움직임 등등이 있다고 합니다. 이런 현상은 3D모델링 등 디스플레이안에서도 일어날 수 있기 떄문에 분명 게임에서도 존재합니다. 가장 유명한 예시로는 최근 '디트로이트 : 비컴 휴먼'으로 큰 사랑을 받고 있는 '퀀틱 드림'에서 개발한 '헤비 레인'입니다. 이 게임은 캐릭터의 모델링, 모션을 모두 모션 캡쳐방식으로 제작해 그 당시에 매우 훌륭한 그래픽을 자랑했었습니다. 하지만 게임이 발매하기 전 공개된 영상에선 몇몇 사람들이 게임의 캐릭터들이 불쾌하다는 느낌을 받았습니다. '헤비레인'의 캐릭터 ▲'헤비레인' 출시 전 영상 최근에는 기술의 발전으로 불쾌한 골짜기를 유발하는 그래픽을 가진 게임들은 거의 없다시피합니다. 위에서 본 헤비레인의 제작사의 최신작인 '디트로이트 : 비컴 휴먼'에서는 매우 훌륭한 그래픽으

몬스터 헌터 : 월드의 밀도 높은 월드 디자인

2018년 출시된 몬스터 헌터 : 월드는 시리즈 사상 가장 성공한 게임이 되었습니다. 몬스터 헌터 : 월드는 기존의 방식에서 탈피하고 많은 변경점을 보여주었습니다. 그 중 하나가 전작과는 다른 오픈월드 디자인입니다. '몬스터 헌터 3rd' 'Flooded Forest'맵 '몬스터 헌터 : 월드' '고대수의 숲' 맵 과거의 몬스터 헌터 시리즈는 필드간 로딩이 존재하는 시스템이었지만, 몬스터 헌터 : 월드에서는 심리스 방식을 택해 오픈월드 게임이 되었습니다. 이것은 이 작품의 부제인 '월드'의 컨셉을 구현하기 위해 선택되었습니다. 오픈월드인 이 게임은 아름다운 하나의 생태계와 상호작용하는 환경 생물들로 이루어져있습니다. 심리스 방식의 세계가 된 몬스터 헌터는 여러 소형 동물들과 대형 몬스터들, 환경 생물들이 서로 상호작용하면서 하나의 생태계를 만들어 나가는 것을 볼 수 있습니다. 플레이어 또한 이런 심리스 방식의 세계를 경험하면서 전작과는 다른 생동감을 느낄 수 있고, 맵간의 로딩이 없기 때문에 몬스터들을 유인하는 등 조금 더 전략적이고 다채로운 플레이를 즐길 수 있게 되었습니다. 가장 먼저 보게되는 고대수의 숲은 비주얼적으로 매우 아름답다는 생각이 듭니다. 이 게임을 처음 플레이하는 사람들에게 놀라움을 주고, 또한, 밀도가 높고 고저차가 있는 등 몬스터 헌터 : 월드의 컨셉을 가장 잘 보여주는 맵입니다.                     개밋둑의 황야는 웅장하고, 개방적이며, 넓은 공간에서 전투가 이루어지고, 진흙이나 물 등 새로운 기믹이 나옵니다.                     육산호의 대지는 독기의 골짜기와 함께 플레이 중반에 등장하게 됩니다. 게임에 익숙해진 플레이어들에게 게임적, 비주얼적으로 놀라움을 주는 곳으로, 바다 생물이 육지에 있다면 어떤 형태가 될까? 하는 궁금증에서 시작되었고,

리듬 세상 시리즈의 디자인과 독창성

닌텐도의 리듬 세상 시리즈는 심플한 그래픽과 쉬운 접근성으로 남녀노소에게 인기가 많은 게임입니다. 기존의 리듬 게임은 'DJMAX'나 'beatmania'처럼 떨어지는 건반을 음악에 맞추어 클릭하는 방식의 게임이었거나, '태고의 달인'처럼 살짝 변형한 모습들이 대부분이었습니다. 하지만 리듬 세상은 기존의 리듬 게임들과는 전혀 달랐습니다. 기존의 리듬 게임은 음악에 맞춰서 그 음악을 재현한다는 느낌이었다면, 리듬 세상은 '박자감'을 이용해 게임을 만들었습니다. 박자감만 있다면 플레이할 수 있다는 점에서 진입장벽이 높던 기존의 리듬 게임과는 달리 조금만 해보면 누구나 쉽고 잘 할 수 있다는 것이 큰 특징이었습니다. 닌텐도의 철학을 잘 따른 리듬 게임이라고 볼 수 있습니다. 연습을 할 순 있지만 이 게임은 쓸데없는 튜토리얼을 하지 않습니다. 리듬 세상의 게임들은 대부분 '반응형'과 '복사형' 두가지로 이루어져 있습니다. '반응형'게임들은 어떠한 조건과 리듬에 플레이어가 반응하여 박자를 찾는 형식이고, '복사형'게임들은 앞에서 나온 박자를 플레이어가 똑같이 따라하는 방식입니다. 모든 게임들이 이 두가지 법칙에 따라 나오기 때문에, 처음 보는 게임도 기존의 게임들과 유사하기 때문에 흔히 말하는 '눈치'가 있다면 누구나 바로 클리어할 수 있습니다. '반응형'게임인 '코러스맨' '반복형'게임인 '응원단' 또한 리듬 세상의 두번째 작품에선 터치 스크린을 이용한 조작이 시작되었습니다. 이것은 초대작에서 큰 발전을 한 역할을 했습니다. 터치 스크린과 듀얼 스크린은 'NDS'의 아이덴티티라고 볼 수 있습니다. 리듬 세상은 NDS의 그런 특징을 잘 살렸고, 터치 스크린을

플레이어가 움직일때만 시간이 흐르는 액션 FPS 'SUPERHOT'

SUPER HOT 2016. 2. 25 PC, mac OS, XBOX ONE, PS4 SUPERHOT team제작 Unity Engine 'SUPERHOT'은 겉으로 보면 특이한 그래픽을 가진 평범한 FPS게임처럼 보입니다. 하지만 'SUPERHOT'의 가장 큰 특징이자 이 게임의 중심 기믹은 '플레이어가 움직일 때만 시간이 흐른다'는 것입니다. 이런 특이한 점을 이용해 적의 총알을 피하고 자르면서 적을 무찌르고 스테이지를 클리어해 나가는것이 이 게임의 목적입니다. 앞서 말한듯이 이 게임의 외형은 평범한 FPS게임이지만 하나의 특이한 기믹을 이용해 정말 특이하고 독창적인 게임이 만들어졌습니다. 정말 간단한 조작으로 마치 '마블 시네마틱 유니버스'의 '퀵실버'가 된듯한 움직임을 느낄 수가 있습니다. 이 게임도 이런 특이한 액션과 타격감, 그에 따른 성취감을 잘 활용하여 각 스테이지 끝날때 리플레이를 보여준다던가, BGM을 잘 어울리고 절제해 그 액션의 묘미를 잘 살렸습니다. 또한 주먹, 권총, 산탄총, 일본도 등 개성있고 적지않은 종류의 무기를 상황에 따라 잘 활용하고 멋있는 연출이 생겼을 때 느껴지는 느낌은 다른 게임에서는 찾아볼 수 없습니다. 'SUPERHOT'의 레벨 디자인 또한 잘 만들어져있습니다. 처음엔 쉽고 튜토리얼이라는 느낌을 받을 수 있게 만들어졌고, 뒤로 갈수록 나타나는 스토리 떡밥과 올라가는 난이도는 정말 자연스러웠습니다. 특이한 흰색의 배경과 빨간 적들 또한 이 게임에 잘 어우러졌기도 했습니다. 'SUPERHOT'게임 플레이 장면 'SUPERHOT'은 알파때부터 기대해왔던 평론가들에게 실망을 주지 않고 좋은 평가를 받았고, 'STEAM'에서도 매우 긍정적이라

'마그나복스 오디세이'부터 '조이콘'까지, 게임 컨트롤러의 역사 (3) - 'NDS'부터 '조이콘'까지

'마그나복스 오디세이'부터 '조이콘'까지, 게임 컨트롤러의 역사 'NDS '부터 '조이콘'까지 2004년 'NDS' 'NDS'는 휴대용 게임기에 터치 스크린을 더했습니다. 이것은 플레이어들에게 조금 더 직관적인 조작을 제공할 수 있었고, 무엇보다 터치 스크린을 통해 수 많은 혁신적인 게임들을 만들 수 있었습니다. 예를 들어, '리듬 세상'이라는 게임은 'NDS'의 터치 스크린과 그 손맛을 가장 잘 어울리게 만들었고, 제가 많이 즐겨하던 '만져라!'시리즈도 정말 재밌게 플레이했습니다. 'NDS'의 터치 스크린 조작은 미니 게임들을 만드는 'KETCHAPP'의 게임들같이 현대의 스마트폰 게임의 원형이라고 볼 수 있습니다. 2005년 'XBOX 360 컨트롤러' PC용 게임 패드의 대표격인 'XBOX'의 컨트롤러의 초기는 매우 거대하고 불편한 컨트롤러였습니다. 하지만 후속작인 'XBOX 360'의 컨트롤러는 유저 친화적이고, 직관적은 모양을 가지고 있습니다. 'XBOX 360 컨트롤러'는 PC를 공식적으로 지원했고, 'x-input'이라는 독자적인 입력 방식을 선택해 많은 호평을 받았습니다. 또한, 'LT'와 'RT'키는 총의 방아쇠 모양을 본따 만든 아날로그 트리거는 FPS게임이나 레이싱 게임을 즐기는 사람들에게 손맛이 배가 되는 컨트롤러였습니다. 후에 출시될 'XBOX ONE'컨트롤러 또한 PC환경에서 가장 많이 사용되기도 하고, 현대 게임 컨트롤러하면 'XBOX'의 컨트롤러가 생각되는 게임 컨트롤러의 대표입니다. 'XBOX ONE S'컨트롤러 2006년 &