DGL
https://delphigl.com/forum/

FreeBridge
https://delphigl.com/forum/viewtopic.php?f=13&t=3841
Seite 1 von 1

Autor:  luketheduke [ Fr Feb 25, 2005 18:31 ]
Betreff des Beitrags:  FreeBridge

Einleitung

Nachdem ich vor einigen Jahren die Demo "Bridge Builder" gespielt hatte, hab ich mich sehr gefreut, als ich auf meiner CBS-DVD eine neue Demo fand - diesmal "Bridge It" betitelt. Von dieser Demo - vollmundig als komplett in 3d gelobt - war ich allerdings etwas enttäuscht: Die Entwurfsansicht war nur eine einfache 2d-Ansicht, wenn sie auch durch eine kleine Fluchtpunktkonstruktion nach 3d aussah. Man kann auch nur zweidimensional Brücken bauen. Und zum Testen der Brücke wird zwar 3d gerendert, aber man kann nur zoomen sowie sich auf die Lokomotive schnallen, die über die Brücke fährt. Ich dachte mir, das kann ich besser - und so wurde dieses Projekt geboren.

Ein paar Worte zum Spielprinzip: man baut zuerst eine Brücke aus den verschiedensten Materialien (Holz, Eisen, Stahl, Tragseile, Zugseile), wobei man immer aufs Budget schauen muss. Dann wird sie in der Testansicht simuliert und man lässt einen Zug(oder anderes) darüber fahren. Hält die Brücke, hat man das Level geschafft.


Projektname: "FreeBridge"

Projektplan:

1. Levels. STATUS: 2/3
a) Implementierung von Heightmaps (Graustufenbitmaps) - FERTIG
b) Implementierung von Texturierung - FERTIG
c) Lighting - KEINES

2. Brückenentwurf. STATUS: 0/3
a) Entwurf der materialien - Klassen bereits geschrieben, noch keine konkreten Materialien
b) Entwurf der Physik - in meinem kopf bereits vorhanden, wenn ichs nicht hinbring nehm ich newton ;)
c) Entwurf des Testmodus

3. Das ganze Zeug für den blöden Benutzer. STATUS: 0/2
a) Vermeidung von Falscheingaben - noch keine falschen Eingaben möglich ;)
b) Menüsystem, Leveldesign,usw. - einfaches menü bereits vorhanden.

4. Finishing STATUS: 0/1

Credits:

Sascha Willems(former known as Son of Satan) für sein OpenGL-1.5-VCL-Template
Lossy Ex, Blechwolf und Delphic für ihre Hilfe bei der Heightmap
Phobeus für seinen Webspace


Erster Screenshot:
Bild
Das Bild geht leider nicht mehr. wenn ich auf meiner hdd gefunden hab, lad ichs aber hoch.

Letzte Version:
freebridge.rar(280 kB)
Umfang: Exe, Mapdatei, Heightmap,Texturzuweisungs-bitmap,Level-Datei.
Version: 0.2.6

Autor:  luketheduke [ Fr Feb 25, 2005 21:15 ]
Betreff des Beitrags: 

Wechsel auf interne version 0.1.2.1

ZU: 3/b - Menüsystem

Einfaches Menüsystem eingeführt(noch keine Funktionalität, deshalb noch nicht zum Download)

Screenshot: (Leider schlechte Qualität wg. JPEG)
EDIT:Screenshot durch PNG ersetzt(thx an Flo)
Bild

Autor:  luketheduke [ Sa Feb 26, 2005 16:19 ]
Betreff des Beitrags: 

Update auf Version 0.2.1

- Navigation fast fertig (zentrieren auf brücke noch nicht möglich, mangels Brücke :twisted: )
- Menü erweitert

Download wie immer im ersten Post!

Autor:  luketheduke [ Sa Feb 26, 2005 16:51 ]
Betreff des Beitrags: 

Update auf Version 0.2.2

- Navigation bereinigt(fehler bei der trigonometrie)
- menü verbessert

Downlaod wie immer im ersten Post

Autor:  luketheduke [ So Feb 27, 2005 17:48 ]
Betreff des Beitrags: 

Update auf Version 0.2.3

-Texturierung des Terrains fertiggestellt.

Aus gegebenem Anlass einige Worte zur Texturierung:

Eine Szeneriedatei(*.map) besteht aus:
  • eine Zeile für die heightmap
  • eine zeile für die textur-zuordnungsdatei
  • der rest der datei die texturen


Die Heightmap ist ein Graustufenbitmap. Mehr muss ich da wohl nicht sagen.

Die Textur-Zuordnungs-Datei ist auch ein Graustufenbitmap, mit der selben Größe wie die Heightmap, aber nur so vielen Grautönen wie Texturen(macht höchstens 256 texturen pro Szenerie, sollte reichen, oder?)

Texturen: In jeder Zeile ein Dateiname für eine Bitmap. das erste Bitmap wird dem Wert 00 in der textur-zuordnungs-datei zugeordnet, die zweite dem wert 01 usw.

Die Texturen sollten im Format 2^n vorliegen.

Mein Renderpass im Moment:

Code:
  1.  
  2. procedure SceneRender(map:TMap);
  3. var i,k,l:integer;
  4.     width,height:integer;
  5.  
  6.     tex:integer;
  7.     qw,qh:single;
  8. begin
  9. qw:=1/map.HeightMap.Width;
  10. qh:=1/map.HeightMap.Height;
  11. iterations:=0;
  12. tex:=0;
  13. if not f_hm_loaded then
  14.  begin
  15.  setlength(HM,map.HeightMap.Width,map.HeightMap.Height); // Heightmap-Array initialisieren
  16.  for i:= 0 to map.HeightMap.Width-1 do
  17.   for k := 0 to map.HeightMap.Height-1 do
  18.    begin
  19.  
  20.    HM[i,k]:=getrvalue(map.HeightMap.Canvas.Pixels[i,k]);
  21.    
  22.       //^Rot-Wert wird zur Höhe^
  23.    end;
  24.  f_hm_loaded:=true;
  25.  end;
  26.  
  27. if not f_tm_loaded then
  28.  begin
  29.  setlength(TM,map.heightmap.Width,map.heightmap.Height); // Texturemap-Array initialisieren
  30.  for i:= 0 to map.TextureAssignment.Width-1 do
  31.   for k := 0 to map.TextureAssignment.Height-1 do
  32.    begin
  33.    TM[i,k]:=getrvalue(map.TextureAssignment.Canvas.Pixels[i,k]);
  34.      //^Rot-Wert wird zum Texturindex^
  35.    end;
  36.  f_tm_loaded:=true;
  37.  end;
  38.  
  39.  
  40. if not f_tex_loaded then
  41.  begin
  42.   for i:=0 to high(map.textures) do
  43.    begin
  44.     textures[i]:=TGLBitMap2d.Create;
  45.     textures[i].SetTextureWrap(GL_REPEAT, GL_REPEAT);
  46.     textures[i].SetFilter(GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR);
  47.     textures[i].loadfromfile(map.textures[i]);
  48.     textures[i].GenTexture;
  49.    end;
  50.   f_tex_loaded:=true;
  51.  end;
  52.  
  53.  width:=map.HeightMap.Width div 2;
  54.  height:=map.HeightMap.Height div 2;
  55.  
  56.  
  57.  
  58.  for l:= 0 to high(map.textures) do begin
  59.   textures[l].Bind();
  60.   glbegin(gl_triangles);
  61.   for k:= 0 to high(HM[0])-1 do
  62.    for i:= 0 to high(HM)-1 do
  63.     if l=TM[i,k] then
  64.      begin
  65.       gltexcoord2f(i*qw,i*qh);        glvertex3f(i-width,  HM[i,k],    k  -height);
  66.       gltexcoord2f(i*qw,(k+1)*qh);    glvertex3f(i-width,  HM[i,k+1],  k+1-height);
  67.       gltexcoord2f((i+1)*qw,(k+1)*qh);glvertex3f(i+1-width,HM[i+1,k+1],k+1-height);
  68.  
  69.       //EDIT: in version 0.2.4 dazugekommen:
  70.       gltexcoord2f(i*qw,k*qh);        glvertex3f(i-width,  HM[i,k],    k  -height);
  71.       gltexcoord2f((i+1)*qw,(k+1)*qh);glvertex3f(i+1-width,HM[i+1,k+1],k+1-height);
  72.       gltexcoord2f((i+1)*qw,k*qh);    glvertex3f(i+1-width,  HM[i+1,k],    k  -height);
  73.      end;
  74.   glend;
  75.  end;
  76.  
  77.  
  78. if f_show_lines then
  79.  begin
  80.  glbegin(GL_LINE_STRIP);
  81.    glcolor3f(0,1,0);
  82.    glvertex3i(0-width,HM[0,0],0-height);
  83.    glvertex3i(0-width,HM[0,1],1-height);
  84.    glvertex3i(1-width,HM[1,1],1-height);
  85.  
  86.   for k:= 0 to high(HM)-1 do
  87.    //if (k div 2)=(k / 2) then
  88.     for i:= 1 to high(HM[0])-1 do
  89.      begin
  90.       glcolor3f(0,0,1);
  91.       glvertex3i(i-width,hm[i,k],k-height);
  92.       glvertex3i(i+1-width,HM[i+1,k+1],k+1-height);
  93.      end;
  94.   glend;
  95.  end;
  96. end;
  97.  


Die flags sollten selbsterklärend sein. der rest vielleicht nicht :twisted: .

Download wie immer im ersten Post.

Noch ein Screenshot(einfach texturierte Berglandschaft):

EDIT: der code gilt auch für version 0.2.4(siehe kommentar!)

Bild

Autor:  luketheduke [ So Feb 27, 2005 18:33 ]
Betreff des Beitrags: 

Update auf Version 0.2.4

im renderpass ein dreieck hinzugefügt, damit die texturierung komplett ist.

sieht doch besser aus, oder?

Bild

Autor:  luketheduke [ Sa Mär 26, 2005 22:45 ]
Betreff des Beitrags: 

gerade gemerkt, dass der hoster down ist....

so ein mist. hoffentlich hab ich die screens alle noch auf platte.

wo sind wir denn gerade versionsmäßig?
ah ja....

Update auf Version 0.2.5

Changelog:

- levels eingeführt:

Code:
  1. type TLevel = record
  2.   name:string;
  3.   money:integer;
  4.   scenery:TMap;
  5.   Anchors: array[0..15] of array[0..2] of single;
  6.   materials:array of TBridgeMaterial;
  7.   path:array of array[0..2] of integer;      //the path vehicles are moved over the bridge
  8.   physics:array[0..1] of integer;           //the starting and ending index for physics
  9.  end;


es fehlen aber noch die 3d-objekte, die natürlich auch auf dem terrain platziert werden wollen.

download wie immer im ersten post(sobald ich das ganze auf ein neues hosting umgeschaufelt hab... delphigl.com sei dank)

Autor:  luketheduke [ Sa Apr 09, 2005 10:47 ]
Betreff des Beitrags: 

Update auf Version 0.2.6 nightly

das nightly deswegen, weil das ding weder getestet noch kundenfreundlich ist - aber ich habe es endlich geschafft, die displaylisten erfolgreich einzubringen(hätte doch jemand neben mit gestanden und alle 5 Minuten gesagt "es gibt keine Displayliste mit dem Namen 0" :roll: ).

das komplette terrain läuft jetzt in der displayliste, was eine performancesteigerung von mehreren 100 Prozent ausmacht.

sobald das nightly rauskommt, gibts hier n bisschen code und vielleicht auch screens.

Download wie immer im ersten post!

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/