OMSI Plugin Framework

Aus OMSIWiki
Version vom 23. November 2012, 14:32 Uhr von Holmexx (Diskussion | Beiträge) (Rechtschreibfehler beseitigt)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu:Navigation, Suche

Inhaltsverzeichnis

  • Vorwort
  • Kapitel 1 - Allgemeines
    • Voraussetzungen und Installation
  • Kapitel 2 - Die graue Theorie
    • ein bisschen Theorie muss sein
  • Kapitel 3 - Die Plugin-Schnittstelle
    • die Arbeitsweise der Plugin-Schnittstelle
  • Kapitel 4 - Das OMSI Plugin Framework
    • detaillierte Beschreibung des Frameworks
  • Kapitel 5 - Die OMSI Plugin Framework Debug-Hilfen
    • Beschreibung der Debug-Hilfen zum Debuggen eines Plugins
  • Kapitel 6 - Ein Beispielprojekt
    • Beispielprojekt für eine (fast) vollautomatische Klimaanlage
  • Online-Hilfe
    • die vollständige Dokumentation zum Framework

Vorwort zum Vorwort

Liebe angehende Plugin-Programmierer,

dieses Tutorial zum OMSI Plugin Framework ist - wie man so schön neudeutsch sagt, "Working under progress". Ich stelle das unfertige Tutorial hauptsächlich aus zwei Gründen bereits zur Verfügung:
1.) damit diejenigen unter euch, die schon über ausreichende Programmiererfahrung verfügen und ohne viele weitere Erklärungen auskommen, schon mal loslegen können und
2.) damit jeder schon während ich die einzelnen Kapitel schreibe, über das Forum Ideen, Verbesserungsvorschläge, Fragen zu Unklarheiten usw. einbringen kann.

Bitte, werdet nicht ungeduldig, wenn mir nicht jeden Tag ein neues Kapitel aus der Feder tropft. Ich habe so nebenbei noch eine 'richtige' Arbeit bei der Berliner Feuerwehr und ... äh, da war doch noch was ... irgendwas war da noch ... was war denn da bloß noch ... ach ja, 'ne Familie ist da ja auch noch.

In diesem Sinne, viel Spass beim programmieren und diskutieren

--Holmexx (Diskussion) 07:07, 19. Nov. 2012 (CET)

Vorwort

Vielleicht hat der/die Eine oder Andere ja schon mal mit dem Gedanken gespielt, sich an ein Plugin heranzuwagen, das Vorhaben aber dann verworfen, weil er/sie gedacht, programmieren ist was für Profis und viel zu schwer. Die Erstellung eines Plugins für den OMSI ist - auch mit geringer Programmiererfahrung - gar nicht so schwierig wie es auf den ersten Blick aussieht. Das Entscheidende wird ja schon hier im OMSI-Wiki erklärt. Allerdings beziehen sich diese Erklärungen auf die Programmiersprache Pascal, die einstmals mit Borlands Delphi weite Verbreitung fand. Borland ist seit langem Geschichte und damit Delphi schon fast in Vergessenheit geraten. Die Firma Embarcadero vertreibt zwar Delphi wieder, die Preise dort werden aber jeden Hobbyprogrammierer abschrecken. Die Alternative kommt von Microsoft. Dort kann man sich Visual Studio Express kostenlos herunterladen. Für die Plugin-Programmierung benötigst Du Visual C++ 2010 EXPRESS. Wenn Du nun noch über wenigstens grundlegende Kenntnisse in der Programmiersprache C++ verfügst, kann es ja losgehen. Aber halt, warum C++? Geht nicht auch C# oder Visual Basic? Aus technischer Sicht ist es absolut möglich, ein Plugin in C# oder VB zu entwickeln. Allerdings stehen sich mit C#/VB und OMSI zwei Welten gegenüber. Die erste Welt ist die des "Managed Code" und die Andere die des "Unmanaged Code". Um beide Welten zusammen zu bringen, brauchst Du eine Wrapper-DLL. Und die kannst Du nur mit - Du ahnst es bereits - C/C++ programmieren, auch noch verbunden mit einem dramatisch erhöhten Schwierigkeitsgrad. Außerdem macht COM-Programmierung keinen Spaß, sondern ist einfach nur schmerzhaft. Ein weiteres Hindernis ist die Architektur eines "Managed Code"-Programmes. Managed Code ist auf maximale Sicherheit ausgelegt, nicht auf Performance. Es ist ungefähr so, als ob Du mit einer voll gepanzerten Limousine bei der DTM antrittst. Dein Auto ist zwar unkaputtbar, schade ist nur, dass die anderen Fahrer schon beim ersten Bier sitzen nach dem Rennen, während Du noch 6 Runden zu fahren hast. Bleiben wir also lieber bei C++.

Um die Sache, insbesondere für Programmiernovizen, noch etwas zu vereinfachen, habe ich dieses Framework entwickelt, mit dem sich - hoffentlich ;-) - schnell und einfach Plugins programmieren lassen. Ich habe mich ganz bewusst für die Programmiersprache C++ entschieden, obwohl mit dem OpenSource-Projekt Lazarus ein gut gelungener Delphi-Klon existiert und man damit sogar in reinrassigem Pascal im Delphi-Stil programmieren könnte. Aber C++ ist doch noch etwas systemnaher als Pascal und bietet dem Plugin-Programmierer Möglichkeiten, die in Pascal nur recht umständlich oder sogar überhaupt nicht möglich wären (z.B. Klassen-Templates, Verwendung von Makros).


[zum Kapitel 1]