Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

51

17.11.2010, 20:39

Zitat von »Stupidedia«

Delphi (Programmiersprache)


sehr seriös und verlässlich :/
Metal ist keine Musik sondern eine Religion.

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

52

18.11.2010, 05:37

Ich glaube das war etwas missverständlich. Ich meinte nicht die Spieler, sondern die Grafiker, die an dem Projekt mitarbeiten sollen. Hat man gute Assets, dann braucht man die ja nicht mehr, es seiden einer der anderen Grafiker ist abgesprungen oder man braucht mehr davon.

Wäre ich mir auch nicht so sicher. Gerade Designer und Grafiker sind in der Regel Menschen die sich besonders stark von Design beeinflussen lassen. Objektiv ist es auch für die Grafiker natürlich klar, dass ein Spiel mies aussieht wenn es noch keine Grafiker hat. Subjektiv wird es den ersten Eindruck jedoch völlig versauen.

Zu der Planungsdiskussion:


(Link)

(you can click it)

53

18.11.2010, 13:03

Wie gesagt, es gibt beide Meinungen. So, Zum Pong Klon: Der Einzelspielermodus läuft seit Vorvorgestern. Ich sitz am Multiplayer und an der Doku.

Dann..Planung Spiel:
Technische Anforderungen...das Spiel sollte nachher möglichst auf jeder Windows Maschine laufen. Das heißt wir machen die Grafik regelbar und prüfen, in wie weit man den Ram ausnutzen kann (per Software), um möglichst den Ram zu nutzen (also Grafiken etc. vorladen). Wie genau die mindestvoraussetzungen aussehen müssen wir natürlich noch sehen...Sowas lässt sich schwer im Voraus sagen!

Pong Klon in kurz (bis jetzt):
Ich hab eine Paintbox genommen (mehr ist nicht nötig) und refreshe die mit einer while...do... Schlaufe 60 Mal in der Sekunde. Darin werden 2 grüne Balken und ein rotes Quadrat dargestellt (.bmp Bilder). Bei jedem Durchlauf der Schleife wird die Position des Balls (korrekt) berechnet. Ein Timer erhöht alle 10 sek die Geschwindigkeit des Balls. Der Computer spielt perfekt. Punktestände werden auch eingeblendet und richtig hochgezählt.
Bisher wurden bei mehreren Tests nur 2 Bugs entdeckt, die noch nicht behoben werden konnten (1. der Ball blieb nur kurz am Rand stecken (und wurde dann korrekt zurückgesetzt) und hat dabei einen Punktestand von 2024 für den Computer erzeugt; 2. Das spielt hängt nach einiger Zeit, nimmt aber noch Anweisungen an (ESC schließt die Spielform - Prüfung über Zustand der Taste bei jedem Durchlauf)). Die Physik wird auch korrekt berechnet (Einfallswinkel=Ausfallswinkel), bei den Schlägern werden die Enden der Schläger wie Schrägen berechnet (wie bei dem Spiel Bricks; auch wenn die Grafiken (noch) keine Schrägen haben).
Ich habe bisher keine Idee, woher die Bugs rühren könnten.
Falls ihr Code Schnippsel und die EXE zum selber Testen wollt..hier (Anmerkung: Sleep wurde zu Testzwecken eingebaut. Es gibt dadurch etwa 30 Durchläufe der Schlaufe weniger):

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
function fps:Integer;
begin
  if (now-_t)*1000<>0 then
  Result:=Round(_fps / ((now-_t)*100000));
  _t:=now;
  _fps:=0;
end;

procedure _AI;
begin
  CBat.y:=Ball.y-50;
  Ball.y:=Ball.y+(Ball.ydir*Ball.ymult);
  Ball.x:=Ball.x+(Ball.xdir*Ball.xmult);
  if Ball.y<1 then Ball.ydir:=0-Ball.ydir;
  if Ball.y>Form2.Height-Ball._img.Height-1 then Ball.ydir:=0-Ball.ydir;

  if Ball.x<10 then
  if PBat.y-1<Ball.y then
  if PBat.y+PBat._img.Height+1>Ball.y then
  begin
  Ball.xdir:=1;
  if Ball.y>=PBat.y then
  if Ball.y<=PBat.y+40 then ball.ydir:=Ball.ydir-1;
  if Ball.y>=PBat.y+80 then
  if Ball.y<=PBat.y+120 then ball.ydir:=Ball.ydir+1;
  end;

  if Ball.x>Form2.Width-CBat._img.Width-4 then
  if CBat.y-1<Ball.y then
  if CBat.y+CBat._img.Height+1>Ball.y then
  begin
  Ball.xdir:=-1;
  if Ball.y>=CBat.y then
  if Ball.y<=CBat.y+40 then ball.ydir:=Ball.ydir-1;
  if Ball.y>=CBat.y+80 then
  if Ball.y<=CBat.y+120 then ball.ydir:=Ball.ydir+1;
  end;

  if Ball.x<0 then pointforC;
  if Ball.x>Form2.Width then pointforP;
end;

procedure _go;
begin
_game:=True;
while _game=True do
  begin
    Sleep(8);
    if _stop=False then
    if mymode='cpu' then
    _AI;
    PBat.y:=Mouse.CursorPos.Y-60;
    Form2.cyAdvPaintBox1.Refresh;
    if GetAsyncKeyState(VK_ESCAPE)<>0 then
      begin
        _game:=False;
        Form2.Close;
        _stop:=True;
      end;
  end;
end;

procedure setscene;
begin
  with Form2 do
  begin
    Ball.x:=50;
    Ball.y:=50;
    Ball.ydir:=1;
    Ball.ymult:=3;
    Ball.xmult:=3;
    Ball.xdir:=1;
    PBat._img:=Form2.img1.Picture.Graphic;
    CBat._img:=Form2.img1.Picture.Graphic;
    Ball._img:=Form2.img2.Picture.Graphic;
    setpoints(0,0);
    cyAdvPaintBox1.Show;
    _t:=Now;
  end;
end;

procedure TForm2.cyAdvPaintBox1Paint(Sender: TObject);
begin
inc(_fps);
cyAdvPaintBox1.Canvas.Brush.Color:=clBlack;
cyAdvPaintBox1.Canvas.Font.Color:=clWhite;
cyAdvPaintBox1.Canvas.Font.Size:=24;
cyAdvPaintBox1.Canvas.TextOut(Round(Form2.Width*0.5)-100,0,'Esc 2 Escape');
cyAdvPaintBox1.Canvas.TextOut(3,Form2.Height-50,P1);
cyAdvPaintBox1.Canvas.TextOut(Form2.Width-length(P2)*20,Form2.Height-50,P2);
cyAdvPaintBox1.Canvas.Font.Size:=10;
cyAdvPaintBox1.Canvas.TextOut(0,0,TimeToStr(Now));
cyAdvPaintBox1.Canvas.TextOut(0,30,'FPS: '+IntToStr(fps));
cyAdvPaintBox1.Canvas.Draw(0,PBat.y,Pbat._img);
cyAdvPaintBox1.Canvas.Draw(Form2.Width-Cbat._img.Width,CBat.y,Cbat._img);
cyAdvPaintBox1.Canvas.Draw(Ball.x,Ball.y,ball._img);
end;


Download

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

54

18.11.2010, 13:41

Ok, zum Pong Klon:
Was für einen Sinn macht ein perfekter Computergegner? Da hat man ja keine Chance zu gewinnen. Der Schläger bleibt ja immer nur auf der Höhe des Balls. Es gibt auch keine Maximalgeschwindigkeit für Schläger, so dass er sich nicht über Bandenspiel austricksen lässt.
Die Ballgeschwindigkeit erhöht sich imho zu langsam, ich habe keine Spürbare Geschwindigeitssteigerung gehabt.
Der Ball kann bei mir das Spielfeld am oberen Rand verlassen, dort komme ich zwar mit dem Schläger hin, ich sehe den Ball aber nicht.
Der Bal ist bei mir eine ganze Zeit am oberen Rand entlang gewandert, es gab keine Möglichkeit ihn da rauszuholen. (Aus gehen lassen hat nichts geändert.)
Beim Wiedereinstieg des Balles hatte er noch die gleiche Geschwindigkeit und den gleichen Winkel wie beim Aus.
Der Mauszeiger hat das Spielfenster verlassen. Das Spiel lief auch weiter als es den Fokus verloren hat.
Die Ballposition war nicht immer klar erkennbar, da es manchmal gezuckt hat.

Das wären spontan die Kritikpunkte nach 10 Minuten spielen... ^^

55

18.11.2010, 14:05

Der Computergegner ist natürlich noch nicht fertig. Aber du hast wohl einen neuen Bug gefunden, wenn der Ball den oberen Rand verlässt. Das dürfte nicht passieren! Für das Ruggeln kann ich nix. Bei mir und allen, die es getestet haben, hat es nicht geruggelt, und der Ball hat das gemacht, was er soll.

edit:
-> KI verbessert
-> Spurpunkt eingefügt
-> Demomodus eingefügt (PC gg PC)
-> Dynamischen Schwierigkeitsgrad verbessert

Es hängt sich gerade auch nichtmehr auf...(Downloadlink oben bleibt gültig)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »minecrawler« (18.11.2010, 15:37)


MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

56

18.11.2010, 14:19

Ich weiß nicht ob Ruckeln das richtige Wort ist, man kann eben nur nicht ganz genau erkennen wo sich der Ball befindet. Vielleicht würde da ein Backbuffer Hilfe verschaffen.
Der Ball verlässt den oberen Rand nicht immer, nur als er da oben fest hing ist er langsam ins aus gewandert (er wanderte noch horizontal, ist dabei aber immer weiter nach oben gerarten. Aber auch bei der horizontalen Bewegung war er recht langsam.) Im Spiel sah es ansonsten auch mehrmals so aus, als würde er nicht immer an exakt der selben Stelle an den Rändern kollidieren.
Noch etwas: Beim Spielen wurde dem Computer Gegner ein Punkt angerechnet, wo ich keine Ahnung hatte wo er her kam... ^^ Oder wann er den gekriegt haben soll. Der Ball ist immer die selbe Route gewandert und ich hab den Schläger dabei nicht bewegt... War auch am oberen Rand.

Werbeanzeige