cocos2d-x 3.0 + C. Eine super Einführung in die Spieleentwicklung ab ++ 11 strong> div>
Lua Bindung an cocos2d-x 2.x.
Für die Skriptbindung ist ein Code (Glue Code) erforderlich, um die beiden Sprachen zu verbinden.
In der Vergangenheit wurde eine spezielle Definitionsdatei mit dem Namen "* .pkg" geschrieben und automatisch mit einem Dienstprogramm namens "tolua ++" generiert. Das ist praktisch.
↑ Ein solcher Code wird automatisch generiert.
Einzelheiten finden Sie im folgenden Artikel.
Verwendung von Tolua ++ (hauptsächlich Mac) -Programmiermonster
Es dauerte jedoch einige Zeit, alle Klassen und Methoden in * pkg zu schreiben, und es wurde schwierig, wenn die Anzahl groß war, und es gab auch Fehler, die dadurch verursacht wurden.
Die Geschichte der Zusammenführung nach Behebung des Fehlers in cocos2d-x --5.1 Saraudon
Lua-Bindung aus cocos2d-x 3.0
Ab cocos2d-x 3.0 können Sie ein Dienstprogramm namens "Bindungsgenerator" verwenden, um automatisch nach Klassen und Methoden aus dem Header zu suchen und automatisch einen Klebercode zu generieren.
Darüber hinaus können die Einstellungen sehr flexibel beschrieben werden, was die Erstellung von Definitionsdateien vereinfacht, was herkömmlicherweise manuell vorgenommen wurde.
cocos2d/bindings-generator
Setup auf dem Mac
Ich werde es erklären, weil es etwas mühsam ist, es einzurichten
Siehe Seite unten. Derzeit nicht kompatibel mit Windows.
bindings-generator/README.md at master · cocos2d/bindings-generator
Installation von cocos2d-x 3.0
Laden Sie cocos2d-x 3.0 alpha1 (Stand 15.12.) Von hier herunter und entpacken Sie es. Legen Sie es in $ HOME / cocos2d-x-3.0
.
http://www.cocos2d-x.org/download
Python-Pakete installieren
Installieren Sie die erforderlichen Python-Pakete. Wenn Sie Standard-Python verwenden, verwenden Sie "easy_install".
sudo easy_install pyyaml, cheetah
or
pip install pyyaml, cheetah
Einführung von llvm-clang-3.3
Bitte laden Sie "Clang Binaries für Mac OS X" von der folgenden Seite herunter. Es scheint, dass Homebrew ebenfalls enthalten sein wird, aber es wurde nicht verifiziert.
Es war 3.1 in der Dokumentation, aber es funktionierte nicht ohne 3.3, also laden Sie es bitte herunter.
Dieses Mal ist es in $ HOME / llvm + clang-3.3
installiert.
http://llvm.org/releases/download.html#3.3
Einführung in Android NDK
Von der folgenden Seite.
http://developer.android.com/tools/sdk/ndk/index.html
Dieses Mal ist es in / Applications / Android / android-ndk
installiert.
Es scheint, dass Homebrew auch enthalten sein wird.
brew install android-ndk
Umgebungsvariablen einstellen
Stellen Sie verschiedene Umgebungseinstellungen ein. Bitte geben Sie den Pfad an, den Sie bisher installiert haben.
Da ich Python mit pyenv installiert habe, lautet der PATH wie folgt, aber normalerweise ist / usr / bin / python
in Ordnung.
export PYTHON_BIN=$HOME/.pyenv/shims/python
export COCOS2DX_ROOT=$HOME/cocos2d-x-3.0
export NDK_ROOT=/Applications/Android/android-ndk
export CLANG_ROOT=$HOME/clang+llvm-3.3
Generieren Sie einen Klebercode für cocos2d-x
Versuchen wir, den Code für die Lua-Bindung von cocos2d-x zu generieren.
cd $COCOS2DX_ROOT/tools/tolua
./genbindings.sh
Wenn alles gut geht, sollten 93000 Zeilen und 2,6 MB großer Quellcode automatisch in "$ COCOS2DX_ROOT / scripting / auto-generate / lua-bindings" generiert werden. Du hast es geschafft!
Gleichzeitig wird eine Konfigurationsdatei mit dem Namen "userconf.ini" generiert. Dies ist eine Datei, die Umgebungsvariablen festlegt, und die angehängte Datei "genbindings.sh" generiert sie automatisch.
Versuchen Sie, in Ihrem eigenen Projekt zu generieren
Das Setup bis zu diesem Punkt war mühsam und ich war schon ziemlich müde, aber dieses Mal werde ich es aus meinem eigenen Projekt des Hauptthemas generieren.
Schreiben Sie your_game.ini
Indem Sie die Einstellung des generierten Klebercodes in "your_game.ini" beschreiben, können Sie die Klassenmethode angeben, die wie unten gezeigt generiert oder ignoriert werden soll.
Kopieren Sie grundsätzlich cocos2dx.ini
und schreiben Sie es gegebenenfalls neu.
#Geben Sie den Pfad des zu analysierenden Headers an
headers = %(cocosdir)s/cocos2dx/include/cocos2d.h %(cocosdir)s/CocosDenshion/include/SimpleAudioEngine.h ../Classes/LuaBindSample.h
#Beschreiben Sie die Liste der generierten Klassen (reguläre Ausdrücke sind möglich).
classes = ^GameObject$
#Beschreiben Sie das zu ignorierende Klassen- und Methodenpaar (regulärer Ausdruck ist möglich).
skip = IgnoredClass::[ignoredMethod{0-9} anotherMethod],
LuaBindSample/binding-generator/bind_sample.ini at master · giginet/LuaBindSample
Die Beschreibungsmethode ist im Kommentar geschrieben, daher werde ich die ausführliche Erklärung weglassen.
Weitere Informationen finden Sie unter cocos2dx.ini.
Es scheint, dass es auf einer Template-Engine namens CHEETAH von Python läuft, daher kann das Folgende für die Grammatik usw. hilfreich sein.
Cheetah - The Python-Powered Template Engine
Schreiben Sie userconf.ini
Durch die Beschreibung des PATH, der zuvor in der Umgebungsvariablen in einer Datei mit dem Namen "userconf.ini" angegeben wurde, scheint er ohne Erlaubnis gelesen und ausgeführt zu werden.
Umgebungsvariablen können nicht verwendet werden, daher denke ich, dass es am besten ist, sie für jede Umgebung zu erstellen.
Zum Beispiel sieht es wie folgt aus.
[DEFAULT]
androidndkdir=/Applications/Android/android-ndk-r8e
clangllvmdir=/Users/giginet/clang+llvm-3.3
cocosdir=/Users/giginet/cocos2d-x-3.0
cxxgeneratordir=/Users/giginet/cocos2d-x-3.0/tools/bindings-generator
extra_flags=
Führen Sie das Skript aus
Alles was Sie tun müssen, ist die entsprechenden Argumente an generator.py in binding-generator
zu übergeben.
Da es viele Argumente gibt, ist es praktisch, einen solchen Wrapper zu schreiben
#!/bin/bash
GENERATOR_ROOT=${COCOS2DX_ROOT}/tools/bindings-generator
INI_FILE=bind_sample.ini
SECTION_NAME=your_game
OUTPUT_PATH=../Classes/LuaGlue
OUTPUT_NAME=lua_your_game_auto
LD_LIBRARY_PATH=${CLANG_ROOT}/lib $PYTHON_BIN ${GENERATOR_ROOT}/generator.py $INI_FILE -s $SECTION_NAME -t lua -o ${OUTPUT_PATH} -n $OUTPUT_NAME
Auf diese Weise wird "lua_your_game_auto.h / cpp" unter "../ Class / LuaGlue" generiert. groß!
Beispielprojekt
Ich habe ein Verifizierungs-Repository auf Github erstellt, also werde ich es dort ablegen.
LuaBindSample/binding-generator at master · giginet/LuaBindSample
Es funktioniert, wenn es unter "$ COCOS2DX_ROOT / projects" geklont wird.
Was ist mit JavaScript-Bindung?
Ich habe es nicht ausprobiert, aber ich habe das Gefühl, dass ich auch gehen kann. Bitte schreibe jemandem.
Zusammenfassung
Das Erstellen der Umgebung war eine Menge Arbeit, aber es ist großartig, auf einfache Weise einen Klebercode generieren zu können. Es ist auch gut, mit regulären Ausdrücken flexibel beschreiben zu können.
Ich werde es beim nächsten Spiel effektiv nutzen.
Lua verwandte Artikel
Dies sind nützliche Informationen zu Lua, die ich zuvor geschrieben habe.
Ich habe versucht, Luas Syntaxprüfung mit Jenkins --5.1 Sara Udon zu automatisieren
Lassen Sie uns die Lua-Bindung von cocos2d-x --5.1 Saraudon erklären
Werbung
Wir haben ein Spiel namens "VOXCHRONICLE" veröffentlicht, ein Back-Scrolling-Rollenspiel von cocos2d-x, das Sounds spielt.
Es ist völlig kostenlos zu spielen. Wenn Sie diesen Artikel nützlich finden, versuchen Sie es bitte. Lua Binding wird hauptsächlich in diesem Spiel verwendet.
VOXCHRONICLE - im App Store bei iTunes
Das Back-Scroll-Rollenspiel "VOXCHRONICLE", das den Sound spielt, wurde veröffentlicht --5.1 Sara Udon
Eine Geschichte über das Ausprobieren interaktiver Musik mit einem iPhone-Spiel --5.1 Saraudon
giginet/VOXCHRONICLE