Es geht weiter!
Nach fast einem Jahr Pause geht es nun weiter mit dem Projekt OctoAwesome! Das NoobDevTv-Team versucht wieder regelmäßig Donnerstags um 19 Uhr einen OctoAwesome-Stream auf den Streaming-Kanäle von NoobDevTv: Twitch, Youtube und Mixer. zu veranstalten! Die neu produzierten Folgen der nun dritten Staffel werden ab jetzt auf deren Youtube-Kanal veröffentlicht.Extensions: Unterschied zwischen den Versionen
Manuel (Diskussion | Beiträge) K (Überarbeiten-Hinweis) |
Manuel (Diskussion | Beiträge) (ResourcePacks hinzugefügt, Einleitung überarbeitet, Rest auskommentiert.) |
||
Zeile 1: | Zeile 1: | ||
{{Überarbeiten}}[[Kategorie:Überarbeiten]] | {{Überarbeiten}}[[Kategorie:Überarbeiten]] | ||
− | + | '''Dieser Artikel beschreibt den neuen Lademechanismus aus dem Branch feature/entities''' | |
− | + | In diesem Artikel geht es um das Entwickeln von eigenen Erweiterungen für das Projekt OctoAwesome. | |
− | + | ==Erweiterungen erstellen== | |
− | + | Erweiterungen müssen in allen Fällen eine eigene .dll Dateien sein, die entweder direkt im Programmverzeichnis oder im Unterverzeichnis <code>Plugins</code> liegen müssen. Zur Entwicklung verwendet man am besten [[VisualStudio]] oder [[MonoDevelop]]. Der Namespace- und Assemblyname sollte im Format <code>OctoAwesome.*</code> oder <code>OctoAwesome.Plugin.*</code> sein. In einer einzelnen Erweiterung können mehrere erweiternde Typen definiert sein. | |
− | |||
− | < | ||
− | + | Eine Erweiterung ist eine Klasse, die von <code>IExtension</code> abgeleitet ist. Alle solchen Klassen werden beim Programmstart geladen, wenn der Nutzer sie aktiviert hat. Die Erweiterungsklasse enthält Informationen zur Erweiterung und Code für den Anwendungstart. Darüber können mit dem übergebenen <code>IExtensionLoader</code> einzelne Typen für das Spiel registriert werden: | |
− | + | * Definitions (= Blocktypen, Items und Baumtypen) | |
+ | * Map Populators | ||
+ | * Map Generatoren (noch keine Auswahl möglich) | ||
+ | * Entitytypen | ||
+ | * Extender für Entitäten und die Simulation | ||
− | ==Blocktypen== | + | ''Die Dokumentation zu den einzelnen Typen wird zur Zeit überarbeitet und wird in Kürze wieder online sein.'' |
+ | <!--===Blocktypen=== | ||
;Benötigte Verweise: | ;Benötigte Verweise: | ||
Zeile 28: | Zeile 31: | ||
Die Methoden <code>GetPhysicalProperties()</code> und <code>Hit()</code> müssen zwar implementiert werden, werden aber nicht vom Spiel verwendet. Das <code>Icon</code> und der <code>Name</code> werden im Spiel angezeigt, aber nicht zur internen Identifikation eingesetzt, können also lokalisiert werden. | Die Methoden <code>GetPhysicalProperties()</code> und <code>Hit()</code> müssen zwar implementiert werden, werden aber nicht vom Spiel verwendet. Das <code>Icon</code> und der <code>Name</code> werden im Spiel angezeigt, aber nicht zur internen Identifikation eingesetzt, können also lokalisiert werden. | ||
− | ==Map Populators== | + | ===Map Populators=== |
;Benötigte Verweise: | ;Benötigte Verweise: | ||
Zeile 39: | Zeile 42: | ||
<code>Order</code> definiert die Reihenfolge, in der die Populatoren auf die Welt angewendet wird. In der Methode <code>Populate()</code> wird ein Chunk mit Dingen versehen. | <code>Order</code> definiert die Reihenfolge, in der die Populatoren auf die Welt angewendet wird. In der Methode <code>Populate()</code> wird ein Chunk mit Dingen versehen. | ||
− | ==Baumtypen== | + | ===Baumtypen=== |
;Benötigte Verweise: | ;Benötigte Verweise: | ||
Zeile 51: | Zeile 54: | ||
Über <code>MinTemperature</code>, <code>MaxTemperature</code> und <code>GetDensity()</code> werden die Minimal-/Maximaltemperaturen für diesen Baum und die Häufigkeit des Auftretens ermittelt. In der Methode <code>Init()</code> können die benötigten Blocktypen herausgesucht werden und dann schließlich in der Methode <code>PlantTree()</code> zum "Pflanzen" eines Baumes verwendet werden. | Über <code>MinTemperature</code>, <code>MaxTemperature</code> und <code>GetDensity()</code> werden die Minimal-/Maximaltemperaturen für diesen Baum und die Häufigkeit des Auftretens ermittelt. In der Methode <code>Init()</code> können die benötigten Blocktypen herausgesucht werden und dann schließlich in der Methode <code>PlantTree()</code> zum "Pflanzen" eines Baumes verwendet werden. | ||
− | = | + | ===Map Generatoren=== |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
;Benötigte Verweise: | ;Benötigte Verweise: | ||
Zeile 67: | Zeile 64: | ||
Zur Zeit werden die vorhandenen MapGeneratoren aus Erweiterungen nur bedingt berücksichtigt.--> | Zur Zeit werden die vorhandenen MapGeneratoren aus Erweiterungen nur bedingt berücksichtigt.--> | ||
+ | ==ResourcePacks== | ||
+ | |||
+ | Wenn einem die Texturen einer Erweiterung nicht gefallen, muss man nicht sofort eine eigene Erweiterung erstellen. Häufig reicht dafür ein ResourcePack aus. | ||
+ | |||
+ | Ein ResourcePack ist ein eigener Unterordner im Ordner <code>Resources/</code>. In diesem Ordner kann optional eine Info-Datei mit dem Namen <code>packinfo.xml</code> angelegt werden, diese Informationen werden im Spiel angezeigt. Zum Aufbau dieser Datei siehe den Link unten. | ||
+ | |||
+ | Im Ordner des ResourcePacks werden zu ersetzende Resourcen in Unterordnern gespeichert. Die Ordnernamen entsprechen dabei den Namespacenamen der ladenden Komponente oder Klasse (mit <code>/</code> statt <code>.</code>). | ||
+ | |||
+ | ; Beispieldateien: | ||
+ | : [https://github.com/OctoAwesome/octoawesome/blob/develop/OctoAwesome/OctoAwesome.Community/Resources/TomTexturePack/packinfo.xml packinfo.xml] | ||
+ | ; [https://github.com/OctoAwesome/octoawesome/tree/develop/OctoAwesome/OctoAwesome.Community/Resources/TomTexturePack Ordnerstruktur] |
Version vom 24. Februar 2017, 19:59 Uhr
Diese Seite bedarf einer Überarbeitung, da sie unvollständig oder fehlerhaft ist. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, sie zu verbessern, vermerke es auf der Diskussionsseite und entferne anschließend diese Markierung. Vielen Dank für Deine Mithilfe! |
Dieser Artikel beschreibt den neuen Lademechanismus aus dem Branch feature/entities
In diesem Artikel geht es um das Entwickeln von eigenen Erweiterungen für das Projekt OctoAwesome.
Erweiterungen erstellen
Erweiterungen müssen in allen Fällen eine eigene .dll Dateien sein, die entweder direkt im Programmverzeichnis oder im Unterverzeichnis Plugins
liegen müssen. Zur Entwicklung verwendet man am besten VisualStudio oder MonoDevelop. Der Namespace- und Assemblyname sollte im Format OctoAwesome.*
oder OctoAwesome.Plugin.*
sein. In einer einzelnen Erweiterung können mehrere erweiternde Typen definiert sein.
Eine Erweiterung ist eine Klasse, die von IExtension
abgeleitet ist. Alle solchen Klassen werden beim Programmstart geladen, wenn der Nutzer sie aktiviert hat. Die Erweiterungsklasse enthält Informationen zur Erweiterung und Code für den Anwendungstart. Darüber können mit dem übergebenen IExtensionLoader
einzelne Typen für das Spiel registriert werden:
- Definitions (= Blocktypen, Items und Baumtypen)
- Map Populators
- Map Generatoren (noch keine Auswahl möglich)
- Entitytypen
- Extender für Entitäten und die Simulation
Die Dokumentation zu den einzelnen Typen wird zur Zeit überarbeitet und wird in Kürze wieder online sein.
ResourcePacks
Wenn einem die Texturen einer Erweiterung nicht gefallen, muss man nicht sofort eine eigene Erweiterung erstellen. Häufig reicht dafür ein ResourcePack aus.
Ein ResourcePack ist ein eigener Unterordner im Ordner Resources/
. In diesem Ordner kann optional eine Info-Datei mit dem Namen packinfo.xml
angelegt werden, diese Informationen werden im Spiel angezeigt. Zum Aufbau dieser Datei siehe den Link unten.
Im Ordner des ResourcePacks werden zu ersetzende Resourcen in Unterordnern gespeichert. Die Ordnernamen entsprechen dabei den Namespacenamen der ladenden Komponente oder Klasse (mit /
statt .
).
- Beispieldateien
- packinfo.xml
- Ordnerstruktur