Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 19:58

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Release] Easy to use AutoIt-2D-GameEngine

Discussion on [Release] Easy to use AutoIt-2D-GameEngine within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
[Release] Easy to use AutoIt-2D-GameEngine

So because I really like playing with these Engines, I decided to make a little and easy one, too.
This GameEngine is really easy and of cause this GameEngine is not as good as the GameEngines you may know.
But I made this just for fun.
At first I wanted to use C/C++ for my GameEngine but then I noticed that there are many different (really good) GameEngines. So I also took a look at AutoIt-Engines and I could not find any real Engine.

Thats why I decided to make my Engine with AutoIt and I also finished a peace of the code.

I want to share it as Opensource, you can use it for commercial and non commercial projects. Feel free to change some things and to add/delete some old things.

If you are using this Engine, please give me a place in credits or something similiar.

The File you can download includes an AutoIt-File called "Install_GameEngine.au3", just start this file and then you can use the GameEngine with Syntax-Highlighting and Calltips. There is nothing more to do. You can start after executing Install-Script my examples.

In the File there are also 2 Examples, I was too lazy to write some better looking examples. But the examples should explain some basic things.

Edit:
A german version and some more explanations will follow if you are interested.
Attached Files
File Type: rar ShadowGameEngine.rar (11.8 KB, 2395 views)
Shadow992 is offline  
Thanks
27 Users
Old 07/16/2011, 16:04   #2
 
FizzeBu's Avatar
 
elite*gold: 6
Join Date: Mar 2010
Posts: 12,387
Received Thanks: 2,115
Looks really nice!
And a german version would be great, I think most of the users here would like it.
FizzeBu is offline  
Thanks
2 Users
Old 07/16/2011, 21:12   #3
 
eagIy200's Avatar
 
elite*gold: 0
Join Date: May 2011
Posts: 58
Received Thanks: 5
Eine deutsche Version+Tutorial wäre echt nett, ich schaus mir jetzt aber erstmal an!
eagIy200 is offline  
Old 07/17/2011, 06:19   #4
 
elite*gold: 0
Join Date: May 2008
Posts: 509
Received Thanks: 1,246
Nice, I will take a look at this later.
=Warmonger= is offline  
Thanks
1 User
Old 07/17/2011, 11:14   #5
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Quote:
Originally Posted by eagIy200 View Post
Eine deutsche Version+Tutorial wäre echt nett, ich schaus mir jetzt aber erstmal an!
Durch die 2 Beispiele und durch die Calltips gibt es eigentlich nicht mehr so viel zu erklären. Das meiste macht man Intuitiv so. Aber ich glaube ich werde noch ein Beispiel mit genauer Erklärung machen.
Shadow992 is offline  
Old 07/18/2011, 10:43   #6
 
b4u's Avatar
 
elite*gold: 0
Join Date: Jun 2011
Posts: 268
Received Thanks: 244
Nice, I like it
b4u is offline  
Old 07/18/2011, 18:20   #7
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
schöne idee an sich =)

wäre vielleicht noch ratsam, sich die variablendeklarationen in funktionen nochmals genauer an zu schauen.

lässt du beispielsweise eine for schleife in einer funktion mit dem index $i laufen, und deklarierst diese nicht als lokal, könnte dies bei nutzung der funktion im hauptprogramm zu problemen führen, falls hier ebenfalls $i als indexvariable genutzt wird.

davon abgesehen könnte man vielleicht noch als kleinen schönheitsfehler ansehen, das einige funktionen doch deutlich kürzer gefasst werden könnten.

dies bezieht sich insbesondere auf die funktionen welche ausschließlig boolean werte als rückgabe haben.

nehmen wir zb deine erste funktion:
Quote:
Code:
Func _ShadowEngine_GetColisionWindow($id)
	If $_ShadowEngine_Objects[$id][0] + $_ShadowEngine_Objects[$id][2] + 1 >= $_ShadowEngine_W Or $_ShadowEngine_Objects[$id][1] + $_ShadowEngine_Objects[$id][3] + 1 >= $_ShadowEngine_H Or $_ShadowEngine_Objects[$id][0] <= 1 Or $_ShadowEngine_Objects[$id][1] <= 1 Then
		Return 1
	Else
		Return 0
	EndIf
EndFunc
die könnte man natürlich auch einfach so schreiben:
Code:
Func _ShadowEngine_GetColisionWindow($id)
	If $_ShadowEngine_Objects[$id][0] + $_ShadowEngine_Objects[$id][2] + 1 >= $_ShadowEngine_W Or $_ShadowEngine_Objects[$id][1] + $_ShadowEngine_Objects[$id][3] + 1 >= $_ShadowEngine_H Or $_ShadowEngine_Objects[$id][0] <= 1 Or $_ShadowEngine_Objects[$id][1] <= 1 Then Return 1
	Return 0
EndFunc
das gleiche mit der 2ten funktion:
Quote:
Code:
Func _ShadowEngine_IsMouseInWindow($hGUI)
	$pos = MouseGetPos()
	$win_pos = WinGetPos($hGUI)

	If $pos[0] < $win_pos[0] + $_ShadowEngine_X Or $pos[1] < $win_pos[1] + $_ShadowEngine_Y Then
		Return 0
	ElseIf $pos[0] > $win_pos[0] + $_ShadowEngine_X + $_ShadowEngine_W Or $pos[1] > $win_pos[1] + $_ShadowEngine_Y + $_ShadowEngine_H Then
		Return 0
	Else
		Return 1
	EndIf
EndFunc
welche auch so beschrieben werden könnte:
Code:
Func _ShadowEngine_IsMouseInWindow($hGUI)
	Local $pos = MouseGetPos(), $win_pos = WinGetPos($hGUI)
	If ($pos[0] < $win_pos[0] + $_ShadowEngine_X Or $pos[1] < $win_pos[1] + $_ShadowEngine_Y) Or ($pos[0] > $win_pos[0] + $_ShadowEngine_X + $_ShadowEngine_W Or $pos[1] > $win_pos[1] + $_ShadowEngine_Y + $_ShadowEngine_H) Then Return 0
	Return 1
EndFunc
hierbei handelt es sich allerdings nur um kleinere schönheitsfehler, welche zu minmal größeren ladezeiten des interpreters führen würden.

die variablendeklaration innerhalb der funktionen stellt hierbei ein wesentlich wichtigeres ziel dar, welches betrachtet werden sollte =)
lolkop is offline  
Old 07/18/2011, 19:26   #8
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Quote:
Originally Posted by lolkop View Post
schöne idee an sich =)

wäre vielleicht noch ratsam, sich die variablendeklarationen in funktionen nochmals genauer an zu schauen.

lässt du beispielsweise eine for schleife in einer funktion mit dem index $i laufen, und deklarierst diese nicht als lokal, könnte dies bei nutzung der funktion im hauptprogramm zu problemen führen, falls hier ebenfalls $i als indexvariable genutzt wird.

davon abgesehen könnte man vielleicht noch als kleinen schönheitsfehler ansehen, das einige funktionen doch deutlich kürzer gefasst werden könnten.

dies bezieht sich insbesondere auf die funktionen welche ausschließlig boolean werte als rückgabe haben.

nehmen wir zb deine erste funktion:


die könnte man natürlich auch einfach so schreiben:
Code:
Func _ShadowEngine_GetColisionWindow($id)
	If $_ShadowEngine_Objects[$id][0] + $_ShadowEngine_Objects[$id][2] + 1 >= $_ShadowEngine_W Or $_ShadowEngine_Objects[$id][1] + $_ShadowEngine_Objects[$id][3] + 1 >= $_ShadowEngine_H Or $_ShadowEngine_Objects[$id][0] <= 1 Or $_ShadowEngine_Objects[$id][1] <= 1 Then Return 1
	Return 0
EndFunc
das gleiche mit der 2ten funktion:


welche auch so beschrieben werden könnte:
Code:
Func _ShadowEngine_IsMouseInWindow($hGUI)
	Local $pos = MouseGetPos(), $win_pos = WinGetPos($hGUI)
	If ($pos[0] < $win_pos[0] + $_ShadowEngine_X Or $pos[1] < $win_pos[1] + $_ShadowEngine_Y) Or ($pos[0] > $win_pos[0] + $_ShadowEngine_X + $_ShadowEngine_W Or $pos[1] > $win_pos[1] + $_ShadowEngine_Y + $_ShadowEngine_H) Then Return 0
	Return 1
EndFunc
hierbei handelt es sich allerdings nur um kleinere schönheitsfehler, welche zu minmal größeren ladezeiten des interpreters führen würden.

die variablendeklaration innerhalb der funktionen stellt hierbei ein wesentlich wichtigeres ziel dar, welches betrachtet werden sollte =)
@Variablendeklaration
AutoIt sieht Variablen, die in einer Funktion deklariert wurden als Global an?
Wenn das stimmt, dann hast du mir eben was bei gebracht, denn ich war bisher der festen Überzeugung, dass diese Variablen auch nur lokal verwendbar sind.

@Schönheitsfehler
Ganz ehrlich?
Wen interessierts?
Solange es nicht Geschwindigkeitsvorteile bringt, kann das ruhig so bleiben, trotzdem danke für die Anregung.
Shadow992 is offline  
Old 07/18/2011, 19:47   #9
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
Kann ohne bedenken so gemacht werden.

Code:
For $i = 1 to 5
	MsgBox("","1",$i)
	_func()
Next


Func _func()
	For $i = 1 to 5
	MsgBox("","2",$i)
Next
EndFunc

Außerdem steht in der Help folgendes.
Quote:
For...To...Step...Next
--------------------------------------------------------------------------------

Schleife, die auf einem Ausdruck basiert.


For <variable> = <start> To <stop> [Step <stepval>]
statements
...
Next




Parameter

variable Die Zählervariable.
start Der Startwert der Zählervariable.
stop Der Endwert der Zählervariable.
stepval [optional] Der Wert (auch Kommazahlen und negative Zahlen sind möglich), um den die Zählervariable bei jedem Durchlauf verändert wird. Standard ist 1.



Bemerkungen

Die Variable wird automatisch als lokale Variable deklariert, auch wenn MustDeclareVars aktiviert ist.

For...Next-Schleifen können verschachtelt werden. Die Schleife wird verlassen, wenn der Wert von variable die stop-Grenze überschreitet. Wenn stepVal oder stop eine Variable ist, wird dessen Wert nur beim ersten Durchlauf der Schleife gelesen.

Eine For-Schleife wird nicht ausgeführt, wenn
start > stop und step > 0 oder
start < stop und step negativ ist.


Mich stört vielmehr das ewiglange Präfix der Funktionen
| Moep | is offline  
Thanks
1 User
Old 07/18/2011, 19:54   #10
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Quote:
Originally Posted by | Moep | View Post
Kann ohne bedenken so gemacht werden.

Code:
For $i = 1 to 5
	MsgBox("","1",$i)
	_func()
Next


Func _func()
	For $i = 1 to 5
	MsgBox("","2",$i)
Next
EndFunc

Außerdem steht in der Help folgendes.



Mich stört vielmehr das ewiglange Präfix der Funktionen
Calltips ftw.
Nein Spaß bei Seite, mich störts auch etwas.
Nur eine nette Alternative ist mir auf die Schnelle nicht eingefallen, ich hätte aber nichts gegen Vorschläge.
Shadow992 is offline  
Old 07/18/2011, 20:06   #11
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
es geht nicht darum das funktionen variablen als global definieren, sondern das vorherige deklarierte variablen einfach überschrieben werden...

das dies bei for schleifen so funktioniert habe ich bisher noch nicht gewusst kann aber sein.

schaue ich mir deine 2te funktion die ich schon erwähnte nochmals an

Code:
Func _ShadowEngine_IsMouseInWindow($hGUI)
	$pos = MouseGetPos()
	$win_pos = WinGetPos($hGUI)

	If $pos[0] < $win_pos[0] + $_ShadowEngine_X Or $pos[1] < $win_pos[1] + $_ShadowEngine_Y Then
		Return 0
	ElseIf $pos[0] > $win_pos[0] + $_ShadowEngine_X + $_ShadowEngine_W Or $pos[1] > $win_pos[1] + $_ShadowEngine_Y + $_ShadowEngine_H Then
		Return 0
	Else
		Return 1
	EndIf
EndFunc   ;==>_ShadowEng
sieht man aber das nicht nur bei schleifen nicht auf deklarationen geachtet hast...
wenn mir jetzt jemand wieder mit zitaten aus der hilfe kommt, dass auch mousegetpos etc immer automatisch lokal deklarieren, würde ich einfach sagen, dass es sich hierbei nur um konstruktive kritik handeln sollte.

wenn man ein kleines programm schreibt, bei dem man darauf achtet das variablen in funktionen definitiv nicht global vorkommen, kann man das gerne so gestalten, will man allerdings ein allgemeingültiges framework anbieten, so ist dies mit eine der haupt fehlerursachen, für alle nutzer...

habe mich nicht genauer mit dem code beschäftigt, nur sind das semantische fehler welche mir ohne zu scrollen direkt ins auge gefallen sind.
lolkop is offline  
Thanks
1 User
Old 07/18/2011, 20:08   #12
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
Quote:
Originally Posted by Shadow992 View Post
Calltips ftw.
Nein Spaß bei Seite, mich störts auch etwas.
Nur eine nette Alternative ist mir auf die Schnelle nicht eingefallen, ich hätte aber nichts gegen Vorschläge.
Dann wäre eine kurze Erklärung wie man die Calltips in Scite einfügt vielleicht ganz gut. Dass Problem mit den Präfixen der Global nutzbaren Variablen würde aber bestehen.

Ja keine Ahnung, als alternativ Präfix wäre vieles denkbar.
_SGE_
_SE_
_S992E_
_GE_
_Sh992GE_
| Moep | is offline  
Thanks
1 User
Old 07/18/2011, 20:11   #13


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Naja, könntest ja SE_ anstatt ShadowEngine nehmen.
Oderr, falls das in Autoit existiert Namespaces.

Was mich mal persönlich etwas irritiert (sehe ich etwas öfters): Diese Unterstriche am Anfang des Funktionsnamen.
Ist das so eine Autoit-Konvention? :O

Ansonsten natürlich super Arbeit, ist ja ne Art Marktlücke Fehlt nur noch eine 3D Engine für Autoit
MrSm!th is offline  
Thanks
1 User
Old 07/18/2011, 21:00   #14
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Quote:
Originally Posted by lolkop View Post
es geht nicht darum das funktionen variablen als global definieren, sondern das vorherige deklarierte variablen einfach überschrieben werden...

das dies bei for schleifen so funktioniert habe ich bisher noch nicht gewusst kann aber sein.

schaue ich mir deine 2te funktion die ich schon erwähnte nochmals an

Code:
Func _ShadowEngine_IsMouseInWindow($hGUI)
	$pos = MouseGetPos()
	$win_pos = WinGetPos($hGUI)

	If $pos[0] < $win_pos[0] + $_ShadowEngine_X Or $pos[1] < $win_pos[1] + $_ShadowEngine_Y Then
		Return 0
	ElseIf $pos[0] > $win_pos[0] + $_ShadowEngine_X + $_ShadowEngine_W Or $pos[1] > $win_pos[1] + $_ShadowEngine_Y + $_ShadowEngine_H Then
		Return 0
	Else
		Return 1
	EndIf
EndFunc   ;==>_ShadowEng
sieht man aber das nicht nur bei schleifen nicht auf deklarationen geachtet hast...
wenn mir jetzt jemand wieder mit zitaten aus der hilfe kommt, dass auch mousegetpos etc immer automatisch lokal deklarieren, würde ich einfach sagen, dass es sich hierbei nur um konstruktive kritik handeln sollte.

wenn man ein kleines programm schreibt, bei dem man darauf achtet das variablen in funktionen definitiv nicht global vorkommen, kann man das gerne so gestalten, will man allerdings ein allgemeingültiges framework anbieten, so ist dies mit eine der haupt fehlerursachen, für alle nutzer...

habe mich nicht genauer mit dem code beschäftigt, nur sind das semantische fehler welche mir ohne zu scrollen direkt ins auge gefallen sind.
Oh ja, Dankeschön, ich habe das Deklarieren in AutoIt noch nie wirklich benutzt, kann sein, dass ich es ab und zu einmal vergessen habe.
Ich schaus mir eben noch einmal an.

Quote:
Originally Posted by | Moep | View Post
Dann wäre eine kurze Erklärung wie man die Calltips in Scite einfügt vielleicht ganz gut. Dass Problem mit den Präfixen der Global nutzbaren Variablen würde aber bestehen.

Ja keine Ahnung, als alternativ Präfix wäre vieles denkbar.
_SGE_
_SE_
_S992E_
_GE_
_Sh992GE_
Einfach meine beigefügte Datei "Install_GameEngine.au3" starten.

Quote:
Originally Posted by MrSm!th View Post
Naja, könntest ja SE_ anstatt ShadowEngine nehmen.
Oderr, falls das in Autoit existiert Namespaces.

Was mich mal persönlich etwas irritiert (sehe ich etwas öfters): Diese Unterstriche am Anfang des Funktionsnamen.
Ist das so eine Autoit-Konvention? :O

Ansonsten natürlich super Arbeit, ist ja ne Art Marktlücke Fehlt nur noch eine 3D Engine für Autoit
Namespace gibts leider soweit ich weiß in AutoIt nicht.
Diese Unterstriche am Anfang der AutoIt-Funktionen haben sich so eingebürgert für UDFs also benutzerdefinierte Funktionen.
Ich denke das liegt vor allem daran, dass es keine Namespaces gibt.
Shadow992 is offline  
Thanks
2 Users
Old 09/12/2011, 22:11   #15
 
Nestos's Avatar
 
elite*gold: 0
Join Date: Jul 2008
Posts: 288
Received Thanks: 801
@Shadow992

Ich werd mir die Engine mal ansehen, finde ich eine nette Idee.
Aber man kann sicher einige Funktionen mit Windowsinternen Funktionen austauschen, wie zum Beispiel MouseInClient.

Mit deiner Erlaubnis würde ich die Engine etwas überarbeiten.

MfG,
Nestos.
Nestos is offline  
Reply


Similar Threads Similar Threads
[Release]Easy Launcher + Easy Injector In 1! [Release]
09/09/2010 - Soldier Front Hacks, Bots, Cheats & Exploits - 64 Replies
Hello Elitepvpers, I'm back with a new project! I was bored so i made a USF EasyLauncher + EasyInjector! (ONLY FOR USF! Not for PSF!) U only have to press 3 buttons to start sf with a hack in it! Easy isn't it? U can use it without hack to! Instruction: 1)Open EasyLaunch.exe 2)Login (It's on ijji's site so trusted!)



All times are GMT +2. The time now is 19:58.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.