AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Shape Wars - Version 2.0.0
Thema durchsuchen
Ansicht
Themen-Optionen

Shape Wars - Version 2.0.0

Ein Thema von Edlmann · begonnen am 23. Mär 2011 · letzter Beitrag vom 16. Apr 2013
Antwort Antwort
Seite 19 von 36   « Erste     9171819 202129     Letzte »    
Edlmann
Registriert seit: 19. Nov 2010
Guten Nachmittag liebe DP,
ich hatte in letzter Zeit das dringende Bedürfnis, endlich einmal mit OpenGL ein fertiges Spiel auf die Beine zu stellen.
Fertig ist es noch nicht, aber Fertig ist ja auch definitionssache Es ist bisher mal Spielbar, auch wenn ich noch
einige Änderungen vorhabe.

Zur Spielidee:
Sinn hat dieses Spiel nicht, wie so viele Minigames. Der Spieler ist eine simple Figur, und muss andere
Formen abschießen. So simpel es sich anhört, ich spiele das Spiel mittlerweile mehr als dass ich es weiterentwickle
Das ganze Spiel ist im Tron-Stil gehalten, und mag dem einem oder anderem bekannt vorkommen, doch selber gemacht macht
ein Spiel imho immer doppelt so viele Laune wie runtergeladen
Die grünen "Dinger", die jeder Gegner fallen lässt, sind Multiplikatoren. Der Multiplikator bestimmt, wie viele Punkte man pro Gegner bekommt
(10 * Multiplikator), womit der Score gegen Ende stark in die Höhe schießt (In unserer Schule liegt der Record für Pacifism bei 50 Millionen)

Steuerung:
Bewegen kann man den Spieler mit den Tasten WASD wahlweise Pfeiltasten (funktionieren beide, aber am besten nicht gleichzeitig benutzen ^^), gezielt wird mit der Maus.
Mit der linken Maustaste kann man schießen.

Einstellungen etc:
F3: Screenshot machen, wird im Unterordner Screenshots erstellt
F5: Partikel an/ausschalten, sollte auf aktuellen Maschinen nicht nötig sein (In der Schule ist dies aber von Vorteil )
F6: Lichteffekte an/aus (sieht mit deutlich besser aus, aber wers lieber schlicht haben möchte...
F7: Equalizer im Hintergrund an/aus
F8: Fenstermodus/Vollbildmodus
F9: Joypad an/aus
Esc: Menü aufrufen (funktioniert nicht bei der Game-Mode-Auswahl)
X: Nächster Song
+ -: Lautstärke der Musik einstellen

Die verschiedenen Spielmodi:
On the Run: Nur relativ langsame Gegner, die dem Spieler folgen. Der einfachste Spielmodus bisher.
Moshpit: Alle Gegnerarten, die ich bisher implementiert habe, erscheinen zufällig. Meiner Meinung nach der schwierigste Modus, da man auf viele verschiedene Dinge achten muss.
Waves: Nur Gegner, die sich gerade über den Bildschirm bewegen, immer über die gesamte Bildschirmbreite. Man muss sich also einen Weg durch die Gegner bahnen, um hier zu überleben.

Download:
http://shapewars.sogru.de/download.php?id=0
Ohne Musik:
http://shapewars.sogru.de/download.php?id=1

Homepage:
http://shapewars.sogru.de

Dank an:
Sascha Willems für den OpenGL-Header der DelphiGL
Der Community der DelphiGL für ihre Tutorials
Jan Horn für seinen Texture-Loader
Den Machern der bass.dll/bass_fx.dll
1024MB (aka Leslie Wai) für einige der Songs
ParagonX9 und Kid2Will für einige der Songs
Culxxaw für das Bereitstellen von Server-Kapazitäten und das schreiben der nötigen .php-Scripte für den Online-Highscore
igel457 für seine Klasse zum Kapseln eines Gamepads (veröffentlicht hier)

Würde mich über Feedback, Verbesserugnsvorschläge etc freuen,
Und es wäre super wenn ihr mir Rückmeldung über die Performance geben könntet, die Partikel-Engine ist schon relativ aufwendig...
Vor allem das testen des Online-Highscores auf Bugsicherheit ist wichtig
Lg, Edlmann

Geändert von Edlmann (21. Sep 2011 um 20:31 Uhr)
 
Culxxaw
 
#181
  Alt 15. Apr 2011, 20:00
Für Gegner, die aussehen als wären sie aus laserlicht ist bloom aber ein bisschen überdimensioniert (Wenn ich so an die Performance denke...).
Der Effekt an sich wäre natürlich cool, sollte aber auch durch Texturen zu erreichen sein. Einfach halbtransparent und dann nen Weichzeichner drüber hauen...
  Mit Zitat antworten Zitat
Edlmann
 
#182
  Alt 15. Apr 2011, 20:09
Für Gegner, die aussehen als wären sie aus laserlicht ist bloom aber ein bisschen überdimensioniert (Wenn ich so an die Performance denke...).
Der Effekt an sich wäre natürlich cool, sollte aber auch durch Texturen zu erreichen sein. Einfach halbtransparent und dann nen Weichzeichner drüber hauen...
So ähnlich ist das eh schon, die leuchten ja jetzt schon ein wenig. Müsst man vielleicht einfach noch verstärken
  Mit Zitat antworten Zitat
Culxxaw
 
#183
  Alt 15. Apr 2011, 20:15
Also der animierte hintergrund ist irgendwie schon geil.
Wenn viel los ist ist es manchmal nen bisschen schwer zu erkennen was gerade passiert aber das hat auch einen gewissen reiz.

Kleiner Bug noch:
Wenn man im Spiel in der "ohne Musik"-Version auf "x" drückt gibt es ne fehlermeldung

Ansonsten auf jeden fall eine würdige Version 1.0
  Mit Zitat antworten Zitat
Edlmann
 
#184
  Alt 15. Apr 2011, 20:21
Das Spiel ist auch ohne Musik nicht das Spiel werd ich aber noch fixxen
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

 
Turbo Delphi für Win32
 
#185
  Alt 15. Apr 2011, 20:23
Über Shader schluckt das ned viel Performance!

Im Anhang befindet sich eine Demo.
Per Mausklick und Herumschieben kann man das Model - das nicht meins ist; habs irgendwo aus dem Internet - rotieren. Je näher es zum Betrachter ist, desto heller/beleuchteter ist es. Per Pfeiltasten nach oben/unten lässt sich der Threshold Wert ändern. Per Enter kann man sich nun die einzelnen Renderpasses anschauen.

Zuerst wird normal gerendert (First Pass), anschließend wird alles geblurrt (Blurred Pass), dann wird gebloomt (helle Stellen werden noch heller, Dunkle - je nach Threshold - entfernt)(Selected-Parts Pass). Es wird nochmal geblurrt (Blurred Pass) und letzendlich wird die Postprocessed Texture über die Scene geblendet! (Bloomed Pass)

Edit:
Nun gut, der FPS Zähler hat anschließend 1/10 des ursprünglichen Wertes. Aber ich glaube, dass kommt daher, weil ich da soviele Renderpasses habe und ständig Texturen neu befülle. Das kann man bestimmt optimaler machen!
Angehängte Dateien
Dateityp: rar Blooming.rar (495,1 KB, 11x aufgerufen)

Geändert von Aphton (15. Apr 2011 um 23:17 Uhr)
  Mit Zitat antworten Zitat
Edlmann
 
#186
  Alt 15. Apr 2011, 20:25
@Aphton: Super danke, werd ich mir mal anschauen

[Edit]
Hättest du was dagegen den Quelltext auch zu veröffentlichen?
[/Edit]

Geändert von Edlmann (16. Apr 2011 um 09:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG
 
#187
  Alt 16. Apr 2011, 09:47
Dass die Partikel effizienter gezeichnet werden. Ich kanns mit Partikeln gar nicht spielen, deshalb schalte ich das immer ab!
Man kann eh höherscorig () spielen, wenn man die Multiplier sieht. Mit DeathPartikelCount 10 bis 50 geht's ganz gut.
  Mit Zitat antworten Zitat
Edlmann
 
#188
  Alt 16. Apr 2011, 13:30
Mmh...so langsam regt mich Delphi echt auf ^^

Ich bin gerade dabei, eine im Quelltext implementierte Vektor-Font zu erstellen, damit das Flackern endlich verschwindet. Diese Funktioniert auch super, löst allerdings jedesmal, wenn ich an der Unit nix verändert habe (und auch manchmal wenn ich etwas verändert habe) eine Zugriffsverletzung aus, die ich absolut nicht nachvollziehen kann (vor allem da das ganze hin und wieder funktioniert). Ich hoffe dass mir jemand von euch helfen kann, denn ansonsten wird es bei der Textsuite mit dem Flackern bleiben, da ich schon mit dem Online-Highscore ähnliche Probleme hatte (habe dazu auch nen Thread hier in der DP gestartet, mir konnt niemand helfen), und mir eine zweite Unit wo dieser Fehler auftritt zu viel ist. Also hab ich mich entschlossen mal den Quelltext von meiner Vektorfont (teilweise) zu veröffentlichen, und schauen ob mir jemand von euch helfen kann.

Delphi-Quellcode:
unit VekFont;

interface

uses dglOpenGL, SysUtils, Dialogs;

type
  TLine = record
    x1, y1, x2, y2: Single;
  end;
  TSingleChar = record
    Length: Integer;
    Lines: array[0..6] of TLine;
  end;

procedure ResetAllLetters;
procedure SetupFont;
function SetUpLine(xx1, yy1, xx2, yy2: Single): TLine;
procedure RenderTextLine(Text: String; XPos, YPos, Size: Single);

var Letters: array[32..129] of TSingleChar;

implementation

procedure RenderTextLine(Text: String; XPos, YPos, Size: Single);
var x, i: Integer;
begin
 // Text := UpperCase(Text);
    glBegin(GL_LINES);
  for x := 0 to Length(Text) do
  with Letters[Ord(Text[x])] do
  begin
   for i := 0 to Length-1 do
   begin
     //Laut Compiler kommt hier die Exception her, funktioniert aber eig und ist Fehlerfrei in einer einzelnen Anwendung die nur die Font benutzt)
     glVertex2f(Lines[i].x1 * Size + XPos + Size * 5 * x, Lines[i].y1 * Size + YPos);
     glVertex2f(Lines[i].x2 * Size + XPos + Size * 5 * x, Lines[i].y2 * Size + YPos);
   end;
  end;
    glEnd;
end;

procedure ResetAllLetters;
var
  x: Integer;
  y: Integer;
begin
  for x := Low(Letters) to High(Letters) do
  begin
    Letters[x].Length := -1;
    for y := 0 to Length(Letters[x].Lines) do
    begin
      with Letters[x].Lines[y] do
      begin
        x1 := 0;
        x2 := 0;
        y1 := 0;
        y2 := 0;
      end;
    end;
  end;
end;

function SetUpLine(xx1, yy1, xx2, yy2: Single): TLine;
begin
  with Result do
  begin
    x1 := xx1;
    y1 := yy1;
    x2 := xx2;
    y2 := yy2;
  end;
end;

procedure SetupFont;
begin
  ResetAllLetters;
  //Space
  Letters[32].Length := 0;
  // !
  with Letters[33] do begin Length := 2; Lines[0] := SetUpLine(2, 0, 2, 1); Lines[1] := SetUpLine(2, 2, 2, 6); end;
  // Hier werden halt alle Buchstaben deklariert, sind insgesamt etwa 100 Stück, alle Fehlerfrei soweit

  end;

initialization SetupFont;

end.
Ich hoffe mal dass da einer von euch was findet was so einen Fehler verursachen könnte.
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#189
  Alt 16. Apr 2011, 13:40
for x := 0 to Length(Text) do
muss
for x := 1 to Length(Text) do heissen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

 
Turbo Delphi für Win32
 
#190
  Alt 16. Apr 2011, 13:51
Und außerdem würde ich vorher noch prüfen, ob das Ord(Text[x]) im Wertebereich {32..129} liegt!
  with Letters[Ord(Text[x])] do Aber da das performancetechnisch Probleme bereiten könnte, würde ich generell anfangs ein Checkup machen - dh. sicher gehen, dass alle Strings auch wirklich in dieser Menge enthalten sind!

Edit:
Der Quelltext ist vorhanden. Zumindest das Kernstück!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 19 von 36   « Erste     9171819 202129     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

(?)

LinkBack to this Thread

Erstellt von For Type Datum
C-Sharp-Forum.de - Shape Wars - Version 0.9.9 This thread Refback 11. Apr 2011 14:31
Delphi-Forum.de - Shape Wars - Version 0.9.9 This thread Refback 7. Apr 2011 16:55

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz