|
You last visited: Today at 09:54
Advertisement
[AutoIt]AU3Irrlicht2 Tut (3D-Engine)
Discussion on [AutoIt]AU3Irrlicht2 Tut (3D-Engine) within the Coding Tutorials forum part of the General Coding category.
01/21/2012, 21:40
|
#1
|
elite*gold: 0
Join Date: Sep 2009
Posts: 461
Received Thanks: 55
|
[AutoIt]AU3Irrlicht2 Tut (3D-Engine)
Hey com,
ich möchte euch hier die Irrlicht Engine für Autoit vorstellen.
Manche von euch werden sie eventuell schon kennen für andere Sprachen,
aber nicht für autoit.
Da ich hier in der Suche nichts zu der Engine für Autoit gefunden habe zeige ich sie euch hier.
Wer nicht weiß wozu diese Engine gut ist, hier eine kleine Erklärung:
The Irrlicht Engine is an open source high performance realtime 3D engine written in C++. It is completely cross-platform, using D3D, OpenGL and its own software renderers, and has all of the state-of-the-art features which can be found in commercial 3d engines. We've got a huge active community, and there are lots of projects in development that use the engine. You can find enhancements for Irrlicht all over the web, like alternative terrain renderers, portal renderers, exporters, world layers, tutorials, editors, language bindings for java, perl, ruby, basic, python, lua, and so on. And best of all: It's completely free.
copy & paste : 
Das ganze gibt es auch für Autoit
Also kommen wir zum Tutorial:
Es ist NICHT von mir sondern von einem User
der Plattform 
Ich habe die Erlaubniss es hier zu posten.
hier der link zu seinem Profil falls sich jemand bedanken möchte, bitte bedankt euch bei ihm und nicht bei mir!!!
__________________________________________________ _______________
Hallo zum ersten Irrlicht Tutorial in Deutsch, welches zugleich mein erstes Tutorial ist.
In diesem Tutotial zeige ich euch wie ihr Irrlicht in AutoIt verwenden könnt.
Zu beginn werde ich euch das Wichtigste über die 2D-Welt von Irrlicht erklären.
Dann zeige ich euch wie man eine Map sowie einen Charakter in eine Scene hinzufügt,
und welche tollen Features Irrlicht hat, aber liest einfach selbst:
Was ihr dazu bracht:
• Grundlegende Autoitkenntnisse
• Die Irrlicht-engine
• Autoit selbst :P
Ich verwende die
Fangen wir mal ganz von vorne an:
So gut wie jedes engine muss gestartet und beendet werden, das macht ihr mit:
PHP Code:
_Irrstart() _Irrstop()
Doch so einfach ist es nicht, denn mit _IrrStart() müsst ihr gleich ein Fenster einstellen.
PHP Code:
_IrrStart( $IRR_EDT_OPENGL, 400, 200, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_ON )
Wird mit Irrlicht über OpenGL gerendert
X und Y Größe
Die Anzahl verschiedener Farben
Ein Fenster wird erzeugt
Keine Schatten werden berechnet
die Tastatur und Mausevents werden ignoriert
Die vertikale Synchro bestimmt afaik nur, dass die FPS an die Hz vom Bildschirm angepasst werden, ab später mehr dazu
Zusätzlich müssen wir natürlich auch erst die Irrlicht-au3 includieren.
Wenn man dann ein Fenster erzeugen, sieht der Quellcode dann folgendermaßen aus:
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
_IrrStart( $IRR_EDT_OPENGL, 400, 200, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_ON )
Func _exit() _IrrStop() Exit EndFunc ; _exit
beim includieren müsst ihr natürlich den Pfad zum Ordner ANgeben in dem sich die Engine befindet.
Jetzt wird unser Fenster geöffnet und gleich wieder geschlossen. Außerdem fällt uns auf, dass wir noch keinen Titel bestimmt haben. Und das machen wir mit diesem Befehl:
PHP Code:
_IrrSetWindowCaption( "Irrlicht Tutorial" )
Dann fügen wir noch eine Endlos-While hinzu und wir haben unser Fenster:
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
_IrrStart( $IRR_EDT_OPENGL, 400, 200, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_ON )
_IrrSetWindowCaption( "Irrlicht Tutorial" )
WHILE 1 Sleep(100) WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Das Tolle ist, dass Irrlicht das Fenster auch gleich nach dem betätigen des X-Buttons oder nach dem drücken der ESC-Taste das Fenster schließt.
Als nächstes wollen wir einen Text anzeigen lassen. Diesen Text müssen wir zuerst einmal add’n. Dazu lernen wir eine neue Funktion kennen:
PHP Code:
_IrrAddStaticText()
Dabei wird ein Rechteck definiert welches einen Text enthält.
Die Parameter:
Zuerst der Text
X und Y Koordinaten des Anfangspunktes des Rechtecks (links-oben)
X und Y Koordinaten des Endpunktes des Rechtecks (rechts-unten)
Ob ein Rahmen gezeichnet wird
Ob der Text gewickelt wird
Wenn wir jetzt versuchen den Text anzuzeigen:
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
_IrrStart( $IRR_EDT_OPENGL, 400, 200, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_ON )
_IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddStaticText( "Wir lernen Irrlicht!", 20, 20, 200, 50, $IRR_GUI_NO_BORDER, $IRR_GUI_NO_WRAP)
WHILE 1 Sleep(100) WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Sehen wir, dass der Text nicht „gezeichnet“ wird. Dazu brauchen wir weitere Funktionen:
PHP Code:
; startet die Scene, Löschen der Leinwand (weiß) vor dem Rendern _IrrBeginScene( 255,255,255 )
; zeichnet die GUI (Graphical User Interface) _IrrDrawGUI()
; beendet das zeichnen der Scene und rendert sie _IrrEndScene()
Bei _IrrBeginScene() werden noch die Farbintensitäten eingegeben (R,G,B)
Diese Befehle werden jetzt in die While hineingeschrieben. Dazu löschen wir das Sleep() und fügen das in den Quellcode ein,außerdem wollen wir einen grün-farbenen Hintergrund:
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
_IrrStart( $IRR_EDT_OPENGL, 400, 200, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_ON )
_IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddStaticText( "Wir lernen Irrlicht!", 20, 20, 200, 50, $IRR_GUI_NO_BORDER, $IRR_GUI_NO_WRAP)
WHILE 1 _IrrBeginScene( 0,255,0 )
_IrrDrawGUI()
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Damit wir nicht immer eine Endlosschleife haben lernen wir noch eine Weitere Funktion kennen:
Damit ersetzten wir den 1er bei while, sprich "solange die Scene läuft"!
Nachdem wir nun den Text kaum lesen können weil er so klein ist lernen wir nun eine Funktion mit der wir eigene Schriftarten einfügen können kennen. Dazu müssen wir eine Schriftart zuerst wieder "add'n". Ich verwende für dieses Tutorrial eigentlich nur Datein, die bei der Irrlicht UDF schon enthalten sind:
PHP Code:
$BitmapFont = _IrrGetFont ( "../media/bitmapfont.bmp" )
Wie man sieht wird der Pfad als Parameter eingegeben. So können wir aus einer Bitmap eine Schriftart hinzufügen,welche wir dann auch gleich in eine Variable speichern.
Doch nur "herrufen" bringt uns nichts. Wir müssen sie auch zeichnen:
PHP Code:
_Irr2DFontDraw ( $BitmapFont, "UNSERE EIGENE SCHRIFTART", 120, 80, 250, 96 )
Diese ersetzt jetz in userem Quellcode das _IrrDrawGui(). Damit müssen wir auch keinen Text mehr hinzufügen. Wie beim Text wird ein Rechteck gezeichnet.
Parameter:
Der Rückgabewert von der Schriftart
"Der Text"
X und Y vom Rechteck, jeweils links-oben und rechts-unten.
Wenn wir das jetzt in unseren Quellcode einfügen, sieht das ganze so aus:
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
_IrrStart( $IRR_EDT_OPENGL, 400, 200, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_ON )
_IrrSetWindowCaption( "Irrlicht Tutorial" )
Global $BitmapFont = _IrrGetFont ( "../media/bitmapfont.bmp" )
WHILE _IrrRinning() _IrrBeginScene( 0,255,0 )
_Irr2DFontDraw ( $BitmapFont, "UNSERE EIGENE SCHRIFTART", 120, 80, 250, 96 )
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Genug mit Texten gearbeitet, jetz kommen wir zu den 2D-Bildern: Dazu verwenden wir wieder neue Funktionen:
PHP Code:
_IrrGetTexture( "../media/IrrlichtLogo.bmp" ) ;zu aufrufen _IrrDraw2DImage( $IrrlichtLogo, 10, 10 ) ;zum zeichnen
Jetzt versuchen wir mal das in useren Quellcode zu bringen. Dazu brauchen wir wieder eine Variable die das Bild speichert. Diesesmal machen wir den Hintergrund blau. Und zeichnen es dann in der While in das Fenster.
[php]#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True)
HotKeySet("{ESC}", "_exit")
_IrrStart( $IRR_EDT_OPENGL, 400, 200, $IRR_BITS_PER_PIXEL_32, _
$IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _
$IRR_VERTICAL_SYNC_ON )
_IrrSetWindowCaption( "Irrlicht Tutorial" )
Global $IrrlichtLogo = _IrrGetTexture( "../media/IrrlichtLogo.bmp" )
WHILE _IrrRunning()
_IrrBeginScene( 0,0,255 )
_IrrDraw2DImage( $IrrlichtLogo, 10, 10 )
_IrrEndScene()
WEND
Func _exit()
_IrrStop()
Exit
EndFunc ; _exit[/PHP
So um alles noch ein wenig zu festigen, lassen wir zusätzlich noch einen Text mit userer Schriftart anzeigen. Den Hintergrund machen wir rot.
Doch das allein wär noch zu einfach. Wir lassen user Bild von rechts nach links wandern und useren Text von links nach rechts. Das machen mit der Variable $Vektor. Um es einfacher zu machen speichern wir unsere Fenstergröße in eine Variable.
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $IrrlichtLogo, $BitmapFont, $Vektor[2], $screen_width, $screen_height
$screen_width = 400 $screen_height = 200
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_ON )
_IrrSetWindowCaption( "Irrlicht Tutorial" )
$IrrlichtLogo = _IrrGetTexture( "../media/IrrlichtLogo.bmp" ) $BitmapFont = _IrrGetFont ( "../media/bitmapfont.bmp" )
$Vektor[0] = 10.0 $Vektor[1] = 10.0
WHILE _IrrRunning() _IrrBeginScene( 255,0,0 )
_IrrDraw2DImage( $IrrlichtLogo, 20 + $Vektor[1], 80 + $Vektor[0])
_Irr2DFontDraw ( $BitmapFont, "WIR UEBEN FLEISSIG", $screen_width - 125 - $Vektor[1], 30 + $Vektor[0], 100, 50 )
If $Vektor[1] < $screen_width -88 -40 Then $Vektor[1] += 0.5 EndIf
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Diesen Code kann man dann für seine eigenen Zwecke anpassen.
Wenn ein Bild jetzt weiße Flächen hat, kann man die über Irrlicht transparent machen:
PHP Code:
_IrrColorKeyTexture( $Bild, 255, 255, 255 )
Wie man sieht kann man auch andere Farben transparent machen, aber wir beschränken uns bei unserem Beispiel nur auf weiß.
Parameter:
Der Rückgabewert von der "Bild aufruf"-Funktion
R G B; welche Farbe transparent gemacht wird.
Um gleich bei der Sache zu bleiben, es gibt auch noch einen anderen Befehl ein Bild zu zeichnen:
PHP Code:
_IrrDraw2DImageElement( $Bild, 10, 10, _ 0,0,60,31, $IRR_USE_ALPHA )
Parameter:
Der Rückgabewert von der "Bild aufruf"-Funktion
X und Y Koordinaten wo das Bild gezeichnet wird
X und Y Koordinaten vom Rechteck , jeweils links-oben ; rechts-oben Damit kann man das Bild in gewünschter Größes zeichnen.
Ob der Alpha-Kanal verwendet wird.
Jetzt schreiben wir einen Quellcode mit mehreren Bildern; mit Transparenz; mit veschiedenen Arten ein Bild zu zeichnen.
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $IrrlichtLogo, $FreeBasicLogo, $FBIDELogo, $CodeBlocksLogo, $WrapperLogo Global $screen_width, $screen_height
$screen_width = 400 $screen_height = 200
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_ON )
_IrrSetWindowCaption( "Irrlicht Tutorial" )
$IrrlichtLogo = _IrrGetTexture( "../media/IrrlichtLogo.bmp" ) $FreeBasicLogo = _IrrGetTexture( "../media/FreeBasicLogo.bmp" ) $FBIDELogo = _IrrGetTexture( "../media/FBIDELogo.bmp" ) $CodeBlocksLogo = _IrrGetTexture( "../media/CodeBlocksLogo.bmp" ) $WrapperLogo = _IrrGetTexture( "../media/wrapperby.tga" )
WHILE _IrrRunning() _IrrBeginScene( 255,0,255 )
_IrrDraw2DImage( $IrrlichtLogo, 4, 4 )
_IrrDraw2DImageElement( $FreeBasicLogo, _ $screen_width - 60 - 4, 4, _ 0,0,60,31, $IRR_USE_ALPHA ) _IrrDraw2DImageElement( $FBIDELogo, _ 4, $screen_height - 32 - 4, _ 0,0,128,32, $IRR_IGNORE_ALPHA ) _IrrDraw2DImageElement( $WrapperLogo, _ ( $screen_width - 110 ) / 2, $screen_height - 32 - 4, _ 0,0,100,32, $IRR_USE_ALPHA ) _IrrDraw2DImageElement( $CodeBlocksLogo, _ $screen_width - 110 - 4, $screen_height - 32 - 4, _ 0,0,110,32, $IRR_IGNORE_ALPHA )
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Jetzt wissen wir über Irrlicht in der 2D-Welt bescheid.
Doch was viel interessanter ist: Die 3D-Welt.
Aber in der 3D-Welt wird vieles komplexer.
Wenn man sich überlegt was man alles dazu braucht fällt einem sofort auf das man eine Map braucht.
Mit dem beginnen wir auch. Um eigene Maps zu erstellen empfiele ich Hammer.
So wenn wir jetzt unsere Map (.bsp) erstellt haben beginnen wir damit sie in Irrlicht aufzurufen:
Damit rufen wir eine Map (aber auch anderes) auf. Den Rückgabewert speichern wir in einer Variabele. Jetz kann es vorkommen, dass unsere Map gezippt wurde. Um die zip zu öffnen verwenden wir diese Funktion:
PHP Code:
_IrrAddZipFile()
Als Parameter wird jeweils der Pfad angegeben. Bei _IrrAddZipFile() gibt es noch zwei weitere Parameter: $IRR_IGNORE_CASE, $IRR_IGNORE_PATHS
$IRR_IGNORE_PATHS damit kann ich es dann gleich einfach mit dem Dateinamen öffnen!
Wie immer haben wir sie aber erst jetzt aufgerufen. Wir müssen sie aber noch zeichenen.
Am einfachsten ist es, wenn wir die Map zu einer Scene hinzufügen und dann die Scene zeichnen.
Um eine Scene zu zeichnen haben wir bereits _IrrDrawScene() gelernt. Aber um die Map zur Scene hinzuzufügen verwenden wir eine neue Funktion:
PHP Code:
_IrrAddMeshToSceneAsOcttree()
Dabei wird als Parameter der Rückgabewert vom Mesh-aufruf verwendet.
Den Rückgabewert speichern wir wieder in eine Variabel.
Wenn wir das jetz in unseren Quellcode eifügen sieht das so aus (ich verwende weiterhin die Datein von Irrlicht) :
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $BSPMesh, $BSPNode Global $screen_width, $screen_height
$screen_width = 800 $screen_height = 600
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_ON )
_IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddZipFile( "../media/map-20kdm2.pk3", $IRR_IGNORE_CASE, $IRR_IGNORE_PATHS )
$BSPMesh = _IrrGetMesh( "20kdm2.bsp" )
$BSPNode = _IrrAddMeshToSceneAsOcttree( $BSPMesh )
WHILE _IrrRunning() _IrrBeginScene( 0,0,0 )
_IrrDrawScene()
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Aber warum wird denn jetz nichts angezeigt?
Das liegt daran, dass wir keine Kamera definiert haben, die die Scene aufnimmt.
Um eine Kamera "aufzurufen" gibt es folgende Funktion:
PHP Code:
_IrrAddCamera()
Parameter:
X, Y und Z Koordinaten der Kamera sozusagen ein Ortsvektor
anschließend X, Y und Z Koordinaten eines Vektors des in die Richtung anzeigt in die die Kamera schauen soll.
Wenn wir das jetzt in unseren Quellcode hinzufügen:
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $BSPMesh, $BSPNode, $Camera Global $screen_width, $screen_height Global $LocalCamera[3], $DirectionCamera[3]
$screen_width = 800 $screen_height = 600
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_ON )
_IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddZipFile( "../media/map-20kdm2.pk3", $IRR_IGNORE_CASE, $IRR_IGNORE_PATHS )
$BSPMesh = _IrrGetMesh( "20kdm2.bsp" )
$BSPNode = _IrrAddMeshToSceneAsOcttree( $BSPMesh )
$LocalCamera[0] = 150.0 $LocalCamera[1] = 50.0 $LocalCamera[2] = 50.0
$DirectionCamera[0] = 0.0 $DirectionCamera[1] = 0.0 $DirectionCamera[2] = 0.0
$Camera = _IrrAddCamera($LocalCamera[0], $LocalCamera[1], $LocalCamera[2], $DirectionCamera[0], $DirectionCamera[1], $DirectionCamera[2])
WHILE _IrrRunning() _IrrBeginScene( 255,255,255 )
_IrrDrawScene()
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Jetzt sehen wir vielleicht etwas, aber das ist nur ein kleines Stück von der Map.
Um jetzt sozusagen durch die Map wandern zu können kann man einen andere Kamera verwenden. Um die aufzurufen gibt es die Funktion:
PHP Code:
_IrrAddFPSCamera()
Diese Funktion hat nur wenige Parameter.
Hier verweise ich auf die Hilfe von Irrlicht, da diese für uns gerade nicht relevant sind.
Jetzt erstetzen wir diese Kamera mit der alten:
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $BSPMesh, $BSPNode, $Camera Global $screen_width, $screen_height
$screen_width = 800 $screen_height = 600
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_ON )
_IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddZipFile( "../media/map-20kdm2.pk3", $IRR_IGNORE_CASE, $IRR_IGNORE_PATHS )
$BSPMesh = _IrrGetMesh( "20kdm2.bsp" )
$BSPNode = _IrrAddMeshToSceneAsOcttree( $BSPMesh )
$Camera = _IrrAddFPSCamera()
WHILE _IrrRunning() _IrrBeginScene( 255,255,255 )
_IrrDrawScene()
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Der Unterschied ist faszinierend.
Hier kann man mit der Maus und den Pfeiltasten durch die Map fliegen.
Jetzt nervt uns aber, dass wir immer irgendwo im nirgendswo stehen, anstatt gleich in der Mitte der Map zu sein. Sozusagen müssen wir unseren Startpunkt und usere Startrichtung festlegen. Diese haben wir mit _IrrAddCamera() direkt eingegeben. Aber bei der FPS-Kamera müssen wir dazu diese Funktionen verwenden:
PHP Code:
_IrrSetNodePosition() _IrrSetNodeRotation()
Parameter:
_IrrSetNodePosition():
Das Handle von dem wir die Position bestimmen wollen (sprich man kann damit nicht nur die Kamera verschieben)
X, Y und Z Koordinaten des Ortsvektors. (also die Koordinaten an die das Objekt gesetzt werden soll)
_IrrSetNodeRotation():
Das Handle von dem wir die Rotation bestimmen wollen
X, Y und Z Koordinaten des Richtungsvektors
Auserdem nervt uns die Maus. Die bekommen wir aber schnell weg, und zwar mit:
PHP Code:
_IrrHideMouse()
Diese Funktion hat keine Parameter.
So jetzt sehen wir mal was das an useren Quellcode ändert:
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $BSPMesh, $BSPNode, $Camera Global $screen_width, $screen_height
$screen_width = 800 $screen_height = 600
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_OFF )
_IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddZipFile( "../media/map-20kdm2.pk3", $IRR_IGNORE_CASE, $IRR_IGNORE_PATHS )
$BSPMesh = _IrrGetMesh( "20kdm2.bsp" )
$BSPNode = _IrrAddMeshToSceneAsOcttree( $BSPMesh )
$Camera = _IrrAddFPSCamera()
_IrrSetNodePosition( $Camera, 1750, 149, 1369 ) _IrrSetNodeRotation( $Camera, 4, -461.63, 0 )
_IrrHideMouse()
WHILE _IrrRunning() _IrrBeginScene( 255,255,255 )
_IrrDrawScene()
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Was uns jetzt noch stört, ist dass wir einfach durch die Map fliegen. Wir wollen nun den Boden nicht unter den Füßen verlieren und auch nicht durch Wände spazieren gehen können. Dazu brauchen wir zwei weitere Funktionen, die erste lautet so:
PHP Code:
_IrrGetCollisionGroupFromComplexMesh()
Wir speichern den Rückgabewert in eine Variable.
Der erste Parameter ist der Rückgabewert vom "hinzufügen der Map zur Scene"
Der zweite ist der Rückgabewert der Map selber.
Erstellt eine optimierte Dreieck Auswahl Gruppe aus einem großen, komplexen Netz wie eine Landkarte.
Die zweite Funktion lautet:
PHP Code:
_IrrAddCollisionAnimator()
Parameter:
Diese Funktion hat folgende Parameter:
Das Objekt das mit der anderen Funktion ertellt wurde, sprich an was es kollidieren soll
Das Objekt, das mit Kollidiert. (in unserem Fall wäre das die Kamera)
X,Y und Z, die ein Ellipsoid darstellen. Dieses Ellipsoid soll sozusagen den Körper umschließen.
X,Y und Z für die Gravitation.. (y wird meist als 9.8 verwendet) man kannes auch für Windverhältinisse verwenden.
X,Y und Z für die Verschiebung des Mittelpunktes des Körpers bzw. der Kamera
Aber das wird gleich um einiges verständlicher, wenn wir ein Beispiel machen:
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $BSPMesh, $BSPNode, $Camera Global $screen_width, $screen_height Global $MapCollision
$screen_width = 800 $screen_height = 600
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_OFF ) _IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddZipFile( "../media/map-20kdm2.pk3", $IRR_IGNORE_CASE, $IRR_IGNORE_PATHS ) $BSPMesh = _IrrGetMesh( "20kdm2.bsp" ) $BSPNode = _IrrAddMeshToSceneAsOcttree( $BSPMesh )
$Camera = _IrrAddFPSCamera()
_IrrSetNodePosition( $Camera, 1750, 149, 1369 ) _IrrSetNodeRotation( $Camera, 4, -461.63, 0 )
$MapCollision = _IrrGetCollisionGroupFromComplexMesh( $BSPMesh, $BSPNode )
_IrrAddCollisionAnimator($MapCollision, _ $Camera, _ 30.0,30.0,30.0, _ 0.0,-9.8,0.0, _ 0.0,50.0,0.0 )
_IrrHideMouse()
WHILE _IrrRunning() _IrrBeginScene( 255,255,255 )
_IrrDrawScene()
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Jetzt sehen wir, dass unsere Kamera weder herumfliegt noch durch Wände gehen kann.
Weil es schon ein paar Verwirrungen gab, will ich noch etwas klar stellen:
Da in der 2-Dimensionalen Welt die X-Achse nach rechts geht und Y-Nach oben, wird in Irrlicht die Z-Achse als "Raumachse" nach vorne hinzugefügt. Also wird, wenn wir die Y-Achse sagen die Achse nach oben gemeint.
Soviel dazu.
Doch eine Map allein reicht uns nicht. Wir wollen nun Objekte und Charakter importiern.
Dazu lernen wir weitere Funktionen kennen:
Hier haben wir einfach den Pfad als Parameter.
Wir speichern den Rückgabewert um ihn bei deiser Funktion zu verwenden:
PHP Code:
_IrrAddMeshToScene()
Hier machen wir wider einen Scene für unseren Charakter.
Wo schon gesagt ist der Parameter der Rückgabewert der anderen Funktion.
Den Rückgabewert speichern wir wieder für alle Fälle.
Wenn wir das nun in ein Beispiel schreiben (ich habe den Charakter von den vergefertigten Irrlicht Objekten verwendet):
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $BSPMesh, $BSPNode, $Camera Global $screen_width, $screen_height Global $MD2Mesh, $SceneNode
$screen_width = 800 $screen_height = 600
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_OFF ) _IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddZipFile( "../media/map-20kdm2.pk3", $IRR_IGNORE_CASE, $IRR_IGNORE_PATHS ) $BSPMesh = _IrrGetMesh( "20kdm2.bsp" ) $BSPNode = _IrrAddMeshToSceneAsOcttree( $BSPMesh )
$MD2Mesh = _IrrGetMesh( "../media/zumlin.md2" ) $SceneNode = _IrrAddMeshToScene( $MD2Mesh )
$Camera = _IrrAddFPSCamera()
_IrrSetNodePosition( $Camera, 1750, 149, 1369 ) _IrrSetNodeRotation( $Camera, 4, -461.63, 0 )
_IrrHideMouse()
WHILE _IrrRunning() _IrrBeginScene( 255,255,255 )
_IrrDrawScene()
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Nach ein wenig suchen, sehen wir, dass unser Objekt weit ausserhalb unsere Map ist. Deswegen positionieren wir unseren Charakter in die Map. Dazu verwenden wir wieder die Funktion "_IrrSetNodePosition()", die wir bereits kennen gelernt haben:
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $BSPMesh, $BSPNode, $Camera Global $screen_width, $screen_height Global $MD2Mesh, $SceneNode
$screen_width = 800 $screen_height = 600
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_OFF ) _IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddZipFile( "../media/map-20kdm2.pk3", $IRR_IGNORE_CASE, $IRR_IGNORE_PATHS ) $BSPMesh = _IrrGetMesh( "20kdm2.bsp" ) $BSPNode = _IrrAddMeshToSceneAsOcttree( $BSPMesh )
$MD2Mesh = _IrrGetMesh( "../media/zumlin.md2" ) $SceneNode = _IrrAddMeshToScene( $MD2Mesh )
$Camera = _IrrAddFPSCamera()
_IrrSetNodePosition( $Camera, 1750, 149, 1369 ) _IrrSetNodeRotation( $Camera, 4, -461.63, 0 )
_IrrSetNodePosition( $SceneNode, 1600, 93, 1369 )
_IrrHideMouse()
WHILE _IrrRunning() _IrrBeginScene( 255,255,255 )
_IrrDrawScene()
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Huh! Jetzt fällt uns erst auf, dass er für unsere Map ein wenig zu klein ist ist. Anstatt jetzt den Charakter in irgendeinem Programm größer zu skalieren können wir das ganze auch in Irrlicht machen, und zwar mit dieser Funktion:
PHP Code:
_IrrSetNodeScale()
Als erstes müssen wir der Funktion sagen was es skalieren soll (erster Parameter)
Anschließend die X, Y und Z -Skalierungsfaktoren
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $BSPMesh, $BSPNode, $Camera Global $screen_width, $screen_height Global $MD2Mesh, $SceneNode
$screen_width = 800 $screen_height = 600
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_OFF ) _IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddZipFile( "../media/map-20kdm2.pk3", $IRR_IGNORE_CASE, $IRR_IGNORE_PATHS ) $BSPMesh = _IrrGetMesh( "20kdm2.bsp" ) $BSPNode = _IrrAddMeshToSceneAsOcttree( $BSPMesh )
$MD2Mesh = _IrrGetMesh( "../media/zumlin.md2" ) $SceneNode = _IrrAddMeshToScene( $MD2Mesh ) _IrrSetNodeScale( $SceneNode, 1.25, 1.25, 1.25 )
$Camera = _IrrAddFPSCamera()
_IrrSetNodePosition( $Camera, 1750, 149, 1369 ) _IrrSetNodeRotation( $Camera, 4, -461.63, 0 )
_IrrSetNodePosition( $SceneNode, 1600, 93, 1369 )
_IrrHideMouse()
WHILE _IrrRunning() _IrrBeginScene( 255,255,255 )
_IrrDrawScene()
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Nun gefällt uns das Ausehen nicht ganz. Wenn wir eine Textur verwenden wollen, müssen wir sie zuerst "herrufen":
PHP Code:
_IrrGetTexture()
(hier wird der Pfad als Parameter eingegeben, und der Rückgabewert gespeichert)
... und dann auf usere Scene Draufkleben:
PHP Code:
_IrrSetNodeMaterialTexture()
Der erste Parameter ist das Handle von der Scene, der Zweite das Handle von der Textur.
Und der dritte Parameter ist der Materialindex, meistens 1 oder 0
Nun geben wir das in unseren Code ein:
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $BSPMesh, $BSPNode, $Camera Global $screen_width, $screen_height Global $MD2Mesh, $SceneNode, $MeshTexture
$screen_width = 800 $screen_height = 600
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_OFF ) _IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddZipFile( "../media/map-20kdm2.pk3", $IRR_IGNORE_CASE, $IRR_IGNORE_PATHS ) $BSPMesh = _IrrGetMesh( "20kdm2.bsp" ) $BSPNode = _IrrAddMeshToSceneAsOcttree( $BSPMesh )
$MD2Mesh = _IrrGetMesh( "../media/zumlin.md2" ) $MeshTexture = _IrrGetTexture( "../media/zumlin.pcx" ) $SceneNode = _IrrAddMeshToScene( $MD2Mesh ) _IrrSetNodeMaterialTexture( $SceneNode, $MeshTexture, 0 ) _IrrSetNodeScale( $SceneNode, 1.25, 1.25, 1.25 )
$Camera = _IrrAddFPSCamera()
_IrrSetNodePosition( $Camera, 1750, 149, 1369 ) _IrrSetNodeRotation( $Camera, 4, -461.63, 0 )
_IrrSetNodePosition( $SceneNode, 1600, 93, 1369 )
_IrrHideMouse()
WHILE _IrrRunning() _IrrBeginScene( 255,255,255 )
_IrrDrawScene()
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Jetzt sehen wir, dass sich noch nicht viel geändert hat. Wenn wir überlegen, fällt uns auf, dass wir die Textur auf ein Material gegeben haben. Jetzt müssen wir also nur noch das Material anzeigen lassen:
PHP Code:
_IrrSetNodeMaterialFlag()
Parameter:
Als erstes verweisen wir wieder auf die Scene mit deren Handle
Als zweites kommt der Typ vor: Damit bestimmt man ob es auf Licht empfindlich sein soll oder anderes. Hier möchte ich auf die Hilfe verweisen.
Und als dritter Parameter können wir diese Eigenschaft ein oder ausschalten
Jetzt fügen wir das zu unserem Quellcode hinzu:
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $BSPMesh, $BSPNode, $Camera Global $screen_width, $screen_height Global $MD2Mesh, $SceneNode, $MeshTexture
$screen_width = 800 $screen_height = 600
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_OFF ) _IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddZipFile( "../media/map-20kdm2.pk3", $IRR_IGNORE_CASE, $IRR_IGNORE_PATHS ) $BSPMesh = _IrrGetMesh( "20kdm2.bsp" ) $BSPNode = _IrrAddMeshToSceneAsOcttree( $BSPMesh )
$MD2Mesh = _IrrGetMesh( "../media/zumlin.md2" ) $MeshTexture = _IrrGetTexture( "../media/zumlin.pcx" ) $SceneNode = _IrrAddMeshToScene( $MD2Mesh ) _IrrSetNodeMaterialTexture( $SceneNode, $MeshTexture, 0 ) _IrrSetNodeMaterialFlag( $SceneNode, $IRR_EMF_LIGHTING, $IRR_OFF ) _IrrSetNodeScale( $SceneNode, 1.25, 1.25, 1.25 )
$Camera = _IrrAddFPSCamera()
_IrrSetNodePosition( $Camera, 1750, 149, 1369 ) _IrrSetNodeRotation( $Camera, 4, -461.63, 0 )
_IrrSetNodePosition( $SceneNode, 1600, 93, 1369 )
_IrrHideMouse()
WHILE _IrrRunning() _IrrBeginScene( 255,255,255 )
_IrrDrawScene()
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Und schon wird unsere Textur angezeigt.
Was uns auch bestimmt aufgefallen ist, ist die Animation, die in unserem Objekt gespeichert ist, und diese automatisch abgespielt wird.
Das Blöde allerdings ist, dass sie alle Animationen abspiel, wobei wir nur eine abspielen wollen. Das können wir mit folgender Funktion bestimmen:
PHP Code:
_IrrPlayNodeMD2Animation()
(Funktioniert nur bei *.md2 Models!!!)
Zuerst wird wieder auf die Scene verwiesen und dann wird die Animation gewählt
Wenn wir also jetzt wollen, dass die Animation fürs Stehen abgespielt werden soll, dann verwenden wir $IRR_EMAT_STAND :
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $BSPMesh, $BSPNode, $Camera Global $screen_width, $screen_height Global $MD2Mesh, $SceneNode, $MeshTexture
$screen_width = 800 $screen_height = 600
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_OFF ) _IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddZipFile( "../media/map-20kdm2.pk3", $IRR_IGNORE_CASE, $IRR_IGNORE_PATHS ) $BSPMesh = _IrrGetMesh( "20kdm2.bsp" ) $BSPNode = _IrrAddMeshToSceneAsOcttree( $BSPMesh )
$MD2Mesh = _IrrGetMesh( "../media/zumlin.md2" ) $MeshTexture = _IrrGetTexture( "../media/zumlin.pcx" ) $SceneNode = _IrrAddMeshToScene( $MD2Mesh ) _IrrSetNodeMaterialTexture( $SceneNode, $MeshTexture, 0 ) _IrrSetNodeMaterialFlag( $SceneNode, $IRR_EMF_LIGHTING, $IRR_OFF ) _IrrPlayNodeMD2Animation( $SceneNode, $IRR_EMAT_STAND ) _IrrSetNodeScale( $SceneNode, 1.25, 1.25, 1.25 )
$Camera = _IrrAddFPSCamera()
_IrrSetNodePosition( $Camera, 1750, 149, 1369 ) _IrrSetNodeRotation( $Camera, 4, -461.63, 0 )
_IrrSetNodePosition( $SceneNode, 1600, 93, 1369 )
_IrrHideMouse()
WHILE _IrrRunning() _IrrBeginScene( 255,255,255 )
_IrrDrawScene()
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Wie wir sehen wird nun nur mehr die Animation fürs Stehen abgespielt.
Jetzt gibt es noch eine Funktion, die die Kamera zwingt auf einen bestimmten Punkt zu sehen. Diese können wir verwenden um usere Kamera auf unseren Charakter zu verweisen:
PHP Code:
_IrrSetCameraTarget()
Hier wird auf die Kamera verwiesen und anschließend die X, Y und Z Koordinaten des Punktes, auf den die Kamera gerichtet werden soll.
Wenn wir das nun in die While hinein schreiben sieht das ganze so aus:
PHP Code:
#include "../au3Irrlicht2.au3"
opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit")
Global $BSPMesh, $BSPNode, $Camera Global $screen_width, $screen_height Global $MD2Mesh, $SceneNode, $MeshTexture
$screen_width = 800 $screen_height = 600
_IrrStart( $IRR_EDT_OPENGL, $screen_width, $screen_height, $IRR_BITS_PER_PIXEL_32, _ $IRR_WINDOWED, $IRR_NO_SHADOWS, $IRR_IGNORE_EVENTS, _ $IRR_VERTICAL_SYNC_OFF ) _IrrSetWindowCaption( "Irrlicht Tutorial" )
_IrrAddZipFile( "../media/map-20kdm2.pk3", $IRR_IGNORE_CASE, $IRR_IGNORE_PATHS ) $BSPMesh = _IrrGetMesh( "20kdm2.bsp" ) $BSPNode = _IrrAddMeshToSceneAsOcttree( $BSPMesh )
$MD2Mesh = _IrrGetMesh( "../media/zumlin.md2" ) $MeshTexture = _IrrGetTexture( "../media/zumlin.pcx" ) $SceneNode = _IrrAddMeshToScene( $MD2Mesh ) _IrrSetNodeMaterialTexture( $SceneNode, $MeshTexture, 0 ) _IrrSetNodeMaterialFlag( $SceneNode, $IRR_EMF_LIGHTING, $IRR_OFF ) _IrrPlayNodeMD2Animation( $SceneNode, $IRR_EMAT_STAND ) _IrrSetNodeScale( $SceneNode, 1.25, 1.25, 1.25 )
$Camera = _IrrAddFPSCamera()
_IrrSetNodePosition( $Camera, 1750, 149, 1369 ) _IrrSetCameraTarget( $Camera, 1600, 93, 1369)
_IrrSetNodePosition( $SceneNode, 1600, 93, 1369 )
_IrrHideMouse()
WHILE _IrrRunning() _IrrBeginScene( 255,255,255 )
_IrrSetCameraTarget( $Camera, 1600, 93, 1369)
_IrrDrawScene()
_IrrEndScene() WEND
Func _exit() _IrrStop() Exit EndFunc ; _exit
Soweit erstmal wieder genug.. mit dem wisst er schon über viel bescheid und könnt auch schon viel machen.
Bei Fragen postet sie hier oder fragt gleich den Ersteller.
mfg Time
|
|
|
01/23/2012, 15:42
|
#2
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
|
nein nein nein nein nein!
leute... bitte versucht es garnicht erst spiele in autoit zu schreiben!
notch hat den fehler gemacht minecraft in java zu coden, macht ihr bitte nicht einen ähnlichen fehler!
|
|
|
01/23/2012, 18:18
|
#3
|
elite*gold: 0
Join Date: Sep 2009
Posts: 461
Received Thanks: 55
|
mann muss keine SPiele damit machen.
Man kann die engine auch einfach dazu verwenden um irgendwelche 3d map editor o.ä. zu machen.
Zu minecraft,
Ich glaube da sind paar Leutchen anderer Meinung.
Ich persönlich wüsste nichts das mich stört das minecraft in java programmiert ist.
Ich weiß AutoIt ist nicht die beste Sprache, aber warum auf eine "bessere" umsteigen mind 1 Jahr lernen um die Basic's zu kennen, wenn man nicht all zu hohe Ansprüche hat reicht AutoIt. Ich finde du hättest den Post gleich lassen können, denn wer richtig erfolgreich Spiele programmieren möchte ist nicht liest sich hier kein TuT durch sondern macht dazu eine Ausbildung.
Du kannst AutoIt nicht mit C++ vergleichen.
Dazwischen steckt ein Unterschied.
Du darfst hier nicht mit Spielen wie COD, BF, usw rechnen.
Es sind Dinge mit denen man anfängt.
Um solche Spiele wie oben zu programmieren braucht man viel Erfahrung. Deshalb kann man mit dieser Engine mal langsam anfangen und später umstegen zu anderen.
Um Erfahrungen zu sammeln ist es perfekt.
Bitte denk mal nach was du da sagst.
|
|
|
01/23/2012, 18:24
|
#4
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
|
Quote:
Originally Posted by TimeTooChill
Bitte denk mal nach was du da sagst.
|
Die Wahrheit.
|
|
|
01/23/2012, 20:48
|
#5
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Quote:
|
Ich persönlich wüsste nichts das mich stört das minecraft in java programmiert ist.
|
Mächtiger Performanceverlust, ist dir das etwa nicht genug?
|
|
|
01/23/2012, 21:07
|
#6
|
elite*gold: 0
Join Date: Sep 2009
Posts: 461
Received Thanks: 55
|
ich hab minecraft nur kurz getestet, aber es ist nicht mein Ding.
Aber das ist sowiso unwichtig, hier geht's nicht um minecraft oder Java ;D
|
|
|
01/23/2012, 22:29
|
#7
|
elite*gold: 0
Join Date: Apr 2011
Posts: 91
Received Thanks: 19
|
oha  eine 3d-engine für eine relativ einfache scriptsprache respekt^^
|
|
|
01/24/2012, 05:29
|
#8
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Ist ja nicht direkt für AutoIt. Irrlicht ist eigentlich in C++ geschrieben.
|
|
|
01/24/2012, 08:27
|
#9
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
|
ich habe mich wohl falsch ausgedrückt: es sollte bedeuten, dass das einfach sinnlos ist spiele in autoit zu schreiben!
mapeditoren und minigames sind vollkommen ok..
nur wie gesagt, keine projekte die grösser sind als ne 800x600px map
|
|
|
01/24/2012, 16:05
|
#10
|
elite*gold: 0
Join Date: Sep 2009
Posts: 461
Received Thanks: 55
|
ja, das versuch ich ja die ganze zeit zu sagen. Es ist gut für minigames
#
@hausdrache5:
Die engine ist glaub in c++ geschrieben, aber es hat sich jemand die mühe gemacht sie für autoit brauchbar zu machen: dll's geschrieben ^^ (glaub das es so gemacht wurde, wenn nicht berichtigt mich)
|
|
|
01/24/2012, 16:22
|
#11
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Quote:
Originally Posted by TimeTooChill
Die engine ist glaub in c++ geschrieben, aber es hat sich jemand die mühe gemacht sie für autoit brauchbar zu machen: dll's geschrieben ^^ (glaub das es so gemacht wurde, wenn nicht berichtigt mich)
|
Ich verbessere dich mal.
DLLs sind Konzept von Windows, dass dazu dient Bibliotheken dynamisch mit den Programmen zu verknüpfen und nicht statisch. Da ich kein großen Interesse habe hier alle Eigenschaften von DLLs auf zu zählen, verweise ich auf den Wikipediaartikel dazu: Dynamic Link Libaries
Wenn Irrlicht unter Windows Verwendung findet wird im Normalfall die dynamische Version der Bibliothek verwendet. Die UDF, die du verwendest, ist nur ein Wrapper der C++ Version von Irrlicht, der die sich in der DLL befindenen Funktionen aufruft. (AutoIt Funktionen: DllOpen, DllCall, DllStructCreate etc.)
|
|
|
01/24/2012, 20:12
|
#12
|
elite*gold: 0
Join Date: Sep 2009
Posts: 461
Received Thanks: 55
|
ja, danke dir.
Ich kenn mich mit dem thema nicht sonderlich aus aber wenigstens weiß es jemand
€1: kann es sein das es in letzter zeit antworten immer wdht.? (also epvpers.)
|
|
|
01/24/2012, 21:36
|
#13
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Wenn du nochmal auf den "Antworten"-Bitton klickst, bevor deine Antwort verarbeitet ist, kann das passieren.
|
|
|
01/25/2012, 12:09
|
#14
|
elite*gold: 0
Join Date: Sep 2009
Posts: 461
Received Thanks: 55
|
hm, eigentlich net aber egal^^
|
|
|
03/08/2012, 16:27
|
#15
|
elite*gold: 1
Join Date: Aug 2008
Posts: 295
Received Thanks: 37
|
ist AutoIt echt leicht zu erlernen? Dachte bisher das LUA das einfachste ist...hmm...
|
|
|
 |
|
Similar Threads
|
[AutoIt]AU3Irrlicht2 Tutorial (3D-Engine)
01/21/2012 - General Coding - 0 Replies
erledigt!
|
Au3Irrlicht2 Tut (3D-Engine für Autoit)
01/21/2012 - AutoIt - 2 Replies
wurde in die coding Tutorial Section verschoben
|
Cheat Engine adresse in Autoit ??
07/18/2011 - AutoIt - 4 Replies
Hallo alle zusammen :)
Was ihr vorher wissen solltet :
-kommt mir nicht mit sowas wie "Google doch selbst". Ich google und stöber alle Foren seit genau 11 Stunden durch. Bin auf einige Tutorials gekommen, doch bin nicht sehr weiter gekommen.
Ich habe ein kleines Problem.
Ich würde gerne einen kleinen Hack schreiben.
|
kan man bei autoit cheat engine ??
01/09/2010 - AutoIt - 3 Replies
so kan man bei autoit cheat engine value einbinden??
das zb ein knopf wen drauf geklikt wird waffe +9 sind??moklich??
lg gael1509
|
cheat engine / autoit
04/12/2009 - AutoIt - 4 Replies
hey leute
ich hab bei cheat engine jetzt 10 verschiedene werte.
ich möchte jetzt mit autoit ein programm schreiben, dass so lange alle 2 sekunden auf einen button klickt, (pixel: 655, 425) bis irgendeiner der werte auf 12 ist. dann soll er einfach aufhören zu klicken.
wie geht das? kann mir einer helfen bitte?
|
All times are GMT +1. The time now is 09:55.
|
|