Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.) (https://www.delphipraxis.net/109239-%5Bgame%5D-bloggy-%5Balpha-version-0-6%5D-multiplayer.html)

STS301 3. Mär 2008 09:22

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
ja das wäre auch nicht schlecht, wenn man einen Punkt erreicht und er speichert dann

OldGrumpy 3. Mär 2008 09:28

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Bestzeiten? Ich hab noch keinen einzigen Level geschafft :)

olee 3. Mär 2008 09:28

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Aber das Problem ist, dass man dan den Anfang nicht mehr machen muss.

Aber bei dem Game soll es ähnlich wie bei Trackmania Nations sein:

Immer nur vom Start gibt es einen Neustart.
Wer die Beste Zeit hat gewinnt nach ablauf einer gewissen Zeit.

D.h. ein Checkpoint wäre da mist.

olee 3. Mär 2008 09:29

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
WIE ??? :gruebel: :wall: :roll: :shock: :wiejetzt: :coder2:

olee 3. Mär 2008 09:31

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Ich mache die normal mit dem zweiten oder dritten Lauf durch!

Wenn ihr wollt mach ich grad eine Einstellung zum Schwierigkeitsgrad rein.

...
MFG

OldGrumpy 3. Mär 2008 09:36

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Ist halt nicht jeder so trainiert wie Du :)

olee 3. Mär 2008 09:37

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Nun ja immerhin hab ich das Spiel ja auch schon oft genug gespielt.

Und nebenbei bemerkt --> mir macht mein eigenes Game momentan mehr Spaß als UT u.a. °-°

olee 3. Mär 2008 10:24

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
So jetzt solltet ihr es aber alle mal schaffen.

In der Version wurde die Blockzahl um ein Drittel reduziert (19 Blöcke ohne Start und Ziel)

PS: Hier habe ich nach 2 Versuchen 13sec geschafft...

STS301 3. Mär 2008 10:31

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
bei mir meint er bei beiden Karten ""Gold Time" ist keine gültige Zeit" wenn ich die Karte starten will

olee 3. Mär 2008 10:57

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Ups stimmt hab das vergessen.

Hab eben erst das Laden von den Zeiten eingebaut, obwohl noch keine Zeiten in den Dateien gespeichert waren

Einen moment...

MFG

Vjay 3. Mär 2008 12:58

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Also ich finde es nett. Am Anfang war es ziemlich schwierig, mit abwechselnden Bedienen der Maus/Tastatur dort etwas zustande zu bekommen. Aber beim dritten Anlauf bekam ich bereits hin Maus und Tastatur gleichzeitig zu verwenden und mein Tempo erhöhte sich gewaltig ;)

Also wenn du dort einen Boden hinzufügen solltest, dann einen der einem den Eindruck vermittelt, dass man verdammt hoch ist, um die Angst des Runterfallens zu verstärken :)

*edit*
Oh, lege neuere Versionen unbedingt so ab, dass sie über deinen ersten Post geladen werden können.
Bei der neuen Version *nervt* die flackernde riesige Uhrzeit irgendwie :-/

olee 3. Mär 2008 13:59

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Jo mit der Uhrzeit:

Ich weiß noch nicht wie ich so was wie TextOut in OpenGl einbinden kann.

Aber vielen dank für das Lob^^

PS: Was war denn deine Bestzeit?

MFG

olee 3. Mär 2008 20:39

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
[ot]
Mal grad zwischendrin ne Frage:

Was meint ihr eigentlich die ganze Zeit mit "Hard Coded"
[/ot]

BUG 3. Mär 2008 20:50

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Zitat:

Zitat von olee
[ot]
Mal grad zwischendrin ne Frage:

Was meint ihr eigentlich die ganze Zeit mit "Hard Coded"
[/ot]

"Hard Coded" sind imho Werte, die als Konstanten oder direkt in den entsprechenden Stellen im Quelltext stehen.
"Hard Coded" deshalb, weil diese Werte (oder auch Funktionen) nicht verändert werden können, ohne die betreffende Unit neu zu compilieren.

Also praktisch alles, was du nicht aus einer Datei liest ...


MfG,
Bug

olee 3. Mär 2008 21:55

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
thx!

Aber noch was bei meiner laden funktion für bmp texturen steckt der wurm drin.

Der lädt zwar die Texturen, verdreht diese aber.

Ich habe einen für TGA der lädt die schön und gut.

Aber der BMP - LOADER lädt die genau um 180° verdreht!

Weiß einer wie ichj im Quelltext oder durch OpenGl das bild beim Laden drehen kann?


MSFG

3_of_8 4. Mär 2008 16:23

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Schreib dir halt ne Blitting-Prozedur, die das einfach spiegelt. Das dürftest du doch hinbekommen.

olee 4. Mär 2008 18:13

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
leider nicht

die daten liegen in nem pointer

BUG 4. Mär 2008 18:16

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Zur Not kannst du ja beim Rendern die Texturkoordinaten vertauschen/spiegeln.

MfG,
LivingUndead

3_of_8 4. Mär 2008 20:01

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Die Dateien liegen garantiert nicht in einem Pointer. Schau dir einfach das Format an, in dem die Werte drinliegen und dann geh das ganze in ner Schleife durch und speicher es vertikal gespiegelt in nem Puffer.

olee 4. Mär 2008 22:11

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Liste der Anhänge anzeigen (Anzahl: 1)
So es sieht sehr gut aus mit dem Multiplayer.

Es sind zwar noch manche Fehler drin und noch gar nicht alle Funktionen...

aber hier möchte ich euch einen kleinen Vorgeschmack mal darauf geben, wie es werden soll.

Im Bild sieht man das Programm 3X gestartet und die 3 Spielfiguten. In einem Fenster hüpft ein Spieler und in den anderen Fenstern kann man das wie gewünscht sehen.

Also so wie es aussieht könnt ihr auf ein tolles Spiel für kurze Pausen u.a. freuen

Und hier möchte ich noch einmal einen Dank an Custom aussprechen, ohne den ich dieses Projekt nie erst angefangen und auch nie so weit bekommen hätte.


MFG
Björn Zeutzheim

olee 4. Mär 2008 22:15

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
@3_of_8 : Also bei mir lädt der das Bild nur in einen Pointer oder so. Hab keine ahnung, in welchem Format der das in dem Pointer speichert.

Delphi-Quellcode:
var
  FileHeader: TBITMAPFILEHEADER; // was FileHeader: BITMAPFILEHEADER; undeclared identifier
  InfoHeader: TBITMAPINFOHEADER; // was InfoHeader: BITMAPINFOHEADER; undeclared identifier
  Palette: array [byte] of TRGBQUAD;  // Palette: array of RGBQUAD; declaration of array not supported by D2 and undeclared identifier RGBQUAD
  BitmapFile: THandle;
  BitmapLength: Integer; // changed from variant
  PaletteLength: Integer; // ''     ''   ''
  ReadBytes: Integer;    // changed for incompatibility whith declaration of Win function Readfile
  Front: ^Byte;
  Back: ^Byte;
  Temp: Byte;
  I : Integer;
  Width, Height : Integer;
  pData : Pointer;

  // used for loading from resource
  ResStream : TResourceStream;
begin

[.....................]
    BitmapFile := CreateFile(PChar(Filename), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
    if (BitmapFile = INVALID_HANDLE_VALUE) then begin
      MessageBox(0, PChar('Error opening ' + Filename), PChar('BMP Unit'), MB_OK);
      Exit;
    end;

    // Get header information
    ReadFile(BitmapFile, FileHeader, SizeOf(FileHeader), ReadBytes, nil);
    ReadFile(BitmapFile, InfoHeader, SizeOf(InfoHeader), ReadBytes, nil);

    // Get palette
    PaletteLength := InfoHeader.biClrUsed;
    //SetLength(Palette, PaletteLength); commented by fabrizio ( i don't know how to solve !!)
    ReadFile(BitmapFile, Palette, PaletteLength, ReadBytes, nil);
    if (ReadBytes <> PaletteLength) then begin
      MessageBox(0, PChar('Error reading palette'), PChar('BMP Unit'), MB_OK);
      Exit;
    end;

    Width := InfoHeader.biWidth;
    Height := InfoHeader.biHeight;
    BitmapLength := InfoHeader.biSizeImage;
    if BitmapLength = 0 then
      BitmapLength := Width * Height * InfoHeader.biBitCount Div 8;

    // Get the actual pixel data
    GetMem(pData, BitmapLength);
    ReadFile(BitmapFile, pData^, BitmapLength, ReadBytes, nil);
    if (ReadBytes <> BitmapLength) then begin
      MessageBox(0, PChar('Error reading bitmap data'), PChar('BMP Unit'), MB_OK);
      Exit;
    end;
    CloseHandle(BitmapFile);
  end;

  // Bitmaps are stored BGR and not RGB, so swap the R and B bytes.
  for I :=0 to Width * Height - 1 do
  begin
    Front := Pointer(Integer(pData) + I*3);
    Back  := Pointer(Integer(pData) + I*3 + 2);
    Temp  := Front^;
    Front^ := Back^;
    Back^  := Temp;
  end;
Hier mal der relevante Code der laden-funktion.

3_of_8 4. Mär 2008 22:38

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Da stehts doch eh: Die Daten sind im RGB-Format, jeder Kanal ein Byte, an der Stelle deines Pointers.

Der Code dafür ist ungefähr so:
Delphi-Quellcode:
for I:=0 to Width-1 do
  for J:=0 to Height-1 do
    for K:=0 to 2 do
      PByte(Cardinal(Buffer)+(J*Width+I)*3+K):=
          PByte(Cardinal(pData)+((Height-J-1)*Width+I)*3+K);
(Das hättest du aber mit etwas Eigeninitiative auch hinbekommen sollen, es sei denn, was ich nicht hoffe, du hast dein Spiel bisher nur per Copy & Paste geschrieben)

olee 4. Mär 2008 22:44

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Erst mal danke für die schnelle Antwort.

An so was wie du geschrieben hatst hab ich auch schon gedacht kam aber nit weiter.

--> Was ist denn dan Buffer in deinem Code?

--> Ich kenne mich in diesem Gebiet leider nicht si aus. Könntest du mir vllt. da eine kleine Hilfestellung geben?

3_of_8 4. Mär 2008 22:53

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Buffer ist ein Pointer, den du mit GetMem intialisierst. GetMem übergibst du die Menge Speicher, die du haben willst, also Breite*Höhe*3 (Weil 3 Bytes pro Pixel)

Wenn du dich auf dem Gebiet nicht auskennst, solltest du das schnell ändern - Pointer sind nämlich ein wichtiger Bestandteil der Sprache Delphi, und auch das Speichermanagement sollte man zumindest bedienen können. OpenGL ohne Kentnisse über Pointer zu benutzen ist außerdem so gut wie unmöglich. Wenn du ein Vertex-Array übergeben willst, wenn du eine Matrix in den Grafikspeicher laden willst, sogar, wenn du nur eine Textur laden willst, brauchst du Pointer. Und wenn du damit nicht umgehen kannst, dann kannst du tatsächlich nur durch Copy & Paste soweit gekommen sein, wie du jetzt bist.

olee 4. Mär 2008 22:56

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
EDIT: Erledigt

olee 5. Mär 2008 00:42

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
So ich habe die Lösung gefunden.

Für alle die auch so ein Problem haben sollten hier der Code, um ein Bild in einem Pointer mit Type Byte zu spiegeln.

Delphi-Quellcode:
Var
  I,J,p         : Integer;
  InvData       : Array [0..256,0..1,0..2] of ^Byte;
  TMP           : Array [0..256,0..2] of Byte;
  pData         : Pointer;

  [...........]

  for I := 0 to (Width div 2) do
  begin
    for J := 0 to Height-1 do
    begin
      InvData[j,0,0] := (Pointer(Integer(pData) + I*Width*3 + J*3 + 0));
      InvData[j,0,1] := (Pointer(Integer(pData) + I*Width*3 + J*3 + 1));
      InvData[j,0,2] := (Pointer(Integer(pData) + I*Width*3 + J*3 + 2));

      InvData[j,1,0] := (Pointer((Integer(pData) + (Width-i)*Width*3 + j*3 + 0)));
      InvData[j,1,1] := (Pointer((Integer(pData) + (Width-i)*Width*3 + j*3 + 1)));
      InvData[j,1,2] := (Pointer((Integer(pData) + (Width-i)*Width*3 + j*3 + 2)));

      TMP[j,0]      := InvData[j,0,0]^;
      TMP[j,1]      := InvData[j,0,1]^;
      TMP[j,2]      := InvData[j,0,2]^;

      InvData[j,0,0]^ := InvData[j,1,0]^;
      InvData[j,0,1]^ := InvData[j,1,1]^;
      InvData[j,0,2]^ := InvData[j,1,2]^;

      InvData[j,1,0]^ := TMP[j,0];
      InvData[j,1,1]^ := TMP[j,1];
      InvData[j,1,2]^ := TMP[j,2];
    end;
  end;

olee 5. Mär 2008 01:38

Re: [GAME] Bloggy [ALPHA Version 0.6] (Multiplayer.?.)
 
Liste der Anhänge anzeigen (Anzahl: 2)
So jetzt hole ich endlich wieder eine neue Version aus meiner Programmierstube.

Es haben sich nochmal einige kleinigkeiten verändert.

Der Multiplayer-Modus ist zwar noch nicht fertig, aber schon im Spiel integriert. Wer also den mal testen will, kann das mal versuchen.

MFG
Björn


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz