[Spielvorstellung] Block Shifter

tdc

Bekanntes Mitglied
Hi,
ich möchte euch mein aktuelles Projekt vorstellen: ein Spiel namens "Block Shifter".

Das Spielprinzip sieht folgendermaßen aus: Man spielt aus der Ego-Perspektive und muss zu einem Ziel kommen. Dafür muss man verschiedene Hindernisse überwinden und Rätsel lösen, indem man Blöcke verschiebt. Die Blöcke haben verschiedene Farben und dadurch auch verschiedene Eigenschaften.

Die ursprüngliche Idee stammt von diesem Video: Link
Eigentlich wollte ich das schon damals umsetzen, als ich das Video gesehen habe, aber mir fehlten noch die nötigen Fähigkeiten im 3D-Bereich. Inzwischen gibt es auch Konkurrenz: Q.U.B.E.
(die mir grafisch ziemlich weit vorraus ist, die benutzen aber auch UDK)

Leider sind noch nicht alle Bugs behoben und es fehlt noch ein wenig (vor allem Maps), aber es ist bereits spielbar. Es ist auch nur eine sehr sehr kurze Demo, da es nur eine kurze Map gibt. Ich wollte aber schon heute eine kurze Demo veröffentlichen, da auch heute Q.U.B.E. veröffentlicht wird. ;)

Was haltet ihr von meinem Spiel?
Wie gesagt, das Spiel ist noch lange nicht fertig und ich habe schon einige Sachen geplant, aber Verbesserungsvorschläge sind immer willkommen.

Download-Link: Demo
 
Zuletzt bearbeitet:

truesoul

Top Contributor
Ich drück mal den "Gefällt mir" Button ;)
Ich mag solch Spiele, und mit den Blöcken und deren Eigenschaften find ich toll.
Weiter so.
 

Skanky

Mitglied
Ich finde die Idee auch cool.

Was mir aufgefallen ist:
- das man ab und an aus dem Level fliegt und dann fällt (was aber gut ist, das du die Figur abfängst und wieder auf Start setzt)
- die Steuerung bedarf meiner Meinung nach noch ein wenig an fein Tuning

Ansonsten TOP! weiter so :D
 

Fab1

Top Contributor
Irgendwie will das Programm bei mir nicht, muss man irgendwas beachten? Es öffnet sich zwar ein Fenster, aber anschließend bekommt es keine Rückmeldung.
 

tdc

Bekanntes Mitglied
Ich drück mal den "Gefällt mir" Button ;)
Ich mag solch Spiele, und mit den Blöcken und deren Eigenschaften find ich toll.
Weiter so.
Danke. :)

Ich finde die Idee auch cool.

Was mir aufgefallen ist:
- das man ab und an aus dem Level fliegt und dann fällt (was aber gut ist, das du die Figur abfängst und wieder auf Start setzt)
- die Steuerung bedarf meiner Meinung nach noch ein wenig an fein Tuning

Ansonsten TOP! weiter so :D
Dass man aus dem Level rausfliegt liegt an meiner schlechten Kollisionserkennung in Kombination mit schlechter Performance. ;) Ich hoffe mal, dass es besser wird, wenn ich die Performance verbessere, ansonsten muss ich mich noch ein drittes Mal mit der Kollisionserkennung befassen. (Kollisionserkennung ist bei mir sozusagen das Hass-Thema, aber es gehört leider dazu)

Was genau sollte ich an der Steuerung verbessern? Meinst du, dass nicht immer der anvisierte Block verschoben wird, sondern dass das Ziel leicht verschoben ist? (<- daran muss ich nochmal arbeiten, aber bisher habe ich den Fehler noch nicht gefunden) Oder die Steuerung der Zielfigur?

Irgendwie will das Programm bei mir nicht, muss man irgendwas beachten? Es öffnet sich zwar ein Fenster, aber anschließend bekommt es keine Rückmeldung.

Welches Betriebssystem hast du und wie versuchst du, das Spiel zu starten? Ansonsten versuche doch mal, die start.bat, bzw. die start.sh über die Konsole zu starten und eine eventuelle Fehlermeldung hier zu posten. Ich weiß, dass das starten noch nicht ganz optimal ist, allerdings wollte ich gestern "noch schnell" die aktuelle Version hochladen und deshalb habe ich auf die schnelle keine bessere Lösung gefunden.



Ansonsten: Wie bereits gesagt, es ist eine sehr sehr kurze Demo, ich werde aber weiter an dem Spiel arbeiten und es ausbauen. :)
 
G

gman

Gast
Hi,

unter Ubuntu 11.10/64bit bekomme ich folgende Fehlermeldung beim Starten mit start.sh:

Code:
:~/Programme/Block Shifter$ sh start.sh 
org.lwjgl.LWJGLException: Could not choose GLX13 config
	at org.lwjgl.opengl.LinuxDisplayPeerInfo.initDefaultPeerInfo(Native Method)
	at org.lwjgl.opengl.LinuxDisplayPeerInfo.<init>(LinuxDisplayPeerInfo.java:52)
	at org.lwjgl.opengl.LinuxDisplay.createPeerInfo(LinuxDisplay.java:717)
	at org.lwjgl.opengl.Display.create(Display.java:855)
	at org.lwjgl.opengl.Display.create(Display.java:785)
	at game.Game.init(Game.java:123)
	at game.LevelLoader.loadLevel(LevelLoader.java:16)
	at gui.MainMenu.update(MainMenu.java:354)
	at gui.MainMenu.start(MainMenu.java:97)
	at game.Start.main(Start.java:12)

Mir ist auch aufgefallen das ein Fehler auftritt wenn man die Auflösung ändert und dan
auf Accept klickt:

Code:
:~/Programme/Block Shifter$ sh start.sh 
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
	at java.util.Vector.elementAt(Vector.java:427)
	at gui.MainMenu.update(MainMenu.java:384)
	at gui.MainMenu.start(MainMenu.java:97)
	at game.Start.main(Start.java:12)

Wenn das Spiel bei mir laufen würde, fänd ich es glaub ich auch toll ;-)
 
Zuletzt bearbeitet von einem Moderator:

tdc

Bekanntes Mitglied
Ja, das mit der Auflösung ist mir schon aufgefallen und habe ich schon geändert: Link

Die Zeile, in der die erste Fehlermeldung auftritt, lautete:
Java:
Display.create(new PixelFormat(0, 24, 1).withSamples(4));
Dort habe ich jetzt mal den Stencil-Bit rausgenommen und ich denke ich ändere später die Optionen dahingehend, dass man mehr Einstellungsmöglichkeiten hat, denn ich denke es liegt daran, dass deine Grafikkarte irgendetwas nicht unterstützt oder zu schlecht ist. (probiere nochmal die aktuelle Version)

Edit: @gman: Welche Grafikkarte hast du?
 
Zuletzt bearbeitet:

Helgon

Bekanntes Mitglied
Ich bin ins erste Loch gefallen und nicht mehr rausgekommen :D Da mim blauen Block.
Außerdem kann man durch Wände schauen, nichts desto trotz sehr geil :)
 

tdc

Bekanntes Mitglied
Ähm... Core i7 ist doch ein Prozessor?
Egal, ich wollte letztendlich darauf hinaus, dass du evtl. eine ATI-Grafikkarte hast, die von Ubuntu nur schlecht unterstützt werden. Aber keine Ahnung woran genau es liegen könnte.

Ich bin ins erste Loch gefallen und nicht mehr rausgekommen :D Da mim blauen Block.
Außerdem kann man durch Wände schauen, nichts desto trotz sehr geil :)
Danke. :)
Im Loch mit dem Blauen Block ist in der Ecke auch ein weißer Block. Da einfach draufstellen, nach unten schauen, klicken und schon ist man wieder draußen. Im Notfall kann man auch "R" drücken um wieder zum Startpunkt zu gelangen.
Das "durch die Wände schauen" kommt durch Backface-Culling. Ich könnte das auch ausschalten, dann wäre das Spiel allerdings noch langsamer als ohnehin schon.
(demnächst kann ich mal eine Version hochladen bei der das sehr unperformante Blöcke-Verschieben in einen seperaten Thread ausgelagert ist, wodurch man nahezu konstant 50 FPS bekommen sollte)
 
G

gman

Gast
Hi,

mit "die vom Core i7" meinte ich die integrierte Grafik -> "HD Graphics 3000".
Oder kurz und einfach: Eine Intel-Grafikkarte.
 

Helgon

Bekanntes Mitglied
Achja und beim starten kackt das programm entweder erst ab und ich bekomm das "fenster schliesen" ding von windows und dann aufeinmal poppt das spiel richtig auf, oder meine java se binary crasht und dann wars das.


i5 2500k
295 gtx II
w7 64x

edit: ich dachte das wär eben nurn doofer zufall, aber nachm starten (bis es abkackt oder dann doch mal angeht) schiest meine cpu auf 100% auslastung und das bei 3.5-4ghz ???:L
 
Zuletzt bearbeitet:

tdc

Bekanntes Mitglied
Achja und beim starten kackt das programm entweder erst ab und ich bekomm das "fenster schliesen" ding von windows und dann aufeinmal poppt das spiel richtig auf, oder meine java se binary crasht und dann wars das.


i5 2500k
295 gtx II
w7 64x

edit: ich dachte das wär eben nurn doofer zufall, aber nachm starten (bis es abkackt oder dann doch mal angeht) schiest meine cpu auf 100% auslastung und das bei 3.5-4ghz ???:L

Und davor hat es funktioniert? Merkwürdig.
Dass die Auslastung sehr sehr hoch ist, weiß ich. Ich versuche zurzeit das zu ändern.

Edit: Allein im Demolevel befinden sich zurzeit 5920 Objekte. Mit so vielen Objekten habe ich noch nie etwas gemacht und ich bin mir nicht ganz sicher, wie ich das noch performanter gestalten könnte.
 
Zuletzt bearbeitet:

Helgon

Bekanntes Mitglied
Habs bisher nur 2x anbekommen von 10 versuchen.

Aber jedes mal erstmal "Keine Rückmeldung" im Fenster vom Spiel und entweder es geht dann irgendwann an oder "Programm schliesen"
 

Helgon

Bekanntes Mitglied
Habs mal wieder anbekommen - Yipi

Und btw, ich hab fast durchgehend 60FPS aber was wirklich stört ist der weise Stein, ich stehe drauf drücke und der wächst einfach durch mich durch, passiert 8 von 10 Versuchen und schon nur auf den Blauen Stein zu hüpfen ist derbe frustrierend :/

Edit: oder ich drücke auf den weißen und nix passiert

Edit: Yipii ich hab die Demo durchgespielt :D
 

tdc

Bekanntes Mitglied
Aktuelle Version: Download
Es sollte jetzt um einiges Performanter sein. Jetzt erweitere ich erstmal das Spiel selbst ein wenig. Außerdem wird es wahrscheinlich erstmal etwas dauern, bis ich wieder etwas hochlade, denn am Montag fängt für mich die Schule wieder an.

wie hast du das mit der physik geregelt, dass man springen kann und auch runterfällt?
Ich habe es von meinem vorigen Spiel kopiert. :D
Naja, jedes mal vor der Kollisionserkennung wird "mainplayer.checkGravity(delta);" aufgerufen:
Java:
public void checkGravity(int delta)
	{
		camera.gravity(delta); //wird an die Camera weitergegeben (ist eigentlich egal, wo genau es berechnet wird)
		if(camera.isTooDeep()) //prüft ob der Spieler schon zu tief ist
		{
			reset();
		}
		setY(camera.getY()-getHeight()); //errechnet aus der Cameraposition die Spielerposition
	}

Java:
public void gravity(int delta)
	{
		float falldistance = 0;
		if(!bottom) //Prüfen ob der Spieler mit dem Boden kollidiert
		{
			falltime = 0; //Fallzeit wird auf 0 gesetzt
			if(!newjump)  //irgendwie ergibt das für mich keinen Sinn...
			{                      //Ja, ich habe keine Ahnung
				jumpspeed = 0;  //du kannst ja mal den Code kopieren und ihn ausprobieren
			}                             //ist wohl schon zu lange her
		}                                     //Hauptsache, es funktioniert
		else
		{
			falltime += delta;
			falldistance = 0.5f * gconst * (falltime * falltime) * delta / 5;
		}
		newjump = false;
		setY(getY()-falldistance+jumpspeed * delta / 5);
		if(jumpspeed != 0)
		{
			jumpspeed -= delta * 0.00001;
			if(!top)
			{
				jumpspeed = 0;
			}
		}
		rotation(0,0); //aktualisiert die rotierte Position
	}
 

Kr0e

Gesperrter Benutzer
Hm, ne außer der Kollisionerkennung ist mir nichts aufgefallen, außer vlt die extrem lange Ladezeit. initialisierst du da iwas großes ? Aber die Kollisionserkennung und vorallem die Kollisionsbehanldung ist echt merkwürdig... Hm. Außerdem kan nich durch Wände schauen, wenn ich genau vor der Wand stehe...
 

Helgon

Bekanntes Mitglied
Vllt sollteste dir mal Minecraft angucken (ist doch nur ne .jar das Spiel, oder?)

Also wenns da mit über ner Mio Cubes geht, vllt kriegste paar Ideen (bezüglich Performance)
 

tdc

Bekanntes Mitglied
Hm, ne außer der Kollisionerkennung ist mir nichts aufgefallen, außer vlt die extrem lange Ladezeit. initialisierst du da iwas großes ? Aber die Kollisionserkennung und vorallem die Kollisionsbehanldung ist echt merkwürdig... Hm. Außerdem kan nich durch Wände schauen, wenn ich genau vor der Wand stehe...

Also ich habe es jetzt mal auf meinem leistungstechnisch eher mittelmäßigen Laptop getestet und da gibt es am Anfang wirklich eine sehr lange Ladezeit. Das muss aber irgendwie mit dem Laden von LWJGL zusammenhängen, denn beim Menü initialisiere ich kaum was.

Wie viele FPS bekommst du eigentlich?
auf meinem Laptop sind es nämlich gerade mal 20 (auf dem Linux-PC sind es konstant 50) und da ist die Kollisionserkennung wirklich sehr schlecht und man landet leicht mal außerhalb des Levels. Eigentlich dürfte das nicht passieren, allerdings wird das irgendwie durch die Positions-Korrektur verursacht. Diese Positions-Korrektur ist dafür gedacht, dass sie den Spieler verschiebt wenn er von einem Block weggeschoben wird.

Das "durch Wände sehen" ist, wie oben schon beschrieben, gewollt, denn das ist das Backface-Culling wodurch das Rendern ein wenig beschleunigt wird. (okay, es liegt auch daran, dass die Kamera leicht vor dem Spieler ist und dadurch wenn man gegen einen Block läuft im Block drin ist)

Vllt sollteste dir mal Minecraft angucken (ist doch nur ne .jar das Spiel, oder?)

Also wenns da mit über ner Mio Cubes geht, vllt kriegste paar Ideen (bezüglich Performance)

Minecraft selbst ist nicht Open-Source. Es hat zwar eine .jar, die man auch mithilfe eines "Decompilers" lesen könnte aber dann ist der Code ziemlich unleserlich und ich glaube auch kaum, dass er mir groß weiterhelfen würde.

Natürlich gibt es andere Open-Source Minecraft Klone, die ich mir mal ansehen könnte, aber ich glaube das mir das nicht allzu sehr weiterhelfen würde... (ich schau trotzdem mal kurz ;) )
 
Zuletzt bearbeitet:

Fu3L

Top Contributor
Mhh, bei mir wills auch net starten. LWJGL öffnet das Fenster samt Titel, aber es bleibt schwarz und nix tut sich, bis Windoof sagt keine Rückmeldung.

Windows 7 64 bit
Intel Core i7 (erste generation)
ATI Radeon HD 4650
JRE 7

@Minecraft:
Die Modder müssten eigentlich irgendeine menschen-lesbare Variante des Minecraft Sources vorliegen haben.. Ich weiß nur nicht, ob die öffentlich verfügbar ist, da die meisten ja doch von Risugamis Modloader abhängen.
 

tdc

Bekanntes Mitglied
Q.U.B.E. kenne ich schon, habe ich auch oben verlinkt. (und zombey kenne ich erst Recht)

Ich versuche jetzt das komplette Spiel nochmal in JME neu zu schreiben, da mir einiges noch nicht so richtig gefällt.
(Ja, ausnahmsweise war ich mal nicht vollkommen beratungsresistent ;) )
 
I

irgendjemand

Gast
hab mir mal die trailer zu C.U.B.E. und dem sehr verwanten spiel EDGE angesehen ...
an sich sehr geniale indie-games ... werd ich mir vielleicht demnächst bei steam kaufen ...

wer nun von wem geklaut hat *das video was du in deinem ersten post gelinkt hast* lässt sich nicht sagen ...

aber das du das ganze auf basis java *und wie ich gelesen habe sogar ME* nachbauen willst finde ich eine gute sache ... vielleicht wird es nicht so perfekt wie cube ... aber alleine der gedanke sowas mit java ... hmm naja gut ... siehe minecraft ... hätte auch keiner gedacht ...
 

tdc

Bekanntes Mitglied
Wer redet hier von klauen?
Von denen habe ich die Idee nicht geklaut, sondern, wie im Anfangspost schon beschrieben von dem "The Room"-Video. :D (Erst als ich schon sehr weit war, bin ich auf Q.U.B.E. gestoßen)

Naja. Wie auch immer. Ich benutze ab jetzt evtl. JMonkeyEngine, da ich alleine mit LWJGL wohl nicht mehr weiter komme. Hoffentlich wird das Spiel dann einigermaßen spielbar sein. Mal sehen...
 
I

irgendjemand

Gast
nein ... ich rede doch nicht davon das DU die idee geklaut hättest ... sondern die von qube xD
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Android Spielvorstellung / Beta Tester gesucht Spiele- und Multimedia-Programmierung 5
K [Spielvorstellung] - Spoony Fish - (Android) Spiele- und Multimedia-Programmierung 3
P Run Or Fight Spielvorstellung Spiele- und Multimedia-Programmierung 10
K Spielvorstellung: DeadStorm Spiele- und Multimedia-Programmierung 2
P Spielvorstellung Etasund Spiele- und Multimedia-Programmierung 14
S Spielvorstellung: Raumschiff Spiele- und Multimedia-Programmierung 6
S Spielvorstellung: Time to Travel Spiele- und Multimedia-Programmierung 22
Oliver530 [Spielvorstellung] Minesweeper Spiele- und Multimedia-Programmierung 12
Fu3L SpielVorstellung: 25 Rooms Spiele- und Multimedia-Programmierung 5
P [Spielvorstellung] PowerX Spiele- und Multimedia-Programmierung 4
H Spielvorstellung: DarkRoom Spiele- und Multimedia-Programmierung 31
M.F.G. Spielvorstellung (plus KI frage): Connect Four – Extreme Spiele- und Multimedia-Programmierung 11
C Spielvorstellung: BallWar Spiele- und Multimedia-Programmierung 4
H Spielvorstellung: Nork Spiele- und Multimedia-Programmierung 24
Fu3L Spielvorstellung: Delirium! (Ein LD48 Resultat) Spiele- und Multimedia-Programmierung 3
A Spielvorstellung: Wüstenhuhn Spiele- und Multimedia-Programmierung 9
B Spielvorstellung: GravoBlocks 3 Spiele- und Multimedia-Programmierung 34
Ein Keks [Spielvorstellung] Spider Solitaire Spiele- und Multimedia-Programmierung 2
T [Spielvorstellung] IMoY Wujinyou Spiele- und Multimedia-Programmierung 65
Private Void Spielvorstellung: Kniffel Spiele- und Multimedia-Programmierung 31
J Spielvorstellung: Vajanoid Spiele- und Multimedia-Programmierung 34
Aomx [Spielvorstellung] The NeverEnding Impulse Spiele- und Multimedia-Programmierung 17
B Spielvorstellung: GravoBlocks Spiele- und Multimedia-Programmierung 48
A Minecraft Plugin, welches nur bestimmten Block zum bebauen festlegt Spiele- und Multimedia-Programmierung 26
M Beste methode zur Map Erstellen in "Block" Games Spiele- und Multimedia-Programmierung 2
Fu3L Block Terrain Generation Spiele- und Multimedia-Programmierung 8
J Kollision mit Block (Wand) Spiele- und Multimedia-Programmierung 11

Ähnliche Java Themen

Neue Themen


Oben