HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   SQF-Handbuch (reloaded) (https://hx3.de/editing-scripting-187/sqf-handbuch-reloaded-24134/)

[GNC]JamesRyan 01.08.2014 13:14

SQF-Handbuch (reloaded)
 
Hallöchen liebe Community,

mit Erscheinen von ArmA3 möchte ich auch mein Handbuch mal in diesem Bereich anbieten, da ich nicht weiß, wie sehr der ArmA2-Editing-Bereich noch genutzt/besucht wird:

Zitat:

Zitat von [GNC]JamesRyan (Beitrag 450107)
Aktuelle Version: v06
SQF-Scriptguide v06

Direkter Download




Abend liebe Community,

mein Name ist [3.JgKp]James und ich bin Mitglied der 3. Jägerkompanie . Ich arbeite seit einigen Wochen aufgrund eines claninternen Lehrgangs an einem SQF-Handbuch zusammen mit Bunkerfaust und würde dieses gerne nach Fertigstellung veröffentlichen, da der Hauptgedanke dieses Werkes die Einführung völlig unerfahrener Leser in SQF ist, damit auch diese möglichst bald Scripte schreiben oider wenigstens nachvollziehen können.

Das ganze wird drei große Teile haben:
Teil I : SQF-Grundlagen: Beschreibung aller wesentlichen Sprachelemente, also Syntax, Datentypen, Kontrollstrukturen
Teil II: Lokalität (SQF im Multiplayer)
Teil III: Beispielscripte und nützliche Tipps

Im Moment bin ich halbwegs gut mit Teil I beschäftigt, die anderen werden dann folgen.

Warum schreibe ich bereits zu einem so frühen Stadium des Projektes? Weil dieses "Buch" für euch ist und ich daher ähnlich wie Mr. Murray euer Feedback bzw, eure Wünsche mit einbauen möchte.

Das heißt konkret: Was wünscht ihr euch in diesem Handbuch? Was möchtet ihr persönlich zu ArmA und SQF wissen, was über Scripte erklärt bekommen? In diesem Sinne möchte ich diesen Thread gerne verstanden wissen. Eventuell kann ich auch von Zeit zu Zeit Probekapitel herausgeben, aber ich scheue mich etwas wegen des Copyrights. Aber ich denke, mit einer geschützten PDF sollte das Lesen alleine kein Problem bereiten.

Ich hoffe, dass dieses Projekt auf Interesse stößt. Wenn jemand glaubt, dass sei völlig überflüssig und der Zug sei abgefahren, kann er dies gerne mitteilen. Außerdem fokussiere ich mich derzeit vollständig auf ArmA2, da ich für ArmA3 noch keine Zeit hatte. Sollten sich wesentliche Dinge aus ArmA2 in ArmA3 bzgl SQF geändert haben, werde ich dies natürlich nachtragen (müssen).

Ich möchte zum Abschluss betonen, dass ich keine Einführung in den Missionsbau schreibe. Wie man diverse Dinge wie Einheiten in Türmen, Animationen oder dergleichen hinbekommt, sollte nicht so sehr Sinn und Zweck dieses Handbuches sein. Es soll wirklich SQF an sich erklären und mit SQF vertraut machen, so dass man mit den vielen Hilfen wie Comref und BIS Wiki in der Lage ist, jedes Programm in SQF selbst umsetzen zu können bzw. ein Problem mithilfe eines Scriptes lösen zu können. Für gezielte Lösungen ist Mr. Murray bzw. das Internet die bessere Lösung. Auch die Beispielscripte aus Teil III sollen Grundkonzepte widerspiegeln, nicht alle Eventualitäten abdecken.

Vielen Dank und einen schönen Abend ;)

PS: Bitte nicht über den veralteten Nickname hier wundern, obwohl ich noch Mitglied der GNC bin schreibe ich hier wie gesagt als Mitglied der 3.

Link zum alten Thread:
http://hx3.de/newreply.php?do=newreply&p=450107

Bisher hatte ich keine Zeit, Teil II anzufangen bzw. mich mit den Neuerungen in ArmA3 zu beschäftigen, aber das soll die Monate nachgeholt werden.

Daher kann ich hier nur wie im alten Thread um eure Unterstützung bitten. Welche Themen hättet ihr gerne erklärt, gerade in ArmA3 was ist neu bzw. veraltet und so nicht mehr geläufig etc.pp

Ich stehe jeder Zeit für Fragen, Anregungen und Kritik zur Verfügung.

Würde mich freuen, wenn ein Admin den Post anpinnen könnte.

Drunken Officer 01.08.2014 14:47

Und zack bei den Favoriten gespeichert! :daumen:

Keksi43 02.08.2014 02:35

Hey,

erstmal: Klasse Arbeit!:daumen:

Aber könntest du das Ding vllt. auch irgendwo hochladen, wo man sich nicht extra anmelden muss um es zu downloaden?

mfG. Keksi43

Drunken Officer 02.08.2014 03:17

jo die PDF, wenn sie nicht zu groß ist, als DROPBOX Download Link einstellen. :naughty:

Kein fiese Werbefallen und 100% kostenlos

[GNC]JamesRyan 02.08.2014 10:24

Hm hat mir bisher nie jemand gesagt, schon lustig. Scheint tatsächlich so zu sein, obwohl wohl jeder seinen FB-Account benutzt. Dann gibts jetzt eben einen Link für alle! Ersten Post editiert

Rockhount 02.08.2014 11:57

Ich habe mir gerade nur schnell das Thema "Performance" angeschaut und bemerkt, dass du für die Messung der Zeit die Befehle nur einmal ausführst. Das ist aber zu wenig. Um die Leistungsunterschiede zu erkennen, müsstest du jeden Befehl schon mindestens 1000 Mal in einer "For" Schleife ausführen, um die wirklichen Performanceunterschiede zwischen den Befehlen erkennen zu können. Außerdem hast du beim Vergleich der Schleifen "ForEach" vergessen.

[GNC]JamesRyan 02.08.2014 12:11

Nein muss ich nicht, da ich diese Tests so wie es dort steht ausgeführt habe und die Unterschiede entsprechend aufgetreten sind. Dass sie größer werden, wenn man von 100 auf 1000 wiederholungen geht ,versteht sich von selbst....es geht aber um realistische Größen und da zeigt sich bereits bei 100 Durchgängen die besagten Unterschiede, was Sinn und Zweck des Abschnittes ist ;).
Nein habe ich nicht vergessen, taucht nur nicht in der Tabelle selbst auf:
"Übrigens ist die FOREACH-Schleife ähnlich performant wie die FOR-Schleife und gehört zu den besten Strukturen in ganz ArmA. So braucht eine FOREACH-Schleife mit 150 Einträgen nur ca. 0.001 ms." Aber danke fürs kritische Lesen!

Übrigens sehe ich gerade, du hast mir schon damals dein Feedback gegeben das hatte ich ja soweit eingebaut ;) Ziel ist immer nur, den Leser an die Materie heranzuführen. Ob 0.001 vs 0.0001 Sekunde praxisrelevant ist, ist nicht entscheidend, sondern das Grundverständnis, dass es überhaupt Unterschiede gibt und dass diese in der Größenordnung von einer Zehnerpotenz liegen. Jeder kann dann selbst entscheiden, WANN das überhaupt relevant wird. Ich behaupte, das 99 % aller Skripte, die jemand schreibt, der mein Handbuch liest, performancetechnisch überhaupt nicht kritisch sind und auch diesbezüglich nicht überarbeitet werden müssen. Wer wirklich so viele while-Schleifen benutzt, dass er die Performance spürbar beeinflusst, wird sich dann auch mit der Thematik befassen ;)

Pfandgiraffe 06.08.2014 09:37

Ja kann sein. Aber bitte bedenke nochmal dein Fazit was du aus dem Ergebnis ableitest.

Du schreibst dort, dass die FOR-Schleife schnell und effizient ist. Schnell mag sein aber effizient ist relativ und abhängig davon was man benötigt bzw. für was eine Schleife eingesetzt wird. Denn in den seltensten Fällen wird wirklich der komplette Durchlauf der Schleife innerhalb eines Frames benötigt. Entscheidend ist nicht die Effizienz der Schleife sondern inwiefern die Schleife effizient für die Mission ist bzw. das Script welches auf die Auswertung wartet.

In den meisten gewöhnlichen Anwendungsfällen in denen deine Zielgruppe einen Loop ausführt, sehe ich die waitUntil-Schleife in Sachen Effizienz weit vorn. Warum - damit kann der Anwender nicht so viel falsch machen. Mit den While und For Loops werden die meisten Scripte zerschossen weil die Anwender i.d.r. nicht genau wissen was sie da überhaupt anrichten. (bzw. welche Auswirkung der ausgeführte Code im Loop hat)

Du gehst zwar anschließend kurz auf den Sleep-Befehl ein, jedoch kommt der Hinweis darauf, dass ein Loop erstmal grundsätzlich eingedämmt werden muss zu kurz. (Oder ein Hinweis darauf dafür zu sorgen das ein Loop auch eine Endbedingung haben muss)


Was ich mir auch noch grundsätzlich wünschen würde zu dem Thema Performance: Ein Apell erst garkeine Loops zu verwenden sondern wenn immer möglich eventbasiert zu arbeiten!



Grüße

[GNC]JamesRyan 06.08.2014 10:40

acknowledged

Dann schreibe ich das Kapitel mit euren Anmerkungen halt noch ein wenig um...ich wollte doch eigentlich neuen Content aufnehmen :p

Rockhount 06.08.2014 13:17

Ich würde für den Performance-Vergleich erst gar nicht die winzigen Zeitangaben benutzen, da diese mit der Verstopfung der Script-Engine und der Stärke der CPU extrem variieren können, sondern die langsamste Schleife nehmen und darauf aufbauend die reduzierte Zeit der anderen Schleifen als Prozentsatz angeben. Für aussagekräftige Tests würde ich aber mindestens 10000-1000000 Durchläufe empfehlen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:38 Uhr.

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias


SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119