AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Balanced das Spiel für Starke Nerven und Starke Graphikkarte
Thema durchsuchen
Ansicht
Themen-Optionen

Balanced das Spiel für Starke Nerven und Starke Graphikkarte

Ein Thema von Corpsman · begonnen am 13. Jul 2006 · letzter Beitrag vom 21. Sep 2008
Antwort Antwort
Seite 41 von 57   « Erste     31394041 424351     Letzte »    
Benutzerbild von Corpsman
Corpsman
Registriert seit: 8. Nov 2005
!! ACHTUNG !!

Balanced2 ist nun Verfügbar, den Link zum Thema gibts hier.

Hallo alle miteinander,

in den Letzten 9 Wochen habe ich ja des öfteren mal wieder ein paar fragen zur OpenGL Programmierung gestellt.

Hier ist nun das Resultat meiner Arbeit.

Zugegeben noch lange nicht fertig. Aber die Richtung ist durchaus erkennbar.

Und Spass macht es schon lange mein Spiel zu spielen.

Worum es Geht ?

Jeder der Marble Madness kennt weis sofort worum es hier geht.

Für alle anderen :

Im Spiel hat der Spieler 1 Kugel diese kann 3 verschiedene Materialien annehmen. Je nach Material gibt es unterschiedliche Eigenschaften der Kugel.

Ziel des Spieles ist es mit dieser zu einem FINISH Punkt zu gelangen. Wie das geschieht ist dabei dem Spieler überlassen.
Einzige Bedingung, man mus alle Checkpoints besuchen.

Das im Kurzen.

Für alle die nur diesen Post lesen und das File dann gleich laden hier noch die Steuerung:

Pfeiltasten = Bewegung der Kugel
Space = Rauszoomen
STRG + K = Selfkill
SHIFT + Pfeiltasten ( oder mit ASDW ) = Kamera Drehen


Was dieses Spiel so besonders macht ist der Leveleditor !!!

Ihr könnt also nach herzenslust neue Levels erstellen und spielen...

Ich hoffe sogar das ihr viele neue Levels erstellt und mir diese dann zusendet, mit den Besten Levels baue ich dann eine Spielschrittkette ( zumindest Hoffe ich das es genug werden das ich das auch wirklich machen kann).


Wer Ideen , Fragen , Kritik , Wünsche oder BUGS loswerden will der soll sich mal melden. Ich versuche dann mein bestes


Ach fast hätte ich den Link vergessen

Balanced ( ca. 3,5 mb )

Levelpacks

Makros

Graphik_Pack

euer

Corpsman

[edit] anscheinend darf man anwendugnen nur direkt verlinken, also hab ich das mal gemacht.
[edit2] Erweiterungen für die Steuerung nachgetragen.
[edit3] Link für die Makros mit reingemacht.
[edit4] Aufgrund von änderungen auf meiner HP musten die Links aktualisiert werden
[edit5] Level Download Link entfernt, die Levels sind ab sofort nur noch über www.Balanced.de.vu verfügbar.
[edit6] Links Aktualisiert
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01

Geändert von Corpsman ( 4. Jan 2015 um 11:23 Uhr) Grund: ablösen durch Balanced2
 
Hagbart

 
Delphi 7 Personal
 
#401
  Alt 26. Dez 2006, 21:54
Ich habe noch keine Fehler gefunden, läuft bis jetzt noch super!!
  Mit Zitat antworten Zitat
Tumm

 
Turbo Delphi für Win32
 
#402
  Alt 26. Dez 2006, 21:55
Find ich auch
  Mit Zitat antworten Zitat
Tumm

 
Turbo Delphi für Win32
 
#403
  Alt 26. Dez 2006, 22:07
Hee, wenn man die Rollsounds deaktiviert kommt das nich!
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

 
Delphi XE2 Professional
 
#404
  Alt 26. Dez 2006, 23:38
@tumm,

Verstehe ich das Richtig.

Du Aktivierst Sound, und Deaktivierst Rollsounds. Und dann gehts ?

was eigentlich überhaupt keinen Sinn macht. Erst Recht dann nicht wenn dann diese Fehlermeldung sein soll.

Ich Poste euch mal den Gesamten Code der Mit den Rollsounds dazu gekommen ist.

Delphi-Quellcode:
// Das ist die Procedure die Aktiv wird wenn die Kugel Fliegt.
// hat eigentlich nichts direkt mit dem fehler zu tun. Aber ihr seid bestimmt neugierig wie ich das alles mache ;)
Var
  ocolls: boolean = False;
  Colls: Boolean = False;
  Colltime: Dword;

Const
  Colltimefact = 50;

Procedure SoundBeginContact;
Begin
  ocolls := Colls;
  colls := false;
End;

Procedure SoundEndContact;
Begin
  If Ocolls And Not Colls Then Begin // Negative Flanke !!
    Colltime := GetTickCount;
  End;
  // Messen der Zeit seit Negativer Flanke !!
  If (Not Ocolls) And (Not Colls) Then Begin
    If Gettickcount - Colltime > Colltimefact Then
      Soundmanager.stop;
  End;
End;
So hier kommt dann der Code von meinem Sound Manager.

Delphi-Quellcode:
Type
  TSoundmanager = Class
  private
    Finitialized: Boolean;
    Sounds: Array Of HStream;
    Playing: Array Of boolean;
    fsoundpath: String;
    Procedure Playchannel(Value: Integer);
  public
    Procedure Play(Playermaterial, Bottommaterial: integer; Waited: Boolean);
    Procedure Stop;
    Constructor create(SoundPath: String; h_Wnd: Hwnd);
    Destructor destroy; override;
  End;
Das ganze Greift auf Bass.dll zu.

Der Constructor Lädt direct die Sound Files :
Delphi-Quellcode:
Constructor TSoundmanager.create(SoundPath: String; h_Wnd: Hwnd);
Var
  i: integer;
Begin
  Inherited create;
  // Bass.dll initialisieren
  Finitialized := BASS_Init(-1, 44100, 0, h_Wnd, Nil);
  If Not Finitialized Then MessageBox(0, 'Could not load Bass.dll', 'Error', MB_ICONWARNING Or MB_OK);
  // Laden der Sound Files
  If Finitialized Then Begin
    fsoundpath := Soundpath;
    setlength(Sounds, 23);
    Sounds[0] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Hit_Paper.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[1] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Hit_Wood_Wood.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[2] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Hit_Wood_Stone.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[3] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Hit_Wood_Metal.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[4] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Hit_Stone_Wood.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[5] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Hit_Stone_Stone.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[6] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Hit_Stone_Metal.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[7] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Misc_Fall.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[8] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Misc_Checkpoint.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[9] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Music_Final.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[10] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Misc_extraball.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[11] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Extra_Start.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[12] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Misc_Enlargeball.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[13] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Misc_shrinkball.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[14] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Misc_die.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[15] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Menu_click.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[16] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Roll_Paper.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[17] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Roll_Stone_Metal.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[18] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Roll_Stone_Stone.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[19] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Roll_Stone_Wood.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[20] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Roll_Wood_Metal.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[21] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Roll_Wood_Stone.wav'), 0, 0, BASS_SAMPLE_FX);
    Sounds[22] := BASS_StreamCreateFile(False, PChar(Soundpath + 'Roll_Wood_Wood.wav'), 0, 0, BASS_SAMPLE_FX);

    setlength(Playing, High(sounds) + 1);
    For i := 0 To High(playing) Do
      Playing[i] := false;

  End;
End;
Und diese Function hier startet dann die Endlosschleifen von Sound [ 16- 22 ]

Delphi-Quellcode:
Procedure Tsoundmanager.Playchannel(value: Integer);
Var
  info: BASS_CHANNELINFO;
  AChannel: HStream;
  i: integer;
Begin
  If UseRollsounds Then Begin
    // Beenden der Anderen Channels
    For i := 0 To High(Playing) Do Begin
      If (i <> value) And PLaying[i] Then Begin
        BASS_ChannelStop(Sounds[i]);
        Playing[i] := false;
      End;
    End;
    If Not Playing[value] Then Begin
      // Starten des Channels
      aChannel := Sounds[value];
      BASS_ChannelGetInfo(aChannel, Info);
      // Loop setzen / nicht setzen
      If ((Not (Info.Flags = BASS_SAMPLE_LOOP)) And (True)) Or
        (Info.Flags = BASS_SAMPLE_LOOP) And (Not true) Then
        BASS_ChannelSetFlags(aChannel, BASS_SAMPLE_LOOP);
      // Abspielen
      BASS_ChannelPlay(aChannel, true);
      Playing[value] := true;
    End;
  End;
End;
Irgendwo im Code ist glaubig noch die Stop Routine aufgerufen die ist hier :
Delphi-Quellcode:
Procedure TSoundmanager.Stop;
Var
  i: Integer;
Begin
  For i := 0 To High(playing) Do Begin
    If Playing[i] Then
      BASS_ChannelStop(Sounds[i]);
    Playing[i] := false;
  End;
End;
Das Ganze Läuft nu wie Folgt ab.

Das Programm Ruft Render auf. dann wird die szene Gerendert.

dann wird mit folgendem Code die Physik und damit dann auch die Audio Aktualisiert.

Delphi-Quellcode:
          While AccTimeSlice > 12 Do Begin
            If Assigned(NewtonWorld) Then Begin
              SoundBeginContact;
              NewtonUpdate(NewtonWorld, (12 / 1000));
              SoundEndContact;
            End;
            AccTimeSlice := AccTimeSlice - 12;
          End;
Mehr ist nich. Wo da dein TFont Error geschieht ist mir nich Klar.

Die "MS Sans Serif" Font wird über TopenGlSimple Font geladen. die entsprechende Unit gibts auf meiner HP. Die kannst du Gerne mal runterladen und versuchen ob die bei dir Läuft.
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

 
Delphi XE2 Professional
 
#405
  Alt 27. Dez 2006, 14:10
Also der Fehler bei Tumm ist endlich auch gefunden.

Das Problem lag im Dateiformat der User.cfg

Da das ein Extra Thema ist werde ich aber nen neuen Thread damit aufmachen.
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

 
Turbo Delphi für Win32
 
#406
  Alt 26. Mai 2007, 16:27
Moin Corpsman,
da ist doch tatsächlich schon lange eine neue Version mit Rollsound erschienen und ich hab's nicht gemerkt... Klasse!! So macht's noch mehr Spaß.

Zwei Dinge sind mir beim Spielen eingefallen, die man noch einbauen könnte:
- Nach der Eingabe des Namens für die Highscore, kommt die Highscore, so dass man sich ansehen kann, wo man gelandet ist. Man muss sich allerdings die erspielten Punkte merken, und in der Highscore wieder suchen. Wie wäre es, den neu hinzugekommenen Eintrag irgendwie zu markieren, sodass man sofort sieht, wo man gelandet ist?

- Eine Anzeige der aktuellen Geschwindigkeit in einer beliebigen Einheit. Wenn man lange Strecken bergauf oder bergab geradeaus rollt kann man die Geschwindigkeit manchmal nicht mehr so gut abschätzen. Eine Anzeige würde mir helfen.

Gruß
Malte

PS: Gibt es auch schon neue Level?
Malte Schmitz
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

 
Delphi XE2 Professional
 
#407
  Alt 26. Mai 2007, 16:52
hi stz,

Deine Idee mit der Farblichen Markierung ist gut, ich schau das ich es einbau.

Was die anderen Wünsche angeht so nehme ich sie in die Todo Liste auf.

Ich kann das leider grad net machen weil ( aber verrats noch keinem ) ich bau grade den Schatten ein. Seit 2 Tagen ist es mir gelungen einen Schatten unter die Kugel zu bekommen . Nu arbeite ich mich gerade Polygonweise durchs gesammte Spiel auf das man den Schatten auch sehen kann. Wies ungefähr wird kannst im Screenshot sehen.

Leider wird es aber noch gut 4 - 5 Tage Dauern bis es soweit ist.

Die "Check for Update" funktion im Launcher wird dir aber sagen wann genau die neue Ver online ist .
Miniaturansicht angehängter Grafiken
screnshot_787.jpg  
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

 
Turbo Delphi für Win32
 
#408
  Alt 26. Mai 2007, 18:33
Moin Corpsman,
uijuijui ... das sieht ja toll aus !! 4-5 Tage sind ne lange Zeit... wie soll ich das nur aushalten

Ah, die "Check for Update"-Funktion ist auch praktisch. Vielleicht sollte ich sie mal benutzen

Gruß
Malte
Malte Schmitz
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

 
Delphi XE2 Professional
 
#409
  Alt 26. Mai 2007, 19:21
Hmm wenn du mich ganz nett Bittest kann ich ja Extra und nur hier für die DP User eine Pre Release Version online Stellen.

Denn wie man auf dem Screenshot sehen kann tut der Schatten ja bereits, nur eben nicht bei allen Elementen.
Uwe
  Mit Zitat antworten Zitat
Namenloser

 
FreePascal / Lazarus
 
#410
  Alt 26. Mai 2007, 19:25
ich hatte das Spiel ja schon beinahe vergessen, aber habe eben wieder den thread gesehen und mir gleich mal die neueste version geholt. Fin das Spiel nach wie vor klasse!

Eine Sache ist mir allerdings aufgefallen: Wenn man ein Level gespielt hat, werden alle anderen grün angezeigt, obwohl man sie noch nicht spielen kann. sonst werden sie rot angezeigt. Ist ja nix gravierendes wollte nur mal drauf hinweisen, falls nicht schon darauf hingewiesen wurde.

Ich bin auch schon ganz gespannt auf die nächste version (wegen dem schatten des Balls^^)

  Mit Zitat antworten Zitat
Antwort Antwort
Seite 41 von 57   « Erste     31394041 424351     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:

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