Hallo NN-Community oder vormals GG-Community,
Ich habe mich mal dazu entschlossen, einen kleinen Text aka Erklärung aka Ratgeber zu gestalten - wie sich jeder im Scripting verbessern kann, was man tun sollte und was nicht (bezogen auf Arma / Bohemia Ihhh) und wie man sich am besten selber helfen kann.
Aber nun gut. Erstmal ein Vorwort zu mir. Und btw. bitte lest den Beitrag vollständig, auch wenn dieser so gut es geht sortiert ist. Naja, ich versuche den Beitrag amüsant zu gestalten - also immer mitdenken^^.
Vorwort:
Ich bin Vincent. Ein Scripter, ein Linux-Liebhaber und bin mehr-oder-weniger fanatisch und perfektionistisch was Script's in SQF angeht. Oftmals könnte ich kotzen, was andere fabrizieren, in dem sie irgendwelche Code-Schnipsel zusammenjagen und sagen, sie haben alles selber gemacht oder noch besser - 'machen ellenlange Scripts die eigentlich viel kürzer geschrieben wären.
Ich finde Scripting super und kann zum Einsteigen sowohl auch als erweitertes Wissen gebraucht werden - nun muss man sagen, dass SQF einen sehr kleinen Horizont besitzt, was die Anwendungszwecke angeht. Aber dazu mehr weiter unten ;).
Der Einstieg in das scripting / programmieren:
Ich kann mich nur noch daran erinnern, was ich damals gemacht habe - ich verlange nicht, dass ihr genau das macht, aber nehmt es als Sinnbild.
Damals fing ich mit PHP an, da ich PHP nutzen musste, um Webanwendungen zu schreiben, und weniger interessiert an den "Compiler"-Sprachen wie C#, Java oder C++ war. Jetzt muss ich dazu sagen, dass PHP objektiv gesehen eine sehr einfache Programmiersprache ist, dennoch ist sie im Vergleich zu "Compiler"-Sprachen sehr langsam (ein normales Script braucht zum laden ca. ~0.09 sek - während ein "Compiler"-basiertes Script wesentlich, wirklich wesentlich schneller ist (> 1 ms, wenn nicht sogar schneller)).
Dabei habe ich eigentlich immer mit irgendwelchen Foren-, Stackoverflow- oder Blogbeiträgen gearbeitet, da ich denke, dass Videos in jeglicher Weise wenig Inhalt auf viel Zeit strecken - und man möchte doch eine Sprache schnell lernen, oder?
Wichtig ist dabei auch anzumerken, dass man es gar nicht erst versuchen sollte sich eine Sprache anzueignen, wenn man "keine Lust" hat, sich etwas durch zu lesen. Das trifft aber auf fast alles zu, auch auf die Schule.
Also halten wir fest: Es ist wichtig, dass man wirklich Spaß daran hat etwas im Bereich Scripting/Programmieren zu lernen. Ich verweise aber hierzu unten mal auf Quellen zum "lernen".
Man muss natürlich auch anmerken, dass es von Person zu Person unterschiedlich ist, wie schnell jemand Inhalte auffassen kann. Daher nicht aufgeben, wenn man etwas mal nicht sofort versteht.
Was ich persönlich auch empfehlen kann ist, sich Scripts durchzulesen oder zu überfliegen und versuchen zu verstehen - Wieso? Warum? Weshalb? - etwas überhaupt so funktioniert. Sowas hilft ungemein beim einprägen und ist dazu auch sehr praktisch: "man ist schon im Scripting selbst" - also Bildlich gesprochen - man scriptet ja noch nicht^^.
Wenn ihr mit dem scripting/programmieren beginnt müsst ihr euch, es ist auf jeden Fall wichtig um effizient zu arbeiten, in die Engine hineindenken können, dass heißt im eigentlichen Sinne, dass ihr wissen solltet, wie die Engine arbeitet, um Schlupflöcher, die z.B. die Leistung vom Clienten oder Server verringern finden könnt.
Hmm. Fällt mir noch etwas für Anfänger ein? Gerade nicht, aber ich werde den Beitrag, wenn es möglich ist, erweitern, um euch eine Vielfalt von Lernmöglichkeiten zu bieten.
Quellen:
- Bohemia Interactive Community - Bohemia Wiki
- Bohemia Interactive Forums - Bohemia Forum
- KK's blog - KillZoneKid's Blog
Das SQF-Scripting im Allgemeinen:
SQF ist eigentlich eine sehr gemischte Sprache - dabei wurde die Sprache von PHP und C#, aber auch von C++ und Phyton oder Ruby beeinflusst, was sich im "Schreibfluss" bemerkbar macht. Jetzt ist natürlich wichtig zu erwähnen, dass SQF weder einen externen "Compiler" oder Programm zum ausführen benötigt, naja, ausgenommen sind alle Arma-Teile und die anderen Spiele-Titel von Bohemia Interactive, die dieselbe Arma-Engine nutzen. Das schränkt SQF zunächst ein, was sich z.B. beim Serverseitigen Scripting herausstellt (z.B. File-Management). Nun ist SQF auch nur für die Ingame-Arma-"programmierung" gedacht und soll nicht die Engine an sich "scriptbar" machen.
Der nutzen von SQF sollte aber jedem Glasklar sein - es ist eben zum "Scripting" gedacht, also z.B. einen Helikopter von A -> B schicken oder eine Animation ausführen, um sich auf einen Stuhl zu setzen. Ist zunächst nichts besonderes, aber man kann SQF auch wunderbar für andere Dinge nutzen, z.B. ein Framework wie Altis Life oder einen spaßigen Spielmodus wie KotH(King of the Hill) schrieben - basierend auf SQF, einer Scripting Sprache.
Dass ist jetzt ein sehr allgemeiner Teil. Aber ich habe nicht zu viel versprochen.
Weitere Tipps für Anfänger und erweiterte Scripter:
Also zunächst ist es wichtig, dass ihr eine "nette" Programmierumgebung, also IDE habt. Ich empfehle Visual Studio Code, da kann zur not auch mit GIT gearbeitet werden, bietet eine gute Übersicht und ist sehr stabil im Betrieb. Notepad++ ist zwar auch eine gute Lösung, ist aber manchmal blockierend (so geht es mir zu mindestens damit).
Das Ziel eines jeden Scripters/Programmierers sollte sein, die laufenden Scripts stätig zu verbessern, um auch das letzte Stückchen Performance zu ergattern. Ich weiß, dass einige IT'ler sagen werden "Never change a running system." aber ich sage "Make sure that the running system runs better than the running system."
Wenn etwas nicht funktioniert, dann schaltet mal "-showScriptErrors" als Parameter ein - hilft oftmals. Ansonsten gibt es LOOOOOOooooooooooooooooooooooooogggs.
Apropo Log's: Eine schöne weißheit aus der IT ist, dass man sämtlichen "scheiß", den man in Scripts ausprobiert loggen sollte. Ich meine jetzt nicht, dass ein "diag_log str "Script wurde gestartet";" dort stehen sollte, dennoch sollte man alle Möglichkeiten durch "If"-Anweisungen ausschildern.
D.h. z.B.:
damit man ein "Live"-Feedback davon bekommt, was man selbst eigentlich gerade "tut".
Die Sachen mit dem verkaufen und kaufen von SQF-Scripts... :
Um jetzt zu guter letzt nochmal auf einen besonderen Punkt zu sprechen zu kommen. Das verhandeln von Scripts. Das verhandeln von Scripts ist meiner Meinung nach das niederste was man bei SQF machen kann. Es ist eben so, dass es zu aller erst unglaublich moralisch verwerflich (danke an Xylometachlorid^^) ist, für "Open Source"-Content Geld zu verlangen; Andererseits geht es dann soweit, dass dieses Verhalten Arma zerstört. Auf unbewusster, sowie bewusster Weise.
Ich bin wie schon gesagt kein Fan davon und unterstütze das verkaufen, zu mindestens das öffentliche Anbieten von solchen Dingen in keinster Weise.
Nun muss man auch erwähnen, dass es in Ordnung ist, wenn der Dienst, also die Zeit die ein Scripter in seine Arbeit gesteckt hat, entlohnt wird. Aber bitte nicht in Form von statischen Produkten, da ist kein können gefragt und das Geld ist dabei zu unrecht investiert - zu mal viele Scripts auch ein unnatürliches Preis-Leistungs-Verhältnis haben.
Ich weiß, dass ich mich mit diesem Teil sehr weit aus dem Fenster lehne, aber bitte - Arma 3 ist eine Basis, die für jeden zugänglich ist - wieso dann Geld verlangen?
War das jetzt erstmal alles? Ja. Ich weiß es ist ein "wenig" Text, aber gewöhnt euch dran, dass sollte und ist gang-und-gebe in der IT.
Ich wünsche jedem noch einen schönen Tag und bedanke mich vorausschauend schon für die Kritik von euch.
Wenn ihr mehr von dieser Art Beitragen haben wollt, schreibt ne Antwort - andernfalls schreibt auch ne Antwort.
Der Hamburger, aber auch irgendwie nicht in Hamburg lebende Junge,
Mit freundlichen Grüßen,
Vincent H.
Und hier steht irgendeine Signatur. \/