Autor Beitrag
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Sa 01.07.06 14:54 
2D Engine

Fear2D (Namensähnlichkeiten zu kommerziellen Spielen sind rein zufällig, der Name Fear stammt von meinem Nickname "F34r0fTh3D4rk") ist eine kleine 2D Engine die ich für ein kommendes Projekt
geschrieben habe. Sie ist noch im Anfangsstadium, einige Units dienen momentan
nur als Platzhalter.

Die grafische Ausgabe wird mittels OpenGL realisiert, dessen Initialsierung
von der Engine übernommen wird.
Das gleiche gilt für die BASS.DLL, welche ich für die Soundausgabe verwende.

Die Bass.dll sowie die ebenfalls benötigte bass.pas sind hier zu finden:

www.un4seen.com/

Man muss sich nicht weiter mit der Bass.dll auseinandersetzen, die bedienung über die
Engine geht leicht von der Hand.
Ewähnenswert ist jedoch, dass man für die kommerzielle Nutzung der Bass.dll eine Lizenz erwerben muss, deshalb habe ich die DLL auch nicht in mein Projekt direkt integriert, da die BASS.dll nicht OpenSource ist.

Der Download Der Engine befindet sich am Anhand, dort sind auch diese beiden Dateien unter dem Namen (externals.zip) zu finden, die dglOpenGL.pas und die glBitmap.pas

wiki.delphigl.com/index.php/DGLOpenGL.pas
www.dev-center.de/in...er&file=glbitmap

Ein Template liegt dem Download bei, Demos gibt es leider noch nicht, aber ich werde hier mal einige Beispiele aufführen (viele Sachen lassen sich auch durch Kommentarlesen herausfinden ^^):

ausblenden Delphi-Quelltext
1:
  Engine: TEngine;					


kann als Teil des Formulars oder (wie in meinem Template) als globale Variable deklariert werden.

Das Formular muss dann noch über ein:
ausblenden Delphi-Quelltext
1:
    procedure ApplicationEventsIdle(Sender: TObject; var Done: Boolean);					

erweitert werden, das OnCreate sieht dann so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
  Engine := TEngine.Create;
  Engine.Init(self);
  Application.OnIdle := ApplicationEventsIdle;

Im Destroy ganz einfach:
ausblenden Delphi-Quelltext
1:
  Engine.Free;					


soweit zur initialisierung, jetzt fehlt noch die OnIdle Prozedur:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TMainForm.ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
begin
  Engine.DoBegin;
  Engine.DoEnd;
  Done := false;
end;

Das Wäre vorerst alles, eigentlich sollte jetzt schon ein schwarzes Formular zu sehen sein.

Per Engine.FPS lassen sich die Frames per Second abfragen und per Engine.Timestep die Zeitdifferenz zum letzten Frame (delta t)
man siehe auch: wiki.delphigl.com/in...p/Timebased_Movement

Ein einfaches Objekt kann so erstellt werden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var
  Obj: TSimpleObject;
{...}
begin
  Obj := TSimpleObject.Create;
  with Obj do 
  begin
    position.x := clientwidth / 2;
    position.y := clientheight / 2;
    z := 0;
    size.x := 50;
    size.y := 50;
    texture := 'mytex';
    usealpha := true;
    alpha := 255 div 2;
  end;
end;


nunja, im quelltext sieht man eine textur: 'mytex' diese muss vorher jedoch
erst einmal geladen werden (kann auch danach geschehen, hauptsache vor dem zeichnen)

Dies geht mit:
ausblenden Delphi-Quelltext
1:
  Engine.TextureManager.AddTexture					

oder
ausblenden Delphi-Quelltext
1:
  Engine.TextureManager.AddTexturesInDir					

Beim ersten wird der DateiName, sowie der Name der Textur erwartet, über den später auf die Textur zugriffen wird (in unserem Beispiel 'mytex').

Die zweite Methode erlaubt das hinzufügen sämtlicher Texturen eines Ordners, wobei der Name dann immer dem Dateinamen entspricht. Heißt die Datei zB 'grass.bmp' heißt die Textur 'grass'.

Gezeichnet wird das ganze zwischen Engine.DoBegin und Engine.DoEnd folgendermaßen:
ausblenden Delphi-Quelltext
1:
  Obj.Draw(Engine, true);					

Der 2. Parameter gibt an, ob die Textur verwendet werden soll, ansonsten wird nur die Farbe verwendet. Die Farbe kann außerdem in Kombination mit der Textur und somit vermischt werden.

Möchte man ein Objekt Transparent zeichnen, muss man usealpha auf true setzen und alpha einen wert zwischen 0 und 255 verpassen.

alphatest lässt den alphakanal eines bildes (zB tga) transparent werden.

Wer animierte Objekte braucht, sollte auf die Klassen TAnimation und TAnimObj zurückgreifen.

Per Angle lässt sich ein Winkel definieren, sodass das Bild gedreht ausgegeben wird.

In TAnimation gibt man eine Textur und die Anzahl der Bilder auf der Horzontalen / Vertikalen Achse an, sowie mit Duration, die Dauer der Animation in Millisekunden.

TAnimObj ist dann das eigentliche Objekt was gezeichnet wird, dort kann man Animationen hinzufügen und per with GetAnimation(NAME) do darauf zugreifen.
mit Play lässt sich dann eine Animation abspielen.

Ich wollte eigentlich nicht zu weit ausschweifen ^^ aber die Klasse TTile ist auch noch erwähnenswert. Mit ihr kann man auf ein Tileset (TTileSet) zugreifen und somit mehrere Texturen in einer Textur verwalten. Die Textur wird im TileSet angegeben, dort ebenfalls die Anzahl der Waagerechten und Senkrechten Texturen. Dann muss noch beim Zeichnen das gewünschte TileSet angegeben werden und schon ist das Tile auf dem Schirm ;)

Der BugTracker loggt automatisch (nicht)geladene Sounds und Texturen, wo wir beim Thema Sound wären:
ausblenden Delphi-Quelltext
1:
  Engine.SoundManager.AddSound					

sowie
ausblenden Delphi-Quelltext
1:
Engine.SoundManager.AddSoundsInDir					

arbeiten genauso, wie ihre Brüder beim TextureManager.
Mit PlaySound wird ein Sound gespielt.
Loop gibt an, ob ein Sound wiederholt werden soll und wait, ob gewartet werden soll,
bis der sound fertig gespielt hat (bei potentiellen Mehrfachaufrufen ganz Sinnvoll)
PauseSound pausiert einen Sound und StopSound.

Falls noch Fragen sein sollten, einfach hier ins Forum, per pm, oder per eMail. Ich werde demnächst einige Demos schreiben und würde mich auf Feedback freuen. Je mehr Feedback, desto mehr Features und mehr Demos ;)

Ach ja, die benötigten uses kann man dem Template entnehmen :P

Text anzeigen geht leider noch nicht, das musste ich wegen einige Fehler rausnehmen.
Entwickeln kann man pixelgenau unter jeder Auflösung, das Bild wird dann automatisch für andere Auflösungen gestreckt und Objekte müssen im Destroy freigegeben werden.

So das wars ;)


AKTUELLSTE VERSION HIER:

[url]www.martoks-place.de...opengl/fear2d/[/url]

(Version die von Martok noch eine Textunit und andere Feinheiten spendiert bekommen hat.)


mfg


Zuletzt bearbeitet von F34r0fTh3D4rk am So 03.01.10 20:21, insgesamt 11-mal bearbeitet
LLCoolDave
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 212

Win XP
Delphi 2005
BeitragVerfasst: Sa 01.07.06 15:59 
Klingt sehr interessant, gäbe es jedoch noch die Möglichkeit die Engine auf Framebasis zu erweitern? D.h. eine Target Framerate, die sogut wie möglich eingehalten werden sollte, die Ergänzung der TAnimation Klasse (oder entsprechend eine alternative, ist ja egal) die Animationen nicht nach Zeit sondern nach Frames durcharbeitet, sowie wenn möglich eine Interne Framecounter klasse die die frames mitzählt (mit start stop, und auslese funktion).

Ich komme nämlich zum einen eher aus der Konsolenwelt, wo zum Großteil framebasierende Bewegung angesagt ist, und ausserdem hat timebased bei Spielen mit Highscores auch des öfteren seltsame Effekte, da sich das Spiel bei niedriger Framerate doch des öfteren anders verhält als bei hoher Framerate.

Ansonsten finde ich die Idee klasse =)
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Sa 01.07.06 16:32 
naja du kannst das ganze natürlich auch in einen timer packen, dann muss du vielleicht die duration anders wählen, da der timestep (also delta t) dann statisch ist, aber im grunde sollte das trotzdem funktionieren. (ich glaube auch, dass die duration nicht einmal verändert werden muss, das sollte afaik auch so gehen). einfach mal in einem timer mit interval 33 testen, das wären dann statische 30fps.

EDIT: Man muss Duration durch das Timer Interval teilen, dann funktioniert's

es gibt bei der animation ohnehin am ende noch so ein flackern, das muss noch behoben werden.

Das Problem ist, dass auch dort Schwankungen auftreten können und du somit wieder auf timestep zurückgreifen musst, was du dann aber auch lieber gleich machen kannst, aber dann mit der vollen anzahl an fps.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: So 02.07.06 09:08 
*verwirrt* Es gibt genau eine *.pas in dem Ordner Template und die ist etwas leer. Wo sind die ganzen Units?

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: So 02.07.06 10:17 
sorry, kA woher es kam, aber jetzt stimmt es ;)
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: So 02.07.06 15:15 
Ich habe im ersten Beitrag mal eine kleine Demo angehängt, der Code ist nicht der beste, aber er zeigt einige Möglichkeiten:

* Animation + Transparenz
* Roter + Blauer Schläger, obwohl nur eine Textur vorhanden ist (färben)
* Sound

Man kann im OnCreate clientwidth und clientheight benutzen, während der Laufzeit sollte man jedoch auf Engine.width und Engine.height zurückgreifen, da es sonst bei anderen Auflösungen zu Problemen kommt.

Weiterhin habe ich einen Bug gefunden, und zwar werden Animationen bei größerer Auflösung langsamer abgespielt, ich hoffe, das bald fixen zu können, die genaue Ursache ist mir noch nicht bekannt (falls sie jemand kennt....), die betroffene Unit ist UObjects.pas


mfg

und hier noch einmal pong im binärformat:
(Man sollte einfach mal nen Ball durchlassen, dann sieht man eine Explosion am Kollisionspunkt ;) - das spiel ist auch nicht ganz bugfrei, ist halt nur ne demo die ich eben geschrieben habe, das ganze wird noch erweitert, vielleicht ein hintergrund aus tiles oder so, mal schauen, erstmal bugs fixxen ;))

//EDIT: Bug gefixt, neue version der engine oben, demnächst wird's von der demo auch ne neue version (bin + source) geben, mit ohne bugs und mehr features ;)
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Di 04.07.06 17:35 
Super sache, ich benutze die Engine, um mein "Fangen" spielchen zu überarbeiten ^^ Funktioniert schon fein, nur, kann ich einem TSimpleObject eine transparenz bekommen? Also, in einem Spiel treffen sich Bälle, deren Texturecken schwarz sind und sich überlappen. Dadurch sieht man in einem der Bälle plötzlich ne schwarze ecke und das is .. nicht fein.
Ausserdem, wie könnte ich wohl am besten eine Textausgabe regeln? Mit TSimpleObjects für jeden Buchstaben? -.-

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 04.07.06 17:43 
Textausgabe hat noch net so recht gefunzt, alphatest machst du so:
ausblenden Delphi-Quelltext
1:
2:
  SO.alphatest := true;
  SO.alphatolerance := 0.8// mal biss rumprobieren, mit 0.8 sollte es auf jedenfall gehEN, am besten weniger nehmen, aber sobald man einen weißen rand sieht, ist der wert zu tief


dabei muss das bild einen alpha kanal haben (tga oder so)

farbalpha gibts noch nicht, dann müsste ich für die texturen eine oop variante benutzen, wird es vielleicht in der übernächsten version geben ;)


Zuletzt bearbeitet von F34r0fTh3D4rk am Do 01.05.08 19:46, insgesamt 1-mal bearbeitet
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Di 04.07.06 17:52 
Danke werds probieren. Und danke auf, für diese tolle engine, die so verdammt leicht zu bedienen ist! (wow) Ich bleib up-to-date und hoffe, du schaffst das mit der Textausgabe, denn irgentwie muss ich bissl was ausgeben... Kleine frage hätt ich noch: ..Mir liegts auf der zunge.. wtf.. ach ja. warum müssen sämtliche Texturen im Power-of-two Format sein und warum hab ichs nich hinbekommen, kleinere texturen als 256x256 zu basteln? Wie kann ich dann rechteckige objekte darstellen, ohne dass deren textur verzerrt oder so ist? Bsp: will ein Menü mit Buttons machen, die sind rechteckig. Liegen als jpg vor. Auf den buttons steht dann eine Beschriftung. Die wird aber dann wohl verzerrt, weil die jpg ja in einem quadratischen Format vorliegen muss...?

Edit: Ab einer alphatolerance von 0.998 wird das Objekt entweder komplett schwarz oder unsichtbar. Alles (inklusive werte unter 0) haben keinerlei einfluss. 8(
Edit2: Ich depp ^^ Ok habs kapiert. wenn ich transparenz will: TGA benutzen -.-

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 18.07.06 14:51 
So, neue Version

Was sich geändert hat:

ausblenden Delphi-Quelltext
1:
Engine := TEngine.Create(false);					


Der Paramter gibt an, ob das Programm im DEV Modus gestartet werden soll oder nicht, also ob eine Log Datei geführt wird oder nicht. (später werden dadurch wohl noch fehlermeldungen etc verwaltet werden)

Animationen sollten jetzt Fehlerfrei funktionieren und aussehen (bitte testen ;) ich hab nur einen Rechner)

ja und mit Engine.DoFullscreen kann man in den Vollbildmodus wechseln,
vielleicht kann mir jemand sagen, warum er die beiden befehle borderstyle und das formstyle net mag, weil dann zeichnet er nichts mehr, ansonsten muss diese prozedur genommen werden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TEngine.DoFullscreen;
begin
  with Form do
  begin
    //Ecke oben links
    top := 0;
    left := 0;
    //Volle Größe
    clientwidth := screen.width;
    clientheight := screen.height;
    //Status maximiert
    Windowstate := wsMaximized;
  end;
end;

dann ist das fenster aber nicht stayontop und der rahmen ist auch noch da

Besonderen Dank an GTA-Place, er hat die units besser Strukturiert und mir dadurch erheblich Arbeit gespart.

Eine neue Version ist schon in Arbeit, dort wurden ein paar Vererbungen getätigt, um alles was doppelt war auszurotten. an ner particle engine, sowie einem selektionsmodus hab ich mich schon versucht, aber das hat beides bisher noch nicht ganz glatt funktioniert, aber das wird noch ;)

Ach ja, eine StateMachine (fertig) wird auch ein bestandteil der nächsten version sein (lässt einen zwischen beliebigen modi unterscheiden, zB menu, ingame, credits, highscore)

ebenfalls wird es möglich sein, auf einfache weise, texturen zu kacheln

beim nächsten release werde ich hoffentlich auch gleich ein ganzes paket an beispielen hinzupacken können, da das release erst erfolgt wenn alles stabil läuft und text auch funktioniert.

die vollbild funktion wird im nächsten release auch funzen

mfg
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 31.07.06 21:02 
ok das erste mal, dass die partikel engine so halbwegs korrekt läuft, bzw das erste mal sieht man was ^^ da kann ich auch gleich als kleines preview mal was posten:

exec-dev.de/explo.zip
oern
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 142

Linux, Win XP
D7
BeitragVerfasst: Mo 31.07.06 22:27 
Sieht nett aus nur find ich 15 FPS auf meiner 2 GHz Maschine etwas gering...

_________________
Ich hab eine Signatur
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 01.08.06 09:43 
ja es werden zu viele partikel, weil die dinger einfach net verrecken, aber ich habe das bereits gefixt, und bald kommt (wohl heute noch) eine richtige demo raus, bei der man mit dem partikel system ein wenig rumspielen darf ;)
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 01.08.06 11:30 
wie versprochen, ist die Demo fertig und lässt sich hier herunterladen:

exec-dev.de/ParticleEngine_DEMO.zip

einen screenshot gibt es auf der hauptseite zu sehen:

www.exec-dev.de/
oern
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 142

Linux, Win XP
D7
BeitragVerfasst: Di 01.08.06 19:55 
Jetzt läuft es vernüftig (30 FPS) Screenshots sehen super aus, und auch meine partikel gefallen mir :D

_________________
Ich hab eine Signatur
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 01.08.06 21:00 
screenshots kann man btw mit f5 auch selbst machen, nur muss das zeichenfenster den fokus haben. mit anderen texturen lassen sich noch ganz andere effekte erstellen, das ist ja nur ein ganz kleiner ausschnitt :P
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Sa 23.09.06 14:40 
da die engine sich schon lange in diesem stadium (leider immernoch ohne textanzeige) befindet und ich nicht die Zeit finde, demos und eine Dokumentation zu schreiben, hänge ich hier mal die aktuellste version an. hoffe mit der stimmt soweit alles.

größte neuerung ist wohl die partikel engine, hier eine Demo:
exec-dev.de/ParticleEngine_DEMO.zip

mit ihr lassen sich ansehnliche effekte erzeugen:

user defined image

user defined image

user defined image

Screenshot und Vollbildfunktion sind jetzt auch Fehlerfrei integriert.

hier noch andere neuerungen die ich vor einiger zeit mal im ee-lemmings forum gepostet habe:
user profile iconF34r0fTh3D4rk hat folgendes geschrieben:

...
Das Koordinatensystem beginnt wieder oben links ^^

sinnvoll wäre das einbinden folgender units:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  F2D_Core,
  F2D_Objects,
  F2D_Vectors,
  F2D_ParticleEngine,
  F2D_Text;  //ist noch ziemlich leer ^^


ausblenden Delphi-Quelltext
1:
2:
var
  Engine: TEngine;


Erstellen / Initialsieren:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TMainForm.FormCreate(Sender: TObject);
begin
  Engine := TEngine.Create(false);  //true für das schreiben einer logdatei

  with Engine do
  begin
    Init(self);
    TextureManager.AddTexture(extractfilepath(paramstr(0)) + 'tex\Fire.bmp''fire');
    SoundManager.AddSound(extractfilepath(paramstr(0)) + 'sound\music.mp3''music');
  end;
{...}


//Zeichnen Etc
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TMainForm.ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
begin
  Engine.DoBegin;

  obj.Draw(true);
  Emitter.Render;

  MainForm.Caption := 'FPS: ' + inttostr(round(Engine.FPS)) + ' | Particle Count: ' + inttostr(Emitter.NumParticles);
  Engine.DoEnd;
  Done := false;
end;


die objekt sortierung ist erstmal wieder draußen, wer alpha nutzen will, muss dann seine objekte auch in der richtigen reihenfolge zeichnen um den gewünschten effekt zu erzielen

mit Engine.x y kann man die kameraposition verschieben, mit Engine.zoom ist auch zoom möglich.

UPDATE: ich hab der SoundUnit noch ein paar kleine random funktionen verpasst, um die musik später per zufall abspielen zu können.

UPDATE: die soundengine um 2 weitere funktionen und eine property erweitert count getsoundindex und getsoundname


EDIT: So am Anhang jetzt auch eine Demo mit Quelltext, viel Spass damit.

mfg
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 23.09.06 15:13 
user profile iconF34r0fTh3D4rk hat folgendes geschrieben:

Das Koordinatensystem beginnt wieder oben links ^^

Heist das, ich muss mein Progamm umschreiben, wenn ich die Engine update? :crying: Die Partikel würd ich schon gern einbauen... mal sehn, ich werd erstmal die alten Engine daten Backupen bevor ich update... ^^

edit: Alle nicht in Kompilierter Form forliegenden Units erzeugen bei der Demo "Datei nicht gefunden: UTools.dcu", genauso wie F2D_Math.dcu, die scheints neu dazu gekommen ist >.< was für nen shice. Nun muss ich die meisten Dateien einzeln einbinden und dadurch kompilieren..

Edit:
Hab nun bisschen rumgespielt und eine kleine aber hübsche Spielerei zu stande gebracht. Wenn man die Endung in .scr ändert, kann man sogar nen Bildschirmschoner draus machen, hab aber kein Optionsmenü oder sowas drin, genausowenig wie eine Parameterabfrage, also nicht wundern. Ist nur zum angucken gedacht ^^
Hoppla, ich sollte meinem Anhang vll noch die bass.dll und spark.bmp hinzufügen... fixed.
edit: kleiner bug wurde geändert, Farben auch. sieht jetzt schöner aus ^^
Einloggen, um Attachments anzusehen!
_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: So 24.09.06 09:13 
das mit dem koordinatensystem ergab sich aus der struktur von TBitmap und dem Lemmingsprojekt, und eine völlige Konfusion meinerseits ^^ ich musste auch ein ganzes Stück umschreiben, aber ich hoffe es klappt alles.

noch eine kleinigkeit zur demo, mit f2 kann man reinzoomen und mit f1 wieder raus, mit f5 macht man einen screenshot.


WOW JayEff, das sieht einfach nur beeindruckend aus, wie ein trichter :shock: teilweise auch richtig schöne welleneffekte. ich hab grad auch schon wieder ein paar schicke ideen bekommen ;) zb die eingangs / ausgangsfarben zur laufzeit zufällig zu blenden oder ein feuerwerk zu machen. die möglichkeiten sind halt groß. graviation werde ich vielleicht noch mal einbauen, beliebige keyframes dann wohl als nächstes. aber ich denke nicht, dass es attraktoren oder reflektoren oder so geben wird, denn ich wüsste nicht, wie ich das am geschicktesten implementiere...

naja durch andere texturen lassen sich auch nochmal andere effekte erzielen (rauch) da macht es sinn zwischendrin den emissionswinkel zufällig zu wählen (zb bei jedem durchlauf)

mfg
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: So 24.09.06 14:51 
Auf die art kann ich bei FangenV2 viel geilere Effekte machen, wenn du z.B. ein Extra eingesammelt hast! :shock: idee! :D

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.