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
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#1

AW: Shape Wars - Version 1.0

  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.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Edlmann

Registriert seit: 19. Nov 2010
212 Beiträge
 
#2

AW: Shape Wars - Version 1.0

  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
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.877 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Shape Wars - Version 1.0

  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

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Shape Wars - Version 1.0

  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!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Edlmann

Registriert seit: 19. Nov 2010
212 Beiträge
 
#5

AW: Shape Wars - Version 1.0

  Alt 16. Apr 2011, 13:54
Dass man den Quelltext nicht noch optimieren könnte ist ja gar nicht mein Problem. Sondern dass hin und wieder (nicht nachvollziehbar) eine Zugriffsverletzung auftaucht, obwohl ich meine Prozedur RenderLine nur mit Texten aufrufe, die 100%tig sicher in der Menge liegen. Solange ich selbst darauf achte ist ja eine solche Überprüfung irrelevant.

[Edit]
Es könnte allerdings wirklich sein, dass die 0 (bzw 1) der Fehler war...habs gerade testweise 5x compiliert, und es funktionierte. Werd bescheid sagen wenn der Fehler wieder auftaucht.
[/Edit]

Geändert von Edlmann (16. Apr 2011 um 13:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Shape Wars - Version 1.0

  Alt 16. Apr 2011, 13:56
Ja gut, dann mach mal das, was der mkinzler gesagt hat
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Edlmann

Registriert seit: 19. Nov 2010
212 Beiträge
 
#7

AW: Shape Wars - Version 1.0

  Alt 16. Apr 2011, 14:12
Der Fehler ist ziemlich sicher gefixxt. Bloß ich frage mich, warum der Fehler dann nur hin und wieder aufgetaucht ist, und nicht jedesmal? Auch hat es bei einer Demo-Anwendung, die nur die Schriftart anzeigt, einwandfrei funktioniert...naja egal, ist gefixxt

Anbei eine kleine Vorschau auf die neue Schrift
Miniaturansicht angehängter Grafiken
font.jpg  

Geändert von Edlmann (16. Apr 2011 um 14:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.385 Beiträge
 
Delphi 12 Athens
 
#8

AW: Shape Wars - Version 1.0

  Alt 16. Apr 2011, 14:22
Delphi-Quellcode:
for x := 0 to Length(Text) do
        ^^^
und auch
Delphi-Quellcode:
for y := 0 to Length(Letters[x].Lines) do
              ^^^^^^^^^^^^^^^^^^^^^^^^
Wenn du auf nichtexistierende Speicherstellen zugreifst, dann kommt es darauf an, was es an dieser Stelle gibt ...
> entweder nix und es knallt
> anderer und derzeit nichtverwendeter Speicher ... hier passiert nix (eventuell)
> anderer verwendeter Speicher ... hier veränderst du fremde Variablen

Schalte doch mal in deinen Projektoptionen die Überlauf- und Bereichsprüfungen an.
Zur Fehlersuche ist das vollkommen angebracht (auch wenn es das Programm "etwas" langsamer machen kann).
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Edlmann

Registriert seit: 19. Nov 2010
212 Beiträge
 
#9

AW: Shape Wars - Version 1.0

  Alt 16. Apr 2011, 14:29
Vielen Dank Himitsu und mkinzler, dürften jetzt alle Fehler behoben sein. und die Option zum Bereichsprüfen kannte ich noch gar nicht
  Mit Zitat antworten Zitat
Edlmann

Registriert seit: 19. Nov 2010
212 Beiträge
 
#10

AW: Shape Wars - Version 1.0

  Alt 17. Apr 2011, 13:53
Lade gerade mal wieder eine neue Version (1.0.1) hoch, mit folgenden Änderungen:
  • Bugfix: bei der Version ohne Music kommt nun kein Fehler mehr, wenn X gedrückt wird
  • Performance: Aufteilen der Gegner auf 5 Listen, dürfte vor allem im Modus Moshpit für bessere Performance sorgen
  • Beta: Unterstützung für Joypads (2 Analog-Sticks), aktivieren/deaktivieren mit F9, im Menü allerdings noch Fehlerhaft
  • Alle Texte die während des Spielens angezeigt werden laufen nun über meine selbstgebastelte Vektor-Font, mal schauen ob ich das Menü auch umstelle
  • Hier und da ein paar Bugfixxes
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:26 Uhr.
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