Jak wyżej naprawdę
W wolnym czasie piszę grę na Androida (Android, ponieważ jest darmowa i nie mam prawdziwych aspiracji do robienia czegoś komercyjnego).
Logika gry wywodzi się z bardzo typowego modelu opartego na komponentach, w którym byty istnieją i mają dołączone do nich komponenty, a komunikaty są wysyłane tam i z powrotem, aby wszystko się stało.
Oczywiście warstwa, która faktycznie działa, jest cienka, a gdybym miał napisać wersję tej aplikacji na iPhone'a, musiałbym ponownie napisać mechanizm renderujący i sterownik rdzenia (tego systemu opartego na komponentach) w Celu C.
Jednostki są tylko płaskimi plikami określającymi nazwy komponentów, które mają zostać dodane, a same komponenty są prostymi, jednocelowymi obiektami zawierającymi logikę encji.
Teraz, jeśli napiszę całą logikę dla tych komponentów w Javie, to musiałbym ponownie napisać je w Celu C, jeśli zdecyduję się na port iPhone. Ponieważ większość logiki aplikacji jest zawarta w tych komponentach, w idealnym świecie zostałyby napisane w jakimś niezależnym od platformy języku / skrypcie / DSL, który można by po prostu załadować do aplikacji na dowolnej platformie.
Zostałem jednak przekonany, że nie jest to idealny świat i że wydajność Lua itp. Na urządzeniach mobilnych wciąż nie jest do zera, że narzut jest zbyt duży i że później wpadłbym w kłopoty poszedł tą drogą?
Czy tak jest w rzeczywistości? Oczywiście jest to tylko hipotetyczne pytanie, z przyjemnością piszę je wszystkie w Javie, ponieważ jest to proste i łatwe, ale mogę powiedzieć, że naprawdę lubię tworzyć tę grę (mało prawdopodobne, biorąc pod uwagę, jak bardzo nie lubię, że muszę sobie z tym poradzić) z tymi wszystkimi różnymi urządzeniami mobilnymi) i chciałem stworzyć komercyjnie opłacalną grę - czy użyłbym Lua, czy po prostu skorzystałbym z możliwości przeniesienia i przepisał cały kod?
Implementacja C Lua jest specjalnie zaprojektowana do działania na urządzeniach wbudowanych. Jest mały i szybki (dla języka skryptowego). Myślałbym, że będzie w porządku dla przynajmniej lekkich zadań.
źródło
Pewnie. Jest mało prawdopodobne, aby logika skryptowania była twoim wąskim gardłem (w rzeczywistości będziesz profilować za pomocą Sharka lub Instruments, prawda?). Pracowałem nad wersją Marooned na iPhone'a, która używała dużo Lua do logiki gry. Zrobiłem dużo strojenia wydajności i zasadniczo Lua wynosiła 0%.
(Lua była szarą strefą, kiedy wypuściliśmy Marooned, ale od tego czasu została oficjalnie pobłogosławiona dla rozwoju iOS).
źródło
Zobacz http://code.google.com/p/android-scripting/ do zalecany sposób prowadzenia włączony na Androida. Lua nadal nie pasuje zbyt dobrze na platformę Android, ponieważ wymaga C. Oczywiście możesz użyć NDK, ale to nie jest srebrna kula.
źródło
Zależy to trochę od tego, ile logiki gry jest wbudowane w skrypty. Zasadniczo LUA jest używany jako klej na wysokim poziomie, ale wiele pracy z pomrukiem odbywa się za pomocą C (++). Tak, LUA jest szybka, jeśli chodzi o języki skryptowe - nadal patrzysz na spowolnienie w porównaniu z językami ojczystymi około 30 do 50 razy, więc to naprawdę zależy od tego, jak wiele dzieje się w LUA.
źródło
Możesz napisać całą grę w Lua i całkowicie unikać Java / ObjectiveC / C / C ++.
Do programowania wieloplatformowego użyj Corony . Jest darmowy, dopóki nie planujesz wysyłki do App Store lub Android Marketplace.
Jeśli chcesz celować w iPhone / Pad / Touch, spójrz na wosk .
Na marginesie @Sean Edwards: Brałem udział w wysyłce pięciu tytułów na Nintendo DS, Wii, Sony PSP i Xbox360, z których wszystkie używały tego samego silnika i zostały napisane w Lua. Jest szeroko stosowany na konsolach i telefonach komórkowych.
źródło