KR100870972B1 - 이기종간 프로그램 연동 방법 및 그 장치 - Google Patents
이기종간 프로그램 연동 방법 및 그 장치 Download PDFInfo
- Publication number
- KR100870972B1 KR100870972B1 KR1020080006846A KR20080006846A KR100870972B1 KR 100870972 B1 KR100870972 B1 KR 100870972B1 KR 1020080006846 A KR1020080006846 A KR 1020080006846A KR 20080006846 A KR20080006846 A KR 20080006846A KR 100870972 B1 KR100870972 B1 KR 100870972B1
- Authority
- KR
- South Korea
- Prior art keywords
- target
- api
- target api
- apis
- mapping
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은 프로그램 연동 방법 및 그 장치에 관한 것으로, 특히 이기종간 프로그램 연동 방법 및 그 장치에 관한 것이다. 본 발명의 일 측면에 따르면, 이기종간 프로그램 연동 장치가 서로 다른 기종에 사용되는 목적 API와 대상 API를 서로 연동하는 방법에 있어서, (a) 상기 목적 API의 생성에 필요한 상기 대상 API를 추출하는 단계; (b) 상기 생성될 목적 API의 수와 상기 목적 API 생성에 필요한 상기 대상 API의 수를 추출하는 단계; 및 (c) 상기 목적 API 수와 상기 대상 API 수를 서로 대응시켜 상기 대상 API를 상기 목적 API에 매핑하는 단계를 포함하는 이기종간 프로그램 연동 방법은 종래 개발된 3D 게임을 다른 기종에 포팅하는 기간을 단축할 수 있는 효과가 있다.
연동형, 플랫폼, 미들웨어 플랫폼 레이어.
Description
본 발명은 프로그램 연동 방법 및 그 장치에 관한 것으로, 특히 이기종간 프로그램 연동 방법 및 그 장치에 관한 것이다.
종래의 WIPI 플랫폼은 자바 언어의 장점을 수용하며 네이티브 바이너리의 실행 성능을 갖도록 개발된 것이다. 기존의 무선인터넷 플랫폼은 VM 기술과 네이티브 바이너리 기술로 구별된다. 두 가지 기술은 상호배타적인 특성을 가지고 있다. 즉, 일측 기술의 장점이 다른 기술의 단점이 되고, 일측 기술의 단점이 다른 기술의 장점이 되는 것이다.
VM 기술은 말 그대로 가상 기계를 사용해 프로그램을 동작시키는 것이다. 작성된 프로그램을 소프트웨어 CPU에서 동작할 수 있는 중간 코드로 변환하면 가상 기계가 해당 코드를 실제 CPU용 기계어로 번역해 실행시키는 방식이다.
이러한 기술은 자바를 통해 일반화돼 있으며 자바 가상머신은 무선인터넷 플랫폼에도 이미 적용되어 있다. 또한, C 언어의 축소판인 Mini-C를 이용한 GVM 기술이 국내에서 개발되어 서비스되고 있다.
또 다른 기술인 네이티브 바이너리 기술은 일반적으로 우리가 프로그램을 작성하고 컴파일하여 실행시키는 방법과 동일한 과정을 밟는다. 즉, 개발된 프로그램을 프로그램이 실행될 CPU에서 동작되는 기계어로 만들어 실행시키는 것이다. 이 기술을 이용한 무선인터넷 플랫폼이 퀄컴의 브루 플랫폼이다. VM 기반의 무선인터넷 플랫폼은 소프트웨어 CPU를 이용해 중간 코드를 실행 과정에 번역(Interpreting)하는 부담을 안고 있으며 이는 CPU 성능과 자원이 제한된 휴대전화기에서 사용자가 상대적으로 매우 느린 속도를 경험하게 된다. 그러나 VM 기술은 상대적인 시스템 안정성을 제공하며 완벽한 보안을 제공하는 장점을 가지고 있다.
반면, 네이티브 바이너리를 이용하는 플랫폼은 VM 기술과 달리 탑재된 CPU의 성능을 100% 활용할 수 있으므로 VM에 비해 매우 빠른 실행속도를 제공한다. 그러나 지금의 네이티브 바이너리를 사용하는 기술은 개발언어로 C/C++를 사용하고 있어 프로그램 개발자에 의해 악의적인 메모리 접근 등을 통한 시스템 안정성을 위해할 수 있는 요소를 갖고 있다. WIPI 플랫폼은 이러한 대조되는 두 가지 기술의 장점을 갖는 플랫폼으로 계획되고 개발됐다. 즉, 자바 언어의 장점을 수용하며 네이티브 바이너리의 실행 성능을 갖도록 하는 것이다.
따라서, WIPI 플랫폼은 C/C++와 자바를 기본 언어로 채택해 프로그램 개발이 가능하고, 단말기에 탑재되는 애플리케이션은 네이티브 바이너리로 만들어져 실행 성능을 보장받는다. 여기서 C/C++ 언어는 네이티브 바이너리를 생성하는 데 아 무런 문제가 없으나, 자바 언어는 기본적으로 가상 기계를 대상으로 하기 때문에 자바를 컴파일하여 단말기에서 직접 실행가능한 실행 바이너리를 어디선가 만들어야 한다. 이러한 기능을 수행하는 WIPI 구성요소가 바로 COD(Compile On Demand)다.
최근에 와서, 게임 폰의 등장으로 인한 본격적인 프리미엄급 게임 서비스의 필요성이 대두되고 있다. WIPI와 기존 Open GL 및 Direct X기반의 API를 Open GL ES기반으로 연동하고, 단말기 상에서의 게임 구동 시 유효한 성능을 구현할 수 있는 기능이 필요하다.
게임 미들웨어를 단말기에 동적 링크(Dynamic Link)방식으로 구현함으로써 게임 개발을 용이하게 하고, 단말기 환경에 최적화된 성능의 게임 엔진이 필요하다. 향후 단말기의 진화 및 구조적 개선을 염두에 두고 다양한 외부 개발환경을 수용할 수 있는 우수한 확장성을 갖춘 미들웨어(Middleware)의 설계가 필요하다.
본 발명은 종래 개발된 3D 게임을 다른 기종에 포팅하는 기간을 단축할 수 있는 이기종간 프로그램 연동 방법 및 그 장치를 제공한다.
또한, 본 발명은 다양한 모바일 게임을 제공함으로써 모바일 게임 산업의 부흥을 도모할 수 있는 이기종간 프로그램 연동 방법 및 그 장치를 제공한다.
본 발명이 제시하는 이외의 기술적 과제들은 하기의 설명을 통해 쉽게 이해될 수 있을 것이다.
본 발명의 일 측면에 따르면, 이기종간 프로그램 연동 장치가 서로 다른 기종에 사용되는 목적 API와 대상 API를 서로 연동하는 방법에 있어서, (a) 상기 목적 API의 생성에 필요한 상기 대상 API를 추출하는 단계; (b) 상기 생성될 목적 API의 수와 상기 목적 API 생성에 필요한 상기 대상 API의 수를 추출하는 단계; 및 (c) 상기 목적 API 수와 상기 대상 API 수를 서로 대응시켜 상기 대상 API를 상기 목적 API에 매핑하는 단계를 포함하는 이기종간 프로그램 연동 방법을 제시할 수 있다.
여기서, 상기 단계 (c)는, (c-1) 상기 대상 API의 구조와 상기 목적 API의 구조를 서로 비교하는 단계; 및 (c-2) 상기 대상 API의 구조가 상기 목적 API 구조 와 동일한 경우 상기 대상 API를 상기 목적 API에 직접 매핑하는 단계를 더 포함할 수 있다.
여기서, 상기 단계 (c)는, (c-3) 상기 대상 API의 구조가 상기 목적 API 구조와 유사한 경우 상기 목적 API에 필요한 인자를 상기 대상 API로부터 추출하여 상기 목적 API에 매핑하는 단계를 더 포함할 수 있다.
여기서, 상기 단계 (c)는, (c-4) 하나의 상기 대상 API가 하나의 상기 목적 API에 대응하는 경우 상기 대상 API를 상기 목적 API에 매핑하는 단계를 더 포함할 수 있다.
여기서, 상기 단계 (c)는, (c-5) 복수의 상기 대상 API가 하나의 상기 목적 API에 대응하는 경우 상기 하나의 목적 API에 필요한 인자를 상기 복수의 대상 API로부터 추출하여 상기 하나의 목적 API에 매핑하는 단계를 더 포함할 수 있다.
여기서, 상기 단계 (c)는, (c-5) 하나의 상기 대상 API가 복수의 상기 목적 API에 대응하는 경우 상기 복수의 목적 API에 필요한 인자를 상기 하나의 대상 API로부터 추출하여 상기 복수의 목적 API에 매핑하는 단계를 더 포함할 수 있다.
여기서, 상기 단계 (c)는, (c-6) 복수의 상기 대상 API가 복수의 상기 목적 API에 대응하는 경우 상기 복수의 목적 API에 필요한 인자를 상기 복수의 대상 API로부터 추출하여 상기 복수의 목적 API에 매핑하는 단계를 더 포함할 수 있다.
여기서, 상기 대상 API 또는 상기 목적 API는 DirectX, Open GL 및 Renderware 중 어느 하나일 수 있다.
여기서, 상기 대상 API는 상기 이기종간 프로그램 연동 장치와 결합된 메모리에 저장될 수 있다.
본 발명의 다른 측면에 따르면, 서로 다른 기종에 사용되는 목적 API와 대상 API를 서로 연동하는 이기종간 프로그램 연동 장치에 있어서, 상기 목적 API의 생성에 필요한 상기 대상 API를 추출하여, 상기 생성될 목적 API의 수와 상기 목적 API 생성에 필요한 상기 대상 API의 수를 추출하는 API 추출부; 및 상기 목적 API 수와 상기 대상 API 수를 서로 대응시켜 상기 목적 API에 상기 대상 API를 매핑하는 API 매핑부를 포함하는 이기종간 프로그램 연동 장치를 제시할 수 있다.
여기서, 상기 API 매핑부는 상기 대상 API의 구조와 상기 목적 API의 구조를 서로 비교하고, 상기 대상 API의 구조가 상기 목적 API 구조와 동일한 경우 상기 대상 API를 상기 목적 API에 매핑할 수 있다.
여기서, 상기 API 매핑부는 상기 대상 API의 구조가 상기 목적 API 구조와 유사한 경우 상기 목적 API에 필요한 인자를 상기 대상 API로부터 추출하여 상기 목적 API에 매핑할 수 있다.
여기서, 상기 API 매핑부는 상기 대상 API가 상기 목적 API에 대응하는 경우 상기 목적 API의 생성에 필요한 인자를 상기 대상 API로부터 추출하여 상기 목적 API에 매핑할 수 있다.
여기서, 상기 대상 API 또는 상기 목적 API는 DirectX, Open GL 및 Renderware 중 어느 하나일 수 있다.
여기서, 상기 대상 API로부터 추출되며, 상기 목적 API의 생성에 필요한 인 자를 메모리에 저장할 수 있다.
본 발명에 따른 이기종간 프로그램 연동 방법 및 그 장치는 종래 개발된 3D 게임을 다른 기종에 포팅하는 기간을 단축할 수 있는 효과가 있다.
또한, 본 발명에 따른 이기종간 프로그램 연동 방법 및 그 장치는 다양한 모바일 게임을 제공함으로써 모바일 게임 산업의 부흥을 도모할 수 있는 효과가 있다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일 치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 이하 설명되는 각 계층(어플리케이션, 레이어, 엔진 등)은 개별적 기능을 하는 장치, 유닛 또는 모듈부로서 작용한다.
본 발명에 따른 이기종간 연동형 미들웨어 플랫폼 레이어는 이기종간 연동형 프로그램 생성 장치에 포함될 수 있으며, 이하에서는 전체적인 구조를 설명하기 위해서 이기종간 연동형 프로그램 생성 장치를 중심으로 설명한다.
도 1은 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치를 포함하는 이기종 기기의 블록 구성도이다. 도 1을 참조하면, 어플리케이션(110), 미들웨어 어댑테이션 레이어(120), 라이브러리(130), 프레임워크(140), 미들웨어 플랫폼 엔진(150), 이기종 Run-time 엔진(160), 핸드셋 어댑테이션 레이어(HAL : Handset Adaptation Layer)(170), 핸드셋 하드웨어와 네이티브 시스템 소프트웨어(180) 및 필요 API(190)가 도시된다.
어플리케이션(110)은 이기종간 실행될 프로그램의 최상위 계층의 프로그램으로서, 예를 들면, 게임 프로그램이 될 수 있다. 이하에서, 자세한 설명이 필요한 경우 게임 프로그램을 위주로 설명한다. 또한, 설명의 편의를 위해서 PC 환경에서 실행되는 프로그램을 모바일 환경(예를 들면, 휴대폰, 게임폰, 포스트PC 등의 환경)에서 실행되는 프로그램으로 변경하는 경우를 중심으로 설명한다. 물론, 본 발명은 그 역의 과정에 대해서도 구현될 수 있음은 당연하다.
미들웨어 어댑테이션 레이어(120)는 이기종간 프로그램의 연동을 위해 마련되는 레이어로서, 이기종간 프로그램 연동 장치이다. 미들웨어 어댑테이션 레이어(120)는 미리 설정된 기능을 기준으로 목적 API에 상응하는 대상 API를 추출하여, 해당 기능에 대응하는 목적 API 수와 대상 API 수를 추출하는 API 추출부를 포함할 수 있다. 또한, 게임 미들웨어 어댑테이션 레이어(120)는 목적 API 수와 대상 API 수를 서로 대응시켜 목적 API에 대상 API를 매핑하는 API 매핑부를 포함할 수도 있다. 여기서, 대상 API는 변경전 API이며, 목적 API는 대상 API를 이용하여 생성된 API이다. 대상 API 또는 상기 목적 API는 DirectX, Open GL, Open GL ES 및 Renderware과 같은 함수들 중 어느 하나일 수 있다.
미들웨어 어댑테이션 레이어(120)는 Direct x를 Open GL ES에 매핑하는 경우 Windows기반에서 설계된 일반 PC게임을 쉽게 포팅할 수 있도록 Direct X 모듈을 지원한다. 모바일 3D의 대부분이 Open GL ES로 되어 있어 이를 컨버전할 수 있다.
또한, Open GL를 Open Gl ES에 매핑하는 경우 미들웨어 어댑테이션 레이어(120)는 Linux기반에서 설계된 게임 및 기타 Open GL로 개발된 게임 및 콘텐츠를 쉽게 포팅 할 수 있도록 지원한다. Open GL ES의 경우 Open GL의 일부 기능만을 지원하므로 지원하지 않는 기능을 추가할 수 있다.
또한, Renderware를 Open GL ES에 매핑하는 경우 미들웨어 어댑테이션 레이 어(120)는 PS2, PS3, X-BOX, GameCube등의 콘솔기기 및 PC와 PSP, N-Gage등의 Cross-Platform 개발환경인 Renderware로 개발된 게임을 쉽게 포팅할 수 있도록 지원한다. 미들웨어 어댑테이션 레이어(120)는 플레이스테이션게임 및 기타 플랫폼 게임을 쉽게 컨버젼하기 위해서 지원할 수 있다.
또한, Open GL ES 기반 확장 라이브러리를 지원하는 경우 미들웨어 어댑테이션 레이어(120)는 Open GL ES칩이 내장된 휴대폰 및 모바일 단말기에 기본 API를 기반으로 확장된 기능과 성능 향상을 위하여 개발 라이브러리를 제공할 수 있다.
라이브러리(130)는 변경된 후의 프로그램에서 실행될 라이브러리의 집합이다. 예를 들면, 라이브러리(130)는 이동 통신 단말기 및 포스트PC 플랫폼에 최적화된 게임 라이브러리가 될 수 있다. 라이브러리(130)의 종류는 그래픽, 애니메이션, 사운드, Physics, AI, Ext 등이 될 수 있다.
프레임워크(140)는 모바일 환경의 프레임워크, 즉, 플랫폼, H/W, I/F 등을 지칭한다.
미들웨어 플랫폼 엔진(150)은 미들웨어 엔진과 모바일 환경의 엔진을 선택하는 엔진 셀렉터로 구성된다. 여기서, 미들웨어 엔진은 복수의 대상 API에 인덱스를 부여하여 메모리에 저장하는 저장 모듈부, 생성될 목적 API 생성에 필요한 대상 API에 상응하는 인덱스를 호출하는 인덱스 호출부, 인덱스에 상응하는 대상 API를 이용하여 목적 API를 생성하는 API 생성부를 포함할 수 있다.
여기서, 저장 모듈부는 대상 API로부터 목적 API가 실행되는 플랫폼에 필요한 코드를 추출하여 메모리에 저장할 수 있다. 이 경우 인덱스 호출부는 인덱스에 상응하는 코드를 더 호출하고, API 생성부는 대상 API의 코드를 조합하여 목적 API를 생성할 수 있다.
즉, 미들웨어 플랫폼 엔진(150)은 미들웨어 어댑테이션 레이어(120)에서 API별, 기능별, 구조별로 선택된 각각의 함수들로부터 목적 API를 생성할 수 있다.
이기종 Run-time 엔진(160), 핸드셋 어댑테이션 레이어(170) 및 핸드셋 하드웨어와 네이티브 시스템 소프트웨어(180)는 각각 모바일 환경에서 기존에 구현되어 있는 각각의 계층이다. 즉, 이들은 모바일 환경의 구현을 위해 마련된 H/W와 S/W이며, 이들은 필요 API(190)인 2D API, 3D API, M&U API, Eglx API, 확장 API와 연동된다.
도 2는 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치의 동작을 도시한 블록 구성도이다. 도 2를 참조하면, 대상 API(210), 제2 플랫폼 구조(220)가 도시된다. 제2 플랫폼 구조(220)는 미들웨어 어댑테이션 레이어(225),미들웨어 어댑테이션 레이어를 위한 엔진 구조(230), 미들웨어 플랫폼 엔진(240), 소프트웨어 3D 엔진(250), 목적 API(260)를 포함한다. 상술한 바와의 차이점을 위주로 설명한다.
대상 API(210)는 DirectX(213), Open GL/Open GL ES(215) 및 Renderware(217)이 될 수 있다. 대상 API(210)에서 사용되는 함수 구조와 메모리 구조는 목적 API(260)에서 사용되는 함수 구조와 메모리 구조와 서로 다르다. 따라서, 미들웨어 어댑테이션 레이어(225), 미들웨어 어댑테이션 레이어를 위한 엔진 구조(230), 미들웨어 플랫폼 엔진(240)에서 함수의 구조를 변경하여 대상 API(210)를 제2 플랫폼 구조(220)에 맞게 목적 API(260)를 생성한다.
미들웨어 어댑테이션 레이어를 위한 엔진 구조(230)는 미들웨어 어댑테이션 레이어(225)에 목적 API(260)에 맞게 추출된 대상 API(210)의 각각의 함수를 미들웨어 플랫폼 엔진(240)을 위한 구조로 변경한다.
미들웨어 플랫폼 엔진(240)은 미들웨어 엔진(243)과 엔진 셀렉터(245)를 포함할 수 있다. 미들웨어 엔진(243)은 상술한 바와 같이 대상 API의 각각의 함수를 이용하여 목적 API를 생성한다. 생성된 목적 API는 엔진 셀렉터(245)에 의해 상응하는 소프트웨어 3D 엔진(250)에서 실행될 수 있도록 한다.
소프트웨어 3D 엔진(250)은 엔진 셀렉터(245)로부터 이에 상응하는 API를 입력받아 목적 API(260)을 실행한다. 여기서, 소프트웨어 3D 엔진(250)은 3D의 경우 실행하는 엔진이며, 본 발명이 3D에 한정되지 않음은 당연하다.
도 3은 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치가 구동되는 이기종 기기의 블록 구성도이다. 상술한 바와의 차이점을 위주로 설명한다.
미들웨어 플랫폼 엔진(150)에 의해 생성된 목적 API는 제2 플랫폼 구조(350)에서 실행된다. 제2 플랫폼 구조(350)는 HAL 또는 핸드셋 하드웨어와 네이티브 시스템 소프트웨어(353), PDA 또는 모바일 셋(356), OS(Window/Linux/Unix/Mac)을 선택적으로 채택하여 구동될 수 있다.
따라서, 목적 API는 미들웨어 플랫폼 엔진(150)에 의해 제2 플랫폼 구 조(350)에 상응하여 변경될 수 있다.
이상에서 이기종간 연동형 프로그램 생성 장치를 일반적으로 도시한 블록 구성도를 설명하였으며, 이하에서는 첨부 도면을 참조하여, 본 발명에 따른 이기종간 연동형 프로그램 생성 장치에서 API 함수가 변형되는 구체적인 실시예를 설명하기로 한다. 본 발명이 이러한 실시예에 한정되지 않음은 당연하다.
도 4는 본 발명의 제1실시예에 따른 이기종간 연동형 프로그램 생성 장치가 API 함수를 생성하는 방법을 도시한 도면이다.
본 발명의 제1실시예는 하나의 대상 API(210)가 하나의 목적 API에 대응하는 경우 상술한 바와 같이 미들웨어 플랫폼 엔진(240)이 하나의 목적 API에 필요한 인자(420)를 대상 API의 인자(410)로부터 추출하여 하나의 목적 API를 생성하는 경우이다. 여기서, 인자(410)는 대상 API(210)의 함수 또는 코드로부터 추출되어 목적 API를 형성하는데 필요한 구성 요소가 될 수 있다. 목적 API에 필요한 인자(420)는 미들웨어 플랫폼 엔진(240)에 의해서 목적 API 생성에 이용될 수 있다.
하나의 대상 API(210)가 하나의 목적 API에 대응하는 경우 하나의 API의 함수 또는 코드를 분석하여 필요한 인자만을 추출함으로써, 간편하게 목적 API를 생성할 수 있다.
또한, 이러한 인자들을 추출하기 위해서 API 추출부 또는 미들웨어 플랫폼 엔진(240)은 대상 API의 구조와 목적 API의 구조를 서로 비교할 수 있다. 비교 결 과 그 구조가 같은 경우 미들웨어 플랫폼 엔진(240)은 대상 API를 바로 목적 API로 변환할 수 있다. 또한, 비교 결과 그 구조가 서로 동일하지는 않고, 유사한 경우 API 추출부 또는 미들웨어 플랫폼 엔진(240)은 유사한 인자를 추출하고 이를 이용하여 목적 API를 생성할 수 있다.
또한, 여기서 추출된 인자(410, 420)는 메모리에 저장되어 필요시 메모리로부터 호출되어 사용될 수 있다. 추출된 인자(410, 420)는 그 전체가 메모리에 저장될 수도 있고, 인덱스 또는 메모리 주소가 메모리에 저장되어 필요시 해당 인덱스 또는 메모리 주소에 의해 호출될 수 있다.
도 5는 본 발명의 제2실시예에 따른 이기종간 연동형 프로그램 생성 장치가 API 함수를 생성하는 방법을 도시한 도면이다.
본 발명의 제2실시예는 하나의 대상 API(210)가 복수의 목적 API에 대응하는 경우 복수의 목적 API에 필요한 인자(520, 525)를 대상 API의 인자(510)로부터 추출하여 복수의 목적 API를 생성하는 경우이다. 여기서, 인자(510)는 대상 API(210)의 함수 또는 코드로부터 추출되어 목적 API를 형성하는데 필요한 구성 요소인 인자(520, 525)로 활용될 수 있다.
여기서, 하나의 대상 API(210)로부터 추출된 인자(510)는 복수의 목적 API에 대응되는 경우를 설명하였으나, 복수의 인자(520, 525)가 하나의 목적 API를 형성할 수도 있다.
도 6은 본 발명의 제3실시예에 따른 이기종간 연동형 프로그램 생성 장치가 API 함수를 생성하는 방법을 도시한 도면이다.
본 발명의 제3실시예는 복수의 대상 API(210)가 하나의 목적 API에 대응하는 경우 하나의 목적 API에 필요한 인자(520)를 복수의 대상 API의 인자(610, 615)로부터 추출하여 하나의 목적 API를 생성하는 경우이다.
또한, 도 7은 복수의 대상 API(210)가 복수의 목적 API에 대응하는 경우 복수의 목적 API에 필요한 인자(720, 725)를 복수의 대상 API의 인자(710, 715)로부터 추출하여 복수의 목적 API를 생성하는 경우이다. 물론, 상술한 바와 같이 목적 API에 필요한 복수의 인자(720, 725)들은 하나의 목적 API를 형성할 수도 있다.
도 8은 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치 중 프로그램 개발 툴의 블록 구성도이다. 도 8을 참조하면, 원천 데이터 리소스(810, 850), 리소스 컨버터(820), 툴(830), 소스 컨버터(840), 익스포터(860), API 연결 List(870), 프로그램 소스(880)가 도시된다. 프로그램이 게임 프로그램인 경우를 중심으로 설명한다.
본 발명의 실시예에 따른 프로그램 개발 툴은 대상 API로부터 소정의 기능에 상응하는 함수를 추출하는 함수 추출부와, 함수에 해당하는 메모리 주소를 생성하는 메모리 주소 생성부와, 메모리 주소를 호출하여 목적 API를 생성시 필요한 대상 API의 함수를 추출하고 이를 이용하여 목적 API를 생성하는 API 변환부를 포함할 수 있다.
여기서, 목적 API를 생성하는 필요한 함수는 블록의 형태로 별도로 정해져서 메모리에 저장된다. 이후 저장된 함수의 메모리 주소를 호출하고 필요한 함수를 추출하여 목적 API를 생성할 수 있다.
원천 데이터 리소스(810, 850)는 변경되기 전의 데이터들로서 3D Object, Image, Sound, 3D Max/Light wave 등이 될 수 있다.
리소스 컨버터(820)는 대상 API의 함수의 리소스를 목적 API가 적용되는 플랫폼 포맷으로 변환한다. 리소스 컨버터(820)는 이기종기기에서 동작하는 프로그램(예를 들면, 게임)의 2D, 3D, 애니메이션, Moving Picture, 사운드 등의 리소스(Resource)를 제2 플랫폼 포맷(예를 들면, 모바일용 포맷)으로 변환하고, 최적화 하는 기능을 제공한다.
툴(830)은 애니메이션, 맵, effect, UI와 관련된 데이터를 제2 플랫폼 포맷에 적합하게 변환한다. 예를 들면, 툴(830)의 애니메이션 툴은 3D Max, Lightwave등에서 제작된 애니메이션을 Mesh별로 결합한다.
툴(830)의 매핑 툴은 배경과 관련하여 Map Tile Pattern 설정을 툴상에서 지정할 수 있으며, 지정된 Map Tile을 맵상에 자동으로 조합하여 Cel단위로 지정해준다. 또한, 매핑 툴은 제작하려고 하는 맵의 사이즈를 2에 n승 단위로 세팅하여, 세팅된 지형의 고저를 Bitmap Pixel의 RGB값을 이용하는 방법과 툴상에 지원하는 브러쉬로 이용하는 방법에 의해 Cell별로 고저를 설정할 수 있다. 또한, 매핑 툴은 지형의 Cell별로 Vertex 컬러 세팅을 지원하며, 이는 Character에 영향을 줄 수 있다. 또한, 매핑 툴은 포그 및 라이트 설정기능(맵 별로 라이트의 밝기와 컬러를 지 정할 수 있으며, 포그의 색상 농도를 지정 가능한 기능)을 가질 수 있다. 이 경우 매핑 툴은 맵을 구성하는 오브젝트를 Cell단위로 할당하여 배치할 수 있다. 또한, 매핑 툴은 Cell 단위로 속성(이동불가, 이동가, 안전지대)을 지정할 수 있으며, 이러한 기능에 의해서, 오브젝트 객체별로 이동경로를 지정할 수 있다. 예를 들면, 몹, NPC, 캐릭터 각각의 객체별로 독립적인 이동경로가 지정될 수 있다.
툴(830)의 UI 툴은 인터페이스 제작 시 프로그래머의 개입을 최소화하였으며, 그래픽데이터 사용량을 최적화할 수 있다. 이 중 리소스 툴은 TGA, BMP 및 각종 파일을 지원하며, Bitmap에서 필요한 리소스들을 원하는 사이즈로 잘라서 ID를 부여한다. 또한, 리소스 툴은 인터페이스에 필요한 리소스의 자동조합 패턴을 생성 버턴의 액션을 지정한다.
또한, UI 툴 중 인터페이스 툴은 게임을 구성하는 인터페이스를 폴더 별로 구분하여 관리하고, 인터페이스를 구성한다. 또한, 인터페이스 툴은 상술한 리소스 툴에서 지정한 ID와 패턴을 이용하여, 원하는 인터페이스를 제작한다. 인터페이스 툴은 인터페이스의 초기 오픈 위치를 부여하고, 단축키를 부여하며, 인터페이스에 포함되는 모든 텍스트들을 별도의 파일 별로 관리하고, 각 인터페이스 별로 Alpha Blend의 정도를 설정할 수 있다.
소스 컨버터(840)는 대상 API의 라이브러리를 목적 API가 적용되는 플랫폼 포맷으로 변환한다. 소스 컨버터(840)는 Direct X, Open GL, Renderware Graphic 라이브러리를 모바일용 게임 미들웨어 플랫폼 구조에 맞게 자동 변환하는 기능을 제공한다. 소스 컨버터(840)는 Direct X, Renderware, Open GL의 라이브러리를 미 들웨어 플랫폼의 라이브러리로 변환한다. (예를 들면, DirectX-> Open GLes/ Renderware-> Open GLes)
익스포터(860)는 대상 API의 콘텐츠를 목적 API가 적용되는 플랫폼 포맷으로 변환한다. 익스포터(860)는 모바일 3D게임에서 사용되는 2D그래픽, 3D그래픽, 동영상등의 그래픽을 포팅하고자 하는 모바일 환경에서 제공하고 있는 포맷으로 변환하는 기능을 제공한다. 예를 들면, 익스포터(860)는 3Max에서는 3D로 제작된 그래픽을 모바일에 사용할 3D포맷으로 변경해주는 기능을 하며, Photoshop, AVI등의 각종 콘텐츠를 모바일용 포맷으로 변환하는 Explorer 프로그램을 제공한다.
API 연결 List(870)는 Direct X, Renderware, Open GL의 라이브러리를 미들웨어 플랫폼의 라이브러리로 연결하는 API 연결 List값 등이 될 수 있다.
프로그램 소스(880)는 변경되기 전 프로그램 소스들이다. 예를 들면, 프로그램 소스(880)는 게임 프로그램 소스 및 콘텐츠 프로그램 소스 등이 될 수 있다. 여기서, 프로그램 소스(880)는 후술할 도 11의 컴파일러에서 컴파일시 생성되는 변경되기 전의 데이터들이 될 수 있다. API 연결 List(870)와 프로그램 소스(880)는 서로 선택적으로 구비될 수 있다.
도 9는 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치 중 프로그램 개발 툴에 의한 프로그램 개발 환경을 도시한 도면이다. 도 9를 참조하면, 본 발명의 실시예에 따른 기획자(910), 프로그래머(920), 디자이너(930)의 참여 기능별 구성이 도시된다.
기획자(910)는 text 입력, 메뉴 프레임 구성, 키 이벤트 처리, 시뮬레이션 테스트, 데이터 로딩, 메모리 관리(915)를 담당한다.
프로그래머(920)는 게임엔진을 개발하고, 폰 테스트를 수행한다.
디자이너(930)는 키 이벤트 처리, 메뉴/화면구성, 이미지 수정, 화면 배치, 시뮬레이션 테스트(935)를 수행한다.
기획자(910), 프로그래머(920), 디자이너(930)는 상술한 바와 같은 UI 툴 & 게임 에디터(940)인 프로그램 개발 툴을 통해서 효율적으로 게임 프로그램을 개발할 수 있다. UI 툴 & 게임 에디터(940)에서 개발된 게임은 게임 플레이 엔진(950)에 의해 게임 프로그램(960)으로 생성된다.
도 10은 본 발명의 실시예에 따른 프로그램 개발 툴의 블록 구성도이다. 도 10을 참조하면, 클래스 계층 구조(1010), UI툴(1020), 익스포터(Exporter)(1030), 오브젝트(Object)(1040), 이벤트(Event)(1050), Time Line(1060), 시뮬레이터(Simulator)(1070)이 도시된다.
클래스 계층 구조(1010)는 동일한 기능과 리소스의 상속 및 재사용이 가능한 클래스 계층 구조로 설계된다.
UI툴(1020)은 기존의 이미지 데이터와 그래픽 데이터들을 모아서 데이터를 생성한다.
익스포터(1030)는 이미지(BMP, PNG), 그래픽, 텍스트, 사운드에 해당하는 원시 소스를 받아서 제2 플랫폼 포맷에 맞게 재가공하여, UI 툴 & 게임 에디 터(940)에 사용가능한 오브젝트(1040)를 생성한다. 이러한 오브젝트는 Time Line(1060)에 배열되어 프레임에 배치된 리소스와 이벤트(1050)을 시간의 흐름에 따라 시뮬레이터(1070)에서 구동이 가능하도록 한다.
시뮬레이터(1070)는 게임개발에 있어서 직접 단말기 상에 프로그램을 업로드하여 발생하는 문제를 사전에 해결할 수 있도록 디버깅 기능 및 게임 플레이가 가능하다.
도 11은 본 발명의 실시예에 따른 프로그램 개발 툴의 중간언어 및 컴파일 과정을 도시한 도면이다. 도 11을 참조하면, 스캐너(1110, 1140, 1170), 파서(1120, 1150, 1180), 중간언어 생성부(1130), 어셈블러 생성부(1160), 이진화 코드 생성부(1190)가 도시된다.
스캐너(1110, 1140, 1170)와 파서(1120, 1150, 1180)는 중간언어 생성, 어셈블러 생성, 이진화 코드 생성을 위해서 C/CPP 또는 전용 언어코드를 읽어 들여 스캔 후 문법 지시적 변환에 의해 파싱 과정에서 직접 코드를 생성하거나 ASP 등의 중간 표현을 구성한 후 이러한 중간 표현으로부터 해당 작업을 수행할 수 있다.
중간언어 생성부(1130)는 컴파일러의 전단부에서 소스 프로그램을 입력으로 받아 중간 언어를 생성한다. 소스 프로그램은 어휘 분석과 구문 분석 과정을 거처 중간 표현을 생성하게 되며 중간언어 생성부(1130)에 의해 중간 언어로 번역된다. 이때 중간언어 생성부(1130)는 문장의 의미를 분석하고 옳은가를 검사하는 의미 분석 과정을 병행한다. 의미 분석을 수행함으로서 적절한 코드의 생성이 가능하게 되 며 또한 문법적으로는 옳으나 의미적으로는 틀린 문장을 검사할 수 있다. 의미 분석 상에 발생한 에러를 컴파일러 사용자에게 알려 줌으로써 에러 수정을 용이하게 한다. 문법적 및 의미적으로 옳은 문장은 중간 언어로 번역될 수 있다. 중간 언어를 생성하는 방법에는 문접-지시적 변환에 의해 파싱 과정에서 직접 코드를 생성하는 방법과 파스 트리나 AST 등 중간 표현을 구성한 후 이러한 중간 표현으로부터 중간 코드를 생성하는 방법으로 나눌 수 있다. 본 발명의 실시예에 따르면, 중간 표현으로 AST를 사용하고 중간 언어로 게임전용 중간 언어를 사용하였으나, 본 발명이 이에 한정되지 않음은 당연하다.
어셈블러 생성부(1160)는 중간언어 생성과 같은 과정을 거쳐서 어셈블러를 생성하고, 이진화 코드 생성부(1190)도 같은 과정에 의해서 이진화 코드를 생성한다.
도 12는 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치의 메모리 사용 구성도이다. 도 12를 참조하면, 제1 플랫폼 함수(1210), 미들웨어 플랫폼 엔진(1220), 제2 플랫폼 구조(1230)가 도시된다.
제1 플랫폼 함수(1210)와 미들웨어 플랫폼 엔진(1220)는 상술한 바와 같이 각각 API 함수(DirectX, Open GL, Open GL ES 및 Renderware 등)와 본 발명에 따른 엔진이다.
제2 플랫폼 구조(1230)는 H/W와 S/W에 따라 그 구조 및 메모리의 구조가 서로 다르기 때문에 사용되는 미들웨어 플랫폼 엔진(1220)에 호환되는지에 따라 구동 하는 메모리 구조가 다르게 할당된다. 예를 들면, 멀티라이트, 범퍼 맵과 같은 경우 OPEN GL ES에서는 지원하지 않으므로, 이러한 경우 H/W에서 사용되는 구조와 메모리 구조를 사용할 수 없다. 이 경우 S/W에서 사용되는 구조와 메모리 구조를 별도로 할당하여 사용할 수 있다.
도 13은 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치의 UI 툴과 메모리의 관계를 도시한 도면이다. 도 13을 참조하면, UI 명령에 필요한 공동 메모리(1310), UI 실행명령어(1320), 함수 API(1333, 1336, 1339)가 도시된다.
UI 툴에서 만들어진 명령대로 함수를 호출하고, 호출된 함수들은 포인터만을 가지고 접근한다. 이 경우 기본적인 정보 교환은 UI 명령에 필요한 공동 메모리(1310)를 통해 수행된다. 즉, UI 명령에 필요한 공동 메모리(1310)는 변수나 구조가 전달되는 매개체로서 역할을 한다.
따라서, UI 실행명령어(1320)는 상술한 인덱스 호출부의 기능과 같이 UI 명령에 필요한 공동 메모리(1310)를 참조하며, 필요한 함수 API(1333, 1336, 1339)를 호출한다.
상술한 본 발명의 실시예에 따른 이기종간 프로그램 연동 방법, 이기종간 연동형 프로그램 개발 방법은 기록매체에 저장된 후 소정의 장치, 예를 들면, 이동 통신 단말기와 결합하여 수행될 수 있다. 여기서, 기록매체는 하드 디스크, 비디오 테이프, CD, VCD, DVD와 같은 자기 또는 광 기록매체이거나 또는 오프라인 또는 온 라인 상에 구축된 클라이언트 또는 서버 컴퓨터의 데이터베이스일 수도 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
도 1은 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치를 포함하는 이기종 기기의 블록 구성도.
도 2는 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치의 동작을 도시한 블록 구성도.
도 3은 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치가 구동되는 이기종 기기의 블록 구성도.
도 4는 본 발명의 제1실시예에 따른 이기종간 연동형 프로그램 생성 장치가 API 함수를 생성하는 방법을 도시한 도면.
도 5는 본 발명의 제2실시예에 따른 이기종간 연동형 프로그램 생성 장치가 API 함수를 생성하는 방법을 도시한 도면.
도 6은 본 발명의 제3실시예에 따른 이기종간 연동형 프로그램 생성 장치가 API 함수를 생성하는 방법을 도시한 도면.
도 7은 본 발명의 제4실시예에 따른 이기종간 연동형 프로그램 생성 장치가 API 함수를 생성하는 방법을 도시한 도면.
도 8은 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치 중 프로그램 개발 툴의 블록 구성도.
도 9는 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치 중 프로그램 개발 툴에 의한 프로그램 개발 환경을 도시한 도면.
도 10은 본 발명의 실시예에 따른 프로그램 개발 툴의 블록 구성도
도 11은 본 발명의 실시예에 따른 프로그램 개발 툴의 중간언어 및 컴파일 과정을 도시한 도면.
도 12는 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치의 메모리 사용 구성도.
도 13은 본 발명의 실시예에 따른 이기종간 연동형 프로그램 생성 장치의 UI 툴과 메모리의 관계를 도시한 도면.
<도면의 주요부분에 대한 부호의 설명>
110 : 어플리케이션
120 : 미들웨어 어댑테이션 레이어
130 : 라이브러리
140 : 프레임워크
150 : 미들웨어 플랫폼 엔진
160 : 이기종 Run-time 엔진
170 : 핸드셋 어댑테이션 레이어
180 : 핸드셋 하드웨어와 네이티브 시스템 소프트웨어
190 : 필요 API
Claims (15)
- 이기종간 프로그램 연동 장치가 서로 다른 기종에 사용되는 목적 API와 대상 API를 서로 연동하는 방법에 있어서,(a) 상기 목적 API의 생성에 필요한 상기 대상 API를 추출하는 단계;(b) 상기 생성될 목적 API의 수와 상기 목적 API 생성에 필요한 상기 대상 API의 수를 추출하는 단계; 및(c) 상기 목적 API 수와 상기 대상 API 수를 서로 대응시켜 상기 대상 API를 상기 목적 API에 매핑하는 단계를 포함하는 이기종간 프로그램 연동 방법.
- 제1항에 있어서,상기 단계 (c)는,(c-1) 상기 대상 API의 구조와 상기 목적 API의 구조를 서로 비교하는 단계; 및(c-2) 상기 대상 API의 구조가 상기 목적 API 구조와 동일한 경우 상기 대상 API를 상기 목적 API에 직접 매핑하는 단계를 더 포함하는 것을 특징으로 하는 이기종간 프로그램 연동 방법.
- 제2항에 있어서,상기 단계 (c)는,(c-3) 상기 대상 API의 구조가 상기 목적 API 구조와 유사한 경우 상기 목적 API에 필요한 인자를 상기 대상 API로부터 추출하여 상기 목적 API에 매핑하는 단계를 더 포함하는 것을 특징으로 하는 이기종간 프로그램 연동 방법.
- 제1항에 있어서,상기 단계 (c)는,(c-4) 하나의 상기 대상 API가 하나의 상기 목적 API에 대응하는 경우 상기 대상 API를 상기 목적 API에 매핑하는 단계를 더 포함하는 것을 특징으로 하는 이기종간 프로그램 연동 방법.
- 제1항에 있어서,상기 단계 (c)는,(c-5) 복수의 상기 대상 API가 하나의 상기 목적 API에 대응하는 경우 상기 하나의 목적 API에 필요한 인자를 상기 복수의 대상 API로부터 추출하여 상기 하나의 목적 API에 매핑하는 단계를 더 포함하는 것을 특징으로 하는 이기종간 프로그 램 연동 방법.
- 제1항에 있어서,상기 단계 (c)는,(c-5) 하나의 상기 대상 API가 복수의 상기 목적 API에 대응하는 경우 상기 복수의 목적 API에 필요한 인자를 상기 하나의 대상 API로부터 추출하여 상기 복수의 목적 API에 매핑하는 단계를 더 포함하는 것을 특징으로 하는 이기종간 프로그램 연동 방법.
- 제1항에 있어서,상기 단계 (c)는,(c-6) 복수의 상기 대상 API가 복수의 상기 목적 API에 대응하는 경우 상기 복수의 목적 API에 필요한 인자를 상기 복수의 대상 API로부터 추출하여 상기 복수의 목적 API에 매핑하는 단계를 더 포함하는 것을 특징으로 하는 이기종간 프로그램 연동 방법.
- 제1항에 있어서,상기 대상 API 또는 상기 목적 API는 DirectX, Open GL 및 Renderware 중 어느 하나인 것을 특징으로 하는 이기종간 프로그램 연동 방법.
- 제1항 내지 제8항 중 어느 한 항에 있어서,상기 대상 API는 상기 이기종간 프로그램 연동 장치와 결합된 메모리에 저장되는 것을 특징으로 하는 이기종간 프로그램 연동 방법.
- 서로 다른 기종에 사용되는 목적 API와 대상 API를 서로 연동하는 이기종간 프로그램 연동 장치에 있어서,상기 목적 API의 생성에 필요한 상기 대상 API를 추출하여, 상기 생성될 목적 API의 수와 상기 목적 API 생성에 필요한 상기 대상 API의 수를 추출하는 API 추출부; 및상기 목적 API 수와 상기 대상 API 수를 서로 대응시켜 상기 목적 API에 상기 대상 API를 매핑하는 API 매핑부를 포함하는 이기종간 프로그램 연동 장치.
- 제10항에 있어서,상기 API 매핑부는 상기 대상 API의 구조와 상기 목적 API의 구조를 서로 비교하고, 상기 대상 API의 구조가 상기 목적 API 구조와 동일한 경우 상기 대상 API를 상기 목적 API에 매핑하는 것을 특징으로 하는 이기종간 프로그램 연동 장치.
- 제11항에 있어서,상기 API 매핑부는 상기 대상 API의 구조가 상기 목적 API 구조와 유사한 경우 상기 목적 API에 필요한 인자를 상기 대상 API로부터 추출하여 상기 목적 API에 매핑하는 것을 특징으로 하는 이기종간 프로그램 연동 장치.
- 제10항에 있어서,상기 API 매핑부는 상기 대상 API가 상기 목적 API에 대응하는 경우 상기 목적 API의 생성에 필요한 인자를 상기 대상 API로부터 추출하여 상기 목적 API에 매핑하는 것을 특징으로 하는 이기종간 프로그램 연동 장치.
- 제10항에 있어서,상기 대상 API 또는 상기 목적 API는 DirectX, Open GL 및 Renderware 중 어느 하나인 것을 특징으로 하는 이기종간 프로그램 연동 장치.
- 제10항 내지 제14항 중 어느 한 항에 있어서,상기 대상 API로부터 추출되며, 상기 목적 API의 생성에 필요한 인자를 메모리에 저장하는 것을 특징으로 하는 이기종간 프로그램 연동 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20070006770 | 2007-01-22 | ||
KR1020070006770 | 2007-01-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080069148A KR20080069148A (ko) | 2008-07-25 |
KR100870972B1 true KR100870972B1 (ko) | 2008-12-01 |
Family
ID=39644652
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080006846A KR100870972B1 (ko) | 2007-01-22 | 2008-01-22 | 이기종간 프로그램 연동 방법 및 그 장치 |
KR1020080006847A KR100876607B1 (ko) | 2007-01-22 | 2008-01-22 | 이기종간 프로그램 연동 방법 및 그 장치 |
KR1020080006844A KR100876605B1 (ko) | 2007-01-22 | 2008-01-22 | 이기종간 연동형 프로그램 생성 장치 |
KR1020080006845A KR100876606B1 (ko) | 2007-01-22 | 2008-01-22 | 이기종간 연동형 프로그램 개발 방법 및 그 개발 장치 |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080006847A KR100876607B1 (ko) | 2007-01-22 | 2008-01-22 | 이기종간 프로그램 연동 방법 및 그 장치 |
KR1020080006844A KR100876605B1 (ko) | 2007-01-22 | 2008-01-22 | 이기종간 연동형 프로그램 생성 장치 |
KR1020080006845A KR100876606B1 (ko) | 2007-01-22 | 2008-01-22 | 이기종간 연동형 프로그램 개발 방법 및 그 개발 장치 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20110247016A1 (ko) |
JP (1) | JP2010517134A (ko) |
KR (4) | KR100870972B1 (ko) |
CN (1) | CN101641690A (ko) |
DE (1) | DE112008000242T5 (ko) |
GB (1) | GB2458607A (ko) |
WO (4) | WO2008091104A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101525510B1 (ko) * | 2013-03-07 | 2015-06-03 | 에스피테크놀러지 주식회사 | 저작도구와 통합개발환경의 연동을 위한 장치와 그 제어 방법 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8176124B2 (en) | 2008-12-04 | 2012-05-08 | Disney Enterprises, Inc. | Communication hub for video game development systems having a video game development tool and video game platforms with communication libraries |
US8317606B2 (en) | 2008-12-04 | 2012-11-27 | Disney Enterprises, Inc. | Live authoring method for real time development of video games |
EP2193828B1 (en) | 2008-12-04 | 2012-06-13 | Disney Enterprises, Inc. | Communication hub for video game development systems |
CA2777594A1 (en) * | 2009-10-15 | 2011-04-21 | Web Impact Inc. | System and method for managing applications for multiple computing endpoints and multiple endpoint types |
KR101120614B1 (ko) * | 2010-01-06 | 2012-03-20 | 인크로스 주식회사 | 어플리케이션 가공방법 |
KR101355443B1 (ko) * | 2010-02-26 | 2014-01-28 | 에스케이플래닛 주식회사 | 모바일 그래픽 처리 장치 및 방법, 그를 위한 컴퓨터 판독 가능한 기록매체 |
US20110319157A1 (en) * | 2010-06-25 | 2011-12-29 | Yury Kuznetsov | Gaming point exchange system and method |
CN102375815A (zh) * | 2010-08-10 | 2012-03-14 | 鸿富锦精密工业(深圳)有限公司 | 应用于嵌入式设备的三维网络用户接口及其实现方法 |
CN101950257B (zh) * | 2010-09-26 | 2014-12-17 | 中兴通讯股份有限公司 | 一种手机应用开发方法和*** |
SG189304A1 (en) * | 2010-10-08 | 2013-05-31 | Lumi Technologies Ltd | Multi-phased and partitioned content preparation and delivery |
KR101157485B1 (ko) * | 2010-12-09 | 2012-06-20 | 국방과학연구소 | Mil-std-1553b를 지원하는 통합 미들웨어 시스템, 장치 및 방법 |
US8615744B2 (en) * | 2011-02-09 | 2013-12-24 | Beek Fund B.V. L.L.C. | Methods and system for managing assets in programming code translation |
US8788243B2 (en) | 2011-02-14 | 2014-07-22 | Disney Enterprises, Inc. | Performance metrics gathering from multiple video game platforms |
KR101831693B1 (ko) * | 2011-03-08 | 2018-02-23 | 삼성전자주식회사 | 멀티 소프트웨어 플랫폼 기반의 휴대용 단말기에서 플랫폼 간 정보를 동기화하는 방법 및 장치 |
KR101254756B1 (ko) * | 2011-07-26 | 2013-04-15 | 김재식 | 복수의 운영체제와 호환 가능한 가상머신 생성 방법 및 가상머신 프로그램을 저장한 기록매체 |
CN102541567A (zh) * | 2012-01-05 | 2012-07-04 | 深圳市天拓立方通讯科技有限公司 | 一种2d***引擎及兼容手机操作***的方法 |
US8910115B2 (en) * | 2012-04-02 | 2014-12-09 | Kony Solutions, Inc. | Systems and methods for application development |
WO2014021514A1 (ko) * | 2012-08-02 | 2014-02-06 | 한국과학기술원 | 인터랙티브 방송 프로그램의 제작 및 실행을 위한 시스템 및 방법 |
US10049030B2 (en) * | 2012-09-18 | 2018-08-14 | Infosys Limited | System and method for test output evaluation of a JAVA component |
US9778924B2 (en) * | 2013-06-06 | 2017-10-03 | Wipro Limited | Platform for enabling creation and use of an API for a specific solution |
CN103365665A (zh) * | 2013-07-25 | 2013-10-23 | 成都品果科技有限公司 | 一种基于虚拟指令的应用程序移植方法 |
KR101598819B1 (ko) * | 2013-12-02 | 2016-03-02 | 한국과학기술연구원 | 타겟 독립적인 디버깅 정보를 이용한 코드 변환 방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체 |
CN104090765A (zh) * | 2014-07-16 | 2014-10-08 | 福建天晴数码有限公司 | 一种***转网页游戏的方法及装置 |
CN104090845B (zh) * | 2014-07-31 | 2017-05-10 | 深圳第七大道科技有限公司 | 一种游戏自动测试方法、***及相关设备 |
CN104796670A (zh) * | 2015-04-23 | 2015-07-22 | 安徽省道一电子科技有限公司 | 基于流水线架构的跨平台多路实时视频处理***架构 |
CN105005495B (zh) * | 2015-06-23 | 2018-08-24 | 珠海金山网络游戏科技有限公司 | 一种游戏引擎 |
CN108984225B (zh) * | 2018-06-19 | 2023-05-30 | 上海掌门科技有限公司 | 快速启动寄宿应用的方法及设备 |
CN111199329A (zh) * | 2018-11-20 | 2020-05-26 | 深圳市茁壮网络股份有限公司 | 一种中间件的移植方法及*** |
CN112114789B (zh) * | 2019-06-20 | 2024-02-06 | 腾讯科技(深圳)有限公司 | 一种业务开发方法及设备 |
KR102341419B1 (ko) * | 2019-12-23 | 2021-12-21 | 주식회사 인포마인드 | 판매 관리 장치 및 판매 관리 방법 |
CN111338813B (zh) * | 2020-02-10 | 2023-05-12 | 北京字节跳动网络技术有限公司 | 一种动态生成中间件的方法、装置、介质和电子设备 |
US10951738B1 (en) | 2020-08-06 | 2021-03-16 | Bank Of America Corporation | Automatic API integration |
CN112882690B (zh) * | 2021-01-28 | 2024-04-19 | 抖音视界有限公司 | 一种应用开发方法及装置 |
CN115080006A (zh) * | 2021-03-15 | 2022-09-20 | 武汉斗鱼网络科技有限公司 | 一种数据调用方法及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030012269A (ko) * | 2001-07-31 | 2003-02-12 | 주식회사 배틀탑 | 네트워크 기반의 유무선 통신기기를 이용한 게임통합서비스 시스템 |
KR20040095858A (ko) * | 2003-04-28 | 2004-11-16 | 김지훈 | 유무선 인터넷 상에서의 일체형 게임서비스 제공방법 |
KR20040102679A (ko) * | 2003-05-29 | 2004-12-08 | (주)이즈메이커 | 개인용 컴퓨터에서 모바일 화면을 동일하게 사용하는 게임방법 및 시스템 |
KR20060063587A (ko) * | 2004-12-06 | 2006-06-12 | 한국전자통신연구원 | 프로세서간 통신을 이용한 프로그램간 연동 방법 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6026238A (en) * | 1997-08-18 | 2000-02-15 | Microsoft Corporatrion | Interface conversion modules based upon generalized templates for multiple platform computer systems |
JP2000057082A (ja) * | 1998-08-12 | 2000-02-25 | Nec Corp | 上位アプリケーション資産を継承した新機種外部機器制御方式 |
JP4130713B2 (ja) * | 1998-10-21 | 2008-08-06 | 松下電器産業株式会社 | プログラム変換装置 |
US7392483B2 (en) * | 2001-09-28 | 2008-06-24 | Ntt Docomo, Inc, | Transformation of platform specific graphical user interface widgets migrated between heterogeneous device platforms |
US7305629B2 (en) * | 2002-09-26 | 2007-12-04 | International Business Machines Corporation | Consolidation of computer documentation |
KR100463839B1 (ko) * | 2002-12-17 | 2004-12-29 | 한국전자통신연구원 | 홈네트워크 환경에서 이기종 제어 미들웨어를 지원하는정보기기간의 협동 서비스 시스템 및 방법 |
JP2004246690A (ja) * | 2003-02-14 | 2004-09-02 | Canon Inc | プログラム移植支援システム |
KR20040102997A (ko) * | 2003-05-30 | 2004-12-08 | 이노에이스(주) | 가상머신 및 플레이어를 탑재하는 플랫폼시스템 |
GB0316531D0 (en) * | 2003-07-15 | 2003-08-20 | Transitive Ltd | Method and apparatus for performing native binding |
KR100561682B1 (ko) * | 2003-10-10 | 2006-03-15 | 에스케이 텔레콤주식회사 | 그룹 별 api 관리를 지원하는 모바일 플랫폼이 탑재된이동 통신 단말 및 모바일 플랫폼에서의 api 제어 방법 |
US20050246453A1 (en) * | 2004-04-30 | 2005-11-03 | Microsoft Corporation | Providing direct access to hardware from a virtual environment |
GB2426840A (en) * | 2005-06-04 | 2006-12-06 | Transitive Ltd | Method of executing program code where a portion of the target code calls a native code portion which then calls a second target code portion. |
-
2008
- 2008-01-22 KR KR1020080006846A patent/KR100870972B1/ko not_active IP Right Cessation
- 2008-01-22 KR KR1020080006847A patent/KR100876607B1/ko not_active IP Right Cessation
- 2008-01-22 KR KR1020080006844A patent/KR100876605B1/ko not_active IP Right Cessation
- 2008-01-22 US US12/523,694 patent/US20110247016A1/en not_active Abandoned
- 2008-01-22 CN CN200880009344A patent/CN101641690A/zh active Pending
- 2008-01-22 WO PCT/KR2008/000405 patent/WO2008091104A1/en active Application Filing
- 2008-01-22 WO PCT/KR2008/000404 patent/WO2008091103A1/en active Application Filing
- 2008-01-22 DE DE112008000242T patent/DE112008000242T5/de not_active Withdrawn
- 2008-01-22 KR KR1020080006845A patent/KR100876606B1/ko not_active IP Right Cessation
- 2008-01-22 WO PCT/KR2008/000406 patent/WO2008091105A1/en active Application Filing
- 2008-01-22 WO PCT/KR2008/000402 patent/WO2008091101A1/en active Application Filing
- 2008-01-22 JP JP2009546330A patent/JP2010517134A/ja active Pending
-
2009
- 2009-07-23 GB GB0912816A patent/GB2458607A/en not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030012269A (ko) * | 2001-07-31 | 2003-02-12 | 주식회사 배틀탑 | 네트워크 기반의 유무선 통신기기를 이용한 게임통합서비스 시스템 |
KR20040095858A (ko) * | 2003-04-28 | 2004-11-16 | 김지훈 | 유무선 인터넷 상에서의 일체형 게임서비스 제공방법 |
KR20040102679A (ko) * | 2003-05-29 | 2004-12-08 | (주)이즈메이커 | 개인용 컴퓨터에서 모바일 화면을 동일하게 사용하는 게임방법 및 시스템 |
KR20060063587A (ko) * | 2004-12-06 | 2006-06-12 | 한국전자통신연구원 | 프로세서간 통신을 이용한 프로그램간 연동 방법 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101525510B1 (ko) * | 2013-03-07 | 2015-06-03 | 에스피테크놀러지 주식회사 | 저작도구와 통합개발환경의 연동을 위한 장치와 그 제어 방법 |
Also Published As
Publication number | Publication date |
---|---|
US20110247016A1 (en) | 2011-10-06 |
KR20080069149A (ko) | 2008-07-25 |
CN101641690A (zh) | 2010-02-03 |
KR100876607B1 (ko) | 2008-12-31 |
KR100876606B1 (ko) | 2008-12-31 |
KR20080069148A (ko) | 2008-07-25 |
KR20080069147A (ko) | 2008-07-25 |
WO2008091104A1 (en) | 2008-07-31 |
KR100876605B1 (ko) | 2008-12-31 |
WO2008091103A1 (en) | 2008-07-31 |
DE112008000242T5 (de) | 2009-12-24 |
WO2008091101A1 (en) | 2008-07-31 |
GB2458607A (en) | 2009-09-30 |
WO2008091105A1 (en) | 2008-07-31 |
GB0912816D0 (en) | 2009-08-26 |
KR20080069146A (ko) | 2008-07-25 |
JP2010517134A (ja) | 2010-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100870972B1 (ko) | 이기종간 프로그램 연동 방법 및 그 장치 | |
Gavalas et al. | Development platforms for mobile applications: Status and trends | |
Burnette | Hello, Android introducing Google's mobile development platform 2nd | |
CN102696012B (zh) | 从代码使用中创建所推断的符号 | |
US7765539B1 (en) | System and method for trans-compiling video games | |
US20030131148A1 (en) | Cross-platform software development with a software development peripheral | |
US8762963B2 (en) | Translation of programming code | |
CN1282914A (zh) | 采用外观类进行软件翻译的内观编辑器***、程序和方法 | |
US20070169017A1 (en) | Method and apparatus for translating an application programming interface (API) call | |
Zammetti | Practical Flutter: Improve your mobile development with Google’s latest open-source SDK | |
Rourke | Learn WebAssembly: Build web applications with native performance using Wasm and C/C++ | |
EP3752914B1 (en) | Techniques for native runtime of hypertext markup language graphics content | |
KR20110077591A (ko) | 위피 기반 어플리케이션을 위한 멀티 플랫폼 변환 장치 및 방법 | |
Alessandria | Flutter Cookbook: 100+ step-by-step recipes for building cross-platform, professional-grade apps with Flutter 3.10. x and Dart 3. x | |
McNamara | Rust in Action | |
CN111290746A (zh) | 对象访问方法、装置、设备及存储介质 | |
CN106445483A (zh) | 生成行动应用程序的方法和*** | |
KR20080039577A (ko) | 이종 모바일 플랫폼 사이의 컨텐츠 변환 장치 및 변환 방법 | |
Joseph et al. | Software Framework Of An All-In-One Transpiler For Development Of WORA Applicatons | |
Jackson et al. | Setting Up Your Java 9 IDE: An Introduction to NetBeans 9 | |
Sharma | Development Platforms for Mobile Applications: Status and Trends | |
KR20130133472A (ko) | 프로그램 개발 방법 및 개발 장치 | |
Kaisanlahti | Applicability of Common Lisp in Game Development | |
KR20100042681A (ko) | 멀티 디바이스 게임 플레이 지원 방법 및 그 장치 | |
Tufró | Developing Mobile Games with Moai SDK |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20111121 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20121121 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |