<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SFM-Blog &#187; Workshop</title>
	<atom:link href="http://blog.sfm-modding.de/category/workshop/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sfm-modding.de</link>
	<description>Tutorials, Tipps &#38; mehr</description>
	<lastBuildDate>Tue, 01 Mar 2011 10:04:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>LS &#8211; Scriptkurs</title>
		<link>http://blog.sfm-modding.de/2010/11/23/ls-scriptkurs/</link>
		<comments>http://blog.sfm-modding.de/2010/11/23/ls-scriptkurs/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 19:30:17 +0000</pubDate>
		<dc:creator>Manuel Leithner</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Workshop]]></category>

		<guid isPermaLink="false">http://blog.sfm-modding.de/?p=315</guid>
		<description><![CDATA[Hi,
da ich derzeit sehr beschäftigt bin und nur wenig Zeit für LS finde, habe ich mich entschlossen, die PDFs des Scriptkurses als Download-Paket zur Verfügung zu stellen.
Den Download findet ihr hier:
http://ls-network.de/index.php?section=downloads&#38;hash=d0da05d95501acfcf1b3e3abf45da0c3
Viel Spaß
]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>da ich derzeit sehr beschäftigt bin und nur wenig Zeit für LS finde, habe ich mich entschlossen, die PDFs des Scriptkurses als Download-Paket zur Verfügung zu stellen.</p>
<p>Den Download findet ihr hier:</p>
<p><a href="http://ls-network.de/index.php?section=downloads&amp;hash=d0da05d95501acfcf1b3e3abf45da0c3">http://ls-network.de/index.php?section=downloads&amp;hash=d0da05d95501acfcf1b3e3abf45da0c3</a></p>
<p>Viel Spaß</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sfm-modding.de/2010/11/23/ls-scriptkurs/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Grundlagen des Game-Development &#8211; Teil 2</title>
		<link>http://blog.sfm-modding.de/2010/07/22/grundlagen-des-game-development-teil-2/</link>
		<comments>http://blog.sfm-modding.de/2010/07/22/grundlagen-des-game-development-teil-2/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 19:04:55 +0000</pubDate>
		<dc:creator>Manuel Leithner</dc:creator>
				<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Workshop]]></category>
		<category><![CDATA[Game-Development]]></category>
		<category><![CDATA[Hilfe]]></category>
		<category><![CDATA[Modding]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.sfm-modding.de/?p=108</guid>
		<description><![CDATA[Im ersten Teil des Workshops haben wir gesehen aus welchen Teilen eine Game-Engine besteht. Im zweiten Teil wollen wir nun näher auf die Technik dahinter eingehen.
Multihreading

Um die einzelnen Teile zu einem flüssigen Spielablauf zusammen zu bauen, benötigt man eine Technik um mehrere Programmteile nahe zu gleichzeitig ablaufen zu lassen. Hier kommt die Technologie des Multithreading zum [...]]]></description>
			<content:encoded><![CDATA[<p>Im ersten Teil des Workshops haben wir gesehen aus welchen Teilen eine Game-Engine besteht. Im zweiten Teil wollen wir nun näher auf die Technik dahinter eingehen.</p>
<h4>Multihreading</h4>
</p>
<p>Um die einzelnen Teile zu einem flüssigen Spielablauf zusammen zu bauen, benötigt man eine Technik um mehrere Programmteile nahe zu gleichzeitig ablaufen zu lassen. Hier kommt die Technologie des <strong>Multithreading</strong> zum Einsatz. Sie ermöglicht es z.B. das Rendering und die Soundausgabe gleichzeitig ablaufen zu lassen und somit ein flüssiges Gameplay zu realisieren.<br />
<span id="more-108"></span><br />
Entgegen einem weit verbreitetem Gerücht muss hier kurz erwähnt werden, dass auch die GIANTS-Engine auf diese Technologie zurückgreift. Folgende Threads werden hier benutzt:</p>
<p>1x Sound<br />
1x Spiellogik + Rendering (OpenGL mit wieder eigenen Threads)<br />
2-nx Physik-Berechnungen</p>
<p>Der Ursprung dieses Gerüchts liegt am Windows-Betriebssystem, dass Programme und deren Threads managed und ein Programm erst auf mehrere Kerne verteilt, sofern eine bestimmte Anzahl an Threads benutzt wird.</p>
<h4>Der Gameloop</h4>
</p>
<p>Der Gameloop ist ein weiterer wichtiger Bestandteil eines Spiels, denn er sorgt für den reibungslosen, an den jeweiligen Rechner angepassten (FPS) Spielablauf. Der folgende Dummy-Code zeigt kurz den üblichen Ablauf in einer vereinfachten Form:</p>
<ol>
<li><em>Solange das Spiel nicht geschlossen wird:</em>
<ol>
<li><em><em>Checke Input (Tastatur, Maus, Joystick, etz.)</em></em></li>
<li><em><em><em>Berechne Physik</em></em></em></li>
<li><em><em><em><em>Berechne Spiellogik</em></em></em></em></li>
<li><em><em><em><em><em>Gebe Sound aus</em></em></em></em></em></li>
<li><em><em><em><em><em><em>Male Spiel (Rendering)</em></em></em></em></em></em></li>
</ol>
</li>
<li><em><em>Starte wieder bei 1.</em></em></li>
</ol>
</p>
<p>Im Zuge des Multithreadings werden die einzelnen Schritte (1.1-1.5) nahezu parallel ausgeführt.</p>
<p>Wie bereits erwähnt, sorgt dieser Gameloop für den reibungslosen Ablauf des Spiels. Die Kennzahl die diesen Ablauf wiederspiegelt wird im 3D-Bereich als Frames-Per-Second(FPS) bezeichnet. Sie definiert also die Anzahl der gerenderten Bilder pro Sekunde und ist damit ein Indiz für das Empfinden des Spielablaufs. Das diese Kennzahl von einigen Faktoren abhängt, weiß jeder, der schon einmal verschiedene  3D-Spiele gespielt hat. Einige dieser Faktoren der Beeinflussung sind hier aufgelistet:</p>
<ul>
<li>Polygonanzahl und andere Einflüsse (Einstellungen, Tetxuren, etz)</li>
<li>Qualität der Programmierung (Engine oder Scripte)</li>
<li>Anderweitige Tätigkeiten am PC</li>
<li>Potential des Rechners</li>
</ul>
<p>Im späteren Verlauf des Workshops werden wir noch sehen wie man diese FPS-Kennzahl in die Berechnung der Scripte mit einbeziehen kann, um so, trotz geringer FPS-Zahl einen reibungslosen Spielablauf zu garantieren. Zuvor sollten aber noch einige wichtige Prinzipien genannt werden, um eben die FPS-Zahl nicht unnötig zu verschlechtern:</p>
<ol>
<li>Performance-orientiertes Modding ist wichtig
<ol>
<li>Saubere Scripte
<ol>
<li>Abfangen unnötiger Berechnungen</li>
<li>Weglassen unnötiger Schleifen-Durchläufe</li>
</ol>
</li>
<li>Sauberes Polygonmodelling
<ol>
<li>Weglassen unnötiger Polygone</li>
<li>Weglassen unnötiger Details</li>
<li>Darstellung von Details durch Texture-, Normal-, Specular-Maps</li>
<li>Richtige Einstellung der I3D-Files</li>
</ol>
</li>
</ol>
</li>
<li>Auswirkungen des Moddings beachten
<ol>
<li>Modding ist Eingriff in die Standard-Spielroutinen</li>
<li>Veränderung an diesen -&gt; erneutes Testen erforderlich</li>
</ol>
</li>
</ol>
</p>
<h4>Grundlagen des Modelling</h4>
</p>
<p>Zum Ende noch ein paar Definitionen der wichtigsten Begriffe:</p>
<ul>
<li>Bestandteile eines Modells:
<ul>
<li>Vertex (<em>Eckpunkt eines Modells</em>)</li>
<li>Polygon (<em>Fläche zwischen 3-Vertices</em>)</li>
<li>Face (<em>Fläche aus mehreren Polygonen</em>)</li>
<li>Mesh (<em>Ansammlung von zusammengehörenden Faces/Polygonen)</em></li>
<li>TG (<em>Transformgroup zur Definition eines neuen Spaces)</em></li>
<li>Modell (<em>Ansammlung von Meshes und Transformgroups)</em></li>
</ul>
</li>
<li>Sichtbarkeit:
<ul>
<li>Per Defintion sind Faces/Polygone nur von einer Seite sichtbar!</li>
<li>Sichtbarkeit wird über sogenannte Normals gesteuert</li>
</ul>
</li>
<li>Normals:
<ul>
<li>Benötigt zur Berechnung des Lichteinfalls und der Reflexionen</li>
</ul>
</li>
<li>Weitere Grundbegriffe:
<ul>
<li>Shading (<em>Definition der Oberfläche eines 3D-Objektes)</em></li>
<li>Textur (<em>Muster/Struktur die auf ein 3D-Objekt aufgebracht wird)</em></li>
<li>Mapping (<em>Prozess des Auflegens einer Textur auf ein 3D-Objekt)</em></li>
<li>Lightning (<em>Prozess des Positionierens von Lichtquellen)</em></li>
<li>Rendering (<em>Erzeugen einer 2D-Ansicht eines 3D-Modells)</em></li>
</ul>
</li>
<li>Lichtarten:
<ul>
<li>Pointlight (<em>hat Ursprung und strahlt rundum Licht ab)</em></li>
<li>Directionallight (<em>strahlt auf der ganzen Breite aus einer definierten Richtung)</em></li>
<li>Spotlight (<em>wie Pointlight, nur Begrenzung auf Abstrahlkegel)</em></li>
</ul>
</li>
<li>Orientierung und Ausrichtung
<ul>
<li>Jedes Objekt (TG/Mesh) hat einen Nullpunkt (Pivot)</li>
<li>Alle Aktionen werden von diesem aus berechnet
<ul>
<li>Translation (Verschiebung)</li>
<li>Rotation (Drehung)</li>
<li>Scale (Skalierung)</li>
</ul>
</li>
</ul>
</li>
<li>Local- vs. Worldspace
<ul>
<li>Worldspace (<em>Koordinaten <strong>ABSOLUT </strong>zum Spiel-Nullpunkt)</em></li>
<li><em>Localspace (Koordinaten <strong>RELATIV</strong> zum Vater-Nullpunkt)</em></li>
</ul>
</li>
</ul>
<p>Viel Spaß beim Lesen</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sfm-modding.de/2010/07/22/grundlagen-des-game-development-teil-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Grundlagen des Game-Development &#8211; Teil 1</title>
		<link>http://blog.sfm-modding.de/2010/07/14/grundlagen-des-game-development-teil-1/</link>
		<comments>http://blog.sfm-modding.de/2010/07/14/grundlagen-des-game-development-teil-1/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 17:32:08 +0000</pubDate>
		<dc:creator>Manuel Leithner</dc:creator>
				<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Workshop]]></category>
		<category><![CDATA[Game-Development]]></category>
		<category><![CDATA[Modding]]></category>

		<guid isPermaLink="false">http://blog.sfm-modding.de/?p=76</guid>
		<description><![CDATA[Heute und jetzt startet die Online-Version unseres Script-Workshops. Ich werde, wie bereits vor einigen Tagen erwähnt, in den nächsten Wochen die einzelnen Kapitel bzw. Auszüge aus ihnen aufbereiten und hier veröffentlichen.
Nur Auszüge?
Ja und Nein. Einerseits werde ich nicht alles 1:1 übernehmen können, da viele Kapitel einfach zu viel Theorie enthalten, um hier in einem Artikel [...]]]></description>
			<content:encoded><![CDATA[<p>Heute und jetzt startet die Online-Version unseres Script-Workshops. Ich werde, wie bereits vor einigen Tagen erwähnt, in den nächsten Wochen die einzelnen Kapitel bzw. Auszüge aus ihnen aufbereiten und hier veröffentlichen.</p>
<p>Nur Auszüge?</p>
<p>Ja und Nein. Einerseits werde ich nicht alles 1:1 übernehmen können, da viele Kapitel einfach zu viel Theorie enthalten, um hier in einem Artikel zusammen gefasst zu werden. Um dies zu bewerkstelligen, werde ich die einzelnen Artikel nochmals aufteilen. Andererseits gibt mir diese Splittung auch die Möglichkeit, die einzelnen Kapitel mit mehr Inhalt zu füllen, denn die Ursprünglichen Folien sind eben sehr spärlich gefüllt, denn es sind ja nur Folien.</p>
<p><em>Wichtig ist jedoch, dass ich persönlich wohl eher keine Fragen per Email-Anfragen beantworten werde. Deshalb wäre ich froh, wenn diese Fragen hier als Kommentare gepostet werden!</em></p>
<p>Also starten wir mit <strong>Kapitel 1: Grundlagen des Game-Development</strong></p>
<p><span id="more-76"></span></p>
<h3><strong>Die Game-Engine</strong></h3>
</p>
<p>Um sich einen Überblick zu verschaffen, was genau eine Game-Engine ist bzw. beinhaltet, reicht ein Blick auf Wikipedia. Hier erfährt man folgendes:</p>
<blockquote><p><em>&#8220;Eine </em><strong><em>Spiel-Engine</em></strong><em> (engl. </em><strong><em>Game Engine</em></strong><em>) ist ein Computerprogramm, das den Spielverlauf steuert und für die visuelle Darstellung des Spieleablaufs verantwortlich ist.&#8221;</em></p></blockquote>
<p>Da es sich bei einer solchen Game-Engine aus einem Gerüst verschiedenster Teile handelt, ist es notwendig sich einen genauen Überblick über die einzelnen Bestandteile zu verschaffen, um später genau zu wissen, wie die einzelnen Funktionen einer Engine zusammenspielen. Die wichtigsten Bestandteile sind die folgenden:</p>
<h4>Grafikengine<span style="font-weight: normal;"> (Darstellung des Spiels, das sogenannte Rendern)</span></h4>
<h4>Physiksystem<span style="font-weight: normal;"> (Berechnung der physikalischen Gegebenheiten im Spiel)</span></h4>
<h4>Soundsystem<span style="font-weight: normal;"> (Mischen und Wiedergeben der verschiedenen Sound-Files/-Streams)</span></h4>
<h4>Steuerung<span style="font-weight: normal;"> (Abfangen und Reagieren auf Nutzer-Eingaben, z.B. Tastatur, Maus, etz,)</span></h4>
<h4>Datenmanagement<span style="font-weight: normal;"> (Management aller Daten, z.B. Positionsdaten von Fahrzeugen)</span></h4>
<h4>Netzwerkanbindung<span style="font-weight: normal;"> (Optional)</span></h4>
<h4>Skript-Unterstützung<span style="font-weight: normal;"> (Optional)</span></h4>
</p>
<p>Hieraus ist nun auch der Unterschied zwischen einer <strong>3D-Engine</strong> und einer <strong>Game-Engine</strong> ersichtlich. Denn eine 3D-Engine ist nur ein Teilbereich bzw. eine Untermenge einer Game-Engine.</p>
<h3><strong>Warum Skript-Unterstützung?</strong></h3>
</p>
<p>Kommen wir nun zum wohl, aus Sicht dieses Workshops, wichtigsten Part der Game-Engine und der Frage, warum eine Skript-Unterstützung bei einer Game-Engine Sinn macht.</p>
<p>Um diese Frage zu klären ist eine Auflistung von Vor- und Nachteilen sinnvoll:</p>
<p><strong>Vorteile:</strong></p>
<h4><span style="font-weight: normal;">+ Script-Sprache leichter erlernbar (für Artists und Designer)</span></h4>
<h4><span style="font-weight: normal;">+ Schnelles <a title="Prototyping" href="http://de.wikipedia.org/wiki/Prototyping_(Softwareentwicklung)" target="_blank">Prototyping</a></span></h4>
<h4><span style="font-weight: normal;">+ Keine <a title="Neucompilierung" href="http://de.wikipedia.org/wiki/Kompilierung" target="_blank">Neucompilierung</a> des Engine-Codes</span></h4>
<h4><span style="font-weight: normal;">+ Erleichterte Modding-Möglichkeiten</span></h4>
</p>
<p><strong>Nachteile:</strong></p>
<h4><span style="font-weight: normal;">- Script-Sprache ist langsamer als <a title="Nativer-Code" href="http://de.wikipedia.org/wiki/Maschinensprache" target="_blank">Nativer-Code</a> (C++)</span></h4>
<h4><span style="font-weight: normal;">- Einbindung einer Script-Unterstützung mit Aufwand verbunden (Geld, Zeit, Wartung)</span></h4>
</p>
<p>Wenn man sich diesen Vergleich nun ein bisschen genauer ansieht und auch die einzelnen Vor- und Nachteile gewichtet, wird man merken, dass die Vorteile doch sehr überwiegen. Das zeigt sich auch in der Entwicklung der letzten Jahre. Immer mehr Engine-Hersteller bieten diese Script-Unterstützung an. Die bekanntesten Sprachen sind wohl <strong>UnrealScript</strong>, <strong>C-Script</strong> und <strong>LUA</strong>. Letztere wird in vielen bekannten Spielen, wie z.B. WorldOfWarcraft, Crysis, Siedler und auch im Landwirtschafts-Simulator benutzt.</p>
<p>So das war nun der erste Teil des Workshops. Weitere Folgen. Viel Spaß beim lesen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sfm-modding.de/2010/07/14/grundlagen-des-game-development-teil-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Workshop-Reihe</title>
		<link>http://blog.sfm-modding.de/2010/06/12/workshopreihe/</link>
		<comments>http://blog.sfm-modding.de/2010/06/12/workshopreihe/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 11:18:48 +0000</pubDate>
		<dc:creator>Manuel Leithner</dc:creator>
				<category><![CDATA[Workshop]]></category>
		<category><![CDATA[Diskussion]]></category>
		<category><![CDATA[Folien]]></category>
		<category><![CDATA[Online]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://blog.sfm-modding.de/?p=23</guid>
		<description><![CDATA[Unsere Online-Workshop-Reihe "Neue Modder braucht das Land" ist ja nun schon hinreichend bekannt. 
Neu ist nun aber das wir uns entschieden haben, diese bisher auf 5-10 Leute beschränkten Workshops frei für jedermann zur Verfügung zu stellen.]]></description>
			<content:encoded><![CDATA[<p>Unsere Online-Workshop-Reihe &#8220;Neue Modder braucht das Land&#8221; ist ja nun schon hinreichend bekannt.<br />
Neu ist nun aber, dass wir uns entschieden haben, diese bisher auf 5-10 Leute beschränkten Workshops frei für jedermann zur Verfügung zu stellen.<br />
Das Ganze wird wie folgt ablaufen:</p>
<p>In den nächsten Wochen werde ich die einzelnen Foliensätze für das Web aufbereiten und dann nach und nach in kleinen Artikeln online stellen. Ich werde Anfangs zu Testzwecken die Diskussionsplattform offen lassen, sodass auch über diese Artikel diskutiert werden kann, sofern Fragen aufkommen.</p>
<p>Ich hoffe, dass sich dadurch noch mehr neue Modder finden lassen, die die Community noch weiter voranbringen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sfm-modding.de/2010/06/12/workshopreihe/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

