SlideShare a Scribd company logo
1 of 33
Download to read offline
HTML5/JSON을 이용한
2D 범용 맵 에디터 만들기
아이펀 팩토리 부설 연구소
박순임(miyu@ifunfactory.com)
WHO AM I
• 2013 ~ iFunFactory Inc
• 2012 : NEXON Korea
• 2011 : NHN Japan
• 2008 : NCsoft Japan
!
• HTML, CSS, JavaScript, etc Web programing..
이정도는	 거뜬한	 개발자
...
3
왜 Web 인가?
HTML CSS
Unofficial JavaScript logo
Desktop Application
A.Pros
• standalone
• 빠른 응답, 풍부한 사용자 경험
• 데이터 저장을 위한 별도 서버 시스템이 

불필요하다
B. Cons
•OS별 별도의 프로그램 개발이 필요하다
•물리적 위치의 제약이 있다
•유지보수가 힘들다
Web Application
A.Pros
• 유지보수가 쉽다
• OS 별 프로그램 개발이 불필요하다
• 소프트웨어 배포가 필요하지 않다
!
• 어디서든지 인터넷을 이용해 

액세스가 가능하다
B. Cons
•Cross Browsing 이슈가 있다
•온라인 데이터 처리의 보안 이슈
•데스크톱 애플리케이션에 비해

떨어지는 조작성
간단하게 소개하는 

Web 기반 맵 에디터
Web 기반 맵 에디터가

극복해야하는 문제
문제점
1. Cross Browsing
2. 데스크톱 어플리케이션과 대등한 사용자 경험
3. 페이지 리로드 or 브라우저 종료시의 데이터 보존
4. JavaScript 의 성능
Unofficial JavaScript logo
1. Cross Browsing
각종 Library 사용으로 극복하자!
!
•JavaScript Library - jQuery
•UI Library - jQuery UI
2. 데스크톱 어플리케이션과 

대등한 사용자 경험
A. Layout Manager - jQuery UI Layout Plug-in
B. 주요 기능 단축키 지원
C. Undo/Redo 구현
A. Layout Manager - jQuery UI Layout Plug-in
• http://layout.jquery-dev.net/
• Panel의 Resize, Hide/Show 기능 지원
• 다양한 Layout 표현이 가능
B. 주요 기능 단축키 지원 (1)
• 데스크톱 어플리케이션과 대응되는 기능의 단축키 구현이 필요하다
• Map Editor 내에서는 Asset에 대해

그룹 지정 or 그룹 복사/오려두기/붙여넣기/삭제

기능이 단축키를 이용해서도 가능하도록 구현한다
B. 주요 기능 단축키 지원 (2) - 문제점
• 단축키 기능을 잘못 활용하면 사용자 Input을 받는 요소에서

기대와는 전혀 다른 액션을 취하게 된다
!
• OS별로 단축키 정의가 다르다
선택한 항목/텍스트를

클립보드에 복사
붙이기
MAC OS command + C command + V
Windows ctrl + C ctrl + V
B. 주요 기능 단축키 지원 (3) - 해결책
• 구현한 단축키 기능을 제한하는 방법
• “document.activeElement” 를 이용하여 현재 active 된 element를 확인
• element가 사용자 입력을 받는 요소인 경우에는 단축키 기능을 적용하지 않기
B. 주요 기능 단축키 지원 (4) - 해결책
• JavaScript Library
• Mousetrap : http://craig.is/killing/mice
• keymaster : https://github.com/madrobby/keymaster
• OS별 단축키 지원
• 사용자 입력 Element에 대한 처리
근데 난 손 코딩으로 처리..OTL
C. Undo/Redo 구현하기 (1)
Move 용 데이터
Undo
Redo
현재위치{“action” ..
color:
Undo/Redo Stack 구현하기
{“action” ..
{“action” ..
{“action” ..
{“action” ..
{“action” ..
C. Undo/Redo 구현하기 (2)
• JavaScript Array를 이용한 History 구현하기
• 브라우저 종료나 페이지 리로드시에도 History가 보존되도록 구현
• WebStorage API의 LocalStorage 사용
• 5MB이하로 저장
• 브라우저를 닫아도 저장된 데이터가 로컬에 남아있다
• 사용자가 직접 삭제를 하기 전에는 삭제되지 않는다
3. 데이터 보존 문제
• Auto Save -> 일정한 간격으로 Data를 Server에 저장한다
• 임시 저장 -> LocalStorage API를 이용해 Client에 저장한다
• LocalStorage 용량이 5M이므로 맵 데이터를 모두 저장하기에 용량이 부족하다
* 그러므로 Auto Save 사이의 데이터만 저장해두는 방식으로 구현한다
4. JavaScript 의 성능 문제
맵을 Load 시 표시해주어야 하는 Asset이 많은 경우, Asset을 추가하는

Script 실행 중 Browser의 멈춤 현상이나, 페이지가 먹통이 되어버리는 문제가 있음
그 외 기능
•맵 에디터 Zoom 기능 : CSS3 Transform 크기 변경 함수 Scale 사용
* CSS의 transform 속성은 엘리먼트(element)가 존재하는 

좌표공간을 transform 함수(functions) 로 변형시킬 수 있도록해준다.
! jQuery 함수 drag에서 mousemove값에 Scale 값이 미적용 되는 부분 주의
•다중 선택된 Asset의 Align 지원
•유저가 설정 가능한 GuideLine
그런데.. 

범용적으로 사용할 방법은?
범용 맵 에디터가 가져야하는 조건
• 데이터를 다양한 서버/클라이언트에 연동할 수 있어야 한다
• 맵 데이터를 서버/클라이언트에 효율적으로 배포할 수 있어야 한다
1. 다양하게 연동 가능한 데이터 (1)
• 제작된 맵 데이터를 JSON 형식으로 저장한다
• JSON의 장점
• 사람이 읽고 쓰기 편한 형식
• 더불어 기계가 분석하고 생성하기에 용이하다
• 대부분의 프로그래밍 언어들이 지원한다
• 다른 데이터로의 변경이 쉽다
!
• 이러한 장점을 바탕으로 툴에서도 사용하기 쉽고 Web에서도 사용하기 좋다
1. 다양하게 연동 가능한 데이터 (2) - Tag
• 게임 클라이언트와의 Tag 정의
• 각 Asset 의 특징이나 맵의 특징에 관해 Tagging
• 정의된 Tag에 대해 게임 클라이언트가 해석
Tag : “3:fast”

설명 : 3배 빠른 붉은 루비
3
2. 맵 데이터를 클라이언트로 전달하기 (1)
• 모든 맵을 다운로드 하도록 했을 때의 문제점
• 데이터양에 따라 다운로드 속도가 좌우된다
• 다운로드 중에는 게임을 할 수 없다
• 데이터 양이 많으면 -> 당연히 서버 비용이 증가한다
2. 맵 데이터를 클라이언트로 전달하기 (2)
마지막으로..
맵 에디터의 강점
•UI가	 쉽고	 간단하다,	 프로그래밍을	 몰라도	 맵을	 제작할	 수	 있다	 

•JSON형식의	 데이터라	 에디터에	 제한받지	 않고	 바로	 열어	 확인할	 수	 있다

•게임	 맵을	 만들고	 프로그래머의	 도움	 없이	 바로	 확인	 할	 수	 있다 

- 박모 게임 기획자
- 박모 게임 프로그래머
- 김모 디자이너
개발 중..
• Asset 배치를 그룹으로 묶어서 정의하기 기능
• Asset 배치의 모양을 그룹핑해 해당 그룹을 바로 추가할 수 있게..
• Preview 기능
• html2canvas Library 를 사용 (http://html2canvas.hertzen.com/)

하지만 Scroll 된 영역을 Capture하지 못 해 포기..
!
• 데이터 변환 지원 (XML 등)
• 쿼터뷰 맵, 타일 맵 지원
Summary
• 게임 형식이 비슷한 2D 모바일 게임을 모두 지원할 수 있는 맵 에디터 개발
• 접근이 쉽고 설치와 학습이 필요하지 않도록 Web Application 기반으로 작성
• 개발시 다양한 JavaScript Library 를 활용해 개발 시간 단축
• 맵 데이터의 전달은 Hash값을 바탕으로 필요한 데이터만 전송되도록 API 서버 구성
• 다양한 맵 형태에 대한 지원이 필요하다
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기

More Related Content

What's hot

NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지Kwangyoung Lee
 
[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피
[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피
[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피Jeong Seoyeon
 
게임 인공지능 설계
게임 인공지능 설계게임 인공지능 설계
게임 인공지능 설계ByungChun2
 
행동 기반 게임오브젝트
행동 기반 게임오브젝트행동 기반 게임오브젝트
행동 기반 게임오브젝트kgun86
 
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기강 민우
 
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdfNDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdfJongwon Kim
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)Eunseok Yi
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답
[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답
[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답PandoraCube , Sejong University
 
게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해Seungmo Koo
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013영욱 오
 
게임 개발자가 되고 싶어요
게임 개발자가 되고 싶어요게임 개발자가 되고 싶어요
게임 개발자가 되고 싶어요Lee Sangkyoon (Kay)
 
김동건, 게임팅커가 되자, 2015년 데브캣 스튜디오 워크샵
김동건, 게임팅커가 되자, 2015년 데브캣 스튜디오 워크샵김동건, 게임팅커가 되자, 2015년 데브캣 스튜디오 워크샵
김동건, 게임팅커가 되자, 2015년 데브캣 스튜디오 워크샵devCAT Studio, NEXON
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)Seungmo Koo
 
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정강 민우
 
모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기Sunnyrider
 
게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해Seungmo Koo
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화 tartist
 

What's hot (20)

NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
 
[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피
[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피
[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피
 
게임 인공지능 설계
게임 인공지능 설계게임 인공지능 설계
게임 인공지능 설계
 
행동 기반 게임오브젝트
행동 기반 게임오브젝트행동 기반 게임오브젝트
행동 기반 게임오브젝트
 
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
 
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdfNDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답
[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답
[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답
 
게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
 
게임 개발자가 되고 싶어요
게임 개발자가 되고 싶어요게임 개발자가 되고 싶어요
게임 개발자가 되고 싶어요
 
김동건, 게임팅커가 되자, 2015년 데브캣 스튜디오 워크샵
김동건, 게임팅커가 되자, 2015년 데브캣 스튜디오 워크샵김동건, 게임팅커가 되자, 2015년 데브캣 스튜디오 워크샵
김동건, 게임팅커가 되자, 2015년 데브캣 스튜디오 워크샵
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
 
모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기
 
게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
 

Viewers also liked

THE_NPCMASTER_PUBLIC
THE_NPCMASTER_PUBLICTHE_NPCMASTER_PUBLIC
THE_NPCMASTER_PUBLICkhalbora
 
NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계tcaesvk
 
NDC14 창업을결정하기전3가지자기검증
NDC14 창업을결정하기전3가지자기검증NDC14 창업을결정하기전3가지자기검증
NDC14 창업을결정하기전3가지자기검증Byunglim Park
 
NDC2014 코인박스@NDC 치킨럽포스트모템
NDC2014 코인박스@NDC 치킨럽포스트모템NDC2014 코인박스@NDC 치킨럽포스트모템
NDC2014 코인박스@NDC 치킨럽포스트모템gon
 
NDC 2014) 별바람의 기묘한 모험 1991-2014
NDC 2014) 별바람의 기묘한 모험 1991-2014NDC 2014) 별바람의 기묘한 모험 1991-2014
NDC 2014) 별바람의 기묘한 모험 1991-2014KwangSam Kim
 
[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션
[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션
[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션Nexon Korea
 
[NDC14] A Mass of Dead 스팀 입성 성공기
[NDC14] A Mass of Dead 스팀 입성 성공기[NDC14] A Mass of Dead 스팀 입성 성공기
[NDC14] A Mass of Dead 스팀 입성 성공기Mingu Heo
 
진선웅 유저수만큼다양한섬을만들자 공개용
진선웅 유저수만큼다양한섬을만들자 공개용진선웅 유저수만큼다양한섬을만들자 공개용
진선웅 유저수만큼다양한섬을만들자 공개용Sunwung Jin
 
[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현
[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현
[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현Hoyoung Choi
 
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인승명 양
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기Jinuk Kim
 
[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람
[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람
[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람Wooram Hwang
 
[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS
[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS
[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNSYounger Jo
 
NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀
NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀
NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀Young Keun Choe
 
NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]
NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]
NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]Imseong Kang
 
[ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인
[ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인 [ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인
[ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인 Jungsoo Lee
 
바라는 대로 라이터가 쓰게 만드는 시나리오 디렉팅 기법
바라는 대로 라이터가 쓰게 만드는 시나리오 디렉팅 기법바라는 대로 라이터가 쓰게 만드는 시나리오 디렉팅 기법
바라는 대로 라이터가 쓰게 만드는 시나리오 디렉팅 기법Lee Sangkyoon (Kay)
 
[NDC 14] 게임 개발사에서 개발PM(팀장)의 역할과 책임-김영웅
[NDC 14] 게임 개발사에서 개발PM(팀장)의 역할과 책임-김영웅[NDC 14] 게임 개발사에서 개발PM(팀장)의 역할과 책임-김영웅
[NDC 14] 게임 개발사에서 개발PM(팀장)의 역할과 책임-김영웅Kloud Kim
 
NDC 2014 이은석 - 온라인 게임의 창발적 플레이 디자인
NDC 2014 이은석 - 온라인 게임의 창발적 플레이 디자인NDC 2014 이은석 - 온라인 게임의 창발적 플레이 디자인
NDC 2014 이은석 - 온라인 게임의 창발적 플레이 디자인Eunseok Yi
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)내훈 정
 

Viewers also liked (20)

THE_NPCMASTER_PUBLIC
THE_NPCMASTER_PUBLICTHE_NPCMASTER_PUBLIC
THE_NPCMASTER_PUBLIC
 
NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계
 
NDC14 창업을결정하기전3가지자기검증
NDC14 창업을결정하기전3가지자기검증NDC14 창업을결정하기전3가지자기검증
NDC14 창업을결정하기전3가지자기검증
 
NDC2014 코인박스@NDC 치킨럽포스트모템
NDC2014 코인박스@NDC 치킨럽포스트모템NDC2014 코인박스@NDC 치킨럽포스트모템
NDC2014 코인박스@NDC 치킨럽포스트모템
 
NDC 2014) 별바람의 기묘한 모험 1991-2014
NDC 2014) 별바람의 기묘한 모험 1991-2014NDC 2014) 별바람의 기묘한 모험 1991-2014
NDC 2014) 별바람의 기묘한 모험 1991-2014
 
[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션
[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션
[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션
 
[NDC14] A Mass of Dead 스팀 입성 성공기
[NDC14] A Mass of Dead 스팀 입성 성공기[NDC14] A Mass of Dead 스팀 입성 성공기
[NDC14] A Mass of Dead 스팀 입성 성공기
 
진선웅 유저수만큼다양한섬을만들자 공개용
진선웅 유저수만큼다양한섬을만들자 공개용진선웅 유저수만큼다양한섬을만들자 공개용
진선웅 유저수만큼다양한섬을만들자 공개용
 
[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현
[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현
[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현
 
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
 
[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람
[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람
[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람
 
[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS
[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS
[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS
 
NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀
NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀
NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀
 
NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]
NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]
NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]
 
[ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인
[ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인 [ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인
[ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인
 
바라는 대로 라이터가 쓰게 만드는 시나리오 디렉팅 기법
바라는 대로 라이터가 쓰게 만드는 시나리오 디렉팅 기법바라는 대로 라이터가 쓰게 만드는 시나리오 디렉팅 기법
바라는 대로 라이터가 쓰게 만드는 시나리오 디렉팅 기법
 
[NDC 14] 게임 개발사에서 개발PM(팀장)의 역할과 책임-김영웅
[NDC 14] 게임 개발사에서 개발PM(팀장)의 역할과 책임-김영웅[NDC 14] 게임 개발사에서 개발PM(팀장)의 역할과 책임-김영웅
[NDC 14] 게임 개발사에서 개발PM(팀장)의 역할과 책임-김영웅
 
NDC 2014 이은석 - 온라인 게임의 창발적 플레이 디자인
NDC 2014 이은석 - 온라인 게임의 창발적 플레이 디자인NDC 2014 이은석 - 온라인 게임의 창발적 플레이 디자인
NDC 2014 이은석 - 온라인 게임의 창발적 플레이 디자인
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
 

Similar to HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기

[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈NAVER D2
 
NAVER의 웹/HTML5환경 대응 현황
NAVER의 웹/HTML5환경 대응 현황NAVER의 웹/HTML5환경 대응 현황
NAVER의 웹/HTML5환경 대응 현황NAVER Engineering
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례Jeongsang Baek
 
댓글 플러그인 아포가토
댓글 플러그인 아포가토댓글 플러그인 아포가토
댓글 플러그인 아포가토Goonoo Kim
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017devCAT Studio, NEXON
 
[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?
[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?
[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?Nts Nuli
 
[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기NAVER D2
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요Youngjae Kim
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)Sang Don Kim
 
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신Sungwoo Choo
 
[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신NAVER D2
 
장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327호상 장
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Jinuk Kim
 
OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7BYOUNG GON KIM
 
OpenSource Big Data Platform - Flamingo 소개와 활용
OpenSource Big Data Platform - Flamingo 소개와 활용OpenSource Big Data Platform - Flamingo 소개와 활용
OpenSource Big Data Platform - Flamingo 소개와 활용BYOUNG GON KIM
 
OpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform : Flamingo ProjectOpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform : Flamingo ProjectBYOUNG GON KIM
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...JinKwon Lee
 

Similar to HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기 (20)

[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
NAVER의 웹/HTML5환경 대응 현황
NAVER의 웹/HTML5환경 대응 현황NAVER의 웹/HTML5환경 대응 현황
NAVER의 웹/HTML5환경 대응 현황
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
 
댓글 플러그인 아포가토
댓글 플러그인 아포가토댓글 플러그인 아포가토
댓글 플러그인 아포가토
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
 
[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?
[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?
[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?
 
[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
 
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
 
[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신
 
장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
 
Flamingo project v4
Flamingo project v4Flamingo project v4
Flamingo project v4
 
OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7
 
OpenSource Big Data Platform - Flamingo 소개와 활용
OpenSource Big Data Platform - Flamingo 소개와 활용OpenSource Big Data Platform - Flamingo 소개와 활용
OpenSource Big Data Platform - Flamingo 소개와 활용
 
OpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform : Flamingo ProjectOpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform : Flamingo Project
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 

HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기

  • 1. HTML5/JSON을 이용한 2D 범용 맵 에디터 만들기 아이펀 팩토리 부설 연구소 박순임(miyu@ifunfactory.com)
  • 2. WHO AM I • 2013 ~ iFunFactory Inc • 2012 : NEXON Korea • 2011 : NHN Japan • 2008 : NCsoft Japan ! • HTML, CSS, JavaScript, etc Web programing.. 이정도는 거뜬한 개발자 ...
  • 3. 3 왜 Web 인가? HTML CSS Unofficial JavaScript logo
  • 4. Desktop Application A.Pros • standalone • 빠른 응답, 풍부한 사용자 경험 • 데이터 저장을 위한 별도 서버 시스템이 
 불필요하다 B. Cons •OS별 별도의 프로그램 개발이 필요하다 •물리적 위치의 제약이 있다 •유지보수가 힘들다
  • 5. Web Application A.Pros • 유지보수가 쉽다 • OS 별 프로그램 개발이 불필요하다 • 소프트웨어 배포가 필요하지 않다 ! • 어디서든지 인터넷을 이용해 
 액세스가 가능하다 B. Cons •Cross Browsing 이슈가 있다 •온라인 데이터 처리의 보안 이슈 •데스크톱 애플리케이션에 비해
 떨어지는 조작성
  • 6. 간단하게 소개하는 
 Web 기반 맵 에디터
  • 7.
  • 8.
  • 9. Web 기반 맵 에디터가
 극복해야하는 문제
  • 10. 문제점 1. Cross Browsing 2. 데스크톱 어플리케이션과 대등한 사용자 경험 3. 페이지 리로드 or 브라우저 종료시의 데이터 보존 4. JavaScript 의 성능 Unofficial JavaScript logo
  • 11. 1. Cross Browsing 각종 Library 사용으로 극복하자! ! •JavaScript Library - jQuery •UI Library - jQuery UI
  • 12. 2. 데스크톱 어플리케이션과 
 대등한 사용자 경험 A. Layout Manager - jQuery UI Layout Plug-in B. 주요 기능 단축키 지원 C. Undo/Redo 구현
  • 13. A. Layout Manager - jQuery UI Layout Plug-in • http://layout.jquery-dev.net/ • Panel의 Resize, Hide/Show 기능 지원 • 다양한 Layout 표현이 가능
  • 14. B. 주요 기능 단축키 지원 (1) • 데스크톱 어플리케이션과 대응되는 기능의 단축키 구현이 필요하다 • Map Editor 내에서는 Asset에 대해
 그룹 지정 or 그룹 복사/오려두기/붙여넣기/삭제
 기능이 단축키를 이용해서도 가능하도록 구현한다
  • 15. B. 주요 기능 단축키 지원 (2) - 문제점 • 단축키 기능을 잘못 활용하면 사용자 Input을 받는 요소에서
 기대와는 전혀 다른 액션을 취하게 된다 ! • OS별로 단축키 정의가 다르다 선택한 항목/텍스트를
 클립보드에 복사 붙이기 MAC OS command + C command + V Windows ctrl + C ctrl + V
  • 16. B. 주요 기능 단축키 지원 (3) - 해결책 • 구현한 단축키 기능을 제한하는 방법 • “document.activeElement” 를 이용하여 현재 active 된 element를 확인 • element가 사용자 입력을 받는 요소인 경우에는 단축키 기능을 적용하지 않기
  • 17. B. 주요 기능 단축키 지원 (4) - 해결책 • JavaScript Library • Mousetrap : http://craig.is/killing/mice • keymaster : https://github.com/madrobby/keymaster • OS별 단축키 지원 • 사용자 입력 Element에 대한 처리 근데 난 손 코딩으로 처리..OTL
  • 18. C. Undo/Redo 구현하기 (1) Move 용 데이터 Undo Redo 현재위치{“action” .. color: Undo/Redo Stack 구현하기 {“action” .. {“action” .. {“action” .. {“action” .. {“action” ..
  • 19. C. Undo/Redo 구현하기 (2) • JavaScript Array를 이용한 History 구현하기 • 브라우저 종료나 페이지 리로드시에도 History가 보존되도록 구현 • WebStorage API의 LocalStorage 사용 • 5MB이하로 저장 • 브라우저를 닫아도 저장된 데이터가 로컬에 남아있다 • 사용자가 직접 삭제를 하기 전에는 삭제되지 않는다
  • 20. 3. 데이터 보존 문제 • Auto Save -> 일정한 간격으로 Data를 Server에 저장한다 • 임시 저장 -> LocalStorage API를 이용해 Client에 저장한다 • LocalStorage 용량이 5M이므로 맵 데이터를 모두 저장하기에 용량이 부족하다 * 그러므로 Auto Save 사이의 데이터만 저장해두는 방식으로 구현한다
  • 21. 4. JavaScript 의 성능 문제 맵을 Load 시 표시해주어야 하는 Asset이 많은 경우, Asset을 추가하는
 Script 실행 중 Browser의 멈춤 현상이나, 페이지가 먹통이 되어버리는 문제가 있음
  • 22. 그 외 기능 •맵 에디터 Zoom 기능 : CSS3 Transform 크기 변경 함수 Scale 사용 * CSS의 transform 속성은 엘리먼트(element)가 존재하는 
 좌표공간을 transform 함수(functions) 로 변형시킬 수 있도록해준다. ! jQuery 함수 drag에서 mousemove값에 Scale 값이 미적용 되는 부분 주의 •다중 선택된 Asset의 Align 지원 •유저가 설정 가능한 GuideLine
  • 24. 범용 맵 에디터가 가져야하는 조건 • 데이터를 다양한 서버/클라이언트에 연동할 수 있어야 한다 • 맵 데이터를 서버/클라이언트에 효율적으로 배포할 수 있어야 한다
  • 25. 1. 다양하게 연동 가능한 데이터 (1) • 제작된 맵 데이터를 JSON 형식으로 저장한다 • JSON의 장점 • 사람이 읽고 쓰기 편한 형식 • 더불어 기계가 분석하고 생성하기에 용이하다 • 대부분의 프로그래밍 언어들이 지원한다 • 다른 데이터로의 변경이 쉽다 ! • 이러한 장점을 바탕으로 툴에서도 사용하기 쉽고 Web에서도 사용하기 좋다
  • 26. 1. 다양하게 연동 가능한 데이터 (2) - Tag • 게임 클라이언트와의 Tag 정의 • 각 Asset 의 특징이나 맵의 특징에 관해 Tagging • 정의된 Tag에 대해 게임 클라이언트가 해석 Tag : “3:fast”
 설명 : 3배 빠른 붉은 루비 3
  • 27. 2. 맵 데이터를 클라이언트로 전달하기 (1) • 모든 맵을 다운로드 하도록 했을 때의 문제점 • 데이터양에 따라 다운로드 속도가 좌우된다 • 다운로드 중에는 게임을 할 수 없다 • 데이터 양이 많으면 -> 당연히 서버 비용이 증가한다
  • 28. 2. 맵 데이터를 클라이언트로 전달하기 (2)
  • 30. 맵 에디터의 강점 •UI가 쉽고 간단하다, 프로그래밍을 몰라도 맵을 제작할 수 있다 
 •JSON형식의 데이터라 에디터에 제한받지 않고 바로 열어 확인할 수 있다
 •게임 맵을 만들고 프로그래머의 도움 없이 바로 확인 할 수 있다 
 - 박모 게임 기획자 - 박모 게임 프로그래머 - 김모 디자이너
  • 31. 개발 중.. • Asset 배치를 그룹으로 묶어서 정의하기 기능 • Asset 배치의 모양을 그룹핑해 해당 그룹을 바로 추가할 수 있게.. • Preview 기능 • html2canvas Library 를 사용 (http://html2canvas.hertzen.com/)
 하지만 Scroll 된 영역을 Capture하지 못 해 포기.. ! • 데이터 변환 지원 (XML 등) • 쿼터뷰 맵, 타일 맵 지원
  • 32. Summary • 게임 형식이 비슷한 2D 모바일 게임을 모두 지원할 수 있는 맵 에디터 개발 • 접근이 쉽고 설치와 학습이 필요하지 않도록 Web Application 기반으로 작성 • 개발시 다양한 JavaScript Library 를 활용해 개발 시간 단축 • 맵 데이터의 전달은 Hash값을 바탕으로 필요한 데이터만 전송되도록 API 서버 구성 • 다양한 맵 형태에 대한 지원이 필요하다