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 17. Apr 2013
Antwort Antwort
Seite 16 von 36   « Erste     6141516 171826     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 21:31 Uhr)
 
EWeiss
 
#151
  Alt 14. Apr 2011, 18:58
Zitat:
Und EWeiss...scheint so als würdest du dich mit OpenGL relativ gut auskennen, hätte da 1-2 Performancetechnische Fragen (die auch schon etwas weiter gehen als das was man auf DGl lernt), wäre super wenn ich dir die stellen könnte
Wie du schon sagst relativ ..
Wenn man sich lange nicht mehr damit beschäftig vergißt man vieles ob ich da eine große Hilfe sein kann
mag dahin gestellt sein.

Eine Visualisierung zu erstellen mit ein paar aufgeklatschten OpenGl Windows
ist mit sicherheit nicht mit deinem Projekt zu vergleichen.

Lossy oder littleDave wären da die richtigen Ansprechspartner.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

 
Turbo Delphi für Win32
 
#152
  Alt 14. Apr 2011, 19:23
Oder du könntest deine performancetechnische Fragen auch hier reinstellen.
  Mit Zitat antworten Zitat
EWeiss
 
#153
  Alt 14. Apr 2011, 19:25
Oder du könntest deine performancetechnische Fragen auch hier reinstellen.
jo dann können mehrere drüber schaun..

gruss
  Mit Zitat antworten Zitat
Edlmann
 
#154
  Alt 14. Apr 2011, 19:51
Erste Frage die ich im Sinn hatte ist, ob es performanter ist, für jeden Gegner neu eine Textur zu binden und den Gegner zu zeichnen (wobei ich dann ja meine Liste von Gegner nur einmal durchgehen müsste) oder ob es sinnvoller ist, immer nur eine Textur zu binden, diesen Gegnertyp zu zeichen, und dann die Textur zu wechseln (womit ich meine Liste im Moment 5 mal durchgehen muss - für jeden Gegner einmal)?

Ich habe auf DGL das gerücht gehört, dass man Texturwechsel vergleichen soll. Bloß ist es das an dieser Stelle wert? Ich muss ja schließlich deutlich mehr CPU-Aufwand treiben...

P.S.: @Bug: Joypad unterstützung kommt doch bald, ein Kollege hat mir eins ausgeliehen

P.P.S.: Danke an alle für das Feedback, ist echt super zu sehen dass dieses (anfangs noch kleine) Projekt gut ankommt
  Mit Zitat antworten Zitat
EWeiss
 
#155
  Alt 14. Apr 2011, 20:07
Zitat:
Erste Frage die ich im Sinn hatte ist, ob es performanter ist, für jeden Gegner neu eine Textur zu binden und den Gegner zu zeichnen (wobei ich dann ja meine Liste von Gegner nur einmal durchgehen müsste) oder ob es sinnvoller ist, immer nur eine Textur zu binden, diesen Gegnertyp zu zeichen, und dann die Textur zu wechseln (womit ich meine Liste im Moment 5 mal durchgehen muss - für jeden Gegner einmal)?
Wenn du die Texture an einer liste bindest so wie ich das mit meinem TextureLoader (Array of Texture) mache
spielt die performance keine rolle wenn es dir um geschwindigkeit geht da diese zur jeder zeit abrufbar sind.

Beim Textureloader von Sulako bist du nun mal gebunden und kannst nicht mal so einfach eine Texture unmerklich wechsel.

Zitat:
Ich habe auf DGL das gerücht gehört, dass man Texturwechsel vergleichen soll. Bloß ist es das an dieser Stelle wert? Ich muss ja schließlich deutlich mehr CPU-Aufwand treiben...
Warum willst du hier was vergleichen du gibst einfach die Texture im Array an und fertig.

Um Texturen einzuladen benötigst du keine CPU.. bzw .. hast keine CPU auslastung.
In meinem Plugin verwende ich (mit meinem Textureloader) eine AVI Datei wo jedes Frame
einzeln in eine Texture gewandelt wird und das in Realzeit.

CPU := CPU <> 0

PS:
Das AVI ist 24MB groß da kannst dir vorstellen wieviele Frames dort enthalten sind.
gruss

Geändert von EWeiss (14. Apr 2011 um 20:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

 
Turbo Delphi für Win32
 
#156
  Alt 14. Apr 2011, 20:08
Grundsätzlich sollte man Texturewechsel immer meiden. Dein Code sollte darauf ausgerichtet sein, dass er gleich mit einem Durchlauf alles ohne Texturwechsel zeichnen kann.
Dh. gruppiere einfach Entities mit der gleichen Texture ID ala~
Delphi-Quellcode:
TTextureEntities = record
  TextureID: DWord;
  Entities: Array of Pointer; // Pointer = Klasseninstanzen
end;

// oder noch besser

TTextureEntities = class(TList)
public
  property TextureID: DWord; // strg+shift+c
  procedure Render();
end;
{Items[] beinhaltet dann die Instanzen; per Add/Delete/... kann es nun verwaltet werden}
EDIT:
@EWeiss
Du weißt aber schon, dass Texturen auf den VRam geladen werden und wenn dieser Speicher nicht allzu groß ist, es zu Fehlern führen wird?
Heutzutage gibts noch Rechner, die < 64 mb Video RAM haben!

Wenn so ein AVI Video 24 Frames/Sekunde hat und eine Länge von etwa 1 Min und pro Frame etwa eine Auflösung von 640*480*3 (RGB; unkomprimiert 900kb; komprimiert ~ 80 kb [JPEG Komprimierung]), dann wären das etwa 80 * 24 * 60 ~ 112,5 mb.

Damit hättest du ein Problem!

Geändert von Aphton (14. Apr 2011 um 20:19 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#157
  Alt 14. Apr 2011, 20:10
Zitat:
mit der gleichen Texture ID
Mit sicherheit nicht.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG
 
#158
  Alt 14. Apr 2011, 20:14
die auch schon etwas weiter gehen als das was man auf DGl lernt
Erste Frage die ich im Sinn hatte ist, ob es performanter ist, für jeden Gegner neu eine Textur zu binden und den Gegner zu zeichnen (wobei ich dann ja meine Liste von Gegner nur einmal durchgehen müsste) oder ob es sinnvoller ist, immer nur eine Textur zu binden, diesen Gegnertyp zu zeichen, und dann die Textur zu wechseln (womit ich meine Liste im Moment 5 mal durchgehen muss - für jeden Gegner einmal)?
Bist du sicher, dass du über die DGL-Wiki hinaus bist

Aber Gruppieren sollte geht sicher in die richtige Richtung.
Wie wäre es mit unterschiedlichen Listen für die Gegner?
  Mit Zitat antworten Zitat
EWeiss
 
#159
  Alt 14. Apr 2011, 20:16
die auch schon etwas weiter gehen als das was man auf DGl lernt
Erste Frage die ich im Sinn hatte ist, ob es performanter ist, für jeden Gegner neu eine Textur zu binden und den Gegner zu zeichnen (wobei ich dann ja meine Liste von Gegner nur einmal durchgehen müsste) oder ob es sinnvoller ist, immer nur eine Textur zu binden, diesen Gegnertyp zu zeichen, und dann die Textur zu wechseln (womit ich meine Liste im Moment 5 mal durchgehen muss - für jeden Gegner einmal)?
Bist du sicher, dass du über die DGL-Wiki hinaus bist

Aber Gruppieren sollte geht sicher in die richtige Richtung.
Wie wäre es mit unterschiedlichen Listen für die Gegner?
Einfaches Array für Texturen reicht vollkommen aus.
Listen sind langsaaaaammm.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

 
FreePascal / Lazarus
 
#160
  Alt 14. Apr 2011, 20:20
TList ist intern ein array

Die Texte flimmern ja immernoch immer mehr je weiter man kommt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 16 von 36   « Erste     6141516 171826     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 15:31
Delphi-Forum.de - Shape Wars - Version 0.9.9 This thread Refback 7. Apr 2011 17:55

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 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