SupremeDeveloper – Programming and more…

8. August 2010

Flexibles Arbeiten mit XMonad

Filed under: Blog — Schlagwörter:, , , — Jesse Klugmann @ 15:57

Seit kurzer Zeit habe ich XMonad auf meinem Netbook und meinem PC installiert. XMonad ist ein alternativer Window-Manager für XServer. Er teilt Fenster automatisch auf dem Bildschirm auf und lässt einem mit ein paar Tasten-Kombination die Anordnung der Fenster verändern.

XMonad hat ein paar besondere Eigenschaften. Einmal davon abgesehen, dass XMonad in Haskell geschrieben ist, ist er ein sehr stabiler und leicht zu bedienender Window-Manager. Eine weitere große Stärke von XMonad ist die Flexibilität. XMonad kann man individuell nach seinen Wünschen konfigurieren und sehr flexibel den gesamten Aufbau editieren. Dies geschieht direkt am Source-Code von XMonad, ist aber trotzdem relativ einfach zu handhaben. Nicht-Programmierer und Nicht-Haskell-Programmierer werden hier einige Schwierigkeiten haben, ich hatte zum Glück keine, da ich seit ein paar Wochen Haskell lerne.

Ich schätze XMonad besonders bei der Programmierung und beim Debuggen. Durch die bequeme Aufteilung kann man einfach per Tastendruck von Fenster zu Fenster wechseln und Debuggen und/oder Programmieren. Das hört sich im ersten Moment etwas eigenartig an, aber wer XMonad mal ausprobieren sollte, der wird diese “Dynamik” zu schätzen wissen. Allgemein kann ich sagen, dass XMonad für Situation in denen man mehrere Fenster benötigt perfekt geeignet ist, aber auch in einem Fenster lässt sich alles relativ einfach handhaben.

XMonad kann ich jedem nur empfehlen!

24. Juni 2010

SandBox – Dev Diary #2

Filed under: Projekte,Sandbox — Schlagwörter: — Jesse Klugmann @ 18:49

Moin!

Wer nicht weiß, was Sandbox ist, muss hier klicken.

Lange Zeit habt ihr schon nichts mehr von uns gehört. Immerhin, fast 20(!) Tage musstet ihr auf Nachrichten über euer lieblings Open-Source Projekt verzichten. Was für eine Qual! :D

Naja, wir werkeln fleißig weiter. Hidden hat nochmal sein ganzes Script-Konzept überdacht. Wie man es bei Open Source kennt, Komponenten werden gemacht, um wieder in den Müll geworfen zu werden und neu entwickelt zu werden.

Bei meinem 3D-Editor-Part hat sich leider nicht viel geändert, das Design für den Editor steht soweit, nur die Engine buggt noch rum. Ich gehe davon aus, dass ich den ersten intialen Release des Editors Ende August, nach dem Sommerferien, präsentieren kann. Die Zeit der großen Sprünge ist noch nicht gekommen, aber jeder werkelt fleißig in seiner Stube, um euch irgendwann einmal ein sorgenfreieres Roboter-Programmieren zu ermöglichen.

In diesem Sinne, tschau!

Mfg, Jesse Klugmann

6. Juni 2010

Sandbox – Dev Diary #1

Filed under: Projekte,Sandbox — Schlagwörter:, , — Jesse Klugmann @ 13:09

Falls Sandbox unbekannt ist, lese bitte diesen Blog-Eintrag.

Gestern ist Sandbox offiziell neu gestartet worden, aber das heißt nicht, dass man sich am nächsten Tag faul hinlegt.Nein, wir waren heute sehr fleissig, bis jetzt wurden 8 Revisionen commitet und wahrscheinlich auch schon die eine oder andere Club-Mate geleert(Jedenfalls bei mir :D ).

Ich kann hier natürlich nicht für alle sprechen,  das überlasse ich lieber den anderen. ;)

Mein heutiges Thema war die Kommunikation zwischen Script-IDE und Parkour-Editor.Dabei sollen die Steuerungs-Daten des Roboters von der IDE direkt zum Editor übertragen werden, hierbei war es mir wichtig, dass der User dafür keinen Finger rühren muss.Sobald der Script fertig ist, soll man auf einen Button drücken könne, der die Daten dann zum Editor überträgt.Der Editor interpretiert die Daten und steuert so den Roboter durch den Track.

Um zwischen zwei Prozessen zu kommunizieren gibt es mehrere Wege.Die bekannteste Methode, die jedem bekannt sein sollte, ist das Clipboard.Nachteil beim Clipboard ist, dass die Daten auf dem Clipboard überschrieben werden.Aber da Sandbox userfreundlich werden soll, habe ich mich dagegen entschieden.Die nächste Möglichkeit sind Memory Mapped Files, die aber überdemensioniert sind um ein bisschen Text zu übertragen.

Entschieden habe ich mich letztendlich für die klassische Variante, das Windows-Message System.Man schickt einfach eine Nachricht per SendMessage() an ein anderes Handle:

Erstmal muss man einen Message Identifer deklarieren.

const
  WM_SendDataMSG = WM_USER + 4242;

Alle selbstdefinierten IDs müssen höher als WM_USER sein.

  SendMessage(Form1.Handle, WM_SendDataMSG, 0, DWORD((in_Data)));

Per SendMessage sendet man nun die Daten an ein anderes Handle.Bei diesem Beispiel schickt man es einfach an den Absender.

procedure MessageReceiver(var msg: TMessage); message WM_SendDataMSG;

Der Message Receiver nimmt die Nachricht an und wertet sie aus:

procedure TForm1.MessageReceiver(var msg: TMessage);
{* Nimmt die Daten an und gibt sie ins Memo aus *}
var
  out_Data: TSTRINGS;
begin
  out_Data := TSTRINGS(msg.lParam); {* Parameter der Nachricht sind die Datan *}
  msg.Result := 1;  {* Message Result ist true *}
  Memo2.Lines := out_Data;
end;

Da man nur einen einzigen Identifer erwartet, muss man nicht prüfen welche ID die Nachricht hat.SendMessage ist für uns die einfachste Möglichkeit Daten zwischen 2 Prozessen auszutauschen.

Bald werden hier auch Blogs von den anderen Mitgliedern stehen!Bis dahin werde ich immermal wieder was über die momentanen Entwicklungen schreiben.

Jesse

5. Juni 2010

Sandbox – Restart

Filed under: Projekte,Sandbox — Schlagwörter:, — Jesse Klugmann @ 15:27

Moin!

Sandbox ist wird “Robotics-Development”-Umgebung, in der man schnell und einfach RCX und NXT-Roboter programmieren und in einer virtuellen Umgebung testen können wird.Dabei setzt sich das Studio aus verschiedenen seperaten Parts zusammen, einmal die IDE für die Programmierung, den Simulations-Editor um Parkours erstellen zu können und den Roboter zu testen und zu guter Letzt den Download-Manager um das entwickelte Programm auf den Lego-Mindstorm Roboter zu übertragen.

Der Script-Parser der IDE soll eine user-konfigurierbare Scriptsprache in die Sprachen der bereits genutzen Mindstorm-IDEs konvertieren.Der Vorteil der ganzen Sache ist, dass die Scriptsprache sehr vereinfacht ist im Vergleich zu anderen.Einfach und schnell soll man mit Sandbox entwickeln können.Der Simulations-Editor funktioniert nach dem ganz normalem Editor-Prinzip, 4 verschiedene Viewports mit verschiedenen Ansichten des Tracks.Das ganze wird mit OpenGL gerendert.Grade beim Simulations-Editor haben wir darauf geachtet, dass er auch auf leistungsschwachen PCs läuft.

Vor einiger Zeit, genau genommen Anfang 2009, wurde das Projekt von Hidden initiert.Auf Grund von Zeitproblemen und gesundheitlichen Gründen mussten wir das Projekt bereits früh wieder aufgeben.Jetzt, Mitte 2010, ist es wieder soweit, wir haben uns entschieden einen neuen Anlauf zu wagen.Diesmal sind die Umstände wesentlich besser, Zeit und Mittel stehen zur Verfügung.

Ab heute werden immermal wieder Teammitglieder des Projektes hier was über die Fortschritte und Probleme des Projekts posten.Unser Scheduling ist ziemlich eng, bis Anfang Oktober soll eine erste Alpha-Version fertig sein.Wo wir jetzt schon bei Fakten sind:

Sprache: Delphi/Object Pascal
Platform: Windows – vermutlich ab 2000
Alpha-Release: Anfang Oktober

Auf ein gutes Jahr!

30. Mai 2010

WebGL Labor #1

Filed under: Game Programming — Schlagwörter:, — Jesse Klugmann @ 16:36

Moin!

Ich habe mich in den letzten paar Wochen in WebGL eingearbeitet und möchte nun eine kleine Tutorial Serie veröffentlichen.Im ersten Teil dreht sich alles um die Initialisierung und die Besonderheiten von WebGL.

Los gehts!

Browser

Um 3D Grafik auch in den Browser zu bekommen, braucht man den aktuellen Nightly Build vom Feuer-Fuchs.Hier downloaden, anschließend einfach extrahieren.Normalerweise ist WebGL leider noch nicht aktiviert, deswegen muss man erst die Config ändern.Dafür muss in die Addressleiste “about:config” eintippen und “webgl.enabled_for_all_sites” zu true ändern.Nun ist der Browser startklar.

WebGL wird wie man es kennt, in HTML integriert.

Die Besonderheiten

WebGL setzt auf OpenGL ES 2.0 auf, die Unterschiede von OpenGL ES zu dem Desktop OpenGL sind eigentlich auch nicht so extrem.Für mich war die größte Umgewöhnung, dass man keine Fixed-Function Pipeline mehr verwenden kann.

Implementierung

Ziel ist es, ein WebGL-Context zu initialisieren und ein einfaches schwarzes Fenster zu rendern.Das Initialisieren läuft eigentlich relativ einfach ab, so wie man das von OpenGL kennt:

	function Init_WebGL( canvas )
	{
		try {
			webgl = canvas.getContext("experimental-webgl");// Initialize WEBGL
			webgl.viewportWidth = canvas.width; /* Get the viewport*/
			webgl.viewportHeight = canvas.height;
		} catch( e ) {}
		if (!webgl) {
			/* Error - WebGL not initialized */
			alert("Could not initialize WebGL!Check your browsers settings!");
			return;
		}
		/* Web GL is initialized */
    	webgl.clearColor(0.0, 0.0, 0.0, 1.0);
    	webgl.clearDepth(1.0);
    	webgl.enable(webgl.DEPTH_TEST);
    	webgl.depthFunc(webgl.LEQUAL);
	}

Wie man sehen kann ist das eigentliche Initialisieren nur eine einzige Zeile.Anschließend wird, wie man es kennt, Fehlerüberprüfung gemacht.Am Ende werden dann nochmal Standard-Settings wie Clear-Color oder Clear-Depth gesetzt.

Bis jetzt sieht das noch ziemlich einfach aus,  zum Glück bleibt das auch so.

	function Draw()
	{
		webgl.viewport( 0, 0, webgl.viewportWidth , webgl.viewportHeight );
		webgl.clear(webgl.COLOR_BUFFER_BIT | webgl.DEPTH_BUFFER_BIT);
		webgl.flush();
	}

Das Rendern funktioniert ähnlich einfach.In der ersten Zeile wird der Viewport festgelegt und anschließend wird der Backbuffer geleert.Flush() tauscht den Frontbuffer mit dem Backbuffer.Wie angekündigt ist der Code weiter einfach zu verstehen.

Zum Abschluss kommen noch der HTML-Body und eine kleine Start-Funktion:

	function StartWebGL()
	{
		var canv = document.getElementById("gl_canvas"); // Get Canvas ID
		Init_WebGL( canv );
		setInterval( Draw , 15 );
	}

Mit document.getElementByID() holt man sich die ID eines Elements.Anschließend übergeben wir das Canvas an unsere Init-Funktion.Zuletzt setzen wir noch das Intervall für unsere Render-Funktion.

<body onload=”StartWebGL();”>

<canvas id=”gl_canvas” style=”border: none;” width=”800″ height=”600″></canvas>

</body>

Beim Laden des Bodys wird die StartWebGL()-Funktion aufgerufen.Der Canvas-Tag deklariert ein HTML5-Canvas.Das Resultat kann man hier begutachten.

Das war mein kleiner Ausflug in die Welt des WebGLs.Bald kommt hoffentlich mehr, aber nur wenn ich Zeit habe.
MfG

23. Mai 2010

Game Design StartUp

Filed under: Game Design — Schlagwörter:, — Jesse Klugmann @ 09:05

Womit fängt man an?

Vielleicht kennt man das als  angehender Spiele-  oder Hobbyentwickler , man sitzt da und denkt , dass es Zeit ist ,ein Projekt zu beginnen.Aber womit fängt man an?Wie fängt man an , ein Spiel zu designen?Wie machen es die Profis?

Nun , erstmal sollte man sich bewusst werden welche Möglichkeiten man hat , welche Startpunkte.Wenn man beispielsweise eine gute Story im Kopf hat , hat man schonmal einen Startpunkt mit dem man anfangen kann.Dann ist die Story das zentrale Element des Spiels und bestimmt das Gameplay und die Technik.

Man könnte allerdings auch eine Idee für ein gutes Gameplay haben und dann fängt man an eine passende Story dazu zu designen.Anschließend bastelt man sich die nötige Technik dazu.Bei manchen Spielen , oft Shooter , ist der Startpunkt die Technik , man hat die Möglichkeit einen Dschungel realistisch darzustellen und designt dazu dann ein Gameplay und eine Story.

Vielleicht sieht man worauf ich hinaus will , man kann sich kein Spiel in allen seinen Aspekten designen , sondern man kann einen Startpunkt oder einen Kern haben, um den man den Rest( Technik , Gameplay… ) aufbaut.Man braucht dann meistens nur noch eine zündene Idee für eine Story etc. und dann hat man schonmal einen ansehnlichen Kern.

Brainstorming

Aber wie kommt man auf eine geniale Idee , die einen sofort fesselt?So ganz einfach ist das nicht , meiner Meinung nach gibt es da kein Rezept , sondern nur Hilfmittel.Wenn man beispielsweise weiß , dass man gerne mal einen Weltraum-Shooter designen würde, könnte man mit einer Mindmap oder einer Gedankenkette anfangen:

Weltraumshooter -> Spielt in einer Galaxie mit variablen physikalischen Gesetzen -> Spieler kann mit seiner Waffe die Physik beeinflussen -> Spieler muss die Galaxie vor den Killertomaten retten -> …

Am besten ist es , wenn man eine solche Kette auf einem Blatt Papier aufzeichnet und dann später sauber und ordentlich auf den Computer überträgt.

Ideen müssen reifen , man sollte ein paar Nächte drüber schlafen und wenn einem diese Idee dann immernoch gefällt , sollte man weiter designen  , wenn nicht , dann muss man von vorne anfangen. ;)

Ausarbeitung der Idee

Man sollte immer sehr rational mit den Ideen umgehen , viele Spiele versagen am Ideen-Kollaps , man sollte sich lieber auf ein paar Kern-Ideen festsetzen und diese ausführlich designen und überdenken.Außerdem sollte man alles ,was einem nicht gefällt ,  gnadenlos streichen.

Dann sollte man sich aufmachen und die Idee in einem möglichst kurzem Text zusammenfassen und die wichtigsten Aspekte nennen.Dabei muss man darauf achten , dass jeder aus dem ganzen Team oder allgemein alle Menschen diese Idee , ähnlich wie man selber verstehen müssen , sonst hat jeder ein anderes Bild von deiner Idee im Kopf.Wenn man seine Idee zusammengefasst hat , sollte man  sie seinen Freunden und seinen Team-Kollegen zeigen , wenn sie ähnlich begeistert sind wie man selber , dann hat man schonmal ein großes Stück geschafft. –> Jetzt kommt das Game Design Document.

Game Design Document ( GDD )

Das GDD fasst das gesamte Spiel in allen seinen Aspekten zusammen , Gameplay , Story , NPCs , Maps , Steuerung , Menus[...] , einfach alles muss hier rein.

Es gibt Bücher,  in denen beschrieben wird wie man ein GDD schreibt , aber meiner Meinung nach ist das schwer möglich , denn ein GDD unterscheidet sich von Spiel zu Spiel in seiner Struktur.Man muss selber wissen , wie man seine Idee am besten in ein GDD unterbringt , wichtig ist nur ,dass am Anfang ein kleine Überblick über das Spiel gegeben wird , eine Executive Summary.Sie sollte eine klare Sicht über das Spiel vermitteln und keine Unklarheiten aufkommen lassen.

Nachdem man alle diese Schritte so ungefähr, in nicht absoluter Reinfolge, durchgeführt hat , hat man mit Glück eine gute Spielidee.Aber Achtung , auch dies ist kein Masterguide , jeder muss es selber wissen.

Bei Fragen wie immer per Mail oder am besten in die Commentbox beeelow!

MfG

8. Mai 2010

Story flop , Grafik top? – Welchen Weg schlägt die Industrie ein?

Filed under: Blog — Schlagwörter:, , , , , — Jesse Klugmann @ 16:31

Man liest immer wieder in den verschiedensten Foren , wie sich immer mehr Spieler über den Wandel von Story- und Gameplay-lastigen Spielen zu stupiden Grafikmonstern beschweren.Oft hört man Sätze wie “Die Atmosphäre geht flöten”  oder “Die Story wird vernachlässigt”.

Aber inwiefern stimmt das , verfolgt die Spiele-Industrie  den gleichen Plan wie die Fernseh-Branche ( nämlich die Bevölkerung zu “verdummen” )  oder handelt es sich um ein Missverständnis?

Meiner Meinung nach , vollzieht sich grade ein Wandel in der Spielebranche.Ich glaube nicht , dass viele/alle Spiele nur noch auf das Äußere achtgeben und den Rest “ungepflegt” lassen , sondern es vollzieht sich ein Wandel der Stilmittel.

Früher , also so vor 10-15Jahren oder gar 20-25 Jahren , waren die technischen Möglichkeiten noch nicht so ausgereift , dass man über die Möglichkeit der Technik die Atmosphäre im Spiel aufrecht erhalten kann.”Damals” musste man sich anderer Stilmittel bedienen um den Spieler zu fesseln und das waren damals nunmal eher Text und Sound als Grafik.

Heute sind die technischen Möglichkeiten da und dann nutzt man sie natürlich auch.Natürlich hatte das äußere Erscheinungsbild nicht nur den Zweck die Atmosphäre des Spiels möglichst hautnah rüberzubringen , denn ein Spiel ohne ein mindestmaß an Grafik , wird vom normalem User gar nicht erst in die Hand genommen.Der aktuelle Horror-Titel “Alan Wake” wäre wohl nur halb so gut mit schlechter Grafik , denn ohne diese atemberaubenden Lichteffekte würde der Grusel-Ansatz des Spiel misslungen sein.

Ich plediere dafür , dass Grafik nicht nur auf das Äußere reduziert werden sollte , man sollte auch die inneren Werte sehen und verstehen , dass Grafik lediglich ein Stilmittel ist. :D

Trotzdem haben manche Leute recht , wenn sie sagen , dass die Industrie sich manchmal nur einen schönen Namen für ein Titel sucht , ihn dann mit einer Portion Grafik fritriert und dann in einen Hype taucht , um ihn dann millionenfach zu verkaufen.Soetwas kommt schon vor , aber es gehört nicht zum Normalfall.

25. April 2010

1# How to become a graphics programmer

Filed under: Blog — Schlagwörter:, , — Jesse Klugmann @ 16:25

Es gibt viele Bücher über 3D-Programmierung , aber viele sind auch nur halb so gut wie sie aussehen.Es gibt noch mehr Bücher , die einem versprechen ein Spiel zu entwickeln und das alles ohne Vorkenntnisse in Sprachen ala C++.Man kann über solche Bücher sagen was man will , Fakt ist aber , dass ich sage , dass solche Bücher Zeitverschwendung sind und eigentlich nur zum Ködern dienen.Meistens sind diese Bücher nur auf die kommerzielle Sicht beschränkt und es geht dem Autoren nur darum , möglichst viel Geld zu verdienen.

Ich werde im Folgenden meine ultimative Buch/Tutorial-Liste für angehende bis fortgeschrittene Grafik/Spiele-Programmierer aufzeigen.Wenn ihr meint , dass noch etwas fehlt , dann poste es gefälligst in die Comment-Box beeeelow , wie Ray es immer sagt. :P

1.Erste Interesse

Jeder fängt mal an sich für ein Thema besonders zu interessieren , die einen für Pferde , die anderen für Computer.Irgendwann kommt man an den Punkt , an dem man sich fragt wie Spiele-Schmieden wie Crytek oder Bioware eigentlich ihre Spiele machen.Da hilft einem dann Wikipedia oder ein sonstiges Hilfsmittel und so kommt man darauf , dass Spiele ja programmiert werden.Spätestens jetzt werden sich die meisten nach einem Stück Papier ( eigentlich meistens mehreren , so ein fetter Schinken besteht ja nicht nur aus einer Seite :D ) , auf dem steht wie das geht und warum das so geht.

So schnell weckt man den Schöpfergeist junger oder vielleicht auch manchmal älterer Leute.( Man weiß ja nie , wer im Internet rumgeistert ).

Optimal für diesen Zeitraum sind Bücher , die einem den Wind aus den Segeln nehmen und einem erstmal klar machen , wie schwer es ist , aber auch gleichzeitig motivieren und klarstellen , dass es extrem viel Spaß macht , wenn man erstmal soweit ist.(Diese extrem langen Sätze erinnern mich an irgendetwas…Achja!An den Geschichtsunterricht…)

#1 C++ für Spieleprogrammierer von Heiko Kalista:
Ein sehr gelungendes Buch , bei dem man einerseits die C++-Grundlagen lernt und am Ende sogar ein minimales Spiel mit SDL entwickelt wird.Man sollte allerdings schon ein Grundlagen Verständniss über Computer verfügen.

#2 Delphi for Kids von Georg Schuhmann:
Auch ein nettes Buch , richtet sich allerdings nur an angehende Programmierer und nicht Spiele-Programmierer.Trotzdem ein sehr nettes Buch , dass viel Spaß beim Lesen macht.Ein großer Vorteil ist , dass eine Delphi 7 Version enthalten ist.Im Anschluss an dieses Buch könnte man auch Spieleprogrammierung für Kids vom gleichen Autor zu lesen.

Das wichtigste in dieser Phase ist es ein solides Grundlagenwissen zu bekommen.Also liest alles was ihr in die Hände bekommen könnt und fängt kleinere Projekte an um das Grundlagenwissen zu erweitern.

Nächstes mal werde ich dann bloggen wie man ein richtiger Spiele/Grafik-Programmierer wird.

MfG

21. April 2010

Etwas wie Linus oder einfach nur Faulheit?!

Filed under: Blog — Schlagwörter:, , — Jesse Klugmann @ 05:38

Wie bezeichnet man es , wenn man 2 Stunden vor einem Referat entdeckt , dass man die aktuellste Kopie gelöscht hat und eine andere veraltete auf dem Schulserver liegt?

Dummheit?Faulheit?Ich sags mal so , die Lehrer sind schuld!Hätte unser Lehrer mein Referat früher hören wollen , vorallem vor den Ferien , wäre es niemals so weit gekommen. :P Die Lehrer können doch nicht erwarten , dass ich etwas über die Ferien mache.

In 15 Minuten muss ich los , also sollte ich langsam meine Präsentation anfangen.

18. April 2010

Stramme Phasen

Filed under: Blog — Jesse Klugmann @ 17:55

Hey!

Momentan habe ich sehr viel an meinem akuellen Projekten zu arbeiten und konnte deswegen die letzten Wochen nichts schreiben.Ich hoffe das wird bald anders.

Trotzdem habe ich schon einige Artikel in der Planung unteranderem wie man Logging-Systeme am besten in Engines einbaut.

MfG

Older Posts »

Powered by WordPress