Archiv der Kategorie ‘Spieleentwicklung‘

Animierte XSI Models in XNA laden - Tutorial

Dienstag, den 14. Oktober 2008

Der Jay und ich starten gerade ein neues Spieleprojekt und nachdem wir bei unserem Letztem am Importieren von animierten Models in unsere Spieleengine gescheitert sind ist es nun soweit.

Heute nach schlappen 7 Stunden 30 Minuten hab ich es endlich geschafft. :-/

Die letzen zwei Stunden lag es einfach nur noch daran, dass ich den falschen Importer ausgewählt hatte …

Also im Prinzip ist es ganz einfach. (ha ha)

1) Man Installiere das XSImod Tool + die neueste Crosswalkversion und das XNA Plugin

2) Dann Microsoft Visual Studio 2005 C# mit Service pack 01
(mit der Expressversion C# Express und XNA 1.0 refresh funktioniert es genau so)

3) Dann das XNA Gamestudio 2.0

4) Wahlweise macht man dieses XSI-Tutorial (empfohlen) *g*

5) Startet ein neues Visual Studio XNA Gameprojekt Preset und fügt diese beiden DLLs xsixnaruntime.dll , softimagexwimporter.dll einmal unter Verweise hinzu und einmal unter “Content/Verweise” hinzu.Nun sollte man unter “Content/Models/myModel.xsi” per Rechtsklick/Eigenschaften den Crosswalkimporter auswählen können. Wichtig: als Importer und auch als Processor auswählen, das hat mich wie gesagt heute 2 Stunden nerviges Exportieren und .XSIfilelesen gekostet. :)

Den Quellcode zum Darstellen der Models findet ihr in dem XSI-Tutorial oben. Auf Wunsch kann ich auch meinen Quellcode posten, aber den hab ich eh auch nur abgeschrieben.
Also viel Spaß und wenn alles geklappt hat kommt Folgendes dabei herraus:

Richtig, ein Blob :D

Steam Server startet nicht - Ist vorübergehend nicht erreichbar. Versuchen Sie…….

Montag, den 6. Oktober 2008

Um das Problem zu lösen, einfach in dem Steamordner die Datei

ClientRegistry.blob

löschen und alles sollte wieder funktionieren.

Wenn nicht muss man noch in der Firewall hl.exe und Steam.exe als ausnahmen hinzufügen.

Die Datei speichert einige Account-spezifische Einstellunge, nach dem löschen wird sie beim nächsten Start einfach neu erstellt.

Handy Application (Spiel) auf dem Handy installieren

Sonntag, den 27. Juli 2008

Eben hatte ich diesen Fehler:

com.sun.kvem.midletsuite.InvalidJadException: Reason = 22
The manifest or the application descriptor MUST contain the attribute: MIDlet-1

Damit euch das nicht passiert diese Anleitung. (Aufbauend auf meine Anleitung für Javaspiele)

Als erstes:

Rechtsklick auf das Projekt –> Properties –> J2ME –> Create Package

Als zweites:

Im Package Explorer den Ordner deployed aufklappen und und das .jad File anklicken. Dort dann deinen Applicationnamen, ev. ein Icon und den Klassennamen des MIDlet (wichtig) angeben.

Das sollte dann circa so aussehen:

MIDlet-Version: 1.0.0MIDlet-Vendor: Midlet Suite Vendor

MIDlet-Jar-URL: HelloWorldMIDlet.jar

MicroEdition-Configuration: CLDC-1.1

MicroEdition-Profile: MIDP-2.0

MIDlet-1: Hallo Welt ,icon.ico ,myMIDlet

MIDlet-Jar-Size: 1673

MIDlet-Name: HelloWorldMIDlet Midlet Suite

Als Drittes:

Das jad. und das zugehörige -jar File aus dem “deployed”ordner per Bluetooth oder ähnliches auf das Handy kopieren, installieren und freuen.

Spieleentwicklung für Handy mit Java ME - Anleitung

Donnerstag, den 24. Juli 2008

Die Spieleindustrie wird bald die Musik- und Filmindustrie überholt haben und daher sollte man schon heute anfangen Spiele zu programmieren.

Weltweit sind circa 3 Milliarden Handybesitzer unterwegs, davon haben 400 Millionen ein Java fähiges Handy und wenn jetzt jeder von denen mein neues Handyspiel für einen Euro kauft bin ich reich.

Yipie!

Dann hab ich soviel Kohle, dass ich auch ruhig Konkurrenz haben kann, deshalb erklär ich jetzt mal wie das geht. Jay sollte hier nicht weiterlesen, denn es geht um “Java”.

Hallo Welt

So Programmiert man Handyapplicationen.

Also Schritt 1:

Eclipse Klassik 3.4 installieren:

http://www.eclipse.org/downloads/

Java SDK (JDK Version 6 update 7) :

http://java.sun.com/javase/downloads/index.jsp

Schritt 2:

Das Java ME Toolkt installieren (WTK - Sun Java Wireless Toolkit 2.5.2 for CLDC):

http://java.sun.com/javame/downloads/index.jsp

Schritt 3:

Gehen sie in Eclipse: Help –> Software –> Find and Install –> Search for new features to install –> new Remote Site, dort dann “http://eclipseme.org/updates” eingeben

Schritt 4:

Dann unter Window –> Preferences –> J2ME –> Device Mnagement –> Import, den WTK Ordner aus Schritt 2 eingeben.

Schritt 5:

Jetzt eine neus Projekt erstellen und unter J2ME die J2ME MIDlet Suit Projektvorlage wählen.

Dann noch diese beiden Klassen schreiben und fertig ist das Hallo Welt Handyspiel. :D

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
 
public class myMIDlet extends MIDlet{
 
	protected void startApp() throws MIDletStateChangeException {
 
		Display myDisp = Display.getDisplay(this);
 
		ActionCanvas ac = new ActionCanvas();
 
		myDisp.setCurrent(ac);
 
	}
 
	protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
	}
 
	protected void pauseApp() {
	}
 
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
 
public class ActionCanvas extends Canvas {
 
	ActionCanvas(){
		setFullScreenMode(true);
	};
 
	protected void paint(Graphics g	) {
		int screenX = this.getWidth();
		int screenY = this.getHeight();
 
		System.out.println("Screengröße: " + screenX + "x " + screenY );
 
		g.drawString("Hallo Welt!", 10, screenX/2, Graphics.TOP|Graphics.LEFT);
 
	}
 
}

Quelle: Mobile Games - Spieleprogrammierung mit Java Me.
Ein sehr gutes Buch!

Teddy kann surfen. O.o

Donnerstag, den 29. Mai 2008

Wer hätte es gedacht??

Teddy hat surfen gelernt.

Surfing in Teddyland

Teddy Space Story bekommt jetzt doch noch ein paar kleine Zwischensequenzen. Allerdings nur als Fotostory, für mehr is keine Zeit. Bald gehen ja die Prüfungen los. O.O

Fazit nach 7 Tagen Terror

Mittwoch, den 23. April 2008

Endlich ist es vorbei… puhhh

Nachdem ich bis 4 Uhr noch gehaxx0rt hatte um irgendwie eine Story und Spielspaß in das Spiel zu bekommen, gönnte ich mir 5 Stunden sehr erholsamen Schlaf, dann ging es um 9 Uhr weiter. In allerletzer Sekunde musste ich noch schnelle eine NewGame Methode schreiben, damit man das Spiel am Ende und nach einem Tod neu starten konnte. Auch das Menü war noch nicht fertig. Um viertel vor 12 lief dann aber alles und der Upload konnte losgehn, doch leider funktionierte die Release Version nicht, so musste die Debugversion herhalten…

Naja, auf jeden Fall bin ich froh, dass der Kontest nun vorbei ist, 7 Tage is schon anstrengend, aber es hat sich wie ich finde gelohnt und ich bin Stolz auf mein Spielchen. Morgen werde ich einen Trailer bauen und in den nächsten Tagen sicher auch das Spiel zum Download bereit stellen.

Ich hätte gerne noch soo viel mit eingebaut, nur die Zeit hat nicht mitgespielt, aber die wichtigen Dinge, wie ein Erfahrungsystem, Schilde, viele Bumm Bumm und dicke Endgegner sind ja drin, wie ichs mir am ersten Tag vorgenommen hatte.

Im Großen und Ganzen kann ich sagen, habe ich einen Haufen gelernt, einen Haufen Spaß gehabt und habe jetzt mein erstes vorzeigbares DirectX Computerspiel und eine eigene 3D-Engine und das alles in nur 7 Tagen. Was so ein bisschen Motivation doch alles bewirken kann. :)

Und immerhin kann ich mich jetzt mit dem Titel schmücken:

Zweifacher Gewinner des Xuhu-Games-Kontests

*g*

Vielen dank, das ihr meine Programmierstory bis zum Ende mitverfolgt habt. An dieser Stelle noch einen Verweis an die auch sau guten Zweit- und Drittplatzierten.

nun viel Spaß mit dem offizielen Trailer zu

TEDDY’S SPACE STORY

Wir schreiben den Tag 6 nach Xuhus Geburt …

Montag, den 21. April 2008

ganz Stuttgart ist vom Schlaf besetzt, ganz Stuttgart? Nein! Ein von einem unbeugsamen Nerd bevölkertes Studio leistet unerbittlich Widerstand…

Es geht so langsam in die heiße Phase, ich weiß nich mehr so genau, ob ich gestern einen Entrag geschrieben habe, oder ob ich das vergessen hab O.o

Auf jeden Fall habe ich.

0) Mal ne Stunde in mein Raumschiff gesteckt: Jetzt hat es Texturen und man sieht den Teddy im Cockpit.

myShip

Gut, dass Teddy ein Teddy ist, sonst würde er wahrscheinlich im Weltraum ersticken in seinem Cabrio.

1) Die Explosionen optimiert, damits nich so stockt. Jetzt werden nich jedesmal neue Particlesysteme ins Leben gerufen, sondern, die alten Explosionen “wiederbelebt”. Das verringert den Zugriff auf die Textur und klappt ganz herrvorragend und wenns mal zu viele Explosionen werden werden einige einfach nicht mehr gezeichnet, was man dann wahrscheinlich eh nicht merkt, weil schon alles voll ist :)

2) Das Schild des Spielers kann sich jetzt aufladen und die Recoveryfrequenz steigt mit steigendem Level des Spielers. Das soll er dann später selbst auswählen können, was er gerne steigern möchte. Quasi ein Skillsystem.

3) Ich habe meiner Hanimanengine eine Rauch Klassse gegönnt, diese ist zwar noch etwas unflexibel, aber was solls, das dann immernoch geändert werden. Auf jeden Fall hat mein Flieger jetzt endlich nen ordentlichen Antrieb.

4) Die Gegner können jetzt schießen. Jetzt kann auch der Spieler endlich sterben. :)

5) Alle Schüsse richten sich jetzt nach ihrer Flugrichtung aus. Das ging erstaunlich einfach, nach einigem Rechnen hatte ich folgende tolle Formel:

D3DXVECTOR3 normalisedDirection = H_nomalizeVector3(schussDir);

rotZ = atan2(normalisedDirection .y, normalisedDirection .x)

und mit rotZ rufe ich dann einfach meine Sprite Funktion auf.Jetzt zahlt sich aus, dass sich die Dinger drehen können :D

6) Ich kann jetzt die Bildschirmkoordinaten der Maus in die 3DVector koordinaten meines Spieles Umwandeln, was zur Folge hat, dass man nun die Schussrichtung des blauen Lasers bestimmen kann.

Ausgerechnet hab ich das ganze in der Medienrechtvorlesung ( danke nochmal Käse für den Zettel )

ich musste nur das hier in die die WndProc einfügen und schon hat man die aktuelle Mousposition, immer wenn diese sich bewegt:

wobei 10 und 8 meine maximalen Vectorpositionen in X und Y sind:

g_SpaceStory->mouseXpos    = ((GET_X_LPARAM(lParam) * 20) / SCREEN_WIDTH) - 10;
g_SpaceStory->mouseYpos    = ((GET_Y_LPARAM(lParam) * (-16)) /SCREEN_HEIGHT) +8 ;

7) Ich hatte eine super Idee für meine Intro und habe das dann heute Nacht direkt gerender. Ich wills nich verraten, seht selbst:

Wer eine Ähnlichkeit mit einem Youtube Video erkennt hats erkannt :)

Und weiter gehts … (Tag 5)

Montag, den 21. April 2008

Heutige neue Features:

1) Der rote Laser kann sich jetzt, wenn er einen Schild trifft aufsplitten. Klingt einfach, aber ich musste dafür meine ganze Spriteengine umschreiben. Denn vorher hatte ich einen “std::Vektor” und wenn ich da einen Particel einfügen möchte, wärend ich den Vektor durchlaufe, verändert sich dessen länge und es knallt. Also habe ich alles auf das gute alte Array umgebaut und lösche jetzt keine Particel mehr und erstelle sie, sonder initialisiere am Anfang alle Particle und sobald einer “Tod” ist wird er an einer anderen Stelle “wiedergeboren”.

2) Ich hab es nun endlich heute morgen geschafft ein Video abzuspielen. Jetzt beherbergt die Hanimanengine also einen H_Video player. Allerdings kann ich im moment nur Videos in einem neuen Fenster öffnen, weil DirectDraw das rendern in eine Textur nicht direkt unterstützt, das wird also noch gemacht, aber das hat ja Zeit bis nach dem Kontest, jetzt kann also das rendern der Zwischensequenzen losgehn, ich hoffe mal ich hab noch genug Zeit, was zu animieren.

3) Hmm ich weiß nicht, ob ichs schon erwähnt hatte. Ich hab die Spielerklassse fertig gemacht. Sie hat jetzt auch eine Erfahrungssystem und je nachdem welches Level man erreicht hat führt die ChangeLevel(int) Methode dann bestimmte Dinge aus. Wichtig ist noch die tolle Particleanimation, wenn man einen “LevelUp” hat. :)

4) Ich war heute in der Medienrechtvorlesung! O.O

Tag 4

5) Das vieleicht wichtigste, ich habe einen Fehler ausgemerzt, der das Laden unverschämt lang gemacht hat und das Spiel nur ca. jedes zweite mal hat starten lassen. Der erste Fehler war, das ich ein paar zu große Hintergrundbilder hatte und der zweite war, dass ich in den exit() functionen meiner Klassen nicht immer nach dem Releasen des “Speichers”, den Zeiger auf NULL gesetzt hatte.

Morgen muss ich dann ma das Spieler Model ordentlich machen und die Rauchparticle für den Auspuff wären auch nicht schlecht.

Das Video is eigentlich noch von gestern, aber was solls:

Uni O.o ( Tag 4 )

Montag, den 21. April 2008

Gutn morgen!

soo heute früh hab ich noch schnell meine Hanimanengine um einige wichtige Soundoptionen erweitert, man kann jetzt mehrere Sounds gleichzeitig abspielen, per “fmod Sample” und man kann die Lautstärken verändern. Beides sehr wichtig .

Und nun meine Aufgaben für heute:

1) Als erstes das Leveleventsystem erstellen, dann kommt der schöne Teil, die hübschen Partikel.

2) Das Ausfaden von Partikeln mit der Lebenszeit, damit explosionen noch besser aussehen *g*

3) Hübsche Laser erstellen und diese mit einer relativen Position zum Schiff abschießen, damit die Schüsse nich einfach aus dem nichts erscheinen.

4) Glühende Particle erstellen mit AlphaBlending O.O

5) Einen netten Schildpartikel erstellen

So erm, jetzt is schon wieder ein Tag später, puhh jeden Tag einen Artikel zuschreiben is aber auch echt schwer ! Also geschafft habe ich mittlerweile:

1) Ich habe jetzt eine Levelsystem, es is nicht super praktisch, aber es geht. Im Hintergrund scollen verschiedene Texturen von rechts nach links und im Vordergrund so Dinge wie Planeten etwas schneller

2) Hmm ja das habe ich leider nicht geschafft keine Ahnung warum das nicht klappen möchte, ich werde mir jetzt so helfen, dass ich einfach 3d Texturen nehme und diese in den letzen Bilder einfach durchsichtiger mache…

3) Ja das hab ich jetzt einigermaßen, zumindest für den Roten Laser. Die anderen kommen später. Das mit der relavtiven Position klappt gut, ich addiere einfach zu der Position des Schiffes den relativen Offset des Schusses hinzu und lasse denn den Schuss dort starten. Den Rest übernimmt dann mein Spritesystem :)

4) Hmm “Glühen” najaa, ich hab jetzt in Photoshop einen weißen Kreis drumgezeichne, das lässt sich sicher noch verbessern.

5) Ui ! Ja den hab ich, da ich ja nich mit Photoshop umgehen kann habe ich in XSI einfach einen Fragment Shader in einen Cloud Shader gesteckt und mit diesem dem Diffuse und den Transparenzwert eines Phongs gesteuert. Dann die Zeit animiert, das ganze in einer 10 Bilder Sequenz gerednert und dann mit dem Texture Tool, das bei DirectX mit dabei ist in ein .dds File verwandelt. Jetzt habe ich also einen 3Dimensionelen Schildpartikel.Das hat Spaß gemacht :)

schild2schild2schild3 Davon 10 …

Ab heute wird alles anders ! (Tag 3)

Montag, den 21. April 2008

Tag 3

Ich habe mir vorgenommen, ab jetzt alles ein bisschen besser zu Planen. Ich werde mir jetzt für jeden Tag morgens einige Dinge vornehmen und direkt hier reinschreiben und dann wird nach und nach abgehakt.

Also meine Ziele für Tag 3:

1) Schöne 3d-Modelle finden, laden können und verwalten

2) Scolling des Hintergundes, eine ordentliche Levelstruktur

3) und am Ende, weils soviel Spaß macht der Sound ! :)

Meine Erreichten Ziele am Tag 3:

1) Schöne 3d-Modelle finden, laden können und verwalten

Nach nichtmal zwei Stunden habe ich dieses Problem gelöst :)

Ich habe mir 3D Studio Max 9 installiert (würgs), mit diesem diverse gefundene .3ds geladen und mit dem Max Plugin “Panda” als .x Files exportiert.Meine kleiner Haniman Modelloader kann diese Lesen und berherrscht jetzt sogar Texturen. *freu*

Als nächstes werde ich jetzt alle Models in die richtige größe scalieren und dann mal ein bisschen aufräumen, das auch wirklich nur die Models drin sind, die ich auch brauche.

Das umbaun, implementieren und Scalieren der Models hat allerdings nochmal bis in den Nachmittag gebraucht, dann war ich erstmal mit Tina beim Sport und danach habe ich die Hintergründe eingebaut. Die Models stellen sich alle als doch nich soo toll herraus. Nachdem Exportieren waren die meisten entwerder zerlöchert oderhatten keine Texturen mehr.

Letztendlich werd ich wohl die Models von der CD zu dem Buch Spieleprogrammierung mit DirectX, und die Models aus den DirectX Examples nehmen… Und zum Glück hab ich ja noch das Model von Jan Härting, meinem 3D Profi aus Hamm, dass passt eigentlich perfekt,das muss ich “nur” noch konvertieren und “nur” noch Texturieren, aber das kommt später.

Schiff1Schiff2Chessking

2) Scolling des hintergundes, eine ordentliche Levelstruktur

Jetzt kann man verschiedene Hintergrundtexturen am Anfang eines Levels auswählen und diese per Loop immer wieder vorbeifliegen lassen, das gibt einem die Illusion man würde fliegen. :)

Klingt einfach, aber ich brauchte trotzdem lange dafür. Vorallem, weil ich das ganze eigentlich mit meinem Particle System machen wollte, aber das is wohl doch etwas “overdone”, weil so funktionierts ja auch.

3) und am ende, weils soviel Spaß macht der Sound ! :)

Das mit dem Sound war echt mal ne angenehme Aufgabe, das hat nichtmal 10 Minuten gedauert und ich konnte meinen ersten Sound abspielen, jetzt hab ich Hintergrundmusi und Laserschüsse. FMod ist echt ein segen, vorallem wenn ich höre, wie der Jay über XNA Sound flucht. *g* Das Problem dabei ist nur, dass die Schüsse zu schnell hintereinander kommmen, als das er alle Abspielen könnte, mal sehn wie ich das löse… auf jeden Fall erst morgen :)

Das nächste Video gibts auch erste morgen :)

oder ne hier die erste Version des Intros, die lustige fertige gibts dann später

gut nacht