모바일 장치에서 게임 로직에 Lua를 사용해야합니까?


33

위와 같이,

나는 여가 시간에 안드로이드 기반 게임을 작성하고 있습니다 (무료이기 때문에 상업적인 것을 할 열망이 없기 때문에).

게임 로직은 엔터티가 존재하고 컴포넌트가 부착되어 있고 메시지가 발생하기 위해 메시지가 전송되는 매우 일반적인 컴포넌트 기반 모델에서 비롯됩니다.

실제로 실제로 수행하는 계층은 얇고이 응용 프로그램의 iPhone 버전을 작성하려면 Objective C에서 렌더러 와이 구성 요소 기반 시스템의 핵심 드라이버를 다시 작성해야합니다.

엔터티는 추가 할 구성 요소의 이름을 결정하는 플랫 파일 일 뿐이며 구성 요소 자체는 엔터티의 논리를 포함하는 단순한 단일 목적 개체입니다.

이제 Java로 해당 구성 요소의 모든 논리를 작성하면 iPhone 포트를 사용하기로 결정한 경우 Objective C에서 다시 작성해야합니다. 대부분의 응용 프로그램 논리가 이러한 구성 요소에 포함되어 있기 때문에 이상적인 세계에서는 플랫폼에 구애받지 않는 언어 / 스크립트 / DSL로 작성되어 어떤 플랫폼에서든 응용 프로그램에로드 될 수 있습니다.

그러나 이것이 이상적인 세상은 아니며 모바일 장치의 Lua 성능 등이 여전히 긁히지 않고 오버 헤드가 너무 많아 나중에 나중에 문제가 발생한다고 믿게되었습니다. 그 길을 갔다?

이것이 사실입니까? 분명히 이것은 단순한 가상의 질문입니다. 간단하고 쉽게 물건을 얻을 수 있기 때문에 Java로 모두 작성하는 것이 행복합니다. 상업적으로 실행 가능한 게임을 만들고 싶었습니다. Lua를 사용하거나 포팅 할 때 인기를 끌고 모든 코드를 다시 작성해야합니까?

답변:


17

스크립팅 언어가 진행되는 한 Lua는 매우 빠르지 만 프로세서에 따라 달라집니다. 예를 들어, Lua는 매우 분기적인 경향이 있고 일부 콘솔 플랫폼은 매우 느리게 분기되기 때문에 콘솔 플랫폼에서는 좋지 않습니다. 귀하의 질문에 가장 잘 대답하기 위해 일부 벤치 마크를 실행하는 것이 좋습니다. Lua가 장치에서 다양한 알고리즘을 얼마나 빨리 수행하는지 확인하십시오. 스크립트 코드에서 무거운 수학이나 반복을하지 않는 한 괜찮을 것이라고 생각합니다. (어쨌든 그렇게해서는 안됩니다. 스크립트입니다. 엔진에서 계산을 수행하십시오.)

즉, 스크립팅은 플랫폼 독립성을위한 은총 알이 아닙니다. 동적 코드 실행에 대한 Apple의 제한으로 인해 iPhone으로 포팅하는 경우 어쨌든 Obj-C로 다시 작성해야 할 수도 있습니다. 나는 링크를 가지고 있지 않지만 읽을 가치가 있습니다. Apple 은 관리 코드를 거의 허용 하지 않습니다 (특별한 배포판을 실행하려면 특별한 권한이 있어야합니다). 그들은 확실히 앱 스토어에 Lua 구현을 허용하지 않을 것입니다.

분명히 나는 ​​루아에 관한 아이폰 문제로 착각했다. 아래의 의견을 살펴보십시오.


9
Lua는 iPhone 응용 프로그램에서 널리 사용되며이를 허용하는 용어로 변경되었습니다. 여기를보십시오 : appleoutsider.com/2010/06/10/hello-lua
Colin Gislason

5
많은 콘솔 앱은 실제로 LUA를 사용합니다. 예, 그것은 가지가 있지만 높은 수준의 논리를 제어하는 ​​것은 중요하지 않습니다. 렌더 루프에서 호출하지 마십시오.) 아시다시피, 게임용 LUA는 최근 개발자 계약이 변경 되어도 괜찮습니다. LUA가 주도하는 많은 게임이 있습니다. 그러나 폐쇄 형 플랫폼에서의 개발과 마찬가지로 플랫폼 소유자 (예 : Apple)에게 명확한 답변을 요청하십시오. 또한 Obj-C가 필요하지 않습니다 .iPhone은 C / C ++ 만 허용합니다. (하지만 Obj-C에서 UIKit을 사용하는 것이 좋습니다. 고통 요소 감소)
Rachel Blum

7
마술 비누 상자에 가십시오. 루아는 약어가 아닌 명사이며, 당신은 자바를 쓰지 않을 것입니다. 루아는 달을 의미합니다. 당신은 문을 쓰지 않을 것입니다. 감사합니다-Lau Nazi.
deft_code

2
슬프게도 나는 "JAVA"를 쓰는 많은 사람들을 알고 있습니다.

1
나는 NDS (아이폰보다 훨씬 강력하지 않음)에 루아를 많이 사용했으며 꽤 빨리 작동했습니다. 루아에서 직접 한 게임의 논리를 절반 이상으로 만들 수있을만큼 빠릅니다.
Klaim

7

Lua의 C 구현은 임베디드 장치에서 실행되도록 특별히 설계되었습니다. 작고 빠릅니다 (스크립트 언어). 최소한 가벼운 작업에는 적합하다고 생각했을 것입니다.


4

확실한. 스크립팅 로직은 병목 현상이 발생하지 않을 가능성이 높습니다 (실제로 Shark 또는 Instruments로 프로파일 링합니까?). 게임 로직에 많은 Lua를 사용한 Marooned의 iPhone 버전을 작업했습니다. 나는 많은 성능 조정을했고 기본적으로 Lua는 0 %였습니다.

(루아는 Marooned를 출시했을 때 회색 영역 이었지만 iOS 개발에 공식적으로 축복을 받았습니다.)



1

스크립트에 얼마나 많은 게임 로직이 내장되어 있는지에 달려 있습니다. 일반적으로 LUA는 고급 접착제로 사용되지만 C (++)를 통해 많은 작업이 이루어집니다. 그렇습니다. LUA는 스크립팅 언어의 속도가 빠릅니다. 약 30 ~ 50 배의 모국어에 비해 속도가 느려질 것이므로 LUA에서 발생하는 양에 따라 다릅니다.


0

실제로 전체 게임을 Lua로 작성하고 Java / ObjectiveC / C / C ++를 모두 피할 수 있습니다.

크로스 플랫폼 개발에는 Corona를 사용하십시오 . App Store 또는 Android 마켓 플레이스로 배송 할 때까지 무료로 사용할 수 있습니다.

iPhone / Pad / Touch를 대상으로하려는 경우 wax를 살펴보십시오 .

@Sean Edwards : Nintendo DS, Wii, Sony PSP 및 Xbox360을 대상으로하는 5 개의 타이틀을 배송하는 데 참여했습니다. 모두 동일한 엔진을 사용하고 Lua에서 스크립팅되었습니다. 콘솔과 모바일에서 널리 사용됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.